WebFPGA સાથે બ્રાઉઝરમાં TinyML ને ઝડપી બનાવો

એક નવું ઓપન-સોર્સ ફ્રેમવર્ક, WebFPGA, ડેવલપર્સને 10 ms થી પણ ઓછા સમયમાં સીધા વેબ પેજ પરથી TinyML ઇન્ફરન્સ (inference) ચલાવવાની સુવિધા આપે છે. તે USB-કનેક્ટેડ FPGA નો ઉપયોગ કરે છે જે માત્ર થોડા દસ મિલીવોટ (milliwatts) પાવર વાપરે છે અને ડેટાના દરેક બાઇટને ઉપકરણ પર જ સુરક્ષિત રાખે છે.

TinyML મોડલ્સ—નાના ન્યુરલ નેટવર્ક્સ જે માઇક્રોકન્ટ્રોલર્સ પર ચાલે છે—હવે ઓન-ડિવાઇસ AI માટે ડિફોલ્ટ બની ગયા છે. તેમ છતાં, જ્યારે ડેવલપર્સ ઇન્ફરન્સને બ્રાઉઝર પર લાવવાનો પ્રયાસ કરે છે, ત્યારે તેઓ સ્પીડ, પાવર અને પ્રાઇવસી વચ્ચે સંતુલન જાળવવાનો સંઘર્ષ કરે છે. પરંપરાગત પદ્ધતિઓ WebGPU પર આધારિત છે, જે ગ્રાફિક્સ પ્રોસેસર પર ચાલે છે, અથવા ક્લાઉડ સેવાઓ પર આધારિત છે જે ડેટાને ઉપકરણની બહાર મોકલે છે. આ બંને પદ્ધતિઓ લેટન્સી (latency) વધારે છે, વધુ ઉર્જા વાપરે છે અને કાચા ઇનપુટ્સને રિમોટ સર્વર સામે ખુલ્લા પાડે છે.

WebFPGA આ સમસ્યાઓને દૂર કરે છે. બ્રાઉઝર WebUSB API દ્વારા સીધું FPGA સાથે વાત કરે છે. આ API એક FTDI USB-to-serial કંટ્રોલર સાથે વાત કરે છે, જે Lattice iCE40-UP5K ચિપને પ્રોગ્રામ કરે છે. બિટસ્ટ્રીમ (bitstream) લોડ થયા પછી, FPGA એક TinyML રનટાઇમ ચલાવે છે જે આખા મોડલને હાર્ડવેર એક્સિલરેટર પર જ એક્ઝિક્યુટ કરે છે. ડેવલપરના દૃષ્ટિકોણથી, એક સિંગલ JavaScript કોલ .bit ફાઇલ લોડ કરે છે અને ઇનપુટ ટેન્સર (tensors) સ્ટ્રીમ કરે છે.

આંકડાકીય તુલના

  • WebFPGA: 4 ms લેટન્સી, ~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 લેપટોપ અને ડેસ્કટોપ પર વ્યાપક હાર્ડવેર સપોર્ટ ધરાવે છે, અને તેનું ઇકોસિસ્ટમ પહેલેથી જ પરિપક્વ ગ્રાફિક્સ ડ્રાઇવર્સ અને ટૂલિંગ ઓફર કરે છે.

WebFPGA દર્શાવે છે કે બ્રાઉઝર માત્ર UI લેયર કરતાં વધુ હોઈ શકે છે; તે અલ્ટ્રા-લો-લેટન્સી (ultra-low-latency) અને પ્રાઇવસી જાળવતા AI હાર્ડવેર માટેનું પોર્ટલ બની શકે છે. એવા એપ્લિકેશન્સ માટે જ્યાં દરેક મિલીસેકન્ડ મહત્વની છે અને ડેટા લોકલ રહેવો જોઈએ, આ ફ્રેમવર્ક GPU-કેન્દ્રીત અથવા ક્લાઉડ-કેન્દ્રીત ઇન્ફરન્સ પાઇપલાઇન માટે એક આકર્ષક વિકલ્પ પૂરો પાડે છે.