1

IA no navegador não elimina o backend: ela muda o orçamento do produto

Imagine uma funcionalidade que analisa uma imagem enviada pelo usuário. No protótipo, o frontend manda o arquivo para uma API, espera a inferência e recebe o resultado. Funciona bem. Aí o uso cresce, a fatura acompanha e alguém sugere: "Vamos rodar o modelo no navegador e zerar esse custo".

A ideia parece ótima até colocar primeira carga, memória e variedade de dispositivos na conta.

Quando a inferência sai do servidor e vai para o navegador, uma parte do custo de infraestrutura realmente diminui. Em troca, o usuário passa a baixar o runtime e o modelo, reservar memória, gastar bateria e depender do hardware que tem. A equipe deixa de operar apenas uma infraestrutura relativamente previsível e passa a atender uma frota de notebooks e celulares bem diferentes entre si.

O custo não sumiu. Mudou de lugar.

O LiteRT.js torna essa conversa concreta. Ele permite executar modelos .tflite no browser, usando CPU por WASM/XNNPACK ou GPU por WebGPU. Há também um caminho experimental com WebNN. É uma caixa de ferramentas interessante para texto, visão e áudio, mas não é um botão de "remover backend".

A decisão útil é outra: qual parte do produto fica melhor no dispositivo do usuário, e qual parte ainda precisa do servidor?

A chamada de API some, mas a primeira visita fica mais cara

No fluxo com inferência remota, o navegador envia dados e espera uma resposta. O peso do modelo, a memória de execução e a maior parte do trabalho computacional ficam no servidor.

No fluxo local, o navegador precisa receber o código de execução e o modelo. A documentação do LiteRT.js deixa isso visível: a aplicação serve os arquivos WASM e busca o modelo por HTTP, ou carrega seus bytes como Uint8Array. Antes da primeira inferência, portanto, existe download, inicialização e alocação de memória.

A conta de desempenho, então, precisa começar antes da primeira inferência.

Não basta medir quanto uma inferência aquecida leva no notebook de quem desenvolveu a feature. O usuário percebe a experiência inteira:

  1. tempo para baixar runtime e modelo;
  2. tempo de inicialização;
  3. latência da primeira inferência;
  4. latência das execuções seguintes;
  5. impacto na memória, bateria e temperatura.

Uma tarefa repetida muitas vezes na mesma sessão pode diluir o custo inicial. Uma tarefa usada uma vez e abandonada talvez nunca recupere esse investimento. Um modelo de 80 MB pode parecer aceitável no Wi-Fi do escritório e ser uma péssima primeira experiência numa conexão móvel instável.

Por isso, "rodou em 20 ms" é uma medida pequena demais para decidir a arquitetura.

WebGPU não é o seu piso de compatibilidade

O caminho mais rápido de uma demonstração costuma virar, sem querer, a expectativa de produção. Se o teste foi feito com WebGPU em uma máquina recente, é fácil começar a tratar esse resultado como característica do produto.

Só que o produto também precisa funcionar fora da máquina usada na demonstração.

O LiteRT.js aceita wasm, webgpu e webnn como aceleradores. Quando uma operação não tem suporte no caminho escolhido, ela pode cair para CPU. Esse fallback ajuda a manter a execução funcionando, mas pode mudar bastante a latência percebida. GPU, driver, throttling térmico e o próprio modelo também influenciam o resultado.

Para o frontend, fica um cuidado importante: fallback técnico não é sinônimo de experiência equivalente.

Se uma análise leva meio segundo com WebGPU e vários segundos na CPU, os dois caminhos "funcionam", mas talvez precisem de interfaces diferentes. No caminho lento, pode fazer sentido exibir progresso, permitir cancelamento ou oferecer processamento remoto. Esconder a diferença só entrega uma tela que parece travada para parte dos usuários.

O dispositivo mais forte prova que a ideia é possível. O dispositivo mais fraco que você pretende atender ajuda a dizer se ela cabe no produto.

Processamento local não garante privacidade sozinho

Manter uma imagem, um áudio ou um texto no dispositivo pode reduzir o envio de dados sensíveis, especialmente quando a tarefa não precisa de sincronização.

Mas a frase "seus dados nunca saem do navegador" só é verdadeira se o fluxo inteiro respeitar essa promessa.

Vale conferir, por exemplo:

  • se o arquivo é enviado para telemetria ou diagnóstico;
  • se resultados intermediários entram em logs remotos;
  • se a aplicação sincroniza o conteúdo entre dispositivos;
  • se um fallback automático manda os dados ao servidor;
  • se ferramentas de monitoramento capturam payloads ou URLs com informação sensível.

Privacidade não vem do endereço onde a inferência roda. Vem do caminho completo percorrido pelo dado.

