WebFPGA ਨਾਲ ਬ੍ਰਾਊਜ਼ਰ ਵਿੱਚ TinyML ਨੂੰ ਤੇਜ਼ ਕਰੋ
ਇੱਕ ਨਵਾਂ ਓਪਨ-ਸੋਰਸ ਫਰੇਮਵਰਕ, WebFPGA, ਡਿਵੈਲਪਰਾਂ ਨੂੰ 10 ms ਤੋਂ ਵੀ ਘੱਟ ਸਮੇਂ ਵਿੱਚ ਸਿੱਧੇ ਵੈੱਬ ਪੇਜ ਤੋਂ TinyML ਇਨਫਰੈਂਸ (inference) ਚਲਾਉਣ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦਾ ਹੈ। ਇਹ ਇੱਕ USB-ਕਨੈਕਟਡ FPGA ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ ਜੋ ਸਿਰਫ਼ ਕੁਝ ਦਸ ਮਿਲੀਵਰਟ (milliwatts) ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ ਅਤੇ ਹਰ ਡੇਟਾ ਬਾਈਟ ਨੂੰ ਡਿਵਾਈਸ 'ਤੇ ਹੀ ਰੱਖਦਾ ਹੈ।
TinyML ਮਾਡਲਾਂ—ਛੋਟੇ ਨਿਊਰਲ ਨੈੱਟਵਰਕ ਜੋ ਮਾਈਕ੍ਰੋਕੰਟਰੋਲਰਾਂ 'ਤੇ ਚੱਲਦੇ ਹਨ—ਹੁਣ ਆਨ-ਡਿਵਾਈਸ AI ਲਈ ਡਿਫੌਲਟ ਬਣ ਗਏ ਹਨ। ਫਿਰ ਵੀ, ਜਦੋਂ ਡਿਵੈਲਪਰ ਇਨਫਰੈਂਸ ਨੂੰ ਬ੍ਰਾਊਜ਼ਰ ਤੱਕ ਪਹੁੰਚਾਉਂਦੇ ਹਨ, ਤਾਂ ਉਹਨਾਂ ਨੂੰ ਸਪੀਡ, ਪਾਵਰ ਅਤੇ ਪ੍ਰਾਈਵੇਸੀ ਦੇ ਵਿਚਕਾਰ ਸੰਤੁਲਨ ਬਣਾਉਣਾ ਪੈਂਦਾ ਹੈ। ਰਵਾਇਤੀ ਤਰੀਕੇ 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 ਕੇਬਲ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ—ਕੋਈ ਪ੍ਰੋਪਰਾਈਟਰੀ ਡਰਾਈਵਰ ਜਾਂ ਭਾਰੀ SDKs ਦੀ ਲੋੜ ਨਹੀਂ ਹੈ।
ਕੁਝ ਡਿਵੈਲਪਰਾਂ ਵੱਲੋਂ ਅਜੇ ਵੀ WebGPU ਜਾਂ ਕਲਾਉਡ ਨੂੰ ਕਿਉਂ ਚੁਣਿਆ ਜਾ ਸਕਦਾ ਹੈ
WebGPU ਨੂੰ ਲੈਪਟਾਪਾਂ ਅਤੇ ਡੈਸਕਟਾਪਾਂ ਵਿੱਚ ਵਿਆਪਕ ਹਾਰਡਵੇਅਰ ਸਪੋਰਟ ਮਿਲਦੀ ਹੈ, ਅਤੇ ਇਸਦਾ ਈਕੋਸਿਸਟਮ ਪਹਿਲਾਂ ਹੀ ਪਰਿਪੱਕ ਗ੍ਰਾਫਿਕਸ ਡਰਾਈਵਰ ਅਤੇ ਟੂਲਿੰਗ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ।
WebFPGA ਦਿਖਾਉਂਦਾ ਹੈ ਕਿ ਬ੍ਰਾਊਜ਼ਰ ਇੱਕ UI ਲੇਅਰ ਤੋਂ ਵੱਧ ਹੋ ਸਕਦਾ ਹੈ; ਇਹ ਅਲਟਰਾ-ਲੋ-ਲੇਟੈਂਸੀ, ਪ੍ਰਾਈਵੇਸੀ-ਪ੍ਰੀਜ਼ਰਵਿੰਗ AI ਹਾਰਡਵੇਅਰ ਲਈ ਇੱਕ ਪੋਰਟਲ ਬਣ ਸਕਦਾ ਹੈ। ਉਹਨਾਂ ਐਪਲੀਕੇਸ਼ਨਾਂ ਲਈ ਜਿੱਥੇ ਹਰ ਮਿਲੀਸਕਿੰਡ ਮਾਇਨੇ ਰੱਖਦੀ ਹੈ ਅਤੇ ਡੇਟਾ ਸਥਾਨਕ ਰਹਿਣਾ ਚਾਹੀਦਾ ਹੈ, ਇਹ ਫਰੇਮਵਰਕ GPU-ਕੇਂਦ੍ਰਿਤ ਜਾਂ ਕਲਾਉਡ-ਕੇਂਦ੍ਰਿਤ ਇਨਫਰੈਂਸ ਪਾਈਪਲਾਈਨਾਂ ਦਾ ਇੱਕ ਪ੍ਰਭਾਵਸ਼ਾਲੀ ਵਿਕਲਪ ਪੇਸ਼ ਕਰਦਾ ਹੈ।
