本頁面由 Cloud Translation API 翻譯而成。
Switch to English

減少TensorFlow Lite二進製文件大小

總覽

在為設備上機器學習(ODML)應用程序部署模型時,重要的是要注意移動設備上可用的有限內存。模型二進制大小與模型中使用的操作數密切相關。 TensorFlow Lite使您可以通過使用選擇性構建來減少模型二進製文件的大小。選擇性構建會跳過模型集中未使用的操作,並生成一個緊湊的庫,其中僅包含運行時和模型在移動設備上運行所需的op內核。

選擇性構建適用於以下三個操作庫。

  1. TensorFlow Lite內置操作庫
  2. TensorFlow Lite自定義操作
  3. 選擇TensorFlow操作庫

下表展示了選擇性構建對某些常見用例的影響:

型號名稱目標架構 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內置和自定義操作生成AAR文件bazel-bin/tmp/tensorflow-lite.aar ;如果您的模型包含Select TensorFlow ops,則可以bazel-bin/tmp/tensorflow-lite-select-tf-ops.aar生成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。

85分貝

checkpoint標誌是您要在構建庫之前檢出的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文件。