यह $8 का माइक्रोकंट्रोलर लोकल तौर पर लैंग्वेज मॉडल चला रहा है!

Transcript

00:00:00यह एक 28.9 मिलियन पैरामीटर वाला लैंग्वेज मॉडल है, जो अभी एक समय में एक शब्द जनरेट कर रहा है
00:00:08एक ऐसी चिप पर जिसकी कीमत लगभग आठ डॉलर है। कोई वाई-फाई नहीं है, सर्वर पर कुछ भी नहीं भेजा जा रहा है,
00:00:14सब कुछ ESP32S3 के अंदर हो रहा है, एक ऐसा माइक्रोकंट्रोलर जिसमें 90 के दशक के कंप्यूटर
00:00:22से भी कम रैम है। यह वाकई हैरान करने वाला है। यह वास्तव में कैसे संभव है? इसके पीछे क्या जादू है और हम
00:00:29ऐसा ही कुछ कैसे बना सकते हैं? खैर, ये सभी बेहतरीन सवाल हैं जिन्हें हम आज के
00:00:34वीडियो में देखने वाले हैं। इसमें बहुत मज़ा आने वाला है, तो चलिए शुरू करते हैं। ESP32S3 एक ऐसी चिप है जो आपको
00:00:46512 किलोबाइट की SRAM देती है, और यह इस चिप की तेज़ मेमोरी की मात्रा है जिससे यह गणना कर सकती है। आमतौर पर,
00:00:54यदि आप इसके अंदर एक LLM चलाने का प्रयास करेंगे, तो पूरे मॉडल को ठीक इसी में समाना होगा।
00:01:00ऐसी चिप पर चलाया गया पिछला लैंग्वेज मॉडल अधिकतम 2,60,000 पैरामीटर तक ही पहुंच पाया था। तो यह
00:01:08लगभग 110 गुना अधिक पैरामीटर संभालता है, और इसे संभव करने वाले एक यूक्रेनी डेवलपर स्लॉवा एस हैं। तो
00:01:16जादुई ट्रिक क्या है? उन्होंने यह कैसे किया? उन्होंने $8 की चिप पर 28.9 मिलियन पैरामीटर वाला मॉडल कैसे फिट किया?
00:01:24खैर, इसका समाधान एक ऐसे विचार से आता है जिसका उपयोग गूगल ने जेम्मा में किया था। इसे “पर-लेयर एम्बेडिंग्स” कहते हैं। लैंग्वेज मॉडल के
00:01:31अधिकतर पैरामीटर कोई गणना नहीं करते हैं। वे केवल एक एम्बेडिंग टेबल में मौजूद रहते हैं जिसे सिर्फ पढ़ा
00:01:37जाता है। यदि आपके अधिकांश पैरामीटर केवल पढ़े जाते हैं, तो उन्हें तेज़ मेमोरी की आवश्यकता नहीं होती है। इसलिए आप
00:01:44उस टेबल को एक धीमी और सस्ती फ्लैश मेमोरी में रख सकते हैं और केवल उन्हीं पंक्तियों को निकाल सकते हैं जिनकी वर्तमान टोकन को आवश्यकता है। और
00:01:52वह छोटा सा हिस्सा जो वास्तव में गणना करता है और अगले टोकन के बारे में सोचता है, यानी अटेंशन हेड और फीड फॉरवर्ड, SRAM में रहता है।
00:01:59ठीक है, यह तो कंप्यूट वाला हिस्सा हुआ। लेकिन सवाल अब भी वही है: हम इतने छोटे चिप पर इतना बड़ा मॉडल कैसे फिट करें?
00:02:05तो 25 मिलियन पंक्तियों की टेबल फ्लैश मेमोरी में रहती है। और यह मॉडल के कुल 28.9 मिलियन
00:02:12पैरामीटर्स का सबसे बड़ा हिस्सा है। और इस विशेष चिप पर फ्लैश मेमोरी सस्ती और काफी बड़ी है, इसमें 16 मेगाबाइट की मेमोरी है।
00:02:20इसलिए उस टेबल को 512 किलोबाइट की SRAM में ठूंसने की कोशिश करने के बजाय,
00:02:26यह बस फ्लैश में ही बनी रहती है। हम इसमें से लगभग छह पंक्तियां निकालते हैं, मॉडल की छह परतों में से प्रत्येक के लिए एक।
00:02:33यह कुल मिलाकर लगभग 450 बाइट्स ही होता है। अब, इससे पहले कि आप बहुत अधिक उत्साहित हों, मुझे इस बात पर ध्यान देना होगा कि
00:02:40यह एक बहुत ही बुनियादी और सरल मॉडल है। यह आपका विशिष्ट GPT-शैली का LLM नहीं होगा। यह कोड जनरेट
00:02:47नहीं करेगा या कठिन विषयों पर प्रश्नों के उत्तर नहीं देगा। क्योंकि यदि आप इस आकार के एक सामान्य मॉडल को सामान्य डेटासेट पर प्रशिक्षित
00:02:53करने का प्रयास करते हैं, तो 28 मिलियन पैरामीटर्स केवल निरर्थक बातें ही जनरेट करेंगे। लेकिन यह मॉडल खुद
00:03:01Tiny Stories पर प्रशिक्षित है, जो माइक्रोसॉफ्ट के शोधकर्ताओं द्वारा बनाया गया एक डेटासेट है, जिसे जानबूझकर इतना सरल लिखा गया है कि
00:03:08कुछ मिलियन पैरामीटर्स वाला एक छोटा मॉडल भी उन्हें स्पष्ट रूप से लिखना सीख सकता है। और इसे बिना किसी ऑपरेटिंग सिस्टम और बिना किसी पायथन इंटरप्रेटर के,
00:03:15सादे C भाषा में चिप पर चलाना—यह विचार प्रसिद्ध अंद्रेई
00:03:22करपाथी के Llama2.c प्रोजेक्ट से आता है, जिसने हमें दिखाया कि आप एक छोटा लैंग्वेज मॉडल प्रशिक्षित कर सकते हैं और
00:03:28कुछ सौ पंक्तियों के पोर्टेबल C कोड के अलावा किसी अन्य चीज़ का उपयोग किए बिना इस पर अनुमान (Inference) चला सकते हैं। और यही वह खाका है जिस पर यह पूरा
00:03:35प्रोजेक्ट बना है। करपाथी के बिना, शायद यह संभव भी नहीं होता। तो संक्षेप में यह इस तरह काम करता है।
00:03:40अब आइए वास्तव में इसे खुद बनाने का प्रयास करें और इसे चिप पर चलाकर देखें कि यह कैसा प्रदर्शन करता है।
00:03:47इसे स्वयं बनाने के लिए, सबसे पहली चीज़ जो आपको चाहिए वह है सही हार्डवेयर, विशेष रूप से एक ESP32S3
00:03:54जिसमें 16 मेगाबाइट की फ्लैश और 8 मेगाबाइट की PS RAM हो। यह N16R8 वेरिएंट है। और यह वास्तव में
00:04:03महत्वपूर्ण है क्योंकि याद रखिए जब हमने फ्लैश में रहने वाली 25 मिलियन पंक्तियों की टेबल के बारे में बात की थी? खैर, केवल वही,
00:04:10ट्रेनिंग और एक्सपोर्ट के बाद, लगभग 15 मेगाबाइट की हो जाती है। लेकिन 4 या 8 मेगाबाइट फ्लैश वाले बोर्ड
00:04:17इसे समाहित नहीं कर पाएंगे। इसलिए यदि आप साथ-साथ प्रयोग करने के लिए बोर्ड खरीद रहे हैं, तो यह वह एक विशिष्टता है जिसे आपको
00:04:22सबसे पहले जांचना चाहिए। अब, जब मैंने पहली बार प्रोजेक्ट के वास्तविक निर्देशों को देखा, तो सेटअप का विवरण
00:04:28कुछ अलग-अलग फाइलों में बिखरा हुआ था और इसमें बहुत सारे ऐसे संदर्भ मान लिए गए थे जो मेरे पास शुरू में नहीं थे। तो
00:04:34आपको बिल्कुल वैसा ही बताने के बजाय जैसा लिखा गया था, मैंने एक सिंगल वन-शॉट स्क्रिप्ट तैयार की है जो
00:04:40सब कुछ करती है। बोर्ड की जांच करती है, टूलचेन इंस्टॉल करती है, डेटा तैयार करती है, ट्रेन करती है, एक्सपोर्ट करती है, सत्यापित करती है,
00:04:47बिल्ड करती है और एक ही बार में फ्लैश कर देती है। तो चलिए आगे बढ़ते हैं और उस स्क्रिप्ट को चलाते हैं। और एक त्वरित सूचना,
00:04:55यदि आप इसे फॉलो कर रहे हैं, तो पूरी स्क्रिप्ट को पूरा होने में लगभग 25 मिनट लगते हैं। और यह संभवतः
00:05:00उतना ही समय है जितना आपको इसे कदम-दर-कदम करने में लगेगा। ऐसा इसलिए है क्योंकि इतने सारे अलग-अलग
00:05:05कमांड हैं जिन पर आपको नज़र रखनी होती है। और अधिकांश समय वास्तव में Tiny Stories मॉडल को प्रशिक्षित करने में बीतता है।
00:05:11मेरे मैकबुक पर इसमें लगभग 13 मिनट लगते हैं। और एक बार ट्रेनिंग पूरी हो जाने के बाद, आप पैनल पर LED को
00:05:18ब्लिंक करते हुए देखेंगे। और यह इस बात का संकेत है कि हम मॉडल लोड करने ही वाले हैं। और एक बार यह लोड हो जाने पर,
00:05:24यहाँ हम एक छोटी सी लड़की की कहानी का पहला मूल उदाहरण देख सकते हैं। और वास्तव में,
00:05:29हमें प्रति सेकंड वे नौ टोकन मिल रहे हैं। लेकिन आप ध्यान देंगे कि एक निश्चित बिंदु पर,
00:05:33यह फिर से कहानी को दोबारा शुरू कर देगा। तो मॉडल किसी प्रकार के लूप में जा रहा है। और यदि आप
00:05:39इसे एक कस्टम प्रॉम्ट देना चाहते हैं, तो मैंने एक सैंपल स्क्रिप्ट भी शामिल की है जिसका उपयोग आप अपने कस्टम
00:05:44प्रॉम्ट्स चलाने के लिए कर सकते हैं। तो इस उदाहरण के लिए, आइए एक रोबोट के बारे में कहानी शुरू करते हैं। और ध्यान देने योग्य एक और बात यह है कि यदि आप
00:05:50प्रॉम्ट बदलते हैं, तो आपको ESP32 को फिर से री-फ्लैश करना होगा। और यह इस विधि की एक सीमा है।
00:05:56यह एक बार में केवल एक ही प्रॉम्ट चला सकता है जो पहले से री-फ्लैश किया गया हो। और जैसा कि आप देख सकते हैं,
00:06:02कहानी में रोबोट का उल्लेख मिलता है। और इस बार कहानी वास्तव में थोड़ी अलग है।
00:06:08लेकिन ध्यान दें कि पैराग्राफ के अंत के बाद क्या होता है। हम वापस उसी छोटी
00:06:13लड़की की कहानी पर लौट आते हैं। तो मुझे कोई अंदाज़ा नहीं है कि ऐसा क्यों हो रहा है। लेकिन स्पष्ट रूप से, मॉडल उस एक
00:06:19विशेष कहानी की ओर वापस जाने के लिए प्रवृत्त होता है जो उस छोटी लड़की के बारे में है। और आइए एक और उदाहरण लेते हैं। और इस बार, आइए उस
00:06:24प्रसिद्ध वाक्य का उपयोग करें जो हर स्टार वॉर्स फिल्म की शुरुआत में लिखा होता है। और देखते हैं कि यह हमें
00:06:30कहां ले जाता है। तो यह एक दिलचस्प उदाहरण है। हम देख सकते हैं कि मॉडल तुरंत फिर से उसी
00:06:36छोटी लड़की की कहानी पर वापस चला जाता है। और मेरा मानना है कि इस आकार का मॉडल यह भी नहीं समझता है कि
00:06:42गैलेक्सी (आकाशगंगा) क्या होती है। तो शायद इसीलिए यह इस मामले में हमारे विशिष्ट प्रॉम्ट को अनदेखा कर रहा है। और
00:06:47एक बार फिर, हम देखते हैं कि अगला पैराग्राफ उसी कहानी को शुरू करता है। इसलिए यद्यपि यह प्रयोग
00:06:53प्रभावशाली है और एक छोटी सी चिप पर मॉडल को नौ टोकन प्रति सेकंड जनरेट करते देखना वास्तव में अद्भुत है,
00:06:59फिर भी यह बहुत ही सीमित प्रूफ ऑफ कांसेप्ट है। जैसा कि हमने देखा, आप मॉडल से चाहे कुछ भी पूछें, यह
00:07:06हमेशा कहानी सुनाने की ओर ही मुड़ेगा क्योंकि इसे इसी पर प्रशिक्षित किया गया है। लेकिन यदि आपको यह परीक्षण
00:07:11दिलचस्प लगा, तो मैंने इसी क्षेत्र में एक और वीडियो बनाया था जहाँ मैंने परीक्षण किया था कि क्या पहली पीढ़ी का रास्पबेरी
00:07:18पाई वास्तव में स्थानीय रूप से एक असली LLM चला सकता है। तो यदि आपकी रुचि हो तो उस वीडियो को ज़रूर देखें। तो दोस्तों,
00:07:24यह था तरीका! ऐसे आप ESP32 चिप पर 28.9 मिलियन पैरामीटर वाला लैंग्वेज मॉडल चला सकते हैं। हमने इसका
00:07:32परीक्षण किया। यह काम करता है। इस प्रोजेक्ट को बनाने के लिए स्लॉवा को बधाई। लेकिन इस प्रयोग पर आपके क्या विचार हैं?
00:07:38क्या आप ऐसा कोई व्यावहारिक उदाहरण देखते हैं जहाँ इस तरह का क्रियान्वयन उपयोगी हो सकता है? अपने
00:07:43विचार नीचे कमेंट सेक्शन में साझा करें। और दोस्तों, यदि आपको इस प्रकार के तकनीकी विवरण पसंद हैं,
00:07:48तो कृपया वीडियो के नीचे दिए गए लाइक बटन को दबाकर मुझे बताएं। और हमारे चैनल को
00:07:53सब्सक्राइब करना न भूलें। Betterstack से मैं एंड्रेस हूँ और आपसे अगले वीडियो में मिलूँगा।

