Gemma 3 em dispositivos móveis e na Web com o 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

O Gemma 3 1B é um novo tamanho de modelo da família Gemma de modelos de peso abertos que realmente possibilita a distribuição de modelos de linguagem pequenos (SLMs, na sigla em inglês) no aplicativo em dispositivos móveis e na Web. Na implantação de SLMs em configurações de produção, os modelos precisam ser pequenos o bastante para que seu download seja feito rapidamente, para que eles sejam executados com rapidez suficiente para prender a atenção do usuário e para dar suporte a uma ampla gama de dispositivos de usuário final.

Com apenas 529 MB, o Gemma 3 1B é executado a até 2585 tokens/segundo no preenchimento via inferência de LLM do Google AI Edge, criando a capacidade de processar uma página de conteúdo em menos de um segundo. Ao incluir o Gemma 3 1B em seu app, você pode usar linguagem natural para orientar o aplicativo ou gerar conteúdo a partir de contexto ou dados no aplicativo, tudo totalmente personalizável e ajustável.

Nesta postagem, vamos orientar você usando alguns exemplos de casos de uso do Gemma 3 em aplicativos, falaremos sobre como começar a usar o Gemma no Android, nos aprofundaremos em algumas das métricas de desempenho e explicaremos como tudo isso foi alcançado.

Transforme dados de apps em conteúdo personalizado no Android usando o Gemma 3 1B

O que posso fazer com o Gemma 3 em meu app?

Com um modelo Gemma 3 1B totalmente no dispositivo, você pode aproveitar os benefícios do AI Edge:

  1. Disponibilidade off-line: ative o app para funcionar totalmente quando o Wi-Fi ou os dados da rede celular não estiverem disponíveis.

2. Custo: sem contas de nuvem, você ativa apps gratuitos ou "freemium".

3. Latência: alguns recursos precisam ser mais rápidos do que o permitido por uma chamada de servidor.

4. Privacidade: leve a inteligência para os dados que não podem sair do dispositivo ou que são criptografados de ponta a ponta.


O Gemma 1B é extremamente versátil e pode até ser ajustado para domínios e casos de uso específicos. Estes são apenas alguns dos nossos casos de uso favoritos para o Gemma 1B:

  1. Legendagem de dados: transforme os dados de apps em descrições atraentes e compartilháveis, como nos dados sobre o sono –> "Você dormiu bem por sete horas, mas acordou cinco vezes entre as 2h e as 4h".

2. Diálogos em jogos: crie diálogos de NPC com base no estado atual do jogo.

3. Respostas inteligentes: forneça aos usuários sugestões de resposta inteligentes e com reconhecimento de conversa durante trocas de mensagens.

4. Perguntas e respostas em documentos: use o Gemma 3 juntamente com nosso novo SDK AI Edge RAG para ingerir documentos longos e responder a perguntas dos usuários.


Primeiros passos

Etapa 1: Carregue o app de demonstração

Faça o download do app de demonstração pré-criado do Google AI Edge no GitHub e envie-o por push para o dispositivo Android local. Para obter o melhor desempenho com o Gemma 3 1B, recomendamos um dispositivo com pelo menos 4 GB de memória.

$ 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

Você também pode seguir nossas instruções para criar o app a partir da origem.


Etapa 2: Selecione CPU ou GPU

O arquivo do modelo Gemma 3 oferece grande flexibilidade de implantação, sendo executado perfeitamente na CPU do dispositivo ou na GPU para dispositivos móveis. Você pode optar por executar o Gemma 3 na CPU ou GPU ao iniciar o app pela primeira vez ou alternar entre modelos e back-ends voltando à caixa de diálogo de seleção de modelo.


Etapa 3: Faça o download do modelo da Hugging Face

Na tela de seleção de modelo do app de demonstração, escolha o modelo. O app direcionará você para a Hugging Face para fazer login e aceitar os termos de uso do Gemma. O download do Gemma 3 1B, quantizado em int4, será feito diretamente da organização da comunidade LiteRT da HuggingFace, e ele será otimizado uma vez para execução no dispositivo (mas isso leva apenas alguns segundos).


Etapa 4: Execute o modelo

Agora, é hora de colocar o Gemma 3 para trabalhar! Nos bastidores, o Gemma 3 é alimentado pela API LLM Inference do Google AI Edge, projetada para processamento eficiente no dispositivo.

Você pode interagir com o modelo via chat ou pode atribuir a ele outras tarefas de processamento de texto. Por exemplo, tente o seguinte:

  • Copie alguns parágrafos de uma postagem de blog (como esta) ou de uma matéria.

  • Mude para o app de demonstração do LLM.

  • Cole o texto copiado na caixa de entrada.

  • Digite "Crie uma postagem de rede social para este conteúdo. Ela dever ser curta. Menos de 50 palavras.". Em seguida, pressione Enter.

