Descripción general de la conversión de modelos de TensorFlow

Los modelos de aprendizaje automático (AA) que usas con LiteRT se compilan y entrenan originalmente con las herramientas y bibliotecas 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 modelo LiteRT. En esta sección, se proporciona orientación para convertir tus modelos de TensorFlow al formato de modelo de LiteRT.

Flujo de trabajo de conversión

La conversión de modelos de TensorFlow al formato de LiteRT puede seguir 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 los entornos de ejecución estándar de LiteRT admiten el contenido del modelo según las operaciones de TensorFlow que usa. Si tu modelo usa operaciones fuera del conjunto admitido, puedes refactorizarlo o usar técnicas de conversión avanzadas.

En el siguiente diagrama, se muestran los pasos generales para convertir un modelo.

Flujo de trabajo de conversión de TFLite

Figura 1: Flujo de trabajo de conversión de LiteRT.

En las siguientes secciones, se describe el proceso de evaluación y conversión de modelos para usarlos con LiteRT.

Formatos de modelos de entrada

Puedes usar el conversor con los siguientes formatos de modelos de entrada:

Puedes guardar los modelos de funciones concretas y de Keras como un SavedModel y realizar la conversión con la ruta recomendada.

Si tienes un modelo de Jax, puedes usar la API de TFLiteConverter.experimental_from_jax para convertirlo al formato de LiteRT. Ten en cuenta que esta API está sujeta a cambios mientras se encuentra en modo experimental.

Evaluación de conversiones

Evaluar tu modelo es un paso importante antes de intentar convertirlo. Cuando realices la evaluación, querrás determinar si el contenido de tu modelo es compatible con el formato de LiteRT. También debes determinar si tu modelo es adecuado para su uso en dispositivos móviles y perimetrales en términos del tamaño de los datos que utiliza, sus requisitos de procesamiento de hardware y su tamaño y complejidad generales.

En muchos modelos, el convertidor debería funcionar de inmediato. Sin embargo, la biblioteca de operadores integrados de LiteRT admite un subconjunto de operadores principales de TensorFlow, lo que significa que algunos modelos pueden requerir pasos adicionales antes de convertirse a LiteRT. Además, algunas operaciones que admite LiteRT tienen requisitos de uso restringido por motivos de rendimiento. Consulta la guía de compatibilidad de operadores para determinar si tu modelo necesita refactorización para la conversión.

Conversión de modelos

El conversor de LiteRT toma un modelo de TensorFlow y genera un modelo de LiteRT (un formato FlatBuffer optimizado que se puede identificar con la extensión de archivo .tflite). Puedes cargar un SavedModel o convertir directamente un modelo que crees en el código.

El conversor toma 3 marcas (u opciones) principales que personalizan la conversión para tu modelo:

  1. Las marcas de compatibilidad te permiten especificar si la conversión debe permitir operadores personalizados.
  2. 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 utilizada es la cuantización posterior al entrenamiento.
  3. Las marcas de metadatos te permiten agregar metadatos al modelo convertido, lo que facilita la creación de código del 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, convertirías tu modelo para el entorno de ejecución estándar de LiteRT o el entorno de ejecución de los Servicios de Google Play para LiteRT (beta). Algunos casos de uso avanzados requieren la personalización del entorno de ejecución del modelo, lo que implica pasos adicionales en el proceso de conversión. Para obtener más orientación, consulta la sección entorno de ejecución avanzado de la descripción general de Android.

Conversión avanzada

Si encuentras errores mientras ejecutas el convertidor en tu modelo, es muy probable que tengas un problema de compatibilidad del operador. TensorFlow Lite no admite todas las operaciones de TensorFlow. Puedes solucionar estos problemas refactorizando tu modelo o usando opciones de conversión avanzadas que te permitan crear un modelo con formato LiteRT modificado y un entorno de ejecución personalizado para ese modelo.

Próximos pasos