شتاب‌دهی به TinyML در مرورگر با WebFPGA

یک فریم‌ورک متن‌باز جدید به نام WebFPGA، به توسعه‌دهندگان اجازه می‌دهد استنتاج (inference) TinyML را مستقیماً از یک صفحه وب و در کمتر از ۱۰ میلی‌ثانیه اجرا کنند. این فریم‌ورک از یک FPGA متصل از طریق USB استفاده می‌کند که تنها چند ده میلی‌وات توان مصرف می‌کند و تمام بایت‌های داده را روی خودِ دستگاه نگه می‌دارد.

مدل‌های TinyML — شبکه‌های عصبی کوچکی که روی میکروکنترلرها اجرا می‌شوند — اکنون به استاندارد پیش‌فرض برای هوش مصنوعی روی دستگاه (on-device AI) تبدیل شده‌اند. با این حال، توسعه‌دهندگان هنگام انتقال استنتاج به مرورگر، همچنان با چالش‌های سرعت، توان مصرفی و حریم خصوصی دست‌وپنجه نرم می‌کنند. روش‌های سنتی یا به WebGPU متکی هستند که روی پردازنده گرافیکی اجرا می‌شود، یا به سرویس‌های ابری که داده‌ها را از دستگاه خارج می‌کنند. هر دو روش باعث افزایش تأخیر (latency)، مصرف انرژی بیشتر و قرار گرفتن ورودی‌های خام در معرض سرورهای راه دور می‌شوند.

WebFPGA این مشکلات را برطرف می‌کند. مرورگر از طریق WebUSB API مستقیماً با یک FPGA ارتباط برقرار می‌کند. این API با یک کنترل‌کننده FTDI USB-to-serial صحبت می‌کند که یک تراشه Lattice iCE40-UP5K را برنامه‌ریزی می‌کند. پس از بارگذاری bitstream، FPGA یک TinyML runtime را اجرا می‌کند که مدل را به‌طور کامل روی شتاب‌دهنده سخت‌افزاری اجرا می‌نماید. از دیدگاه یک توسعه‌دهنده، تنها با یک فراخوانی JavaScript، یک فایل .bit بارگذاری شده و تنسورهای ورودی (input tensors) استریم می‌شوند.

مقایسه اعداد و ارقام

  • WebFPGA: تأخیر ۴ میلی‌ثانیه، توان مصرفی حدود ۳۰ میلی‌وات، بدون خروج هیچ داده‌ای از میزبان.
  • WebGPU: تأخیر ۱۲ میلی‌ثانیه، حدود ۲۰۰ میلی‌وات، CPU/GPU همچنان بخشی از مسیر داده را مدیریت می‌کنند، بنابراین مقداری از داده‌ها در معرض قرار می‌گیرند.
  • Cloud inference: تأخیر ۸۰ میلی‌ثانیه، حدود ۵۰۰ میلی‌وات هنگام اجرای پشته شبکه (network stack)، و هر نمونه به یک سرور راه دور ارسال می‌شود.

این ارقام گویای ضرورت استفاده از این روش در سناریوهایی هستند که هر میلی‌ثانیه اهمیت دارد و عمر باتری محدود است.

سناریوهای دنیای واقعی

  1. دستیارهای صوتی در کمتر از ۶ میلی‌ثانیه واکنش نشان می‌دهند، بدون اینکه هرگز صدا را از دستگاه خارج کنند.
  2. مانیتورینگ حسگرهای صنعتی ناهنجاری‌ها را بلافاصله پس از ظهور شناسایی می‌کند، حتی در ماشین‌های ایزوله و بدون اینترنت.
  3. فیلترهای تصویری آنی در کمتر از ۱۰ میلی‌ثانیه اعمال می‌شوند و CPU را برای رندر کردن رابط کاربری (UI) آزاد می‌گذارند.

شروع کار

  1. ابزارهای متن‌باز (toolchain) را نصب کنید: Yosys (سنتز)، nextpnr-ice40 (جای‌گذاری و مسیریابی) و icepack (تولید bitstream).
  2. یک مدل TensorFlow Lite (.tflite) را با استفاده از ابزار tinyml-conv به Verilog تبدیل کنید.
  3. فرآیند سنتز را اجرا کرده و فایل .bit را برای iCE40-UP5K تولید کنید.
  4. فایل webfpga.js را در یک صفحه وب قرار دهید؛ تنها با یک فراخوانی JavaScript، bitstream از طریق WebUSB بارگذاری شده و داده‌های استنتاج استریم می‌شوند.

این گردش کار مشابه خط لوله‌های توسعه FPGA موجود است، اما مرحله نهایی تنها به یک مرورگر وب استاندارد و یک کابل USB نیاز دارد و نیازی به درایورهای اختصاصی یا SDKهای سنگین نیست.

چرا برخی توسعه‌دهندگان ممکن است همچنان WebGPU یا ابر را انتخاب کنند

WebGPU از پشتیبانی سخت‌افزاری گسترده‌تری در لپ‌تاپ‌ها و دسکتاپ‌ها برخوردار است و اکوسیستم آن در حال حاضر درایورهای گرافیکی و ابزارهای بالغی را ارائه می‌دهد.

WebFPGA نشان می‌دهد که مرورگر می‌تواند چیزی فراتر از یک لایه رابط کاربری (UI) باشد؛ مرورگر می‌تواند به دروازه‌ای برای دسترسی به سخت‌افزار هوش مصنوعی با تأخیر بسیار کم و حفظ حریم خصوصی تبدیل شود. برای کاربردهایی که در آن‌ها هر میلی‌ثانیه حیاتی است و داده‌ها باید محلی باقی بمانند، این فریم‌ورک جایگزینی جذاب برای خط لوله‌های استنتاج مبتنی بر GPU یا ابر ارائه می‌دهد.