IA generativa no dispositivo no Chrome, Chromebook Plus e Pixel Watch com o LiteRT-LM

24 DE SETEMBRO DE 2025
Yu-hui Chen Staff Software Engineer
Ram Iyengar Senior Staff Software Engineer

IA generativa no dispositivo no Chrome, Chromebook Plus e Pixel Watch com o LiteRT-LM

A execução de modelos de linguagem grandes (LLMs) poderosos diretamente no dispositivo de um usuário desbloqueia recursos que podem melhorar significativamente as experiências com os produtos. Sua disponibilidade off-line os torna prontamente disponíveis em todos os momentos, enquanto sua eficiência de custo (sem custos por chamada de API) os torna práticos para tarefas de alta frequência, como resumos ou revisões de textos.

No entanto, implantar esses modelos em escala de gigabytes em uma ampla gama de tipos de hardware de borda e, ao mesmo tempo, alcançar velocidades de latência de TTFT (tempo até o primeiro token) inferiores a um segundo e a qualidade de saída necessária é um grande desafio técnico. Abordamos esses pontos com o LiteRT-LM.

Hoje, temos o prazer de oferecer aos desenvolvedores o acesso direto ao LiteRT-LM, o framework de inferência pronto para produção que tem habilitado algumas das mais amplas implantações do Gemini Nano em vários produtos Google até o momento. Esse mecanismo testado em campo permite o uso do Gemini Nano e do Gemma no dispositivo em produtos como Chrome, Chromebook Plus e Pixel Watch, além de outros modelos abertos por meio da API MediaPipe LLM Inference.

Você já pode aproveitar as APIs de nível alto, como a API MediaPipe LLM Inference, as APIs de IA integradas do Chrome e o Android AICore, para executar LLMs no dispositivo. Mas, pela primeira vez, estamos fornecendo a interface em C++ subjacente (em pré-lançamento) de nosso mecanismo LiteRT-LM. Esse acesso de nível baixo permite que você crie pipelines de IA personalizados e de alto desempenho, adaptados aos seus aplicativos, desbloqueando a tecnologia comprovada do mecanismo e o desempenho otimizado em sua plataforma preferida. Aproveite nossas APIs para começar a criar seus aplicativos habilitados por LLM hoje mesmo e experimentar esse desempenho otimizado.

Especificamente, o LiteRT-LM está habilitando:

  • A IA da Web no Chrome, permitindo que os desenvolvedores da Web utilizem as tarefas habilitadas por IA por meio de APIs de IA integradas. Essencialmente, isso representa a implantação multiplataforma de maior alcance do Gemini Nano.
  • Recursos de IA no Chromebook Plus para ajudar a manejar um milhão de guias e a desmistificar as passagens de texto densas.
  • Recursos de IA, como respostas inteligentes, no Pixel Watch.

O que é o LiteRT-LM e a pilha do Google AI Edge?

O LiteRT-LM é um framework de inferência testado em produção que foi projetado para a execução de modelos de linguagem grandes, como Gemini Nano e Gemma, com alto desempenho em uma ampla variedade de dispositivos de borda. Em sua essência, o LiteRT-LM é um projeto totalmente de código aberto que fornece uma API fácil de integrar e um conjunto de módulos reutilizáveis. Isso permite que os desenvolvedores criem pipelines de LLM personalizados que sejam precisamente adaptados aos requisitos de recursos de seus produtos.

Para entender onde o LiteRT-LM se encaixa, vale a pena analisar toda a pilha do Google AI Edge, do nível de abstração mais baixo até o mais alto:

  • LiteRT: o ambiente de execução de base para a execução de modelos individuais de ML/IA com eficiência no dispositivo.
  • LiteRT-LM: o framework de pipeline de LLM baseado em C++ que usa o LiteRT para executar vários modelos e etapas de processamento — como clonagem de sessões, gerenciamento de cache de KV, armazenamento em cache/pontuação de prompts e inferência com estado — em conjunto para tarefas complexas de IA generativa.
  • API LLM Inference: as APIs nativas de nível alto (Kotlin, Swift, JS) para IA generativa, habilitadas nos bastidores pelo LiteRT-LM.

Essa estrutura em camadas oferece a flexibilidade de trabalhar na camada de abstração que se adapta melhor às necessidades de seu projeto, enquanto o LiteRT-LM fornece a potência central e a adaptabilidade para um desenvolvedor que deseja implantar modelos de linguagem grandes (LLMs) em escala diretamente nos dispositivos dos usuários.

Os principais destaques do LiteRT-LM incluem:

  • Multiplataforma: permite a implantação em Android, Linux, macOS, Windows e Raspberry Pi.
  • Aceleração de hardware: utiliza nosso ambiente de execução LiteRT principal para desbloquear todo o potencial do hardware no dispositivo, com suporte para aceleração de CPU, GPU e NPU.
  • Flexibilidade aprimorada: seu design modular e a base de código aberto fornecem o máximo de flexibilidade para a personalização de pipelines de inferência e dão suporte a recursos essenciais, como multimodalidade, modelos de peso aberto e inferência de modelos grandes pronta para produção em vários aceleradores e plataformas para dispositivos móveis.

