이 문서에서는 Android 기기에 LiteRT Android 라이브러리를 빌드하는 방법을 있습니다. 일반적으로 LiteRT Android 라이브러리를 로컬에서 빌드할 필요는 없습니다. 이 기능을 사용하려면 Android 빠른 시작에서 자세한 사용 방법을 확인하세요. 확인할 수 있습니다.
야간 스냅샷 사용
야간 스냅샷을 사용하려면 다음 저장소를 루트 Gradle 빌드에 추가하세요. 구성
allprojects {
repositories { // should be already there
mavenCentral() // should be already there
maven { // add this repo to use snapshots
name 'ossrh-snapshot'
url 'https://oss.sonatype.org/content/repositories/snapshots'
}
}
}
build.gradle에서 야간 스냅샷을 종속 항목에 추가하거나 필요에 따라 수정합니다.
...
dependencies {
...
implementation 'org.tensorflow:tensorflow-lite:0.0.0-nightly-SNAPSHOT'
implementation 'com.google.ai.edge.litert:litert-gpu:0.0.0-nightly-SNAPSHOT'
implementation 'com.google.ai.edge.litert:litert-support:0.0.0-nightly-SNAPSHOT'
...
}
...
로컬에서 LiteRT 빌드
경우에 따라 LiteRT의 로컬 빌드를 사용하고자 할 수도 있습니다. 대상 예를 들어, 컨테이너 이미지 생성 및 가져오기가 포함된 TensorFlow에서 선택된 작업 또는 LiteRT를 로컬에서 변경할 수 있습니다.
Docker를 사용하여 빌드 환경 설정
- Docker 파일을 다운로드합니다. Docker 파일을 다운로드하면 다음 서비스 약관이 귀하의 서비스 사용에 적용됩니다.
동의를 클릭하면 Android 스튜디오 및 Android Native Development Kit에는 Android 소프트웨어가 적용됩니다. 개발 키트 라이선스 계약은 다음 위치에서 확인할 수 있습니다. https://developer.android.com/studio/terms (이러한 URL은 업데이트 또는 변경될 수 있음) 경우에 따라 변경될 수 있음).
다운로드하려면 서비스 약관을 확인해야 합니다. 파일에서 참조됩니다. <ph type="x-smartling-placeholder"></ph>- 선택적으로 Android SDK 또는 NDK 버전을 변경할 수 있습니다. 다운로드한 Docker 파일을 빈 폴더에 만들고 다음을 실행하여 Docker 이미지를 빌드합니다.
docker build . -t tflite-builder -f tflite-android.Dockerfile
- 현재 폴더를 컨테이너 내부의 /host_dir(/tensorflow_src는 TensorFlow 저장소 내부)
docker run -it -v $PWD:/host_dir tflite-builder bash
Windows에서 PowerShell을 사용하는 경우 '$PWD'를 바꿉니다. 'pwd'를 포함합니다.
호스트에서 TensorFlow 저장소를 사용하려면 호스트를 마운트하세요. 디렉토리 (-v hostDir:/host_dir)를 사용하세요.
- 컨테이너 내부에 들어가면 다음을 실행하여 추가 Android 도구 및 라이브러리 (단, 라이선스).
sdkmanager \
"build-tools;${ANDROID_BUILD_TOOLS_VERSION}" \
"platform-tools" \
"platforms;android-${ANDROID_API_LEVEL}"
이제 작업공간 및 .bazelrc 구성 섹션으로 이동하여 빌드 설정을 구성해야 합니다.
라이브러리 빌드를 완료한 후 /host_dir에 복사할 수 있습니다. 호스트에서 액세스할 수 있도록 합니다
Docker 없이 빌드 환경 설정
Bazel 및 Android 기본 요건 설치
Bazel은 TensorFlow의 기본 빌드 시스템입니다. 이를 사용하여 빌드하려면 이미 시스템에 Android NDK 및 SDK가 설치되어 있어야 합니다.
- Bazel 빌드 시스템의 최신 버전을 설치합니다.
- 네이티브 (C/C++) LiteRT를 빌드하려면 Android NDK가 필요합니다. 생성합니다. 현재 권장 버전은 25b이며, 여기에서 확인할 수 있습니다.
- Android SDK 및 빌드 도구는 여기 또는 또는 Cloud Build의 일부로 Android 스튜디오 빌드 Tools API >= 23이 LiteRT 빌드에 권장되는 버전입니다.
WORKSPACE 및 .bazelrc 구성
LiteRT를 빌드하는 데 필요한 일회성 구성 단계입니다.
제공합니다 루트 TensorFlow 결제에서 ./configure
스크립트를 실행합니다.
'예'라고 답합니다. 스크립트가 대화형 방식으로 ./WORKSPACE
를 구성하도록 요청할 때
Android 빌드용입니다. 스크립트는
환경 변수에 적용됩니다.
ANDROID_SDK_HOME
ANDROID_SDK_API_LEVEL
ANDROID_NDK_HOME
ANDROID_NDK_API_LEVEL
이러한 변수가 설정되지 않은 경우 스크립트에서 대화형으로 제공되어야 합니다.
메시지가 표시됩니다. 성공적으로 구성하면 다음과 유사한 항목이 생성됩니다.
루트 폴더의 .tf_configure.bazelrc
파일에서 다음을 실행합니다.
build --action_env ANDROID_NDK_HOME="/usr/local/android/android-ndk-r25b"
build --action_env ANDROID_NDK_API_LEVEL="21"
build --action_env ANDROID_BUILD_TOOLS_VERSION="30.0.3"
build --action_env ANDROID_SDK_API_LEVEL="30"
build --action_env ANDROID_SDK_HOME="/usr/local/android/android-sdk-linux"
빌드 및 설치
Bazel이 올바르게 구성되면 다음 위치에서 LiteRT AAR을 빌드할 수 있습니다. 루트 체크아웃 디렉터리를 다음과 같이 바꿉니다.
bazel build -c opt --cxxopt=--std=c++17 --config=android_arm64 \
--fat_apk_cpu=x86,x86_64,arm64-v8a,armeabi-v7a \
--define=android_dexmerger_tool=d8_dexmerger \
--define=android_incremental_dexing_tool=d8_dexbuilder \
//tensorflow/lite/java:tensorflow-lite
이렇게 하면 bazel-bin/tensorflow/lite/java/
에 AAR 파일이 생성됩니다. 참고
이렇게 하면 '지방'이 다양한 아키텍처가 포함된 AAR 하지 않을 경우
모두 필요로 하는 경우 배포 환경에 적합한 하위 집합을 사용하세요.
다음과 같이 모델 세트만을 타겟팅하는 더 작은 AAR 파일을 빌드할 수 있습니다.
bash tensorflow/lite/tools/build_aar.sh \
--input_models=model1,model2 \
--target_archs=x86,x86_64,arm64-v8a,armeabi-v7a
위 스크립트는 tensorflow-lite.aar
파일을 생성하고 선택사항으로
tensorflow-lite-select-tf-ops.aar
파일(모델 중 하나가 사용 중인 경우)
TensorFlow 작업 자세한 내용은
LiteRT 바이너리 크기 줄이기 섹션
프로젝트에 AAR 직접 추가
tensorflow-lite.aar
파일을 다음 디렉터리의 libs
디렉터리로 이동합니다.
살펴보겠습니다 새 디렉터리를 참조하도록 앱의 build.gradle
파일을 수정합니다.
기존 LiteRT 종속 항목을 새 로컬 라이브러리로 대체합니다.
e.g.:
allprojects {
repositories {
mavenCentral()
maven { // Only for snapshot artifacts
name 'ossrh-snapshot'
url 'https://oss.sonatype.org/content/repositories/snapshots'
}
flatDir {
dirs 'libs'
}
}
}
dependencies {
compile(name:'tensorflow-lite', ext:'aar')
}
로컬 Maven 저장소에 AAR 설치
루트 결제 디렉터리에서 다음 명령어를 실행합니다.
mvn install:install-file \
-Dfile=bazel-bin/tensorflow/lite/java/tensorflow-lite.aar \
-DgroupId=org.tensorflow \
-DartifactId=tensorflow-lite -Dversion=0.1.100 -Dpackaging=aar
앱의 build.gradle
에 mavenLocal()
종속 항목이 있는지 확인합니다.
표준 LiteRT 종속 항목을 지원되는 종속 항목으로 대체합니다.
일부 TensorFlow 작업:
allprojects {
repositories {
mavenCentral()
maven { // Only for snapshot artifacts
name 'ossrh-snapshot'
url 'https://oss.sonatype.org/content/repositories/snapshots'
}
mavenLocal()
}
}
dependencies {
implementation 'org.tensorflow:tensorflow-lite:0.1.100'
}
여기서 0.1.100
버전은
테스트/개발에 도움을 줍니다. 로컬 AAR이 설치되어 있으면
앱 코드에 있는 LiteRT Java 추론 API