概要
デバイス上の機械学習 (ODML) アプリケーションのモデルをデプロイする場合、モバイルデバイスで使用できるメモリの制限に注意することが重要です。モデルのバイナリサイズは、モデルで使用される演算の数と密接に相関しています。TensorFlow Lite では、選択的ビルドを使用してモデルのバイナリサイズを削減できます。選択的ビルドは、モデルセット内の未使用の演算をスキップし、モバイルデバイスでモデルを実行するために必要なランタイムと演算カーネルのみを含むコンパクトなライブラリを生成します。
選択ビルドは、次の 3 つの演算ライブラリに適用されます。
次の表は、いくつかの一般的なユースケースでの選択的ビルドの影響を示しています。
モデル名 | ドメイン | ターゲットアーキテクチャ | AAR ファイルサイズ |
---|---|---|---|
Mobilenet_1.0_224(float) | 画像分類 | armeabi-v7a | tensorflow-lite.aar (296,635 バイト) |
arm64-v8a | tensorflow-lite.aar (382,892 バイト) | ||
SPICE | 音声のピッチ抽出 | armeabi-v7a | tensorflow-lite.aar (375,813 bytes) tensorflow-lite-select-tf-ops.aar (1,676,380 バイト) |
arm64-v8a | tensorflow-lite.aar (421,826 bytes) tensorflow-lite-select-tf-ops.aar (2,298,630 バイト) |
||
i3d-kinetics-400 | 動画分類 | armeabi-v7a | tensorflow-lite.aar (240,085 bytes) tensorflow-lite-select-tf-ops.aar (1,708,597 バイト) |
arm64-v8a | tensorflow-lite.aar (273,713 bytes) tensorflow-lite-select-tf-ops.aar (2,339,697 バイト) |
注: 現在、この機能は実験段階にありバージョン 2.4 以降で利用可能になりますが、変更される可能性があります。
既知の問題/制限
- C API および iOS バージョンの選択的ビルドは現在サポートされていません。
Bazel を使用して TensorFlow Lite を選択的に構築する
このセクションでは、TensorFlow ソースコードをダウンロードし、Bazel にローカル開発環境をセットアップしていることを前提としています。
Android プロジェクトの AAR ファイルを構築する
次のようにモデルファイルのパスを指定することで、カスタム TensorFlow Lite AAR を構築できます。
sh tensorflow/lite/tools/build_aar.sh \
--input_models=/a/b/model_one.tflite,/c/d/model_two.tflite \
--target_archs=x86,x86_64,arm64-v8a,armeabi-v7a
上記のコマンドは、TensorFlow Lite 組み込みおよびカスタム演算用の AAR ファイルbazel-bin/tmp/tensorflow-lite.aar
を生成します。モデルに Select TensorFlow 演算が含まれている場合、オプションで、AAR ファイルbazel-bin/tmp/tensorflow-lite-select-tf-ops.aar
を生成します。これにより、複数の異なるアーキテクチャをもつファットな AAR が構築されることに注意してください。それらのすべてが必要ではない場合は、デプロイメント環境に適したサブセットを使用してください。
高度な使用法:カスタム演算で構築する
カスタム演算を使用して Tensorflow Lite モデルを開発した場合は、ビルドコマンドに次のフラグを追加することでモデルを構築できます。
sh tensorflow/lite/tools/build_aar.sh \
--input_models=/a/b/model_one.tflite,/c/d/model_two.tflite \
--target_archs=x86,x86_64,arm64-v8a,armeabi-v7a \
--tflite_custom_ops_srcs=/e/f/file1.cc,/g/h/file2.h \
--tflite_custom_ops_deps=dep1,dep2
tflite_custom_ops_srcs
フラグにはカスタム演算のソースファイルが含まれ、tflite_custom_ops_deps
フラグにはそれらのソースファイルを構築するための依存関係が含まれます。これらの依存関係は TensorFlow リポジトリに存在する必要があることに注意してください。
Docker を使用して TensorFlow Lite を選択的に構築する
このセクションでは、ローカルマシンに Docker をインストールし、TensorFlow Lite Docker ファイルを構築していることを前提としています。
Android プロジェクトの AAR ファイルを構築する
次のコマンドを実行して、Docker で構築するためのスクリプトをダウンロードします。
curl -o build_aar_with_docker.sh \
https://raw.githubusercontent.com/tensorflow/tensorflow/master/tensorflow/lite/tools/build_aar_with_docker.sh &&
chmod +x build_aar_with_docker.sh
次のようにモデルファイルのパスを指定することで、カスタム TensorFlow Lite AAR を構築できます。
sh build_aar_with_docker.sh \
--input_models=/a/b/model_one.tflite,/c/d/model_two.tflite \
--target_archs=x86,x86_64,arm64-v8a,armeabi-v7a \
--checkpoint=master
チェックポイント
フラグは、ライブラリを構築する前に確認する TensorFlow リポジトリのコミット、ブランチ、またはタグです。上記のコマンドは、TensorFlow Lite 組み込みおよびカスタム演算用の AAR ファイルtensorflow-lite.aar
を生成します。また、オプションで、現在のディレクトリにある Select TensorFlow 演算用の AAR ファイルtensorflow-lite-select-tf-ops.aar
を生成します。
プロジェクトに AAR ファイルを追加する
直接プロジェクトに AAR をインポートするか、カスタム AAR をローカルの Maven リポジトリに公開して、AAR ファイルを追加します。生成する場合は、tensorflow-lite-select-tf-ops.aar
の AAR ファイルも追加する必要があることに注意してください。