Etapa 5: Personalize o Gemma 3 (opcional)

Uma das ótimas características da família Gemma de modelos de peso abertos são as versões ajustadas produzidas pela comunidade de criação de modelos. Siga este Colab para ver como você pode usar seus próprios dados para criar a sua versão do Gemma 3 1B, quantizá-la e executá-la em dispositivos móveis (CPU e GPU) em seus próprios aplicativos!


Desempenho

Crie conteúdo de redes sociais localmente no navegador usando o Gemma 3 1B

A demonstração e as medições indicadas aqui referem-se ao modelo Gemma 3 1B com parâmetros int4 quantizados via treinamento com reconhecimento de quantização (QAT, na sigla em inglês), que fornece economias significativas de armazenamento e capacidade de processamento de decodificação mais alta. O modelo Gemma 3 do comparativo de mercado dá suporte a vários comprimentos de preenchimento, de 32, 128, 512 e 1024, e usa um comprimento de contexto de 2048.

Measurements were taken on an Android Samsung Galaxy S24 Ultra with cpufreq governor set to performance.
As medições foram feitas em um Android Samsung Galaxy S24 Ultra com driver cpufreq ajustado para desempenho. O desempenho observado pode variar dependendo do hardware do telefone e do nível de atividade atual.
Web performance measurements taken on MacBook Pro 2023 (Apple M3 Pro chip)
As medições foram feitas no MacBook Pro 2023 (chip Apple M3 Pro) O desempenho observado pode variar dependendo do hardware do computador e do nível de atividade atual.

Nos bastidores

Os resultados de desempenho descritos acima foram alcançados por meio de esforços extensos de otimização. Essas otimizações foram projetadas para funcionar bem em modelos de peso abertos, incluindo o Gemma. Aqui estão alguns dos principais recursos que aumentaram significativamente o desempenho e permitiram novas funcionalidades reutilizáveis.

Quantização: o treinamento com reconhecimento de quantização foi aplicado ao Gemma usando um esquema de canal inteiro de 4 bits nos pesos para manter o desempenho ideal, a qualidade do modelo e o tamanho. Além da quantização de peso, também quantizamos dinamicamente a ativação para int8 durante a execução para utilizar melhor a capacidade da CPU.

Atualização dos layouts de cache KV: o cache KV é usado em modelos baseados em transformadores para armazenar os pares de chave-valor das etapas anteriores de forma que possam ser usados para gerar tokens subsequentes. As leituras e gravações no cache KV acontecem com frequência, por isso é importante que essas operações sejam eficientes. Essas operações foram otimizadas pela introdução de um layout de cache KV para reduzir transposições e remodelagens extras. Essa otimização melhorou a latência nos modelos Gemma em aproximadamente 25% para CPU e 20% para GPU. Uma operação extra também foi adicionada para atualizar o cache KV no local na GPU sem perda de desempenho.

Tempo de carregamento aprimorado: para aproveitar ao máximo o processamento de CPU e GPU, usamos layouts de tensor especializados. Gerar esses layouts de peso otimizados pode exigir tempo, energia e memória significativos. Durante o primeiro carregamento do modelo, os pesos são armazenados em cache no disco em seu formato otimizado, e os carregamentos subsequentes são lidos a partir do cache. Se os layouts de tensor forem otimizados posteriormente, o cache existente será automaticamente invalidado, e o novo formato será armazenado em disco durante o próximo carregamento do modelo.

Compartilhamento de pesos da GPU: o processo de inferência de LLM tem duas fases, preenchimento e decodificação. Essas fases normalmente usam recursos separados para seus respectivos modelos. Para reduzir drasticamente o consumo de memória pelos LLMs, ambas as fases podem compartilhar os mesmos pesos. Embora essa técnica não seja totalmente nova, esta é a primeira vez que ela é aplicada de maneira facilmente reutilizável no ambiente de execução do LiteRT e no delegado de GPU. Para operações com suporte a esse recurso, o delegado de GPU verifica se os pesos já estão presentes na memória da GPU e se podem ser reutilizados. No futuro, outros modelos poderão aproveitar facilmente essa capacidade.


O que vem por aí

Durante o desenvolvimento do Gemma 3, nos concentramos em oferecer um excelente desempenho e, ao mesmo tempo, criar uma infraestrutura reutilizável para modelos de peso abertos. Em 2025, planejamos evoluir esse trabalho para dar suporte a um conjunto mais amplo de modelos de terceiros. Com otimizações de desempenho adicionais e ênfase em reduzir ainda mais o uso de memória, pretendemos continuar tornando os modelos mais acessíveis em uma gama mais ampla de dispositivos. Para acompanhar os últimos desenvolvimentos, configure as notificações para ai_edge_torch no GitHub. Mais novidades em breve!


Agradecimentos

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, Zichuan Wei