此页面由 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模型,则可以通过在build命令中添加以下标志来构建它们:

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

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文件。