WebFPGA ಮೂಲಕ ಬ್ರೌಸರ್‌ನಲ್ಲಿ TinyML ಅನ್ನು ವೇಗಗೊಳಿಸಿ

ಹೊಸ ಓಪನ್-ಸೋರ್ಸ್ ಫ್ರೇಮ್‌ವರ್ಕ್, WebFPGA, ಡೆವಲಪರ್‌ಗಳು 10 ms ಗಿಂತ ಕಡಿಮೆ ಸಮಯದಲ್ಲಿ ನೇರವಾಗಿ ವೆಬ್ ಪುಟದಿಂದಲೇ TinyML ಇನ್ಫರೆನ್ಸ್ (inference) ನಡೆಸಲು ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ. ಇದು ಕೇವಲ ಕೆಲವು ಮಿಲಿವ್ಯಾಟ್ಸ್ ವಿದ್ಯುತ್ ಬಳಸುವ ಮತ್ತು ಪ್ರತಿ ಡೇಟಾ ಬೈಟ್ ಅನ್ನು ಸಾಧನದಲ್ಲೇ (device) ಇರಿಸುವ USB-ಸಂಪರ್ಕಿತ FPGA ಅನ್ನು ಬಳಸುತ್ತದೆ.

TinyML ಮಾಡೆಲ್‌ಗಳು—ಮೈಕ್ರೋಕಂಟ್ರೋಲರ್‌ಗಳಲ್ಲಿ ಚಲಿಸುವ ಸಣ್ಣ ನ್ಯೂರಲ್ ನೆಟ್‌ವರ್ಕ್‌ಗಳು—ಈಗ ಆನ್-ಡೈವೈಸ್ AI ಗೆ ಡಿಫಾಲ್ಟ್ ಆಗಿವೆ. ಆದರೂ, ಡೆವಲಪರ್‌ಗಳು ಇನ್ಫರೆನ್ಸ್ ಅನ್ನು ಬ್ರೌಸರ್‌ನೊಂದಿಗೆ ಬಳಸುವಾಗ ವೇಗ, ಶಕ್ತಿ (power) ಮತ್ತು ಗೌಪ್ಯತೆಯ ನಡುವೆ ಸಮತೋಲನ ಕಾಯ್ದುಕೊಳ್ಳಬೇಕಾಗುತ್ತದೆ. ಸಾಂಪ್ರದಾಯಿಕ ಮಾರ್ಗಗಳು ಗ್ರಾಫಿಕ್ಸ್ ಪ್ರೊಸೆಸರ್‌ನಲ್ಲಿ ಚಲಿಸುವ WebGPU ಅಥವಾ ಡೇಟಾವನ್ನು ಸಾಧನದಿಂದ ಹೊರಗೆ ಕಳುಹಿಸುವ ಕ್ಲೌಡ್ ಸೇವೆಗಳ ಮೇಲೆ ಅವಲಂಬಿತವಾಗಿವೆ. ಇವೆರಡೂ ವಿಳಂಬವನ್ನು (latency) ಹೆಚ್ಚಿಸುತ್ತವೆ, ಹೆಚ್ಚಿನ ಶಕ್ತಿಯನ್ನು ವ್ಯಯಿಸುತ್ತವೆ ಮತ್ತು ಕಚ್ಚಾ ಇನ್‌ಪುಟ್‌ಗಳನ್ನು ರಿಮೋಟ್ ಸರ್ವರ್‌ಗಳಿಗೆ ಎಕ್ಸ್‌ಪೋಸ್ ಮಾಡುತ್ತವೆ.

WebFPGA ಈ ಸಮಸ್ಯೆಗಳನ್ನು ನಿವಾರಿಸುತ್ತದೆ. ಬ್ರೌಸರ್ WebUSB API ಮೂಲಕ ನೇರವಾಗಿ FPGA ಜೊತೆಗೆ ಸಂವಹನ ನಡೆಸುತ್ತದೆ. ಈ API ಒಂದು FTDI USB-to-serial ಕಂಟ್ರೋಲರ್ ಜೊತೆಗೆ ಸಂವಹನ ನಡೆಸುತ್ತದೆ, ಇದು Lattice iCE40-UP5K ಚಿಪ್ ಅನ್ನು ಪ್ರೋಗ್ರಾಂ ಮಾಡುತ್ತದೆ. ಬಿಟ್‌ಸ್ಟ್ರೀಮ್ (bitstream) ಲೋಡ್ ಆದ ನಂತರ, FPGA ಒಂದು TinyML ರನ್‌ಟೈಮ್ ಅನ್ನು ಚಲಿಸುತ್ತದೆ, ಇದು ಮಾಡೆಲ್ ಅನ್ನು ಸಂಪೂರ್ಣವಾಗಿ ಹಾರ್ಡ್‌ವೇರ್ ಆಕ್ಸಿಲರೇಟರ್‌ನಲ್ಲಿ ಕಾರ್ಯಗತಗೊಳಿಸುತ್ತದೆ. ಡೆವಲಪರ್ ದೃಷ್ಟಿಕೋನದಿಂದ ಹೇಳುವುದಾದರೆ, ಒಂದು ಸಿಂಗಲ್ JavaScript ಕಾಲ್ .bit ಫೈಲ್ ಅನ್ನು ಲೋಡ್ ಮಾಡುತ್ತದೆ ಮತ್ತು ಇನ್‌ಪುಟ್ ಟೆನ್ಸರ್ಸ್‌ಗಳನ್ನು (input tensors) ಸ್ಟ್ರೀಮ್ ಮಾಡುತ್ತದೆ.

