เร่งความเร็ว TinyML ในเบราว์เซอร์ด้วย WebFPGA
เฟรมเวิร์กโอเพนซอร์สใหม่ WebFPGA ช่วยให้นักพัฒนาสามารถรันการอนุมาน (inference) ของ TinyML ได้โดยตรงจากหน้าเว็บภายในเวลาไม่ถึง 10 มิลลิวินาที โดยใช้ FPGA ที่เชื่อมต่อผ่าน USB ซึ่งใช้พลังงานเพียงไม่กี่สิบมิลลิวัตต์ และเก็บข้อมูลทุกไบต์ไว้ภายในอุปกรณ์
โมเดล TinyML ซึ่งเป็นโครงข่ายประสาทเทียมขนาดเล็กที่ทำงานบนไมโครคอนโทรลเลอร์ กลายเป็นมาตรฐานสำหรับการทำ AI บนอุปกรณ์ (on-device AI) ในปัจจุบัน อย่างไรก็ตาม นักพัฒนายังคงต้องเผชิญกับความท้าทายด้านความเร็ว พลังงาน และความเป็นส่วนตัว เมื่อต้องผลักดันการอนุมานไปยังเบราว์เซอร์ วิธีการแบบดั้งเดิมมักพึ่งพา WebGPU ซึ่งทำงานบนหน่วยประมวลผลกราฟิก หรือพึ่งพาบริการคลาวด์ที่ต้องส่งข้อมูลออกนอกอุปกรณ์ ซึ่งทั้งสองวิธีล้วนเพิ่มความหน่วง (latency) ใช้พลังงานมากขึ้น และทำให้ข้อมูลนำเข้าดิบ (raw inputs) ถูกเปิดเผยต่อเซิร์ฟเวอร์ระยะไกล
WebFPGA ช่วยขจัดปัญหาเหล่านี้ โดยเบราว์เซอร์จะสื่อสารกับ FPGA โดยตรงผ่าน WebUSB API ซึ่ง API นี้จะสื่อสารกับตัวควบคุม FTDI USB-to-serial เพื่อโปรแกรมชิป Lattice iCE40-UP5K หลังจากโหลด bitstream แล้ว FPGA จะรัน TinyML runtime ที่ประมวลผลโมเดลทั้งหมดบนตัวเร่งความเร็วฮาร์ดแวร์ (hardware accelerator) ในมุมมองของนักพัฒนา เพียงแค่เรียกใช้ JavaScript เพียงครั้งเดียว ก็สามารถโหลดไฟล์ .bit และสตรีม input tensors ได้ทันที
เปรียบเทียบตัวเลขให้เห็นชัดเจน
- WebFPGA: ความหน่วง 4 มิลลิวินาที, พลังงาน ~30 มิลลิวัตต์, ไม่มีข้อมูลใดหลุดออกจากเครื่องโฮสต์
- WebGPU: ความหน่วง 12 มิลลิวินาที, พลังงาน ~200 มิลลิวัตต์, CPU/GPU ยังคงต้องจัดการเส้นทางข้อมูลบางส่วน จึงยังมีความเสี่ยงด้านความเป็นส่วนตัวอยู่บ้าง
- Cloud inference: ความหน่วง 80 มิลลิวินาที, พลังงาน ~500 มิลลิวัตต์เมื่อรัน network stack และทุกตัวอย่างข้อมูลต้องถูกส่งไปยังเซิร์ฟเวอร์ระยะไกล
ตัวเลขเหล่านี้แสดงให้เห็นถึงความสำคัญอย่างยิ่งในสถานการณ์ที่ทุกมิลลิวินาทีมีค่าและทรัพยากรแบตเตอรี่มีจำกัด
สถานการณ์การใช้งานจริง
- Voice assistants ตอบสนองได้ในเวลาไม่ถึง 6 มิลลิวินาที โดยไม่มีการส่งข้อมูลเสียงออกนอกอุปกรณ์
- Industrial sensor monitoring ตรวจพบความผิดปกติได้ทันทีที่เกิดขึ้น แม้จะเป็นเครื่องจักรที่แยกส่วนและไม่มีอินเทอร์เน็ต
- On-the-fly image filters ประมวลผลฟิลเตอร์ภาพได้ในเวลาไม่ถึง 10 มิลลิวินาที ช่วยลดภาระ CPU เพื่อให้ไปใช้ในการเรนเดอร์ UI แทน
เริ่มต้นใช้งาน
- ติดตั้งชุดเครื่องมือ (toolchain) โอเพนซอร์ส: Yosys (synthesis), nextpnr-ice40 (place-and-route) และ icepack (bitstream generation)
- แปลงโมเดล TensorFlow Lite (.tflite) เป็น Verilog ด้วยยูทิลิตี้ tinyml-conv
- รันการสังเคราะห์ (synthesis) และสร้างไฟล์ .bit สำหรับ iCE40-UP5K
- ใส่
webfpga.jsลงในหน้าเว็บ โดยการเรียกใช้ JavaScript เพียงครั้งเดียวจะโหลด bitstream ผ่าน WebUSB และสตรีมข้อมูลการอนุมาน
ขั้นตอนการทำงานนี้เลียนแบบไปป์ไลน์การพัฒนา FPGA ที่มีอยู่เดิม แต่ขั้นตอนสุดท้ายต้องการเพียงเบราว์เซอร์มาตรฐานและสาย USB เท่านั้น โดยไม่ต้องใช้ไดรเวอร์เฉพาะทางหรือ SDK ขนาดใหญ่
ทำไมผู้พัฒนายังอาจเลือกใช้ WebGPU หรือคลาวด์
WebGPU ได้รับการสนับสนุนด้านฮาร์ดแวร์ที่กว้างขวางกว่าทั้งในแล็ปท็อปและเดสก์ท็อป อีกทั้งระบบนิเวศของ WebGPU ยังมีไดรเวอร์กราฟิกและเครื่องมือที่พร้อมใช้งานอย่างเต็มรูปแบบแล้ว
WebFPGA แสดงให้เห็นว่าเบราว์เซอร์เป็นได้มากกว่าแค่เลเยอร์สำหรับ UI แต่สามารถเป็นประตูสู่ฮาร์ดแวร์ AI ที่มีความหน่วงต่ำเป็นพิเศษและรักษาความเป็นส่วนตัวได้ สำหรับแอปพลิเคชันที่ทุกมิลลิวินาทีมีความสำคัญและข้อมูลต้องถูกเก็บไว้ในเครื่องเท่านั้น เฟรมเวิร์กนี้จึงเป็นทางเลือกที่น่าสนใจแทนที่ไปป์ไลน์การอนุมานที่เน้น GPU หรือคลาวด์เป็นหลัก
