Accelera il TinyML nel browser con WebFPGA

Un nuovo framework open source, WebFPGA, consente agli sviluppatori di eseguire l'inferenza TinyML direttamente da una pagina web in meno di 10 ms. Utilizza un FPGA connesso via USB che consuma solo poche decine di milliwatt e mantiene ogni byte di dati sul dispositivo.

I modelli TinyML — piccole reti neurali che girano su microcontrollori — sono ormai lo standard per l'IA on-device. Tuttavia, gli sviluppatori devono ancora bilanciare velocità, consumi e privacy quando spostano l'inferenza nel browser. I percorsi tradizionali si affidano a WebGPU, che gira sul processore grafico, o a servizi cloud che inviano i dati fuori dal dispositivo. Entrambi aumentano la latenza, consumano più energia ed espongono gli input grezzi a server remoti.

WebFPGA elimina questi problemi. Il browser comunica direttamente con un FPGA tramite l'API WebUSB. L'API comunica con un controller FTDI USB-to-serial, che programma un chip Lattice iCE40-UP5K. Dopo il caricamento del bitstream, l'FPGA esegue un runtime TinyML che esegue il modello interamente sull'acceleratore hardware. Dal punto di vista dello sviluppatore, una singola chiamata JavaScript carica un file .bit e trasmette i tensori di input.

Analisi dei numeri

  • WebFPGA: latenza di 4 ms, consumo di ~30 mW, nessun dato lascia l'host.
  • WebGPU: latenza di 12 ms, ~200 mW, CPU/GPU gestiscono ancora parte del percorso dati, quindi rimane un certo grado di esposizione.
  • Inferenza cloud: latenza di 80 ms, ~500 mW quando viene eseguito lo stack di rete, e ogni campione viene inviato a un server remoto.

Questi dati supportano chiaramente l'uso in scenari in cui ogni millisecondo conta e la durata della batteria è limitata.

Scenari reali

  1. Gli assistenti vocali reagiscono in meno di 6 ms, senza mai inviare l'audio fuori dal dispositivo.
  2. Il monitoraggio dei sensori industriali segnala le anomalie nell'istante in cui si presentano, anche su macchine isolate senza connessione internet.
  3. I filtri immagine istantanei vengono applicati in meno di 10 ms, liberando la CPU per il rendering dell'interfaccia utente.

Per iniziare

  1. Installa la toolchain open source: Yosys (sintesi), nextpnr-ice40 (place-and-route) e icepack (generazione del bitstream).
  2. Converti un modello TensorFlow Lite (.tflite) in Verilog utilizzando l'utility tinyml-conv.
  3. Esegui la sintesi e genera il file .bit per l'iCE40-UP5K.
  4. Includi webfpga.js in una pagina web; una singola chiamata JavaScript carica il bitstream tramite WebUSB e trasmette i dati di inferenza.

Il flusso di lavoro rispecchia le pipeline di sviluppo FPGA esistenti, ma l'ultimo passaggio richiede solo un browser web standard e un cavo USB, senza driver proprietari o SDK pesanti.

Perché alcuni sviluppatori potrebbero ancora scegliere WebGPU o il cloud

WebGPU gode di un supporto hardware più ampio su laptop e desktop, e il suo ecosistema offre già driver grafici e strumenti maturi.

WebFPGA dimostra che il browser può essere molto più di un semplice livello di interfaccia utente; può diventare un portale verso hardware IA a latenza ultra-bassa che preserva la privacy. Per le applicazioni in cui ogni millisecondo conta e i dati devono rimanere locali, il framework offre un'alternativa convincente alle pipeline di inferenza basate su GPU o cloud.