ಅಂಕಿಅಂಶಗಳ ಹೋಲಿಕೆ

  • WebFPGA: 4 ms ವಿಳಂಬ (latency), ~30 mW ಶಕ್ತಿ, ಹೋಸ್ಟ್‌ನಿಂದ ಯಾವುದೇ ಡೇಟಾ ಹೊರಗೆ ಹೋಗುವುದಿಲ್ಲ.
  • WebGPU: 12 ms ವಿಳಂಬ, ~200 mW, CPU/GPU ಇನ್ನೂ ಡೇಟಾ ಪಾತ್‌ನ ಕೆಲವು ಭಾಗವನ್ನು ನಿರ್ವಹಿಸುತ್ತವೆ, ಆದ್ದರಿಂದ ಸ್ವಲ್ಪ ಮಟ್ಟದ ಡೇಟಾ ಎಕ್ಸ್‌ಪೋಸರ್ ಇರುತ್ತದೆ.
  • Cloud inference: 80 ms ವಿಳಂಬ, ನೆಟ್‌ವರ್ಕ್ ಸ್ಟ್ಯಾಕ್ ಚಲಿಸುವಾಗ ~500 mW, ಮತ್ತು ಪ್ರತಿ ಸ್ಯಾಂಪಲ್ ರಿಮೋಟ್ ಸರ್ವರ್‌ಗೆ ಪ್ರಯಾಣಿಸುತ್ತದೆ.

ಪ್ರತಿ ಮಿಲಿಸೆಕೆಂಡ್ ಮುಖ್ಯವಾಗುವ ಮತ್ತು ಬ್ಯಾಟರಿ ಲೈಫ್ ಕಡಿಮೆ ಇರುವ ಸಂದರ್ಭಗಳಲ್ಲಿ ಈ ಅಂಕಿಅಂಶಗಳು ಸ್ಪಷ್ಟವಾದ ಕಾರಣವನ್ನು ನೀಡುತ್ತವೆ.

ನೈಜ-ಜಗತ್ತಿನ ಸನ್ನಿವೇಶಗಳು

  1. Voice assistants 6 ms ಗಿಂತ ಕಡಿಮೆ ಸಮಯದಲ್ಲಿ ಪ್ರತಿಕ್ರಿಯಿಸುತ್ತವೆ, ಆಡಿಯೋವನ್ನು ಎಂದಿಗೂ ಸಾಧನದಿಂದ ಹೊರಗೆ ಕಳುಹಿಸುವುದಿಲ್ಲ.
  2. Industrial sensor monitoring ಅಸಹಜತೆಗಳು (anomalies) ಕಾಣಿಸಿಕೊಂಡ ತಕ್ಷಣವೇ ಅವುಗಳನ್ನು ಗುರುತಿಸುತ್ತದೆ, ಇಂಟರ್ನೆಟ್ ಇಲ್ಲದ ಪ್ರತ್ಯೇಕ ಯಂತ್ರಗಳ ಮೇಲೂ ಇದು ಸಾಧ್ಯ.
  3. On-the-fly image filters 10 ms ಗಿಂತ ಕಡಿಮೆ ಸಮಯದಲ್ಲಿ ಅನ್ವಯವಾಗುತ್ತವೆ, ಇದು UI ರೆಂಡರಿಂಗ್‌ಗಾಗಿ CPU ಅನ್ನು ಮುಕ್ತಗೊಳಿಸುತ್ತದೆ.

