Эта страница была переведа с помощью Cloud Translation API.
Switch to English

Уменьшить размер двоичного файла TensorFlow Lite

обзор

При развертывании моделей для приложений машинного обучения на устройстве (ODML) важно учитывать ограниченную память, доступную на мобильных устройствах. Размеры двоичных файлов модели тесно связаны с количеством операций, используемых в модели. TensorFlow Lite позволяет уменьшить двоичные размеры модели с помощью выборочных построений. Выборочные сборки пропускают неиспользуемые операции в вашем наборе моделей и создают компактную библиотеку только со средой выполнения и операционными ядрами, необходимыми для запуска модели на вашем мобильном устройстве.

Выборочная сборка применяется к следующим трем библиотекам операций.

  1. Встроенная библиотека операций TensorFlow Lite
  2. Пользовательские операции TensorFlow Lite
  3. Выберите библиотеку операций TensorFlow

В таблице ниже показано влияние выборочных сборок для некоторых распространенных случаев использования:

Наименование модели Домен Целевая архитектура Размер файла (ов) AAR
Mobilenet_1.0_224 ( с плавающей точкой) Классификация изображений armeabi-v7a tensorflow-lite.aar (296635 байт)
arm64-V8A tensorflow-lite.aar (382 892 байта)
SPICE Извлечение высоты звука armeabi-v7a tenorflow-lite.aar (375 813 байт)
tenorflow-lite-select-tf-ops.aar (1,676,380 байт)
arm64-V8A tensorflow-lite.aar (421 826 байт)
tenorflow-lite-select-tf-ops.aar (2298630 байт)
i3D-Кинетика-400 Классификация видео armeabi-v7a tenorflow-lite.aar (240 085 байт)
tenorflow-lite-select-tf-ops.aar (1708597 байт)
arm64-V8A tensorflow-lite.aar (273 713 байт)
tenorflow-lite-select-tf-ops.aar (2339697 байт)

Известные проблемы / ограничения

  1. Выборочная сборка для C API и версии iOS в настоящее время не поддерживается.

Выборочная сборка TensorFlow Lite с помощью Bazel

В этом разделе предполагается, что вы загрузили исходные коды TensorFlow и настроили локальную среду разработки для Bazel.

Сборка файлов AAR для проекта Android

Вы можете создать собственные 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

Приведенная выше команда сгенерирует файл AAR bazel-bin/tmp/tensorflow-lite.aar для встроенных и настраиваемых операций bazel-bin/tmp/tensorflow-lite.aar Lite; и, при желании, создает файл bazel-bin/tmp/tensorflow-lite-select-tf-ops.aar если ваши модели содержат Select TensorFlow ops. Обратите внимание, что это создает «толстый» 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.

Выборочная сборка TensorFlow Lite с помощью Docker

В этом разделе предполагается, что вы установили Docker на свой локальный компьютер и создали файл докера TensorFlow Lite .

Сборка файлов AAR для проекта Android

Загрузите скрипт для сборки с помощью 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, который вы хотите проверить перед сборкой библиотек. Приведенная выше команда сгенерирует файл AAR tensorflow-lite.aar для встроенных и настраиваемых операций tensorflow-lite-select-tf-ops.aar и, необязательно, файл AAR tensorflow-lite-select-tf-ops.aar для выбора операций tensorflow-lite-select-tf-ops.aar в текущем каталоге.

Добавить файлы AAR в проект

Добавьте файлы AAR, напрямую импортировав AAR в свой проект или опубликовав пользовательский AAR в локальном репозитории Maven . Обратите внимание, что вам необходимо добавить файлы AAR для tensorflow-lite-select-tf-ops.aar если вы его сгенерируете.