Demonstramos essa versatilidade com dois estudos de caso que destacam a implantação em escala, abrangendo o navegador Chrome, os Chromebooks e os mais recentes Pixel Watches, para alcançar centenas de milhões de dispositivos.

Habilite vários recursos de LLM com o Gemini Nano no Chrome e no Chromebook Plus

Uma demonstração da API AI Prompt integrada executando o Gemini Nano localmente no Chrome

A escala de gigabytes dos LLMs modernos apresenta um desafio de implantação único. Ao contrário dos modelos convencionais de aprendizado de máquina, que normalmente são da ordem dos megabytes, o tamanho dos LLMs torna impraticável a implantação de vários modelos especializados com vários bilhões de parâmetros — por exemplo, um para resumos e outro para chat — a fim de habilitar diferentes recursos no mesmo dispositivo de borda.

Para superar isso, o LiteRT-LM foi projetado para permitir que vários recursos compartilhem um único modelo de base, usando LoRAs leves para personalização específica de recurso. Isso é possível graças a um padrão arquitetônico claro que separa recursos pesados e compartilhados dos aspectos configuráveis e com estado das interações do usuário. Essa separação é alcançada por meio de duas classes principais, Engine e Session:

  • Engine (singleton): atua como a única instância a ser compartilhada entre os recursos do aplicativo. Essa classe detém e gerencia todos os caros recursos compartilhados, como o modelo de base e todos os codificadores de multimodalidade. Ela lida de forma inteligente com o carregamento e descarregamento desses recursos com base no ambiente de tempo de execução e em seus requisitos.
  • Session (interface com estado): essa é a interface com a qual os recursos do aplicativo interagem. Cada Session representa uma conversa ou tarefa distinta, gerenciando seu próprio estado, histórico e contexto. Uma Session pode ser configurada com adaptadores pequenos e específicos de tarefa (pesos de LoRA) para personalizar o comportamento do modelo de base.
engine_session
Diagrama da arquitetura do sistema de Engine/Session do LiteRT-LM: a classe Engine (inferior) atua como o gerenciador central de recursos, abrangendo duas Sessions distintas (superior): uma para resumos e outra para a compreensão de imagens. As duas Sessions compartilham recursos em comum, como o decodificador de texto de base e o tokenizador, ao passo que a Session de compreensão de imagens solicita, adicionalmente, o codificador de visão. O codificador de áudio é descarregado da memória pela classe Engine, uma vez que nenhuma Session ativa o exige.

Essa arquitetura tem o suporte de otimizações importantes que permitem a alternância de tarefas eficiente e com pouco consumo de espaço1:

  • Alternância de contextos: cada Session encapsula seu "contexto" completo, incluindo o cache de KV do transformador, os pesos de LoRA etc. Semelhante a um SO, ao alternar as tarefas, o LiteRT-LM salva o estado da Session de saída e restaura a de entrada. Isso garante que o LLM compartilhado sempre tenha o estado correto para a tarefa ativa.
  • Clonagem de sessões: para evitar a recomputação de prefixos de prompts compartilhados (por exemplo, para aprendizado em contexto), os usuários podem clonar uma Session. Isso armazena em cache o estado computado do cache de KV com eficiência em um ponto específico, permitindo que várias tarefas novas se ramifiquem a partir desse estado e economizando muito em computação.
  • Cache de KV CoW (Copy-on-Write): o cache de KV pode ser muito grande (com muitos MB ou GB), o que encarece as cópias. Com o CoW, uma Session clonada não copia imediatamente o cache de KV, mas cria uma referência ao buffer original. Uma cópia efetiva só é feita quando uma Session está prestes a sobrescrever novos dados que entram em conflito com o conteúdo de outra Session. Esse design torna a clonagem extremamente rápida (< 10 ms) e minimiza o consumo de memória ao reutilizar buffers do cache de KV.

Juntos, esses recursos de arquitetura e otimização são fundamentais para colocar em produção, com êxito, vários recursos de LLMs de alto desempenho no dispositivo, seja no Chrome ou no Chromebook Plus.

Além de gerenciar tarefas simultâneas, o escalonamento de modelos de ML entre SKUs de dispositivos fragmentados apresenta um segundo grande desafio técnico. Cada SoC varia em componentes e recursos (entre CPUs, GPUs e NPUs), exigindo uma otimização personalizada para executar a inferência de modelos com alto desempenho. O LiteRT-LM utiliza o LiteRT como o ambiente de execução de nível inferior para delegação de back-end, permitindo seu escalonamento eficiente em vários aceleradores de hardware. Além disso, o LiteRT-LM alcança uma ampla compatibilidade com plataformas por meio de um design central que abstrai componentes específicos de plataforma (como descritores de arquivos e mmap), fornecendo implementações nativas, quando necessário.

