このドキュメントでは、 あります。通常、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(この URL は更新または変更される場合があります) によって随時更新されます)。
ダウンロードするには、利用規約に同意する必要があります。 表示されます。- 必要に応じて、Android SDK または NDK のバージョンを変更できます。ダウンロードしたファイルを Docker ファイルを空のフォルダに保存し、次のコマンドを実行して Docker イメージをビルドします。
docker build . -t tflite-builder -f tflite-android.Dockerfile
- 現在のフォルダをマウントし、Docker コンテナをインタラクティブに起動する コンテナ内の /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 の主要なビルドシステムです。これを使用してビルドするには、 SDK と Android NDK および SDK がシステムにインストールされていること。
- 最新バージョンの Bazel ビルドシステムをインストールします。
- ネイティブ(C/C++)LiteRT をビルドするには Android NDK が必要 できます。現在の推奨バージョンは 25b です。 こちらをご覧ください。
- Android SDK とビルドツールを入手する こちら または Android Studio。ビルド LiteRT をビルドするには、23 以上のツール API バージョンを推奨します。
WORKSPACE と .bazelrc を構成する
これは、LiteRT のビルドに必要な 1 回限りの構成手順です。
使用できます。ルートの TensorFlow チェックアウトで ./configure
スクリプトを実行する
「はい」と回答します。./WORKSPACE
をインタラクティブに構成するようスクリプトが求められたとき
使用できます。このスクリプトは、
次のように環境変数を設定します。
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。