Los modelos de aprendizaje automático (AA) que usas con TensorFlow Lite se compilaron y entrenaron originalmente con las bibliotecas y herramientas principales de TensorFlow. Una vez que hayas creado un modelo con TensorFlow Core, puedes convertirlo a un formato de modelo de AA más pequeño y eficiente llamado TensorFlow Lite. En esta sección, se proporciona orientación para convertir tus modelos de TensorFlow al formato de modelo de TensorFlow Lite.
Flujo de trabajo de las conversiones
Convertir los modelos de TensorFlow al formato TensorFlow Lite puede tomar varios caminos, según el contenido de tu modelo de AA. Como primer paso de ese proceso, debes evaluar tu 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 según las operaciones de TensorFlow que usa. Si el modelo usa operaciones fuera del conjunto admitido, tienes la opción de refactorizarlo o usar técnicas de conversión avanzadas.
En el siguiente diagrama, se muestran los pasos de alto nivel para convertir un modelo.
Figura 1: Flujo de trabajo de conversión de TensorFlow Lite
En las siguientes secciones, se describe el proceso de evaluación y conversión de modelos para usar con TensorFlow Lite.
Formatos de modelos de entrada
Puedes usar el convertidor con los siguientes formatos de modelo de entrada:
- SavedModel (recomendado): Es un modelo de TensorFlow guardado como un conjunto de archivos en el disco.
- Modelo de Keras: Es un modelo creado con la API de Keras de nivel alto.
- Formato H5 de Keras: Es una alternativa ligera al formato de modelo guardado compatible con la API de Keras.
- Modelos compilados a partir de funciones concretas: Un modelo creado con la API de TensorFlow de bajo nivel
Puedes guardar los modelos de Keras y de funciones concretas como un modelo guardado y convertirlo mediante la ruta recomendada.
Si tienes un modelo de Jax, puedes usar la API de TFLiteConverter.experimental_from_jax
para convertirlo al formato de TensorFlow Lite. Ten en cuenta que esta API está sujeta a cambios en el modo experimental.
Evaluación de conversiones
Evaluar tu modelo es un paso importante antes de intentar convertirlo. Cuando lo evalúes, debes determinar si el contenido de tu modelo es compatible con el formato de TensorFlow Lite. También debes determinar si tu modelo es una buena opción para usar en dispositivos móviles y perimetrales en términos del tamaño de los datos que usa el modelo, sus requisitos de procesamiento de hardware, y el tamaño y la complejidad generales del modelo.
En muchos modelos, el conversor 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 la conversión a TensorFlow Lite. Además, algunas operaciones compatibles con TensorFlow Lite tienen requisitos de uso restringidos por motivos de rendimiento. Consulta la guía de compatibilidad con operadores para determinar si debes refactorizar tu modelo para la conversión.
Conversión de modelos
El conversor de TensorFlow Lite toma un modelo de TensorFlow y genera un modelo de TensorFlow Lite (un formato FlatBuffer optimizado que se identifica mediante la extensión de archivo .tflite
). Puedes cargar un modelo guardado o convertir directamente un modelo que crees en el código.
El conversor toma 3 opciones o marcas principales que personalizan la conversión de tu modelo:
- Las marcas de compatibilidad te permiten especificar si la conversión debe permitir operadores personalizados.
- Las marcas de optimización te permiten especificar el tipo de optimización que se aplicará durante la conversión. La técnica de optimización más usada es la cuanitización posterior al entrenamiento.
- Las marcas de metadatos te permiten agregar metadatos al modelo convertido, lo que facilita la creación de código de wrapper específico de la plataforma cuando se implementan modelos en dispositivos.
Puedes convertir tu modelo con la API de Python o la herramienta de línea de comandos. Consulta la guía Convierte el modelo de TF para obtener instrucciones paso a paso sobre cómo ejecutar el convertidor en tu modelo.
Por lo general, puedes convertir tu 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. Consulta la sección Entorno de ejecución avanzado de la descripción general de Android para obtener más información.
Conversión avanzada
Si te encuentras con errores mientras ejecutas el convertidor en tu modelo, es probable que tengas un problema de compatibilidad con el operador. No todas las operaciones de TensorFlow son compatibles con TensorFlow Lite. Puedes solucionar estos problemas si refactorizas tu modelo o usas opciones de conversión avanzadas que te permiten crear un modelo de formato de TensorFlow Lite modificado y un entorno de ejecución personalizado para ese modelo.
- Consulta la Descripción general de la 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 la compatibilidad del modelo abarcan técnicas avanzadas para refactorizar tu modelo, como la guía Selecciona operadores.
- Para ver la lista completa de operaciones y limitaciones, consulta la página de operaciones de TensorFlow Lite.
Próximos pasos
- Consulta la guía sobre cómo convertir modelos de TF para comenzar rápidamente a convertir tu modelo.
- Consulta la descripción general de la optimización para obtener orientación sobre cómo optimizar tu modelo convertido con técnicas como la cuantización posterior al entrenamiento.
- Consulta la descripción general sobre cómo agregar metadatos para aprender a agregar metadatos a los modelos. Los metadatos proporcionan otros usos de una descripción de tu modelo, así como información que los generadores de código pueden aprovechar.