Uma arquitetura híbrida precisa deixar esse limite claro. Se o fallback remoto existe, o usuário deveria saber quando ele será usado, principalmente em fluxos que prometem processamento local.

O backend fica menor em alguns pontos, não desnecessário

Mesmo que toda a inferência de uma feature rode no navegador, ainda pode existir trabalho no servidor:

  • autenticar o usuário e aplicar limites do produto;
  • distribuir e versionar modelos;
  • sincronizar preferências ou resultados;
  • registrar métricas sem capturar conteúdo sensível;
  • oferecer fallback para dispositivos incompatíveis;
  • coordenar tarefas que dependem de dados protegidos;
  • atualizar regras sem esperar que todo cliente baixe a versão nova.

Também existe uma questão de controle. Um modelo entregue ao navegador pode ser inspecionado e copiado com mais facilidade do que um modelo mantido no servidor. Para alguns produtos isso não importa. Para outros, muda a decisão comercial e técnica.

O backend não precisa continuar fazendo tudo. Só não deve ser removido do desenho antes de a equipe listar o que ele ainda resolve.

Faça uma prova de conceito que possa contrariar a ideia

Uma boa prova de conceito não serve apenas para mostrar que o modelo roda. Ela também precisa revelar quando rodar no cliente não vale a pena naquele caso.

Eu começaria com uma tarefa pequena e delimitada, como classificar uma imagem ou gerar um embedding curto. Depois testaria o mesmo fluxo em pelo menos um notebook modesto e um celular intermediário. O equipamento do benchmark oficial pode continuar como referência, mas não como único retrato da base de usuários.

Registre estas medidas:

MedidaO que ela revela
tamanho do runtime e do modelocusto de rede e armazenamento em cache
tempo até a primeira respostaexperiência de quem acabou de abrir a página
latência aquecidacusto das repetições na mesma sessão
pico de memóriarisco de travamento e pressão sobre outras abas
consumo de bateria e aquecimentoviabilidade de sessões mais longas
taxa de falha por aceleradorcobertura real de WASM, WebGPU e WebNN
tempo no fallback para CPUexperiência fora do caminho mais rápido

Além das medidas, provoque o cenário ruim. Desative WebGPU, limite a rede, limpe o cache e repita a primeira carga. Troque de aba durante a execução. Rode a tarefa várias vezes no celular e observe temperatura e memória. Se houver fallback remoto, interrompa a rede no meio da transição.

Esses testes parecem menos empolgantes do que uma demo rápida. Em compensação, respondem às perguntas que aparecem depois do lançamento.

Compare as três rotas com o mesmo orçamento

Antes de escolher cliente, servidor ou híbrido, coloque as três opções na mesma planilha. Não precisa inventar precisão financeira. Basta usar variáveis que o time consegue medir.

Para o cliente, considere peso do download, taxa de cache reaproveitado, tempo de execução nos dispositivos atendidos e esforço de suporte por navegador. Para o servidor, estime chamadas por usuário, duração da inferência, transferência de dados e capacidade necessária nos picos. Na opção híbrida, some o custo de manter os dois caminhos e de explicar a transição entre eles.

A execução no cliente tende a fazer sentido quando a tarefa é pequena, repetida, sensível à latência e compatível com os dispositivos do público. O servidor continua forte quando o modelo é grande, precisa de atualização centralizada ou depende de hardware previsível. O híbrido ajuda quando a experiência local é valiosa, mas deixar parte da base sem saída não é aceitável.

Nenhuma dessas rotas vence por princípio.

Se o modelo local economiza chamadas, mas aumenta abandono na primeira visita, a economia saiu de uma linha da fatura e entrou na conversão. Se o servidor entrega boa experiência, mas o custo cresce mais rápido do que a receita, a arquitetura também não fechou. Se o híbrido cobre todo mundo, mas dobra a manutenção de uma feature pouco usada, talvez o produto esteja pagando por uma segurança que não precisa.

O lugar da inferência é uma decisão de produto

Com LiteRT.js, o frontend ganha opções que antes pediam mais trabalho de infraestrutura. Uma feature de visão, texto ou áudio pode responder sem viagem de rede, manter dados no dispositivo e reduzir parte do custo recorrente do servidor.

Mas o navegador não oferece computação grátis. Ele transfere trabalho para uma máquina que a equipe não controla e para uma conexão que nem sempre conhece.

Antes de mover a inferência, escolha uma tarefa estreita, meça a experiência completa e teste o fallback. Depois compare o custo técnico e financeiro das três rotas.

Se a decisão continuar boa no celular intermediário, sem WebGPU e depois de uma primeira carga fria, aí você tem algo mais valioso do que uma demo rápida: tem uma arquitetura que conhece o próprio orçamento.

Notas de fonte

Carregando publicação patrocinada...