使用 WebFPGA 在浏览器中加速 TinyML

一个全新的开源框架 WebFPGA 让开发者能够直接从网页运行 TinyML 推理,延迟低于 10 毫秒。它使用通过 USB 连接的 FPGA,功耗仅为几十毫瓦,并能确保所有数据字节都保留在设备本地。

TinyML 模型(在微控制器上运行的微型神经网络)已成为设备端 AI 的默认选择。然而,当开发者将推理任务推送到浏览器时,仍需在速度、功耗和隐私之间进行权衡。传统方案依赖于在图形处理器上运行的 WebGPU,或是将数据传送到设备外的云服务。这两者都会增加延迟、消耗更多能量,并使原始输入暴露给远程服务器。

WebFPGA 解决了这些问题。浏览器通过 WebUSB API 直接与 FPGA 通信。该 API 与 FTDI USB 转串口控制器通信,进而对 Lattice iCE40-UP5K 芯片进行编程。在比特流(bitstream)加载后,FPGA 会运行一个 TinyML 运行时,完全在硬件加速器上执行模型。从开发者的角度来看,只需调用一次 JavaScript,即可加载 .bit 文件并流式传输输入张量(tensors)。

数据对比

  • WebFPGA:4 毫秒延迟,约 30 mW 功耗,数据完全不离开主机。
  • WebGPU:12 毫秒延迟,约 200 mW,CPU/GPU 仍需处理部分数据路径,因此仍存在一定的暴露风险。
  • 云端推理:80 毫秒延迟,网络栈运行时功耗约 500 mW,且每个样本都会传输到远程服务器。

这些数据充分证明了在每一毫秒都至关重要且电池寿命有限的场景下的优势。

实际应用场景

  1. 语音助手:响应时间低于 6 毫秒,且绝不将音频发送到设备外。
  2. 工业传感器监测:即使在没有互联网的隔离机器上,也能在异常出现时立即发出警报。
  3. 即时图像滤镜:应用时间低于 10 毫秒,从而释放 CPU 用于 UI 渲染。

入门指南

  1. 安装开源工具链:Yosys(综合)、nextpnr-ice40(布局布线)和 icepack(比特流生成)。
  2. 使用 tinyml-conv 工具将 TensorFlow Lite 模型 (.tflite) 转换为 Verilog。
  3. 运行综合并为 iCE40-UP5K 生成 .bit 文件。
  4. 在网页中引入 webfpga.js;通过一次 JavaScript 调用,即可利用 WebUSB 加载比特流并流式传输推理数据。

该工作流程与现有的 FPGA 开发流程一致,但最后一步仅需标准的 Web 浏览器和一根 USB 线——无需专有驱动程序或沉重的 SDK。

为什么有些开发者可能仍会选择 WebGPU 或云端

WebGPU 在笔记本电脑和台式机上拥有更广泛的硬件支持,其生态系统也已提供成熟的图形驱动程序和工具。

WebFPGA 表明,浏览器不仅仅是一个 UI 层;它还可以成为通往超低延迟、保护隐私的 AI 硬件的门户。对于每一毫秒都至关重要且数据必须保留在本地的应用场景,该框架为以 GPU 为中心或以云端为中心的推理流水线提供了一个极具吸引力的替代方案。