ಪ್ರಾರಂಭಿಸುವುದು ಹೇಗೆ

  1. ಓಪನ್-ಸೋರ್ಸ್ ಟೂಲ್‌ಚೈನ್ ಅನ್ನು ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಿ: Yosys (synthesis), nextpnr-ice40 (place-and-route), ಮತ್ತು icepack (bitstream generation).
  2. tinyml-conv ಯುಟಿಲಿಟಿ ಬಳಸಿ TensorFlow Lite ಮಾಡೆಲ್ ಅನ್ನು (.tflite) Verilog ಗೆ ಪರಿವರ್ತಿಸಿ.
  3. ಸಿಂಥೆಸಿಸ್ (synthesis) ಚಲಿಸಿ ಮತ್ತು iCE40-UP5K ಗಾಗಿ .bit ಫೈಲ್ ಅನ್ನು ರಚಿಸಿ.
  4. ವೆಬ್ ಪುಟದಲ್ಲಿ webfpga.js ಅನ್ನು ಸೇರಿಸಿ; ಒಂದು ಸಿಂಗಲ್ JavaScript ಕಾಲ್ WebUSB ಮೂಲಕ ಬಿಟ್‌ಸ್ಟ್ರೀಮ್ ಅನ್ನು ಲೋಡ್ ಮಾಡುತ್ತದೆ ಮತ್ತು ಇನ್ಫರೆನ್ಸ್ ಡೇಟಾವನ್ನು ಸ್ಟ್ರೀಮ್ ಮಾಡುತ್ತದೆ.

ಈ ವರ್ಕ್‌ಫ್ಲೋ ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ FPGA ಡೆವಲಪ್‌ಮೆಂಟ್ ಪೈಪ್‌ಲೈನ್‌ಗಳನ್ನು ಹೋಲುತ್ತದೆ, ಆದರೆ ಅಂತಿಮ ಹಂತಕ್ಕೆ ಕೇವಲ ಸ್ಟ್ಯಾಂಡರ್ಡ್ ವೆಬ್ ಬ್ರೌಸರ್ ಮತ್ತು USB ಕೇಬಲ್ ಬೇಕು—ಯಾವುದೇ ಪ್ರೊಪ್ರೈಟರಿ ಡ್ರೈವರ್‌ಗಳು ಅಥವಾ ಭಾರೀ SDKಗಳ ಅಗತ್ಯವಿಲ್ಲ.

ಕೆಲವು ಡೆವಲಪರ್‌ಗಳು ಏಕೆ ಇನ್ನೂ WebGPU ಅಥವಾ ಕ್ಲೌಡ್ ಅನ್ನು ಆಯ್ಕೆ ಮಾಡಬಹುದು

WebGPU ಲ್ಯಾಪ್‌ಟಾಪ್‌ಗಳು ಮತ್ತು ಡೆಸ್ಕ್‌ಟಾಪ್‌ಗಳಲ್ಲಿ ವ್ಯಾಪಕವಾದ ಹಾರ್ಡ್‌ವೇರ್ ಬೆಂಬಲವನ್ನು ಹೊಂದಿದೆ ಮತ್ತು ಅದರ ಪರಿಸರ ವ್ಯವಸ್ಥೆಯು (ecosystem) ಈಗಾಗಲೇ ಪರಿಪೂರ್ಣ ಗ್ರಾಫಿಕ್ಸ್ ಡ್ರೈವರ್‌ಗಳು ಮತ್ತು ಟೂಲಿಂಗ್ ಅನ್ನು ಒದಗಿಸುತ್ತದೆ.

ಬ್ರೌಸರ್ ಕೇವಲ UI ಲೇಯರ್ ಆಗಿರುವುದಕ್ಕಿಂತ ಹೆಚ್ಚಿನದಾಗಬಲ್ಲದು ಎಂಬುದನ್ನು WebFPGA ತೋರಿಸುತ್ತದೆ; ಇದು ಅಲ್ಟ್ರಾ-ಲೋ-ಲ್ಯಾಟೆನ್ಸಿ, ಗೌಪ್ಯತೆಯನ್ನು ಕಾಪಾಡುವ AI ಹಾರ್ಡ್‌ವೇರ್‌ಗೆ ಒಂದು ಪೋರ್ಟಲ್ ಆಗಬಲ್ಲದು. ಪ್ರತಿ ಮಿಲಿಸೆಕೆಂಡ್ ಮುಖ್ಯವಾಗುವ ಮತ್ತು ಡೇಟಾ ಸ್ಥಳೀಯವಾಗಿಯೇ ಇರಬೇಕಾದ ಅಪ್ಲಿಕೇಶನ್‌ಗಳಿಗೆ, ಈ ಫ್ರೇಮ್‌ವರ್ಕ್ GPU-ಕೇಂದ್ರಿತ ಅಥವಾ ಕ್ಲೌಡ್-ಕೇಂದ್ರಿತ ಇನ್ಫರೆನ್ಸ್ ಪೈಪ್‌ಲೈನ್‌ಗಳಿಗೆ ಒಂದು ಆಕರ್ಷಕ ಪರ್ಯಾಯವನ್ನು ನೀಡುತ್ತದೆ.