WebFPGA ഉപയോഗിച്ച് ബ്രൗസറിലെ TinyML വേഗത്തിലാക്കാം
പുതിയൊരു ഓപ്പൺ സോഴ്സ് ഫ്രെയിംവർക്കായ WebFPGA, ഡെവലപ്പർമാർക്ക് വെബ് പേജിൽ നിന്ന് നേരിട്ട് 10 ms-ൽ താഴെ സമയത്തിനുള്ളിൽ TinyML ഇൻഫറൻസ് (inference) പ്രവർത്തിപ്പിക്കാൻ സഹായിക്കുന്നു. ഇത് കുറഞ്ഞ അളവിൽ (a few tens of milliwatts) മാത്രം വൈദ്യുതി ഉപയോഗിക്കുന്ന, USB വഴി കണക്ട് ചെയ്യാവുന്ന ഒരു FPGA ഉപയോഗിക്കുന്നു, കൂടാതെ ഡാറ്റയുടെ ഓരോ ബൈറ്റും ഉപകരണത്തിൽ തന്നെ സുരക്ഷിതമായി സൂക്ഷിക്കുന്നു.
മൈക്രോകൺട്രോളറുകളിൽ പ്രവർത്തിക്കുന്ന ചെറിയ ന്യൂറൽ നെറ്റ്വർക്കുകളായ TinyML മോഡലുകൾ ഇപ്പോൾ ഓൺ-ഡിവൈസ് AI-യുടെ അടിസ്ഥാനമാണ്. എന്നിരുന്നാലും, ഇൻഫറൻസ് ബ്രൗസറിലേക്ക് മാറ്റുമ്പോൾ വേഗത, പവർ, പ്രൈവസി എന്നിവയെ സംബന്ധിച്ച വെല്ലുവിളികൾ ഡെവലപ്പർമാർ നേരിടുന്നുണ്ട്. പരമ്പരാഗത രീതികൾ ഗ്രാഫിക്സ് പ്രോസസറിൽ പ്രവർത്തിക്കുന്ന WebGPU-യെയോ അല്ലെങ്കിൽ ഡാറ്റ പുറത്തേക്ക് അയക്കുന്ന ക്ലൗഡ് സേവനങ്ങളെയോ ആണ് ആശ്രയിക്കുന്നത്. ഇവ രണ്ടും ലേറ്റൻസി (latency) വർദ്ധിപ്പിക്കുകയും, കൂടുതൽ ഊർജ്ജം ഉപയോഗിക്കുകയും, ഡാറ്റ റിമോട്ട് സെർവറുകളിലേക്ക് എത്തിക്കുകയും ചെയ്യുന്നു.
WebFPGA ഈ പ്രശ്നങ്ങളെ പരിഹരിക്കുന്നു. WebUSB API വഴി ബ്രൗസർ നേരിട്ട് ഒരു FPGA-യുമായി ആശയവിനിമയം നടത്തുന്നു. ഈ API ഒരു FTDI USB-to-serial കൺട്രോളറുമായി ബന്ധപ്പെട്ട്, ഒരു Lattice iCE40-UP5K ചിപ്പിനെ പ്രോഗ്രാം ചെയ്യുന്നു. ബിറ്റ്സ്ട്രീം (bitstream) ലോഡ് ചെയ്തുകഴിഞ്ഞാൽ, ഹാർഡ്വെയർ ആക്സിലറേറ്ററിൽ തന്നെ മോഡൽ പൂർണ്ണമായും പ്രവർത്തിപ്പിക്കുന്ന ഒരു TinyML റൺടൈം FPGA പ്രവർത്തിപ്പിക്കുന്നു. ഒരു ഡെവലപ്പറെ സംബന്ധിച്ചിടത്തോളം, ഒരു സിംഗിൾ JavaScript കോൾ ഉപയോഗിച്ച് ഒരു .bit ഫയൽ ലോഡ് ചെയ്യാനും ഇൻപുട്ട് ടെൻസറുകൾ (input tensors) സ്ട്രീം ചെയ്യാനും സാധിക്കും.
കണക്കുകൾ പരിശോധിക്കാം
- WebFPGA: 4 ms ലേറ്റൻസി, ~30 mW പവർ, ഡാറ്റ ഹോസ്റ്റിൽ നിന്ന് പുറത്തേക്ക് പോകുന്നില്ല.
- WebGPU: 12 ms ലേറ്റൻസി, ~200 mW, CPU/GPU ഡാറ്റാ പാത്തിന്റെ ഒരു ഭാഗം കൈകാര്യം ചെയ്യുന്നു, അതിനാൽ ഡാറ്റാ എക്സ്പോഷർ നിലനിൽക്കുന്നു.
- Cloud inference: 80 ms ലേറ്റൻസി, നെറ്റ്വർക്ക് സ്റ്റാക്ക് പ്രവർത്തിക്കുമ്പോൾ ~500 mW, ഓരോ സാമ്പിളും ഒരു റിമോട്ട് സെർവറിലേക്ക് അയക്കപ്പെടുന്നു.
ഓരോ മില്ലിസെക്കൻഡും പ്രധാനപ്പെട്ടതും ബാറ്ററി ലൈഫ് പരിമിതമായതുമായ സാഹചര്യങ്ങളിൽ ഈ കണക്കുകൾ വ്യക്തമായ ഒരു നേട്ടം കാണിക്കുന്നു.
യഥാർത്ഥ ലോക സാഹചര്യങ്ങൾ
- Voice assistants 6 ms-ൽ താഴെ സമയത്തിനുള്ളിൽ പ്രതികരിക്കുന്നു, ഓഡിയോ ഒരിക്കലും ഉപകരണത്തിന് പുറത്തേക്ക് അയക്കുന്നില്ല.
- Industrial sensor monitoring ഇന്റർനെറ്റ് ഇല്ലാത്ത ഒറ്റപ്പെട്ട മെഷീനുകളിൽ പോലും അസ്വാഭാവികതകൾ (anomalies) കണ്ടാലുടൻ അത് തിരിച്ചറിയുന്നു.
- On-the-fly image filters 10 ms-ൽ താഴെ സമയത്തിനുള്ളിൽ പ്രവർത്തിക്കുന്നു, ഇത് UI റെൻഡറിംഗിനായി CPU-വിനെ സ്വതന്ത്രമാക്കുന്നു.
എങ്ങനെ തുടങ്ങാം
- ഓപ്പൺ സോഴ്സ് ടൂൾചെയിൻ ഇൻസ്റ്റാൾ ചെയ്യുക: Yosys (synthesis), nextpnr-ice40 (place-and-route), icepack (bitstream generation).
- tinyml-conv യൂട്ടിലിറ്റി ഉപയോഗിച്ച് ഒരു TensorFlow Lite മോഡൽ (.tflite) Verilog-ലേക്ക് മാറ്റുക.
- സിന്തസിസ് (synthesis) നടത്തി iCE40-UP5K-യ്ക്കായുള്ള .bit ഫയൽ നിർമ്മിക്കുക.
- ഒരു വെബ് പേജിൽ
webfpga.jsഉൾപ്പെടുത്തുക; ഒരു സിംഗിൾ JavaScript കോൾ WebUSB വഴി ബിറ്റ്സ്ട്രീം ലോഡ് ചെയ്യുകയും ഇൻഫറൻസ് ഡാറ്റ സ്ട്രീം ചെയ്യുകയും ചെയ്യുന്നു.
ഈ പ്രവർത്തനരീതി നിലവിലുള്ള FPGA ഡെവലപ്മെന്റ് പൈപ്പ്ലൈനുകൾക്ക് സമാനമാണ്, എന്നാൽ അവസാന ഘട്ടത്തിന് ഒരു സാധാരണ വെബ് ബ്രൗസറും ഒരു USB കേബിളും മാത്രം മതി—പ്രത്യേക ഡ്രൈവറുകളോ (proprietary drivers) ഭാരമേറിയ SDK-കളോ ആവശ്യമില്ല.
എന്തുകൊണ്ടാണ് ചില ഡെവലപ്പർമാർ ഇപ്പോഴും WebGPU അല്ലെങ്കിൽ ക്ലൗഡ് തിരഞ്ഞെടുക്കുന്നത്
ലാപ്ടോപ്പുകളിലും ഡെസ്ക്ടോപ്പുകളിലും WebGPU-യ്ക്ക് കൂടുതൽ ഹാർഡ്വെയർ പിന്തുണയുണ്ട്, കൂടാതെ അതിന്റെ ഇക്കോസിസ്റ്റത്തിൽ മികച്ച ഗ്രാഫിക്സ് ഡ്രൈവറുകളും ടൂളുകളും ലഭ്യമാണ്.
ബ്രൗസർ എന്നത് വെറുമൊരു UI ലെയർ മാത്രമല്ലെന്നും, അത് അൾട്രാ-ലോ-ലേറ്റൻസി (ultra-low-latency), പ്രൈവസി സംരക്ഷിക്കുന്ന AI ഹാർഡ്വെയറിലേക്കുള്ള ഒരു പോർട്ടലായി മാറാൻ കഴിയുമെന്നും WebFPGA കാണിച്ചുതരുന്നു. ഓരോ മില്ലിസെക്കൻഡും പ്രധാനപ്പെട്ടതും ഡാറ്റ ലോക്കലായി തന്നെ സൂക്ഷിക്കേണ്ടതുമായ ആപ്ലിക്കേഷനുകൾക്ക്, GPU-കേന്ദ്രീകൃതമോ ക്ലൗഡ്-കേന്ദ്രീകൃതമോ ആയ ഇൻഫറൻസ് പൈപ്പ്ലൈനുകൾക്ക് മികച്ചൊരു ബദൽ ഈ ഫ്രെയിംവർക്ക് വാഗ്ദാനം ചെയ്യുന്നു.
