Gemma 3 en dispositivos móviles y en la Web con Google AI Edge

MAR 12, 2025
Marissa Ikonomidis Staff Software Engineer
T.J. Alumbaugh Software Engineer
Mark Sherwood Senior Product Manager
Cormac Brick Principal Engineer

Gemma 3 1B es un nuevo tamaño de modelo de la familia Gemma de modelos de peso abierto que realmente permite distribuir modelos de lenguaje pequeño (SLM) en aplicaciones para dispositivos móviles y la Web. Al implementar los SLM en entornos de producción, los modelos deben ser lo suficientemente pequeños como para descargarse rápidamente, ejecutarse lo suficientemente rápido como para mantener la atención del usuario y admitir una amplia variedad de dispositivos de usuario final.

Con un tamaño de solo 529 MB, Gemma 3 1B se ejecuta a una velocidad de hasta 2585 tok/s en prellenado a través de la inferencia de LLM de Google AI Edge, lo que crea la capacidad de procesar una página de contenido en menos de un segundo. Si incluyes Gemma 3 1B en tu app, puedes usar un lenguaje natural para impulsar tu aplicación o generar contenido a partir de datos o contexto dentro de la aplicación, todo totalmente personalizable y ajustable.

En esta entrada del blog, te mostraremos algunos ejemplos de casos de uso para Gemma 3 que puedes usar en tu aplicación y cómo comenzar con Gemma en Android. Además, veremos en detalle algunas de las métricas de rendimiento y explicaremos cómo se logró todo esto.

Convierte los datos de apps en contenido personalizado en Android con Gemma 3 1B

¿Qué puedo hacer con Gemma 3 en mi app?

Con un modelo Gemma 3 1B totalmente integrado en el dispositivo, puedes aprovechar los beneficios de AI Edge:

  1. Disponibilidad sin conexión: permite que tu app funcione por completo cuando no tengas disponible Wi-Fi ni datos móviles.

2. Costo: sin facturas en la nube, puedes usar apps gratuitas o freemium.

3. Latencia: algunas funciones deben ser más rápidas de lo que permite una llamada al servidor.

4. Privacidad: implementa inteligencia en los datos que no pueden salir del dispositivo o que están cifrados de extremo a extremo.


Gemma 1B es sumamente versátil e incluso lo puedes ajustar para tus propios dominio y casos de uso. Estos son solo algunos de nuestros casos de uso favoritos para Gemma 1B:

  1. Subtítulos de datos: convierte los datos de tu app en descripciones atractivas y compartibles. Por ejemplo, datos de sueño:> “Dormiste bien durante 7 horas, pero te despertaste 5 veces entre las 2 y las 4 de la madrugada”.

2. Diálogo en el juego: crea un diálogo entre PNJ basado en el estado actual del juego.

3. Respuesta inteligente: brinda a los usuarios respuestas sugeridas inteligentes en función de la conversación mientras envían mensajes.

4. Preguntas y respuestas sobre documentos: usa Gemma 3 junto con nuestro nuevo SDK de AI Edge RAG para procesar documentos largos y responder a las preguntas de los usuarios.


Cómo comenzar

Paso 1: Carga la app de demostración

Descarga la app de demostración prediseñada de Google AI Edge de GitHub y envíala a tu dispositivo Android local. Para obtener el mejor rendimiento con Gemma 3 1B, recomendamos un dispositivo con al menos 4 GB de memoria.

$ wget https://github.com/google-ai-edge/mediapipe-samples/releases/download/v0.1.3/llm_inference_v0.1.3-debug.apk
$ adb install llm_inference_v0.1.3-debug.apk

Como alternativa, puedes seguir nuestras instrucciones para crear la app a partir de la fuente.


Paso 2: Selecciona la CPU o GPU

