WebFPGAతో బ్రౌజర్లో TinyMLని వేగవంతం చేయండి
ఒక కొత్త ఓపెన్-సోర్స్ ఫ్రేమ్వర్క్, WebFPGA, డెవలపర్లు 10 ms కంటే తక్కువ సమయంలో నేరుగా వెబ్ పేజీ నుండి TinyML ఇన్ఫరెన్స్ను రన్ చేయడానికి అనుమతిస్తుంది. ఇది కేవలం కొన్ని పదుల మిల్లీవాట్ల శక్తిని మాత్రమే వినియోగించే మరియు ప్రతి డేటా బైట్ను పరికరం (device) లోనే ఉంచే USB-కనెక్టెడ్ FPGAని ఉపయోగిస్తుంది.
TinyML మోడల్స్—మైక్రోకంట్రోలర్లపై నడిచే చిన్న న్యూరల్ నెట్వర్క్లు—ప్రస్తుతం ఆన్-డివైస్ AIకి డిఫాల్ట్గా మారాయి. అయినప్పటికీ, డెవలపర్లు ఇన్ఫరెన్స్ను బ్రౌజర్కు పంపేటప్పుడు వేగం, శక్తి (power) మరియు గోప్యత (privacy) మధ్య సమతుల్యం పాటించాల్సి వస్తోంది. సాంప్రదాయ మార్గాలు గ్రాఫిక్స్ ప్రాసెసర్పై నడిచే WebGPUపై లేదా డేటాను పరికరం నుండి బయటకు పంపే క్లౌడ్ సర్వీసులపై ఆధారపడతాయి. ఈ రెండూ లేటెన్సీని (latency) పెంచుతాయి, ఎక్కువ శక్తిని ఖర్చు చేస్తాయి మరియు ముడి ఇన్పుట్లను (raw inputs) రిమోట్ సర్వర్లకు బహిర్గతం చేస్తాయి.
WebFPGA ఈ సమస్యలను తొలగిస్తుంది. బ్రౌజర్ WebUSB API ద్వారా నేరుగా FPGAతో మాట్లాడుతుంది. ఈ API ఒక FTDI USB-to-serial కంట్రోలర్తో మాట్లాడుతుంది, ఇది Lattice iCE40-UP5K చిప్ను ప్రోగ్రామ్ చేస్తుంది. బిట్స్ట్రీమ్ (bitstream) లోడ్ అయిన తర్వాత, FPGA ఒక TinyML రన్టైమ్ను నడుపుతుంది, ఇది మోడల్ను పూర్తిగా హార్డ్వేర్ యాక్సిలరేటర్పై అమలు చేస్తుంది. డెవలపర్ దృష్టిలో, ఒకే ఒక 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 కేబుల్ మాత్రమే అవసరం—ఎటువంటి ప్రొప్రైటరీ డ్రైవర్లు లేదా భారీ SDKలు అవసరం లేదు.
కొందరు డెవలపర్లు ఇంకా WebGPU లేదా క్లౌడ్ను ఎందుకు ఎంచుకోవచ్చు
ల్యాప్టాప్లు మరియు డెస్క్టాప్లలో WebGPUకి విస్తృతమైన హార్డ్వేర్ సపోర్ట్ ఉంది, మరియు దాని ఎకోసిస్టమ్ ఇప్పటికే పరిణతి చెందిన గ్రాఫిక్స్ డ్రైవర్లు మరియు టూలింగ్ను అందిస్తుంది.
బ్రౌజర్ అనేది కేవలం UI లేయర్ మాత్రమే కాదని, అది అల్ట్రా-లో-లేటెన్సీ (ultra-low-latency), గోప్యతను కాపాడే AI హార్డ్వేర్కు ఒక పోర్టల్గా మారవచ్చని WebFPGA నిరూపిస్తుంది. ప్రతి మిల్లీసెకండ్ ముఖ్యం మరియు డేటా స్థానికంగానే (local) ఉండవలసిన అప్లికేషన్ల కోసం, ఈ ఫ్రేమ్వర్క్ GPU-సెంట్రిక్ లేదా క్లౌడ్-సెంట్రిక్ ఇన్ఫరెన్స్ పైప్లైన్లకు ఒక బలమైన ప్రత్యామ్నాయాన్ని అందిస్తుంది.
