Accélérez le TinyML dans le navigateur avec WebFPGA
Un nouveau framework open-source, WebFPGA, permet aux développeurs d'exécuter l'inférence TinyML directement depuis une page web en moins de 10 ms. Il utilise un FPGA connecté via USB qui ne consomme que quelques dizaines de milliwatts et conserve chaque octet de données sur l'appareil.
Les modèles TinyML — de petits réseaux de neurones fonctionnant sur des microcontrôleurs — sont désormais la norme pour l'IA embarquée. Pourtant, les développeurs doivent encore jongler entre vitesse, consommation d'énergie et confidentialité lorsqu'ils déportent l'inférence vers le navigateur. Les méthodes traditionnelles reposent soit sur WebGPU, qui s'exécute sur le processeur graphique, soit sur des services cloud qui transfèrent les données hors de l'appareil. Ces deux approches augmentent la latence, consomment plus d'énergie et exposent les données brutes à des serveurs distants.
WebFPGA élimine ces problèmes. Le navigateur communique directement avec un FPGA via l'API WebUSB. L'API communique avec un contrôleur FTDI USB-vers-série, qui programme une puce Lattice iCE40-UP5K. Une fois le bitstream chargé, le FPGA exécute un runtime TinyML qui traite le modèle entièrement sur l'accélérateur matériel. Du point de vue du développeur, un seul appel JavaScript charge un fichier .bit et diffuse les tenseurs d'entrée.
Comparaison des chiffres
- WebFPGA : latence de 4 ms, puissance de ~30 mW, aucune donnée ne quitte l'hôte.
- WebGPU : latence de 12 ms, ~200 mW, le CPU/GPU gère toujours une partie du chemin de données, ce qui implique une certaine exposition.
- Inférence cloud : latence de 80 ms, ~500 mW lorsque la pile réseau est active, et chaque échantillon est envoyé vers un serveur distant.
Ces chiffres démontrent clairement l'intérêt pour les scénarios où chaque milliseconde compte et où l'autonomie de la batterie est limitée.
Scénarios concrets
- Les assistants vocaux réagissent en moins de 6 ms, sans jamais envoyer l'audio hors de l'appareil.
- La surveillance de capteurs industriels signale les anomalies dès leur apparition, même sur des machines isolées sans connexion Internet.
- Les filtres d'image en temps réel s'appliquent en moins de 10 ms, libérant le CPU pour le rendu de l'interface utilisateur.
Pour commencer
- Installez la chaîne d'outils open-source : Yosys (synthèse), nextpnr-ice40 (placement et routage) et icepack (génération du bitstream).
- Convertissez un modèle TensorFlow Lite (.tflite) en Verilog avec l'utilitaire tinyml-conv.
- Lancez la synthèse et générez le fichier .bit pour l'iCE40-UP5K.
- Incluez
webfpga.jssur une page web ; un seul appel JavaScript charge le bitstream via WebUSB et diffuse les données d'inférence.
Le flux de travail reflète les pipelines de développement FPGA existants, mais l'étape finale ne nécessite qu'un navigateur web standard et un câble USB — aucun pilote propriétaire ni SDK lourd n'est requis.
Pourquoi certains développeurs pourraient encore choisir WebGPU ou le cloud
WebGPU bénéficie d'une prise en charge matérielle plus large sur les ordinateurs portables et de bureau, et son écosystème propose déjà des pilotes graphiques et des outils matures.
WebFPGA montre que le navigateur peut être bien plus qu'une simple couche d'interface utilisateur ; il peut devenir un portail vers un matériel d'IA à ultra-faible latence et respectueux de la vie privée. Pour les applications où chaque milliseconde compte et où les données doivent rester locales, ce framework offre une alternative convaincante aux pipelines d'inférence centrés sur le GPU ou le cloud.