El archivo del modelo Gemma 3 ofrece una gran flexibilidad de implementación, ya que se ejecuta sin problemas en la CPU de tu dispositivo o en la GPU móvil. Puedes elegir ejecutar Gemma 3 en la CPU o GPU cuando inicias la app por primera vez, o puedes cambiar entre modelos y backends si vuelves al cuadro de diálogo de selección de modelos.


Paso 3: Descarga el modelo de Hugging Face

En la pantalla de selección de modelos de la app de demostración, elige tu modelo. La app te dirigirá a Hugging Face para que inicies sesión y aceptes las condiciones de uso de Gemma. Gemma 3 1B, cuantificado en int4, se descargará directamente de la organización comunitaria LiteRT HuggingFace y luego se optimizará una vez para ejecutarse en tu dispositivo (¡pero esto solo lleva unos segundos!).


Paso 4: Ejecuta el modelo

Este es el momento de poner Gemma 3 en práctica. En un nivel profundo, Gemma 3 funciona con la API de inferencia de LLM de Google AI Edge, diseñada para un procesamiento eficiente en el dispositivo.

Puedes chatear con el modelo o asignarle otras tareas de procesamiento de texto. Por ejemplo, intenta lo siguiente:

  • Copia algunos párrafos de una entrada de blog (como esta) o de un artículo.

  • Ve a la app de demostración de LLM.

  • Pega en la casilla de entrada el texto que copiaste.

  • Escribe “Crea una publicación en redes sociales para este contenido. Debe ser corta y sencilla. Menos de 50 palabras” y presiona Intro.

Paso 5: Personaliza Gemma 3 (opcional)

Una de las mejores características de la familia Gemma de modelos de peso abierto son las versiones ajustadas producidas por la comunidad de modelado. Sigue este Colab para ver cómo puedes usar tus datos a fin de crear tu propia versión de Gemma 3 1B, cuantificarla y ejecutarla en dispositivos móviles (CPU y GPU) en tus propias aplicaciones.


Rendimiento

Crea contenido de redes sociales de forma local en el navegador con Gemma 3 1B

Esta demostración y las mediciones son para el modelo Gemma 3 1B con parámetros int4 cuantificados a través de entrenamiento consciente de cuantificación (QAT), que proporciona ahorros significativos de almacenamiento y un mayor rendimiento de decodificación. El modelo Gemma 3 de referencia admite múltiples longitudes de prellenado de 32, 128, 512 y 1024, y utiliza una longitud de contexto de 2048.

Measurements were taken on an Android Samsung Galaxy S24 Ultra with cpufreq governor set to performance.
Las mediciones se tomaron en un Samsung Galaxy S24 Ultra con Android, con el regulador cpufreq ajustado según el rendimiento. El rendimiento observado puede variar según el hardware de tu teléfono y el nivel de actividad actual.
Web performance measurements taken on MacBook Pro 2023 (Apple M3 Pro chip)
Las mediciones se tomaron en la MacBook Pro 2023 (chip Apple M3 Pro) El rendimiento observado puede variar según el hardware de tu computadora y el nivel de actividad actual.

Bajo la superficie

Los resultados de rendimiento descritos anteriormente se lograron a través de amplios esfuerzos de optimización. Estas optimizaciones se diseñaron para funcionar correctamente en todos los modelos de peso abierto, incluido Gemma. Estas son algunas de las funciones clave que mejoraron en gran medida el rendimiento y permitieron una nueva funcionalidad reutilizable.

Cuantificación: el entrenamiento consciente de la cuantificación se aplicó a Gemma utilizando un esquema de canales enteros de 4 bits en los pesos para mantener un rendimiento óptimo, aparte de la calidad y el tamaño del modelo. Además de la cuantificación de peso, también cuantificamos dinámicamente la activación a int8 durante la ejecución para utilizar mejor la capacidad de la CPU.

