Przyspiesz TinyML w przeglądarce dzięki WebFPGA

Nowe otwartoźródłowe rozwiązanie, WebFPGA, pozwala programistom uruchamiać wnioskowanie TinyML bezpośrednio ze strony internetowej w czasie krótszym niż 10 ms. Wykorzystuje ono połączone przez USB FPGA, które pobiera zaledwie kilkadziesiąt miliwatów i zatrzymuje każdy bajt danych na urządzeniu.

Modele TinyML — niewielkie sieci neuronowe działające na mikrokontrolerach — są obecnie standardem w przypadku AI działającego bezpośrednio na urządzeniu. Mimo to programiści wciąż muszą balansować między szybkością, zużyciem energii a prywatnością, gdy przenoszą wnioskowanie do przeglądarki. Tradycyjne metody opierają się na WebGPU, które działa na procesorze graficznym, lub na usługach chmurowych, które przesyłają dane poza urządzenie. Oba podejścia zwiększają opóźnienia, zużywają więcej energii i wystawiają surowe dane wejściowe na działanie zdalnych serwerów.

WebFPGA eliminuje te problemy. Przeglądarka komunikuje się bezpośrednio z FPGA za pomocą WebUSB API. API łączy się z kontrolerem FTDI USB-to-serial, który programuje układ Lattice iCE40-UP5K. Po załadowaniu strumienia bitowego (bitstream), FPGA uruchamia środowisko wykonawcze (runtime) TinyML, które realizuje model w całości na akceleratorze sprzętowym. Z perspektywy programisty, pojedyncze wywołanie JavaScript ładuje plik .bit i przesyła tensory wejściowe.

Porównanie wyników

  • WebFPGA: opóźnienie 4 ms, moc ~30 mW, żadne dane nie opuszczają hosta.
  • WebGPU: opóźnienie 12 ms, ~200 mW, CPU/GPU wciąż obsługują część ścieżki danych, więc pewien poziom ekspozycji danych pozostaje.
  • Wnioskowanie w chmurze: opóźnienie 80 ms, ~500 mW podczas pracy stosu sieciowego, a każda próbka jest przesyłana na zdalny serwer.

Te liczby jasno wskazują na scenariusze, w których liczy się każda milisekunda, a czas pracy na baterii jest ograniczony.

Scenariusze rzeczywiste

  1. Asystenci głosowi reagują w czasie krótszym niż 6 ms, nigdy nie przesyłając dźwięku poza urządzenie.
  2. Monitorowanie czujników przemysłowych wykrywa anomalie natychmiast po ich wystąpieniu, nawet na odizolowanych maszynach bez dostępu do Internetu.
  3. Filtry obrazu nakładane w locie działają w czasie krótszym niż 10 ms, uwalniając procesor CPU do renderowania interfejsu użytkownika.

Rozpoczęcie pracy

  1. Zainstaluj otwartoźródłowy zestaw narzędzi (toolchain): Yosys (synteza), nextpnr-ice40 (układanie i trasowanie) oraz icepack (generowanie strumienia bitowego).
  2. Przekonwertuj model TensorFlow Lite (.tflite) na Verilog za pomocą narzędzia tinyml-conv.
  3. Przeprowadź syntezę i wygeneruj plik .bit dla układu iCE40-UP5K.
  4. Dołącz webfpga.js do strony internetowej; pojedyncze wywołanie JavaScript ładuje strumień bitowy przez WebUSB i przesyła dane wnioskowania.

Przepływ pracy odzwierciedla istniejące procesy rozwoju FPGA, ale ostatni krok wymaga jedynie standardowej przeglądarki internetowej i kabla USB — bez własnościowych sterowników czy ciężkich zestawów SDK.

Dlaczego niektórzy programiści wciąż mogą wybierać WebGPU lub chmurę

WebGPU cieszy się szerszym wsparciem sprzętowym na laptopach i komputerach stacjonarnych, a jego ekosystem oferuje już dojrzałe sterowniki graficzne i narzędzia.

WebFPGA pokazuje, że przeglądarka może być czymś więcej niż tylko warstwą interfejsu użytkownika; może stać się portalem do sprzętu AI o ultra-niskich opóźnieniach, zapewniającego prywatność. W przypadku aplikacji, w których liczy się każda milisekunda, a dane muszą pozostać lokalnie, framework ten stanowi atrakcyjną alternatywę dla potoków wnioskowania opartych na GPU lub chmurze.