LiteRT para Android

LiteRT te permite ejecutar modelos de TensorFlow, PyTorch y JAX en tus apps para Android. El sistema LiteRT proporciona entornos de ejecución precompilados y personalizables para ejecutar modelos en Android de forma rápida y eficiente, incluidas opciones de aceleración de hardware.

Por ejemplo, las aplicaciones para Android que usan LiteRT, consulta el repositorio de muestras de LiteRT.

Modelos de aprendizaje automático

LiteRT usa modelos de TensorFlow, PyTorch y JAX que se convierten en un formato de modelo de aprendizaje automático más pequeño, portátil y eficiente. Puedes usar modelos precompilados con LiteRT en Android, o bien compilar tus propios modelos y convertirlos al formato LiteRT.

En esta página, se analiza el uso de modelos de aprendizaje automático ya creados y no se abarca la creación, el entrenamiento, las pruebas ni la conversión de modelos. Obtén más información para elegir, modificar, compilar y convertir modelos de aprendizaje automático para LiteRT en la página Modelos.

Ejecuta modelos en Android

Un modelo de LiteRT que se ejecuta dentro de una app para Android recibe datos, los procesa y genera una predicción según la lógica del modelo. Un modelo de LiteRT requiere un entorno de ejecución especial para ejecutarse, y los datos que se pasan al modelo deben estar en un formato de datos específico, llamado tensor. Cuando un modelo procesa los datos, lo que se conoce como ejecutar una inferencia, genera resultados de predicción como tensores nuevos y los pasa a la app para Android para que pueda tomar medidas, como mostrar el resultado a un usuario o ejecutar lógica empresarial adicional.

Flujo de ejecución funcional para modelos de LiteRT en apps para Android

Figura 1: Flujo de ejecución funcional para modelos de LiteRT en apps para Android.

En el nivel de diseño funcional, tu app para Android necesita los siguientes elementos para ejecutar un modelo de LiteRT:

  • Entorno de ejecución de LiteRT para ejecutar el modelo
  • Controlador de entrada del modelo para transformar datos en tensores
  • Controlador de salida del modelo para recibir tensores de resultados de salida y, luego, interpretarlos como resultados de predicción

En las siguientes secciones, se describe cómo las bibliotecas y herramientas de LiteRT proporcionan estos elementos funcionales.

Compila apps con LiteRT

En esta sección, se describe la ruta de acceso recomendada y más común para implementar LiteRT en tu app para Android. Debes prestar más atención a las secciones entorno de ejecución y bibliotecas de desarrollo. Si desarrollaste un modelo personalizado, asegúrate de revisar la sección Rutas de desarrollo avanzadas.

Opciones del entorno de ejecución

Existen varias formas de habilitar un entorno de ejecución para ejecutar modelos en tu app para Android. Estas son las opciones preferidas:

En general, debes usar el entorno de ejecución que proporcionan los servicios de Google Play porque es más eficiente en el espacio que el entorno estándar, ya que se carga de forma dinámica y mantiene el tamaño de tu app más pequeño. Los Servicios de Google Play también usan automáticamente la versión estable más reciente del entorno de ejecución de LiteRT, lo que te brinda funciones adicionales y un rendimiento mejorado con el tiempo. Si ofreces tu app en dispositivos que no incluyen los Servicios de Google Play o necesitas gestionar de cerca tu entorno de tiempo de ejecución de ML, debes usar el tiempo de ejecución estándar de LiteRT. Esta opción agrupa código adicional en tu app, lo que te permite tener más control sobre el entorno de ejecución de AA en tu app a costa de aumentar el tamaño de descarga de la app.

Para acceder a estos entornos de ejecución en tu app para Android, agrega bibliotecas de desarrollo de LiteRT a tu entorno de desarrollo de apps. Para obtener información sobre cómo usar los entornos de ejecución estándar en tu app, consulta la siguiente sección.

Bibliotecas

Puedes acceder a la API de Interpreter con los servicios de Google Play. Puedes usar el núcleo y las bibliotecas de compatibilidad de LiteRT en tu app para Android. Para obtener detalles de programación sobre el uso de bibliotecas y entornos de ejecución de LiteRT, consulta Herramientas de desarrollo para Android.

Cómo obtener modelos

Para ejecutar un modelo en una app para Android, se requiere un modelo en formato LiteRT. Puedes usar modelos precompilados o compilar uno y convertirlo al formato Lite. Para obtener más información sobre cómo obtener modelos para tu app para Android, consulta la página Modelos de LiteRT.

