WebFPGA-এর মাধ্যমে ব্রাউজারে TinyML-এর গতি বৃদ্ধি করুন

একটি নতুন ওপেন-সোর্স ফ্রেমওয়ার্ক, WebFPGA, ডেভেলপারদের একটি ওয়েব পেজ থেকেই ১০ মিলিসেকেন্ডের কম সময়ে TinyML ইনফারেন্স (inference) চালানোর সুযোগ দেয়। এটি একটি USB-সংযুক্ত FPGA ব্যবহার করে যা মাত্র কয়েক ডজন মিলিওয়াট বিদ্যুৎ খরচ করে এবং প্রতিটি ডেটা বাইট ডিভাইসেই সুরক্ষিত রাখে।

TinyML মডেল—যা মাইক্রোকন্ট্রোলারে চলে এমন ক্ষুদ্র নিউরাল নেটওয়ার্ক—বর্তমানে অন-ডিভাইস AI-এর জন্য ডিফল্ট হিসেবে ব্যবহৃত হচ্ছে। তবুও ডেভেলপাররা যখন ব্রাউজারে ইনফারেন্স চালনা করতে চান, তখন তাদের গতি, শক্তি (power) এবং গোপনীয়তার মধ্যে ভারসাম্য বজায় রাখতে হিমশিম খেতে হয়। প্রচলিত পদ্ধতিগুলো WebGPU-এর ওপর নির্ভর করে, যা গ্রাফিক্স প্রসেসরে চলে, অথবা ক্লাউড সার্ভিসের ওপর নির্ভর করে যা ডেটা ডিভাইসের বাইরে পাঠিয়ে দেয়। উভয় ক্ষেত্রেই ল্যাটেন্সি (latency) বাড়ে, বেশি শক্তি খরচ হয় এবং র-ইনপুটগুলো (raw inputs) রিমোট সার্ভারের কাছে উন্মুক্ত হয়ে পড়ে।

WebFPGA এই সমস্যাগুলো দূর করে। ব্রাউজার WebUSB API-এর মাধ্যমে সরাসরি একটি FPGA-এর সাথে যোগাযোগ করে। এই API একটি FTDI USB-to-serial কন্ট্রোলারের সাথে কথা বলে, যা একটি Lattice iCE40-UP5K চিপকে প্রোগ্রাম করে। বিটস্ট্রিম (bitstream) লোড হওয়ার পর, FPGA একটি TinyML রানটাইম পরিচালনা করে যা সম্পূর্ণ হার্ডওয়্যার এক্সিলারেটরের ওপর মডেলটি কার্যকর করে। একজন ডেভেলপারের দৃষ্টিকোণ থেকে, একটি মাত্র JavaScript কল একটি .bit ফাইল লোড করে এবং ইনপুট টেনসর (input tensors) স্ট্রিম করে।

পরিসংখ্যানের তুলনা

  • WebFPGA: ৪ মিলি-সেকেন্ড ল্যাটেন্সি, ~৩০ mW শক্তি খরচ, হোস্ট থেকে কোনো ডেটা বাইরে যায় না।
  • WebGPU: ১২ মিলি-সেকেন্ড ল্যাটেন্সি, ~২০০ mW, CPU/GPU এখনও ডেটা পথের কিছু অংশ পরিচালনা করে, তাই কিছুটা ডেটা উন্মুক্ত থাকার ঝুঁকি থাকে।
  • Cloud inference: ৮০ মিলি-সেকেন্ড ল্যাটেন্সি, নেটওয়ার্ক স্ট্যাক চলার সময় ~৫০০ mW শক্তি খরচ হয় এবং প্রতিটি স্যাম্পল রিমোট সার্ভারে চলে যায়।

এই পরিসংখ্যানগুলো সেই সব পরিস্থিতির জন্য একটি জোরালো যুক্তি প্রদান করে যেখানে প্রতিটি মিলিসেকেন্ড গুরুত্বপূর্ণ এবং ব্যাটারি লাইফ সীমিত।

বাস্তব জগতের উদাহরণ

  1. Voice assistants ৬ মিলিসেকেন্ডের কম সময়ে প্রতিক্রিয়া জানায় এবং অডিও কখনোই ডিভাইসের বাইরে পাঠায় না।
  2. Industrial sensor monitoring কোনো অস্বাভাবিকতা দেখা দেওয়ার সাথে সাথেই তা শনাক্ত করে ফেলে, এমনকি ইন্টারনেটহীন বিচ্ছিন্ন মেশিনের ক্ষেত্রেও।
  3. তাৎক্ষণিক ইমেজ ফিল্টার (On-the-fly image filters) ১০ মিলিসেকেন্ডের কম সময়ে প্রয়োগ করা যায়, যা 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 লেয়ারের চেয়েও বেশি কিছু হতে পারে; এটি আল্ট্রা-লো-ল্যাটেন্সি এবং গোপনীয়তা রক্ষা করে এমন AI হার্ডওয়্যারের একটি প্রবেশদ্বার হতে পারে। যেসব অ্যাপ্লিকেশনের ক্ষেত্রে প্রতিটি মিলিসেকেন্ড গুরুত্বপূর্ণ এবং ডেটা স্থানীয়ভাবে রাখা প্রয়োজন, সেখানে এই ফ্রেমওয়ার্কটি GPU-কেন্দ্রিক বা ক্লাউড-কেন্দ্রিক ইনফারেন্স পাইপলাইনের একটি চমৎকার বিকল্প হিসেবে কাজ করে।