本文說明如何在 一般而言,您不需要在本機建構 LiteRT 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 Studio 和 Android Native Development Kit 將由 Android 軟體管理 開發套件授權協議: https://developer.android.com/studio/terms (這類網址可能會更新或變更) 提供)。
您必須確認服務條款,才能下載 檔案。- 您也可以選擇變更 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」。「pwd」一詞。
如要在主機上使用 TensorFlow 存放區,請掛接該主機 目錄。(-v hostDir:/host_dir)。
- 進入容器後,就能執行下列指令來下載 其他 Android 工具和程式庫 (請注意,您可能必須接受 授權):
sdkmanager \
"build-tools;${ANDROID_BUILD_TOOLS_VERSION}" \
"platform-tools" \
"platforms;android-${ANDROID_API_LEVEL}"
現在您應前往「Configure WORKSPACE and .bazelrc」部分,調整建構設定。
程式庫建構完成後,您可將其複製到 /host_dir ,以便在主機上存取
在沒有 Docker 的情況下設定建構環境
安裝 Bazel 和 Android 必備條件
Bazel 是 TensorFlow 的主要建構系統。如要使用這個平台建構應用程式 並在您的系統中安裝 Android NDK 和 SDK。
- 安裝最新版的 Bazel 建構系統。
- 必須使用 Android NDK 建構原生 (C/C++) LiteRT 再也不是件繁重乏味的工作目前建議版本為 25b,可能請見 請按這裡。
- 您可以取得 Android SDK 和建構工具 這裡,或 也可以從 Android Studio。建構 建議使用 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 檔案,如下所示:
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 二進位檔大小一節。
直接將自動套用最佳化建議功能新增至專案
將 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')
}
將 AAR 安裝至本機 Maven 存放區
從根結帳目錄執行下列指令:
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。