Cómo controlar los datos de entrada

Cualquier dato que pases a un modelo de AA debe ser un tensor con una estructura de datos específica, que a menudo se denomina forma del tensor. Para procesar datos con un modelo, el código de tu app debe transformar los datos de su formato nativo, como imágenes, texto o datos de audio, en un tensor con la forma requerida para tu modelo.

Ejecuta inferencias

El procesamiento de datos a través de un modelo para generar un resultado de predicción se conoce como ejecutar una inferencia. Ejecutar una inferencia en una app para Android requiere un entorno de ejecución de LiteRT, un modelo y datos de entrada.

La velocidad a la que un modelo puede generar una inferencia en un dispositivo en particular depende del tamaño de los datos procesados, la complejidad del modelo y los recursos de procesamiento disponibles, como la memoria y la CPU, o los procesadores especializados llamados aceleradores. Los modelos de aprendizaje automático pueden ejecutarse más rápido en estos procesadores especializados, como las unidades de procesamiento gráfico (GPU) y las unidades de procesamiento tensorial (TPU), con controladores de hardware LiteRT llamados delegados. Para obtener más información sobre los delegados y la aceleración de hardware del procesamiento de modelos, consulta la descripción general de la aceleración de hardware.

Controla los resultados de salida

Los modelos generan resultados de predicción como tensores, que tu app para Android debe controlar tomando medidas o mostrando un resultado al usuario. Los resultados del modelo pueden ser tan simples como un número que corresponde a un solo resultado (0 = perro, 1 = gato, 2 = pájaro) para una clasificación de imágenes, hasta resultados mucho más complejos, como varios cuadros de límite para varios objetos clasificados en una imagen, con calificaciones de confianza de predicción entre 0 y 1.

Rutas de desarrollo avanzadas

Cuando uses modelos LiteRT más sofisticados y personalizados, es posible que debas usar enfoques de desarrollo más avanzados que los descritos anteriormente. En las siguientes secciones, se describen técnicas avanzadas para ejecutar modelos y desarrollarlos para LiteRT en apps para Android.

Entornos de ejecución avanzados

Además de los entornos de ejecución estándar y de los servicios de Google Play para LiteRT, existen entornos de ejecución adicionales que puedes usar con tu app para Android. El uso más probable de estos entornos es si tienes un modelo de aprendizaje automático que usa operaciones de AA que no son compatibles con el entorno de ejecución estándar para LiteRT.

El entorno de ejecución Flex de LiteRT te permite incluir operadores específicos necesarios para tu modelo. Como opción avanzada para ejecutar tu modelo, puedes compilar LiteRT para Android para incluir operadores y otras funciones necesarias para ejecutar tu modelo de aprendizaje automático de TensorFlow. Para obtener más información, consulta Cómo compilar LiteRT para Android.

APIs de C y C++

LiteRT también proporciona una API para ejecutar modelos con C y C++. Si tu app usa el NDK de Android, deberías considerar usar esta API. También te recomendamos que uses esta API si deseas compartir código entre varias plataformas. Para obtener más información sobre esta opción de desarrollo, consulta la página Herramientas de desarrollo.

Ejecución de modelos basada en servidores

En general, debes ejecutar modelos en tu app en un dispositivo Android para aprovechar una latencia más baja y una privacidad de los datos mejorada para tus usuarios. Sin embargo, hay casos en los que ejecutar un modelo en un servidor en la nube, fuera del dispositivo, es una mejor solución. Por ejemplo, si tienes un modelo grande que no se comprime fácilmente a un tamaño que se ajuste a los dispositivos Android de tus usuarios o que se pueda ejecutar con un rendimiento razonable en esos dispositivos. Este enfoque también puede ser tu opción preferida si la prioridad principal es un rendimiento coherente del modelo en una amplia variedad de dispositivos.

Google Cloud ofrece un paquete completo de servicios para ejecutar modelos de IA. Para obtener más información, consulta la página Productos de IA y aprendizaje automático de Google Cloud.

Desarrollo y optimización de modelos personalizados

Es probable que las trayectorias de desarrollo más avanzadas incluyan el desarrollo de modelos de aprendizaje automático personalizados y la optimización de esos modelos para su uso en dispositivos Android. Si planeas compilar modelos personalizados, asegúrate de considerar aplicar técnicas de cuantificación a los modelos para reducir los costos de memoria y procesamiento. Para obtener más información sobre cómo compilar modelos de alto rendimiento para usar con LiteRT, consulta Prácticas recomendadas de rendimiento en la sección Modelos.