Tăng tốc TinyML trên trình duyệt với WebFPGA

Một framework mã nguồn mở mới, WebFPGA, cho phép các nhà phát triển chạy suy luận TinyML trực tiếp từ một trang web trong chưa đầy 10 ms. Nó sử dụng một FPGA kết nối qua USB, chỉ tiêu thụ vài chục milliwatt và giữ mọi byte dữ liệu ngay trên thiết bị.

Các mô hình TinyML—những mạng thần kinh siêu nhỏ chạy trên vi điều khiển—hiện là lựa chọn mặc định cho AI trên thiết bị. Tuy nhiên, các nhà phát triển vẫn phải cân nhắc giữa tốc độ, điện năng và quyền riêng tư khi đưa việc suy luận lên trình duyệt. Các phương thức truyền thống dựa vào WebGPU (chạy trên bộ xử lý đồ họa) hoặc các dịch vụ đám mây (gửi dữ liệu ra khỏi thiết bị). Cả hai đều làm tăng độ trễ, tiêu tốn nhiều năng lượng hơn và làm lộ dữ liệu đầu vào thô cho các máy chủ từ xa.

WebFPGA loại bỏ những vấn đề đó. Trình duyệt giao tiếp trực tiếp với FPGA thông qua WebUSB API. API này giao tiếp với bộ điều khiển FTDI USB-to-serial, dùng để lập trình chip Lattice iCE40-UP5K. Sau khi bitstream được tải, FPGA sẽ chạy một TinyML runtime để thực thi mô hình hoàn toàn trên bộ tăng tốc phần cứng. Dưới góc độ của nhà phát triển, chỉ cần một lệnh gọi JavaScript duy nhất để tải tệp .bit và truyền các tensor đầu vào.

So sánh các con số

  • WebFPGA: độ trễ 4 ms, công suất ~30 mW, không có dữ liệu nào rời khỏi thiết bị chủ (host).
  • WebGPU: độ trễ 12 ms, ~200 mW, CPU/GPU vẫn xử lý một phần luồng dữ liệu, nên vẫn còn rủi ro lộ dữ liệu.
  • Cloud inference: độ trễ 80 ms, ~500 mW khi chạy ngăn xếp mạng (network stack), và mọi mẫu dữ liệu đều được gửi đến máy chủ từ xa.

Những con số này cho thấy lợi thế rõ rệt trong các kịch bản mà mỗi mili giây đều quan trọng và thời lượng pin hạn chế.

Các kịch bản thực tế

  1. Trợ lý giọng nói phản hồi trong chưa đầy 6 ms mà không bao giờ gửi âm thanh ra khỏi thiết bị.
  2. Giám sát cảm biến công nghiệp phát hiện các điểm bất thường ngay khi chúng xuất hiện, ngay cả trên các máy móc biệt lập không có internet.
  3. Bộ lọc hình ảnh tức thời được áp dụng trong chưa đầy 10 ms, giải phóng CPU để xử lý việc hiển thị giao diện người dùng (UI).

Bắt đầu

  1. Cài đặt bộ công cụ (toolchain) mã nguồn mở: Yosys (synthesis), nextpnr-ice40 (place-and-route), và icepack (bitstream generation).
  2. Chuyển đổi mô hình TensorFlow Lite (.tflite) sang Verilog bằng tiện ích tinyml-conv.
  3. Chạy synthesis và tạo tệp .bit cho iCE40-UP5K.
  4. Nhúng webfpga.js vào một trang web; chỉ với một lệnh gọi JavaScript duy nhất, bitstream sẽ được tải qua WebUSB và dữ liệu suy luận sẽ được truyền đi.

Quy trình làm việc này tương tự như các luồng phát triển FPGA hiện có, nhưng bước cuối cùng chỉ cần một trình duyệt web tiêu chuẩn và một cáp USB—không cần trình điều khiển (driver) độc quyền hay các bộ SDK nặng nề.

Tại sao một số nhà phát triển vẫn có thể chọn WebGPU hoặc đám mây

WebGPU được hỗ trợ phần cứng rộng rãi hơn trên các máy tính xách tay và máy tính để bàn, đồng thời hệ sinh thái của nó đã cung cấp các trình điều khiển đồ họa và công cụ hoàn thiện.

WebFPGA cho thấy trình duyệt có thể không chỉ là một lớp giao diện người dùng (UI); nó có thể trở thành một cổng kết nối tới phần cứng AI có độ trễ cực thấp và bảo vệ quyền riêng tư. Đối với các ứng dụng mà mỗi mili giây đều đáng giá và dữ liệu phải được giữ tại chỗ, framework này cung cấp một giải pháp thay thế hấp dẫn cho các luồng suy luận tập trung vào GPU hoặc đám mây.