Description

A developer got a 28.9-million-parameter language model running entirely offline on an $8 ESP32-S3 microcontroller, a chip with just 512KB of RAM, using a memory trick borrowed from Google's Gemma architecture called Per-Layer Embeddings. In this video we break down how the trick actually works, reproduce the entire training and flashing process ourselves from a bare board, and put the model through some prompt tests of our own, including one it stubbornly refuses to follow. If you're curious how far you can push AI onto hardware that was never meant to run it, this one's for you. 🔗 Relevant Links Esp32-ai: https://github.com/slvDev/esp32-ai build_and_flash.sh: https://gist.github.com/andrisgauracs/ce459630660f82cf4ca7e43aa81604c7 run_prompt.sh: https://gist.github.com/andrisgauracs/e84b842d0f5e301485ecbf6654b0838e ❤️ More about us Radically better observability stack: https://betterstack.com/ Written tutorials: https://betterstack.com/community/ Example projects: https://github.com/BetterStackHQ 📱 Socials Twitter: https://twitter.com/betterstackhq Instagram: https://www.instagram.com/betterstackhq/ TikTok: https://www.tiktok.com/@betterstack LinkedIn: https://www.linkedin.com/company/betterstack 📌 Chapters: 00:00 Running an LLM on an $8 Chip 00:43 The ESP32’s Memory Problem 01:12 How Did They Make It Work? 01:30 The Per-Layer Embedding Trick 02:04 Fitting 28.9 Million Parameters 02:36 What This Tiny LLM Can Actually Do 02:58 TinyStories and Karpathy’s llama2.c 03:41 Building It Ourselves 03:47 Choosing the Right ESP32 04:23 The One-Shot Installation Script 04:52 Training and Flashing the Model 05:24 Testing the LLM at 9 Tokens per Second 05:38 Trying Custom Prompts 06:21 The Star Wars Prompt Test 06:51 Is an ESP32 LLM Actually Useful? 07:23 Final Thoughts

Community Posts

No posts yet. Be the first to write about this video!

Write about this video