Los modelos de aprendizaje automático (ML) que utiliza con TensorFlow Lite se crean y entrenan originalmente utilizando bibliotecas y herramientas principales de TensorFlow. Una vez que haya creado un modelo con el núcleo de TensorFlow, puede convertirlo a un formato de modelo ML más pequeño y eficiente llamado modelo TensorFlow Lite. Esta sección proporciona orientación para convertir sus modelos de TensorFlow al formato de modelo de TensorFlow Lite.
Flujo de trabajo de conversión
La conversión de modelos de TensorFlow al formato TensorFlow Lite puede tomar algunas rutas según el contenido de su modelo de ML. Como primer paso de ese proceso, debe evaluar su modelo para determinar si se puede convertir directamente. Esta evaluación determina si el contenido del modelo es compatible con los entornos de ejecución estándar de TensorFlow Lite en función de las operaciones de TensorFlow que utiliza. Si su modelo utiliza operaciones fuera del conjunto admitido, tiene la opción de refactorizar su modelo o utilizar técnicas de conversión avanzadas.
El siguiente diagrama muestra los pasos de alto nivel para convertir un modelo.
Figura 1. Flujo de trabajo de conversión de TensorFlow Lite.
Las siguientes secciones describen el proceso de evaluación y conversión de modelos para su uso con TensorFlow Lite.
Formatos del modelo de entrada
Puede utilizar el convertidor con los siguientes formatos de modelo de entrada:
- SavedModel ( recomendado ): un modelo de TensorFlow guardado como un conjunto de archivos en el disco.
- Modelo Keras : un modelo creado utilizando la API de Keras de alto nivel.
- Formato Keras H5 : una alternativa ligera al formato SavedModel compatible con la API de Keras.
- Modelos creados a partir de funciones concretas : un modelo creado utilizando la API de TensorFlow de bajo nivel.
Puede guardar los modelos de funciones concretas y de Keras como SavedModel y convertirlos utilizando la ruta recomendada.
Si tiene un modelo Jax, puede usar la API TFLiteConverter.experimental_from_jax
para convertirlo al formato TensorFlow Lite. Tenga en cuenta que esta API está sujeta a cambios mientras se encuentra en modo experimental.
Evaluación de conversión
Evaluar su modelo es un paso importante antes de intentar convertirlo. Al evaluar, desea determinar si el contenido de su modelo es compatible con el formato TensorFlow Lite. También debe determinar si su modelo es adecuado para su uso en dispositivos móviles y de borde en términos del tamaño de los datos que utiliza el modelo, sus requisitos de procesamiento de hardware y el tamaño y la complejidad generales del modelo.
Para muchos modelos, el convertidor debería funcionar de inmediato. Sin embargo, la biblioteca de operadores integrada de TensorFlow Lite admite un subconjunto de operadores principales de TensorFlow, lo que significa que algunos modelos pueden necesitar pasos adicionales antes de convertirse a TensorFlow Lite. Además, algunas operaciones compatibles con TensorFlow Lite tienen requisitos de uso restringidos por motivos de rendimiento. Consulte la guía de compatibilidad del operador para determinar si su modelo necesita ser refactorizado para la conversión.
Conversión de modelo
El convertidor TensorFlow Lite toma un modelo TensorFlow y genera un modelo TensorFlow Lite (un formato FlatBuffer optimizado identificado por la extensión de archivo .tflite
). Puede cargar un SavedModel o convertir directamente un modelo que cree en código.
El convertidor toma 3 indicadores (u opciones) principales que personalizan la conversión para su modelo:
- Los indicadores de compatibilidad le permiten especificar si la conversión debe permitir operadores personalizados.
- Los indicadores de optimización le permiten especificar el tipo de optimización que se aplicará durante la conversión. La técnica de optimización más utilizada es la cuantificación posterior al entrenamiento .
- Los indicadores de metadatos le permiten agregar metadatos al modelo convertido, lo que facilita la creación de código contenedor específico de la plataforma al implementar modelos en dispositivos.
Puede convertir su modelo utilizando la API de Python o la herramienta de línea de comandos . Consulte la guía del modelo Convert TF para obtener instrucciones paso a paso sobre cómo ejecutar el convertidor en su modelo.
Normalmente, convertiría su modelo para el entorno de ejecución estándar de TensorFlow Lite o el entorno de ejecución de los servicios de Google Play para TensorFlow Lite (Beta). Algunos casos de uso avanzados requieren la personalización del entorno de ejecución del modelo, lo que requiere pasos adicionales en el proceso de conversión. Consulte la sección del entorno de ejecución avanzado de la descripción general de Android para obtener más orientación.
Conversión avanzada
Si encuentra errores al ejecutar el convertidor en su modelo, lo más probable es que tenga un problema de compatibilidad del operador. TensorFlow Lite no admite todas las operaciones de TensorFlow. Puede solucionar estos problemas refactorizando su modelo o utilizando opciones de conversión avanzadas que le permitan crear un modelo de formato TensorFlow Lite modificado y un entorno de ejecución personalizado para ese modelo.
- Consulte la descripción general de compatibilidad de modelos para obtener más información sobre las consideraciones de compatibilidad de modelos de TensorFlow y TensorFlow Lite.
- Los temas de la descripción general de compatibilidad del modelo cubren técnicas avanzadas para refactorizar su modelo, como la guía Seleccionar operadores .
- Para obtener una lista completa de operaciones y limitaciones, consulte la página TensorFlow Lite Ops .
Próximos pasos
- Consulte la guía de conversión de modelos TF para comenzar rápidamente a convertir su modelo.
- Consulte la descripción general de optimización para obtener orientación sobre cómo optimizar su modelo convertido utilizando técnicas como la cuantificación posterior al entrenamiento .
- Consulte la descripción general sobre Agregar metadatos para aprender cómo agregar metadatos a sus modelos. Los metadatos proporcionan otros usos, una descripción de su modelo, así como información que los generadores de código pueden aprovechar.