このページは Cloud Translation API によって翻訳されました。
Switch to English

TensorFlow Liteバイナリサイズを縮小する

概観

デバイス上の機械学習(ODML)アプリケーションのモデルをデプロイする場合、モバイルデバイスで使用できるメモリの制限に注意することが重要です。モデルのバイナリサイズは、モデルで使用される演算の数と密接に相関しています。 TensorFlow Liteでは、選択的ビルドを使用してモデルのバイナリサイズを削減できます。選択的ビルドは、モデルセット内の未使用の操作をスキップし、モバイルデバイスでモデルを実行するために必要なランタイムとopカーネルのみを含むコンパクトライブラリを生成します。

選択ビルドは、次の3つの操作ライブラリに適用されます。

  1. TensorFlow Lite組み込みopsライブラリ
  2. TensorFlow Liteカスタムオペレーション
  3. TensorFlow opsライブラリを選択

次の表は、いくつかの一般的なユースケースでの選択的ビルドの影響を示しています。

モデル名ドメインターゲットアーキテクチャ AARファイルサイズ
Mobilenet_1.0_224(float) 画像分類 armeabi-v7a tensorflow-lite.aar(296,635バイト)
arm64-v8a tensorflow-lite.aar(382,892バイト)
スパイス 音高抽出 armeabi-v7a tensorflow-lite.aar(375,813バイト)
tensorflow-lite-select-tf-ops.aar(1,676,380バイト)
arm64-v8a tensorflow-lite.aar(421,826バイト)
tensorflow-lite-select-tf-ops.aar(2,298,630バイト)
i3d-kinetics-400 ビデオ分類 armeabi-v7a tensorflow-lite.aar(240,085バイト)
tensorflow-lite-select-tf-ops.aar(1,708,597バイト)
arm64-v8a tensorflow-lite.aar(273,713バイト)
tensorflow-lite-select-tf-ops.aar(2,339,697バイト)

既知の問題/制限

  1. 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組み込みおよびカスタムops用のAARファイルbazel-bin/tmp/tensorflow-lite.aarを生成します。モデルにSelect TensorFlow opsが含まれている場合は、オプションでbazel-bin/tmp/tensorflow-lite-select-tf-ops.aarファイルbazel-bin/tmp/tensorflow-lite-select-tf-ops.aarます。これは、いくつかの異なるアーキテクチャで「太い」AARを構築することに注意してください。それらのすべてが必要ない場合は、デプロイメント環境に適したサブセットを使用してください。

高度な使用法:カスタムオペレーションで構築する

カスタムopを使用して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フラグにはカスタムopsのソースファイルが含まれ、 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

checkpointフラグは、ライブラリを構築する前にチェックアウトするTensorFlowリポジトリのコミット、ブランチ、またはタグです。上記のコマンドは、TensorFlow Lite組み込みおよびカスタムopsのAARファイルtensorflow-lite.aarを生成し、オプションで、現在のディレクトリのSelect TensorFlow opsのAARファイルtensorflow-lite-select-tf-ops.aarを生成します。

プロジェクトにAARファイルを追加する

AARをプロジェクトに直接インポートする、カスタムAARをローカルのMavenリポジトリに公開して、 AARファイルを追加します 。生成する場合は、 tensorflow-lite-select-tf-ops.aarのAARファイルも追加する必要があることに注意してください。