Execute Modelos de IA Diretamente no Navegador com Transformers.js
E se sua aplicação web pudesse classificar texto, transcrever áudio ou detectar objetos em imagens—sem nunca enviar dados para um servidor? É exatamente isso que o Transformers.js torna possível. Ele traz inferência de IA do lado do cliente para o navegador usando apenas JavaScript.
Principais Conclusões
- O Transformers.js permite executar modelos de ML pré-treinados inteiramente no navegador, sem necessidade de servidor backend.
- A inferência é executada via ONNX Runtime em WebAssembly (ampla compatibilidade) ou WebGPU (mais rápido, acelerado por GPU).
- Apenas modelos com pesos compatíveis com ONNX funcionam; modelos quantizados são o padrão prático para uso no navegador.
- Mova a inferência para um Web Worker para evitar congelamento da interface em aplicações de produção.
- IA do lado do cliente permite recursos que preservam privacidade, funcionam offline, têm baixa latência e potencialmente reduzem custos de inferência no backend.
O Que É o Transformers.js?
Transformers.js é uma biblioteca JavaScript da Hugging Face que permite executar modelos de machine learning pré-treinados diretamente no navegador—sem necessidade de servidor de modelos no backend. Ela espelha a API da biblioteca Python transformers da Hugging Face, então o modelo mental se transfere facilmente se você já trabalhou com ela antes.
O pacote mantido é @huggingface/transformers. Se você encontrar referências antigas a @xenova/transformers, elas se referem ao nome anterior do pacote usado antes do projeto ser movido para manutenção da Hugging Face. A versão estável atual é a linha v3, com pré-visualizações de desenvolvimento da v4 disponíveis, mas ainda não universalmente estáveis.
Como a Inferência de IA no Navegador Realmente Funciona
O Transformers.js executa modelos usando ONNX Runtime compilado para ambientes JavaScript. ONNX (Open Neural Network Exchange) atua como um formato universal que permite que modelos treinados em PyTorch, TensorFlow ou JAX sejam executados no navegador.
Por padrão, a inferência é executada na CPU via WebAssembly (WASM)—que funciona em praticamente todos os navegadores modernos. Para melhor desempenho em hardware compatível, você pode optar pelo WebGPU, que transfere a computação para a GPU.
A disponibilidade do WebGPU continua evoluindo entre navegadores e plataformas. Você pode verificar o status atual de implementação em webstatus.dev. Na prática, o suporte e desempenho ainda variam dependendo do navegador, sistema operacional e drivers de GPU.
Use WASM quando precisar de máxima compatibilidade. Mude para WebGPU quando o desempenho importar e você estiver mirando navegadores modernos com suporte a WebGPU.
Nem Todo Modelo da Hugging Face Funciona no Navegador
Esta é uma restrição importante: modelos precisam de pesos compatíveis com ONNX para funcionar com Transformers.js. Muitas arquiteturas populares—DistilBERT, Whisper, T5, Llama, Qwen e dezenas de outras—já têm versões ONNX disponíveis no Hugging Face Hub. Para modelos que não têm, você pode convertê-los usando Optimum.
Como ambientes de navegador têm recursos limitados, modelos quantizados são o padrão prático. A opção dtype controla isso:
"fp32"— precisão completa, padrão para WebGPU"fp16"— meia precisão, bom equilíbrio para GPU"q8"— quantização de 8 bits, padrão para WASM"q4"— quantização de 4 bits, menor e mais rápido
Discover how at OpenReplay.com.
Executando Seu Primeiro Pipeline
A API de pipeline lida com pré-processamento, inferência e pós-processamento em uma única chamada. Instale o pacote:
npm install @huggingface/transformers
Em seguida, execute análise de sentimento em poucas linhas:
import { pipeline } from "@huggingface/transformers";
// Usa WASM por padrão, utiliza um modelo padrão para a tarefa
const classifier = await pipeline("sentiment-analysis");
const result = await classifier("I love building with Transformers.js!");
console.log(result); // [{ label: 'POSITIVE', score: 0.9998 }]
Para habilitar WebGPU com precisão fp16:
const classifier = await pipeline(
"sentiment-analysis",
"Xenova/distilbert-base-uncased-finetuned-sst-2-english",
{ device: "webgpu", dtype: "fp16" }
);
Os arquivos de modelo são armazenados em cache no navegador após o primeiro download, então o uso repetido—incluindo offline—não requer baixá-los novamente. Para produção, considere hospedar os assets de modelo você mesmo em vez de depender diretamente do Hub.
Uma nota prática: por padrão, a inferência é executada na thread principal, o que pode congelar a interface durante computação pesada. Mover a inferência para um Web Worker é o padrão correto para qualquer recurso de produção.
Por Que Isso Importa para Desenvolvedores Frontend
Executar modelos de IA no navegador com Transformers.js abre casos de uso que a inferência do lado do servidor não consegue atender tão facilmente:
- Inferência que preserva privacidade — dados do usuário nunca saem do dispositivo
- Aplicações de IA offline — podem funcionar sem conexão de rede após o download inicial do modelo
- Custos reduzidos de servidor — menos cargas de trabalho de GPU no backend para provisionar ou escalar
- Recursos de baixa latência — sem ida e volta de rede para um endpoint de API
A lista de tarefas suportadas é ampla: classificação de texto, sumarização, tradução, detecção de objetos, segmentação de imagem, reconhecimento de fala, conversão de texto em fala e muito mais.
Conclusão
O Transformers.js torna a IA baseada em navegador cada vez mais prática para desenvolvedores frontend. Comece com um modelo quantizado pequeno, valide se a tarefa se adequa ao seu caso de uso e então otimize a partir daí—WebGPU para velocidade, Web Workers para responsividade da interface e modelos auto-hospedados para confiabilidade em produção. A documentação oficial e o hub de modelos são as melhores próximas paradas.
Perguntas Frequentes
Não. Apenas modelos que possuem pesos compatíveis com ONNX funcionam com Transformers.js. Muitas arquiteturas populares como DistilBERT, Whisper e T5 já têm versões ONNX no Hugging Face Hub. Para modelos sem elas, você pode converter os pesos usando a biblioteca Optimum.
Por padrão, a inferência é executada na thread principal, o que bloqueia atualizações da interface durante a computação. A solução recomendada é mover toda a lógica de inferência para um Web Worker. Isso mantém a thread principal livre para renderização e interações do usuário enquanto o modelo é executado em segundo plano.
Sim. Os arquivos de modelo são armazenados em cache no navegador após o download inicial. Uma vez em cache, a inferência pode funcionar sem conexão de rede. Para aplicações de produção, hospedar os assets de modelo você mesmo oferece mais controle sobre disponibilidade e evita dependência do Hugging Face Hub.
Use WASM para máxima compatibilidade de navegador, pois funciona em todos os lugares. Escolha WebGPU quando precisar de inferência mais rápida e seu público-alvo usar navegadores com suporte a WebGPU. O WebGPU transfere a computação para a GPU e pode ser significativamente mais rápido para modelos maiores.
Gain Debugging Superpowers
Unleash the power of session replay to reproduce bugs, track slowdowns and uncover frustrations in your app. Get complete visibility into your frontend with OpenReplay — the most advanced open-source session replay tool for developers. Check our GitHub repo and join the thousands of developers in our community.