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.
Com um modelo Gemma 3 1B totalmente no dispositivo, você pode aproveitar os benefícios do AI Edge:
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:
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.
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.
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.
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).
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:
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!
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.
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.
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!
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