Acelere o TinyML no Navegador com WebFPGA

Um novo framework de código aberto, o WebFPGA, permite que desenvolvedores executem inferência TinyML diretamente de uma página web em menos de 10 ms. Ele utiliza um FPGA conectado via USB que consome apenas algumas dezenas de miliwatts e mantém cada byte de dados no dispositivo.

Modelos TinyML — pequenas redes neurais que rodam em microcontroladores — são agora o padrão para IA em dispositivos (on-device AI). No entanto, os desenvolvedores ainda precisam equilibrar velocidade, consumo de energia e privacidade ao levar a inferência para o navegador. As rotas tradicionais dependem do WebGPU, que roda no processador gráfico, ou de serviços em nuvem que enviam dados para fora do dispositivo. Ambos aumentam a latência, consomem mais energia e expõem dados brutos a servidores remotos.

O WebFPGA elimina esses problemas. O navegador se comunica diretamente com um FPGA via API WebUSB. A API se comunica com um controlador FTDI USB-para-serial, que programa um chip Lattice iCE40-UP5K. Após o carregamento do bitstream, o FPGA executa um runtime TinyML que processa o modelo inteiramente no acelerador de hardware. Do ponto de vista do desenvolvedor, uma única chamada JavaScript carrega um arquivo .bit e transmite tensores de entrada.

Como os números se comparam

  • WebFPGA: 4 ms de latência, ~30 mW de potência, nenhum dado sai do host.
  • WebGPU: 12 ms de latência, ~200 mW, CPU/GPU ainda lidam com parte do caminho de dados, portanto, permanece alguma exposição.
  • Inferência em nuvem: 80 ms de latência, ~500 mW quando a pilha de rede é executada, e cada amostra viaja para um servidor remoto.

Esses números justificam claramente o uso em cenários onde cada milissegundo importa e a duração da bateria é limitada.

Cenários do mundo real

  1. Assistentes de voz reagem em menos de 6 ms, sem nunca enviar áudio para fora do dispositivo.
  2. Monitoramento de sensores industriais sinaliza anomalias no instante em que aparecem, mesmo em máquinas isoladas sem internet.
  3. Filtros de imagem em tempo real são aplicados em menos de 10 ms, liberando a CPU para a renderização da interface do usuário (UI).

Primeiros passos

  1. Instale a toolchain de código aberto: Yosys (síntese), nextpnr-ice40 (place-and-route) e icepack (geração de bitstream).
  2. Converta um modelo TensorFlow Lite (.tflite) para Verilog com o utilitário tinyml-conv.
  3. Execute a síntese e gere o arquivo .bit para o iCE40-UP5K.
  4. Inclua webfpga.js em uma página web; uma única chamada JavaScript carrega o bitstream via WebUSB e transmite os dados de inferência.

O fluxo de trabalho reflete os pipelines de desenvolvimento de FPGA existentes, mas a etapa final requer apenas um navegador web padrão e um cabo USB — sem drivers proprietários ou SDKs pesados.

Por que alguns desenvolvedores ainda podem escolher WebGPU ou a nuvem

O WebGPU possui um suporte de hardware mais amplo em laptops e desktops, e seu ecossistema já oferece drivers gráficos e ferramentas maduras.

O WebFPGA mostra que o navegador pode ser mais do que uma camada de UI; ele pode se tornar um portal para hardware de IA de ultra-baixa latência e que preserva a privacidade. Para aplicações onde cada milissegundo conta e os dados devem permanecer locais, o framework oferece uma alternativa atraente aos pipelines de inferência centrados em GPU ou em nuvem.