1Observe que algumas otimizações mencionadas não estão incluídas neste pré-lançamento antecipado, mas elas serão lançadas gradualmente em versões futuras.

Implantação de modelos de linguagem em dispositivos com baixa capacidade de computação: Pixel Watch

Uma demonstração do recurso de respostas inteligentes no Pixel Watch

A implantação de LLMs em dispositivos com recursos escassos, como o Pixel Watch, apresenta um conjunto totalmente diferente de desafios. Nessas plataformas, a prioridade muda do suporte a vários recursos com um modelo compartilhado para a implantação de um único recurso dedicado com o menor tamanho de binário e consumo de memória possível.

É aqui que o design modular do LiteRT-LM se torna essencial. Embora nossa arquitetura Engine/Session seja poderosa para gerenciar implantações complexas e multitarefa, sua pegada binária não é enxuta o suficiente para os requisitos rigorosos de um dispositivo wearable.

Em vez disso, o framework permite que os desenvolvedores criem um pipeline personalizado diretamente a partir de seus componentes principais. Para o Pixel Watch, selecionamos os módulos mínimos necessários — como o executor, o tokenizador e o amostrador — e montamos um pipeline especializado. Essa abordagem nos permitiu minimizar o tamanho do binário e o uso da memória para satisfazer as restrições de recursos do dispositivo, como mostrado na figura abaixo.

litert_lm_pixel_watch
Pipeline de LLM leve otimizado para o Pixel Watch

Este estudo de caso demonstra a flexibilidade do LiteRT-LM. Seus componentes modulares capacitam os desenvolvedores a criar implantações de LLMs que são precisamente adaptadas aos requisitos específicos de recursos e atributos de qualquer dispositivo de destino, desde smartphones poderosos até wearables restritos.

Primeiros passos

Comece agora mesmo e forneça uma IA generativa no dispositivo poderosa e eficiente para seus usuários.

  1. Explore a comunidade do LiteRT na Hugging Face para descobrir modelos abertos compatíveis, como Gemma e Qwen.
  2. Aprofunde-se em nosso repositório do GitHub para acessar a prévia em C++ e explorar o exemplo de código. Veja o exemplo de snippet abaixo.
  3. Leia a documentação para ver mais detalhadamente as etapas necessárias para criar e executar um modelo de linguagem grande (LLM) no dispositivo usando o ambiente de execução LiteRT-LM.
  4. Depois de configurar o ambiente, você pode começar com o seguinte snippet de exemplo de código:
#include "YOUR_INCLUDE_DIRECTORY/engine.h"
 
// ...
 
// 1. Define model assets and engine settings.
auto model_assets = ModelAssets::Create(model_path);
CHECK_OK(model_assets);
 
auto engine_settings = EngineSettings::CreateDefault(
    model_assets, litert::lm::Backend::CPU);
 
// 2. Create the main Engine object.
absl::StatusOr<std::unique_ptr<Engine>> engine = Engine::CreateEngine(engine_settings);
CHECK_OK(engine);
 
// 3. Create a Session for a new conversation.
auto session_config = SessionConfig::CreateDefault();
absl::StatusOr<std::unique_ptr<Engine::Session>> session = (*engine)->CreateSession(session_config);
CHECK_OK(session);
 
// 4. Generate content using the high-level API.
absl::StatusOr<Responses> responses = (*session)->GenerateContent(
    {InputText("What is the tallest building in the world?")});
CHECK_OK(responses);
 
// 5. Print the response.
std::cout << *responses << std::endl;
C++

Agradecimentos

Gostaríamos de agradecer nossos principais colaboradores por seu trabalho fundamental neste projeto: Advait Jain, Austin Sullivan, Clark Duvall, Haoliang Zhang, Ho Ko, Howard Yang, Marissa Ikonomidis, Mohammadreza Heydary, Ronghui Zhu, Tyler Mullen, Umberto Ravaioli, Weiyi Wang, Xu Chen e Youchuan Hu.

Também agradecemos as importantes contribuições dos seguintes membros da equipe: Agi Sferro, Chi Yo Tsai, David Massoud, Dillon Sharlet, Frank Barchard, Grant Jensen, Ivan Grishchenko, Jae Yoo, Jim Pollock, Majid Dadashi, Quentin Khan, Raman Sarokin, Ricky Liang, Tenghui Zhu, Terry (Woncheol) Heo, Yi-Chun Kuo e Yishuang Pang.

Este esforço foi possível graças à orientação e ao apoio de nossa liderança: Cormac Brick, Etienne Noël, Juhyun Lee, Lu Wang, Matthias Grundmann e Sachin Kotwani.