Actualización de los diseños de caché KV: la caché KV se utiliza en modelos basados en Transformer para almacenar los pares clave-valor de los pasos anteriores, de modo que puedan utilizarse para generar tokens posteriores. Las lecturas y escrituras en la caché de KV ocurren con frecuencia, por lo que es importante que estas operaciones sean eficientes. Estas operaciones se optimizaron mediante la introducción de un diseño de caché KV para reducir las transposiciones y remodelaciones adicionales. Esta optimización mejoró la latencia en los modelos Gemma en aproximadamente un 25% para la CPU y un 20% para la GPU. También se agregó una operación adicional para actualizar de manera eficiente la caché KV in situ en la GPU.

Tiempo de carga mejorado: para aprovechar al máximo el procesamiento de CPU y GPU, utilizamos diseños de tensor especializados. Generar estos diseños de pesos optimizados puede consumir bastante tiempo, energía y memoria. Durante la primera carga del modelo, los pesos se almacenan en caché en el disco, en tu formato optimizado, y las cargas posteriores se leen desde la caché. Si los diseños de tensor se optimizan aún más, la caché actual se invalidará automáticamente y el nuevo formato se almacenará en el disco durante la siguiente carga del modelo.

Pesos compartidos en la GPU: el proceso de inferencia de LLM tiene dos fases: prellenado y decodificación. Estas fases suelen utilizar recursos separados para sus respectivos modelos. Para reducir enormemente la huella de memoria de los LLM, ambas fases pueden compartir los mismos pesos. Si bien esta técnica no es completamente nueva, esta es la primera vez que se usó de una manera fácilmente reutilizable en el entorno de ejecución de LiteRT y el delegado de la GPU. Para las operaciones que admiten esta función, el delegado de la GPU verifica si los pesos ya están presentes en la memoria de la GPU y pueden reutilizarse. En el futuro, otros modelos podrán aprovechar esta capacidad.


Qué sigue

Durante el desarrollo de Gemma 3, nos centramos en ofrecer un excelente rendimiento y, al mismo tiempo, creamos una infraestructura reutilizable para modelos de peso abierto. En 2025, planeamos aprovechar este trabajo para respaldar un conjunto más amplio de modelos de terceros. Con optimizaciones de rendimiento adicionales y un énfasis en reducir aún más el uso de memoria, tenemos la intención de seguir haciendo que los modelos sean más accesibles en una variedad más amplia de dispositivos. Para estar al día con las últimas novedades, configura las notificaciones de ai_edge_torch en GitHub. ¡Pronto habrá más novedades!


Agradecimientos

Advait Jain, Akshat Sharma, Alan Kelly, Andrei Kulik, Byungchul Kim, Chunlei Niu, Chun-nien Chan, Chuo-Ling Chang, Claudio Basile, Cormac Brick, Ekaterina Ignasheva, Eric Yang, Fengwu Yao, Frank Ban, Gerardo Carranza, Grant Jensen, Haoliang Zhang, Henry Wang, Ho Ko, Jae Yoo, Jiuqiang Tang, Juhyun Lee, Jun Jiang, Khanh LeViet, Kris Tonthat, Lin Chen, Lu Wang, Malini P V, Marissa Ikonomidis, Mark Sherwood, Matthew Soulanille, Matthias Grundmann, Mogan Shieh, Mohammadreza Heydary, Na Li, Pauline Sho, Pedro Gonnet, Ping Yu, Pulkit Bhuwalka, Quentin Khan, Ram Iyengar, Raman Sarokin, Rishika Sinha, Rishubh Khurana, Ronghui Zhu, Sachin Kotwani, Sebastian Schmidt, Steven Toribio, Suleman Shahid, T.J. Alumbaugh, Tenghui Zhu, Terry (Woncheol) Heo, Tyler Mullen, Vamsi Manchala, Vitalii Dziuba, Wai Hon Law, Weiyi Wang, Xu Chen, Yishuang Pang, Youchuan Hu, Yu-hui Chen y Zichuan Wei