- ESP32-S3 पर server से जुड़े बिना 2.89 करोड़ parameter वाला language model चलाया गया, जो छोटी screen पर लगभग प्रति सेकंड 9 token की रफ्तार से text आउटपुट करता है
- कुल parameter में से 2.5 करोड़ को धीमी flash में रखकर, हर token पर ज़रूरी लगभग 6 row यानी सिर्फ 450 byte पढ़ने वाली Per-Layer Embeddings संरचना का उपयोग किया गया
- मॉडल 4-bit आधार पर 14.9MB का है; 512KB SRAM में हर token पर इस्तेमाल होने वाला compute core, 8MB PSRAM में output head और working memory, और 16MB flash में बड़ा embedding table रखा गया है
- TinyStories पर train किया गया यह मॉडल छोटे और सरल किस्से ज़्यादातर स्थिरता के साथ बना लेता है, लेकिन question answering, instruction following, code writing और factual knowledge के लिए उपयुक्त नहीं है
- पहले समान chip पर चलाए गए 2.6 लाख parameter मॉडल की तुलना में इसमें लगभग 100 गुना ज़्यादा parameter हैं; मुख्य बात generation quality से अधिक, छोटे chip में बड़े मॉडल को समेटने वाली memory architecture है
हार्डवेयर और रनिंग परफ़ॉर्मेंस
- लगभग $8 का एक ESP32-S3 ही पूरा processing करता है और server को data नहीं भेजता
- इसमें 512KB SRAM, 8MB PSRAM, 16MB flash का उपयोग होता है
- कुल speed लगभग 9.5 tok/s है, जबकि शुद्ध compute speed लगभग 9.7 tok/s है
- 4-bit मॉडल का आकार 14.9MB है
- कुल 2.89 करोड़ parameter में से 2.5 करोड़ flash lookup table में store किए गए हैं
छोटे memory में मॉडल को फिट करने का तरीका
- आम तौर पर पूरे मॉडल तक fast memory से पहुंच होना ज़रूरी होता है, लेकिन ESP32-S3 का SRAM सिर्फ 512KB है, इसलिए इसमें केवल बहुत छोटे मॉडल ही आ सकते हैं
- यह देखते हुए कि ज़्यादातर parameter embedding table में हैं और सीधे computation का हिस्सा नहीं हैं, table को flash में ही रखा गया
- हर token पर ज़रूरी लगभग 6 row, यानी लगभग 450 byte ही पढ़े जाते हैं
- सिर्फ computation संभालने वाला छोटा हिस्सा fast memory में रखा जाता है
- मॉडल का अधिकांश भाग runtime में load नहीं होता, बल्कि ज़रूरत के हिसाब से flash से चुना जाता है
- memory की भूमिकाएँ इस तरह बाँटी गई हैं
- SRAM: हर token में इस्तेमाल होने वाला compute core
- PSRAM: output head और working memory
- flash: 2.5 करोड़ parameter वाली table
Per-Layer Embeddings का उपयोग
- Google के Gemma 3n और Gemma 4 में इस्तेमाल हुई Per-Layer Embeddings को phone या GPU नहीं, बल्कि microcontroller की memory architecture पर लागू किया गया
- प्रोजेक्ट बनाने वाले के अनुसार, इतनी छोटी chip पर इस तरीके के उपयोग का पहले कोई उदाहरण नहीं मिला
मॉडल क्या कर सकता है और इसकी सीमाएँ
- TinyStories की छोटी synthetic stories पर train होने के कारण यह सरल कहानियाँ बना सकता है और ज़्यादातर consistency बनाए रखता है
- यह question answering, instruction following, code writing या factual knowledge देने में सक्षम नहीं है
- यह सीमा inference संभालने वाले छोटे core से आती है, और memory layout technique अपने आप reasoning क्षमता नहीं बढ़ाती
कोड और प्रयोग सामग्री
firmware/esp32_llm/README.mdमें firmware, wiring और flashing प्रक्रिया दी गई हैsrc/औरexperiments/में training, ablation और quantization code शामिल हैंRESULTS.mdमें पूरी method, ablation और on-chip measurements संकलित हैं
आधार प्रोजेक्ट और रिकॉर्ड
- TinyStories एक छोटी synthetic story dataset है, जिसे इस तरह बनाया गया कि छोटे मॉडल भी consistent writing सीख सकें
- Google Gemma की Per-Layer Embeddings बड़े मॉडल को छोटे chip में समेटने की आधार तकनीक बनी
- Andrej Karpathy का llama2.c इस विचार को प्रभावित करता है कि छोटे language model को train करके pure C में चलाया जा सकता है
- repository में शुरुआती parameter count को बढ़ा-चढ़ाकर दिखाने वाली calculation error और उसकी correction process भी दर्ज है
- commit history और
RESULTS.mdमें देखा जा सकता है कि आँकड़े कहाँ और क्यों बदले गए
- commit history और
1 टिप्पणियां
Hacker News की राय
आजकल 5 डॉलर के microcontroller से क्या-क्या हो सकता है, यह हैरान करने वाला है। Milk-V boards में Duo में 256MB तक memory और 1TOPS@INT8 TPU है, और यह Linux भी चला सकता है, इसलिए मैंने 5 खरीद लिए
GCC और Clang xTHeadVector को पूरी तरह support करते हैं, और C built-in functions इस्तेमाल करने पर सिर्फ command-line options से RVV 1.0 के साथ compatible हो जाता है। 8-bit elements संभालने वाला बहुत-सा code, जैसे
memcpy(),memset(),memcmp(),strlen(),strcpy(),strcmp(), binary-compatible हैजब मैंने 64MB Duo खरीदा था तो वह 3 डॉलर का था, और बाद में 64MB·256MB·512MB models क्रमशः 5·7·10 डॉलर के थे, लेकिन इस साल कीमतें काफी बढ़ गई हैं: https://arace.tech/products/milk-v-duo, https://arace.tech/products/milkv-duo-s
कुछ use cases में 4KB PIC अब भी सबसे अच्छा हो सकता है, लेकिन हमें ऐसे act नहीं करना चाहिए मानो ज़्यादातर स्थितियों में बेहतर विकल्प ही नहीं हैं
Speech-to-text और text-to-speech models भी इस size के करीब आ रहे हैं, इसलिए मैं सोचता हूं कि हमसे बात कर सकने वाली छोटी devices कितनी करीब हैं। एक दुनिया आ सकती है जहां toothbrush oral hygiene की सलाह दे, या toothpaste के ads तक चलाए
लेकिन मैं ऐसी दुनिया नहीं चाहता जहां toothbrush AI के लिए ad blocker भी ढूंढना पड़े
Per-layer embedding technique का बहुत smart इस्तेमाल किया गया है। करीब 2 करोड़ से 3 करोड़ parameters वाले practical TTS models भी हैं, इसलिए network से connected न होने वाला ESP32 लगभग real time में text पढ़कर सुना सकता है
PSRAM, flash और SD card की individual bandwidth ज्यादा नहीं है, लेकिन बहुतों को साथ चलाने पर काफी throughput मिल सकता है। बड़े dedicated hardware का performance-per-watt बेहतर होगा, लेकिन कम शुरुआती लागत और incremental scalability की वजह से ऐसा setup भी आकर्षक है
Microcontroller के बजाय Raspberry Pi 4 पर local LLM के लिए कौन-से realistic options हैं, ताकि जवाब देने में 30 सेकंड न लगें, यह जानना चाहता हूं
बेहद छोटे devices पर LLM चलाना भी शानदार है, लेकिन उससे ज्यादा प्रभावशाली वह training method है जिसने ये weights बनाए
अगर अच्छे access patterns के साथ flash का उपयोग किया जाए, तो क्या इसे CPU पर काफी बड़े models चलाने के तरीके तक scale नहीं किया जा सकता, यह सोच रहा हूं
ESP32-S3 काफी powerful है और मैं इसे अभी Raspberry Pi 4 development work में इस्तेमाल कर रहा हूं। इसके दो USB ports में से एक OTG support करता है, इसलिए ऐसी functionality implement की जा सकती है जिसमें किसी दूसरे तरीके से 100 डॉलर से ज्यादा खर्च होते
फिलहाल यह tinyusb और pico-pio-usb के साथ चलता है, और ज्यादा performance की उम्मीद में Rust porting भी experiment की जा रही है
इस quantized model की accuracy कितनी है, यह जानना चाहता हूं
इस size में दिख रही performance हैरान करने वाली है, और thread में आए थोड़े अधिक powerful single-board computers पर क्या-क्या संभव होगा, यह देखने का इंतज़ार है