Se usó la API de Cloud Translation para traducir esta página.
Switch to English

Reducir el tamaño binario de TensorFlow Lite

Visión general

Al implementar modelos para aplicaciones de aprendizaje automático en el dispositivo (ODML), es importante tener en cuenta la memoria limitada disponible en los dispositivos móviles. Los tamaños binarios del modelo están estrechamente relacionados con el número de operaciones utilizadas en el modelo. TensorFlow Lite te permite reducir los tamaños de modelos binarios mediante compilaciones selectivas. Las compilaciones selectivas omiten las operaciones no utilizadas en su conjunto de modelos y producen una biblioteca compacta con solo el tiempo de ejecución y los núcleos de operación necesarios para que el modelo se ejecute en su dispositivo móvil.

La compilación selectiva se aplica a las siguientes tres bibliotecas de operaciones.

  1. Biblioteca de operaciones incorporada de TensorFlow Lite
  2. Operaciones personalizadas de TensorFlow Lite
  3. Seleccionar biblioteca de operaciones de TensorFlow

La siguiente tabla demuestra el impacto de las compilaciones selectivas para algunos casos de uso comunes:

Nombre del modelo Dominio Arquitectura de destino Tamaño (s) de archivo AAR
Mobilenet_1.0_224 (flotante) Clasificación de imágenes armeabi-v7a tensorflow-lite.aar (296,635 bytes)
arm64-v8a tensorflow-lite.aar (382,892 bytes)
ESPECIA Extracción de tono de sonido armeabi-v7a tensorflow-lite.aar (375,813 bytes)
tensorflow-lite-select-tf-ops.aar (1.676.380 bytes)
arm64-v8a tensorflow-lite.aar (421,826 bytes)
tensorflow-lite-select-tf-ops.aar (2.298.630 bytes)
i3d-kinetics-400 Clasificación de video armeabi-v7a tensorflow-lite.aar (240,085 bytes)
tensorflow-lite-select-tf-ops.aar (1,708,597 bytes)
arm64-v8a tensorflow-lite.aar (273,713 bytes)
tensorflow-lite-select-tf-ops.aar (2,339,697 bytes)

Problemas / limitaciones conocidos

  1. La compilación selectiva para la API de C y la versión de iOS no se admiten actualmente.

Compile TensorFlow Lite de forma selectiva con Bazel

En esta sección, se supone que ha descargado los códigos fuente de TensorFlow y configurado el entorno de desarrollo local en Bazel.

Crear archivos AAR para proyectos de Android

Puede crear los AAR personalizados de TensorFlow Lite proporcionando las rutas de archivo de su modelo de la siguiente manera.

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

El comando anterior generará el archivo AAR bazel-bin/tmp/tensorflow-lite.aar para las bazel-bin/tmp/tensorflow-lite.aar integradas y personalizadas de TensorFlow Lite; y, opcionalmente, genera el archivo bazel-bin/tmp/tensorflow-lite-select-tf-ops.aar si sus modelos contienen operaciones de Select TensorFlow. Tenga en cuenta que esto crea un AAR "gordo" con varias arquitecturas diferentes; si no los necesita todos, utilice el subconjunto apropiado para su entorno de implementación.

Uso avanzado: cree con operaciones personalizadas

Si desarrolló modelos de Tensorflow Lite con operaciones personalizadas, puede compilarlos agregando las siguientes marcas al comando de compilación:

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

El indicador tflite_custom_ops_srcs contiene archivos fuente de sus operaciones personalizadas y el indicador tflite_custom_ops_deps contiene dependencias para construir esos archivos fuente. Tenga en cuenta que estas dependencias deben existir en el repositorio de TensorFlow.

Compile TensorFlow Lite de forma selectiva con Docker

En esta sección, se supone que instaló Docker en su máquina local y creó el archivo de Docker de TensorFlow Lite .

Crear archivos AAR para proyectos de Android

Descargue el script para compilar con Docker ejecutando:

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

Luego, puede crear el AAR personalizado de TensorFlow Lite proporcionando las rutas de archivo de su modelo de la siguiente manera.

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

La marca de checkpoint es una confirmación, una rama o una etiqueta del repositorio de TensorFlow que desea verificar antes de compilar las bibliotecas. El comando anterior generará el archivo AAR tensorflow-lite.aar para las tensorflow-lite.aar integradas y personalizadas de TensorFlow Lite y, opcionalmente, el archivo AAR tensorflow-lite-select-tf-ops.aar para las operaciones seleccionadas de TensorFlow en su directorio actual.

Agregar archivos AAR al proyecto

Agregue archivos AAR importando directamente el AAR a su proyecto o publicando el AAR personalizado en su repositorio local de Maven . Tenga en cuenta que también debe agregar los archivos AAR para tensorflow-lite-select-tf-ops.aar si los genera.