मैंने अपने आईफोन पर 35B पैरामीटर मॉडल चलाया (लोकल AI)

BBetter Stack
Computing/SoftwareConsumer ElectronicsCell Phones

Transcript

00:00:00यह 35 बिलियन पैरामीटर वाला मॉडल सीधे मेरे iPhone पर चल रहा है। मैं 11 टोकन प्रति
00:00:06सेकंड जनरेट कर पा रहा हूँ। कुछ स्मार्ट इंजीनियरिंग के जरिए, जिसके लिए यह मॉडल कभी डिज़ाइन नहीं किया गया था,
00:00:11और इस वीडियो में मैं आपको दिखाऊँगा कि आप भी ऐसा कैसे कर सकते हैं। यहाँ जो मैं चला रहा हूँ, वह एक “Mixture of Experts” मॉडल है।
00:00:21इसमें 35 बिलियन पैरामीटर्स हैं, जो सामान्य 4-बिट फ़ाइल के रूप में लगभग 20 GB की होती है और इसे RAM में रहना पड़ता,
00:00:28लेकिन SSD से ज़रूरत के मुताबिक़ एक्सपर्ट्स को स्ट्रीम करने जैसी तकनीकों के कारण, जो वेट्स वास्तव में
00:00:33मेमोरी में रहने चाहिए, वे घटकर सिर्फ़ 1.4 GB रह जाते हैं। मैं समझाऊँगा कि यह सब कैसे काम करता है, और फिर
00:00:39हम iPhone के सेटअप प्रोसेस को देखेंगे। ज़्यादातर मॉडल पूरी तरह से RAM में रहते हैं, लेकिन Mixture of Experts
00:00:45मॉडल की बढ़िया बात यह है कि एक समय में इसका केवल छोटा सा हिस्सा ही एक्टिव रहता है। इसका मतलब है निष्क्रिय हिस्से
00:00:51SSD पर ही अपनी बारी का इंतज़ार कर सकते हैं। सीमित मेमोरी में बड़े मॉडल चलाने की चाल
00:00:56यह है कि एक्सपर्ट्स को तभी मेमोरी में स्ट्रीम किया जाए जब उनकी ज़रूरत हो। हम Qwen
00:01:023.5 का 35 बिलियन पैरामीटर वेरिएंट चला रहे हैं, और अंत में “A3B” का मतलब है कि किसी एक टोकन के लिए
00:01:10केवल 3 बिलियन पैरामीटर ही एक्टिव होते हैं। इसमें 40 लेयर्स हैं, जिनमें से प्रत्येक में 256 छोटे एक्सपर्ट्स और एक शेयर्ड एक्सपर्ट है।
00:01:19एक राउटर प्रति टोकन इनमें से 8 एक्सपर्ट्स को चुनता है, इसलिए एक सिंगल टोकन कुल 35 बिलियन में से
00:01:26केवल लगभग 3 बिलियन पैरामीटर ही चलाता है। अब यह पूरा मॉडल ही विभाजित है; आमतौर पर यह सब मेमोरी में रहता है, लेकिन यह
00:01:32वास्तव में एक iPhone में फिट नहीं होगा। इसके बजाय, जिन हिस्सों की हर टोकन को ज़रूरत होती है—जैसे एम्बेडिंग्स, अटेंशन, राउटर्स
00:01:39और शेयर्ड एक्सपर्ट—उन्हें केवल एक बार लोड किया जाता है और वे पूरे समय RAM में ही रहते हैं। और यह लगभग
00:01:441.4 GB है। और एक्सपर्ट्स (300 MB की 40 फ़ाइलें, कुल 12 GB) SSD पर रहते हैं। इसलिए हर टोकन के लिए
00:01:53अटेंशन GPU पर चलता है, फिर राउटर 8 एक्सपर्ट्स को चुनता है और इंजन उन 8 को सीधे SSD से
00:02:00GPU मेमोरी में रीड करता है और शेयर्ड एक्सपर्ट के साथ उन्हें चलाता है। यह उन 40 लेयर्स में से
00:02:06हर एक में होता है, यानी हर एक टोकन के लिए 320 छोटी री्ड्स। और अगर आप अटेंशन तकनीक से परिचित नहीं हैं,
00:02:14तो यह मॉडल का वह हिस्सा है जो बातचीत में अब तक की सभी बातों को पीछे मुड़कर देखता है और पता लगाता है
00:02:19कि अगले शब्द की भविष्यवाणी के लिए कौन से पिछले शब्द मायने रखते हैं। अटेंशन हर टोकन पर चलता है, चाहे
00:02:25कुछ भी हो, इसलिए इसे मेमोरी में ही रहना पड़ता है। एक्सपर्ट्स वह हिस्सा हैं जो अटेंशन द्वारा संदर्भ समझ लेने के बाद
00:02:31टोकन के बारे में वास्तविक विचार प्रक्रिया करते हैं। लेकिन चूँकि केवल 8 एक्सपर्ट्स का उपयोग होता है, हम बाकी को
00:02:36डिक्स (SSD) पर ही छोड़ सकते हैं। ऐप में कोई एक्सपर्ट कैश नहीं है; हर रीड ऑपरेटिंग सिस्टम से होकर गुज़रती है
00:02:42और iOS हाल ही में इस्तेमाल किए गए एक्सपर्ट्स को अपने पेज कैश में तब तक रखता है जब तक उसके पास अतिरिक्त RAM होती है।
00:02:49डेवलपर्स ने वास्तव में अपना खुद का 9.8 GB का कैश बनाया था और फिर उसे हटा दिया, जिससे परफॉर्मेंस 38% तेज़ हो गई,
00:02:55क्योंकि Mac या iPhone पर ऐप जो भी RAM लेता है, वह GPU और पेज कैश दोनों से छिन जाती है,
00:03:03और वह पेज कैश ही यहाँ ज़्यादातर काम कर रहा है। 11 टोकन प्रति सेकंड की गति पर, यदि हर एक्सपर्ट फ़्लैश मेमोरी से आता,
00:03:09तो फ़ोन को 5 GB प्रति सेकंड से अधिक की रीड स्पीड चाहिए होती, जबकि iPhone की फ़्लैश मेमोरी केवल 1.6 GB प्रति सेकंड ही करती है।
00:03:15इसलिए ज़्यादातर एक्सपर्ट्स उस RAM से आ रहे हैं जिसे OS हमारे लिए मैनेज कर रहा है। अगली ट्रिक है “टायर्ड क्वांटाइजेशन” (Tiered Quantization)।
00:03:22क्वांटाइजेशन मॉडल के वेट्स को कंप्रेस करता है ताकि वे कम जगह लें, लेकिन यह उनकी
00:03:29सटीकता को भी कम कर देता है और इसलिए बुद्धिमत्ता को प्रभावित करता है। लेकिन इस मॉडल के साथ लगभग 25%
00:03:35एक्सपर्ट्स ही लगभग 80% काम संभालते हैं। इसलिए एक्टिव एक्सपर्ट्स 4-बिट पर ही रहते हैं और कम इस्तेमाल होने वालों को
00:03:41घटाकर 2-बिट कर दिया जाता है, जिससे वे 44% छोटे हो जाते हैं। पूरी फ़ाइल 19 GB से घटकर 13 GB हो जाती है (34% छोटी),
00:03:50जिसका मतलब है कि इसका ज़्यादा हिस्सा उस पेज कैश में आ जाता है। मेरे iPhone 17 पर, मॉडल के “थिंकिंग मोड” में होने पर भी
00:03:57यह 11 टोकन प्रति सेकंड की गति से चलता है। हालाँकि, सिर्फ़ “Hello” कहने पर भी फ़ोन काफ़ी गरम हो जाता है;
00:04:03मुझे हाथ में फ़ोन की गर्मी महसूस हो रही थी, इसलिए इसका टेस्ट करते समय ध्यान रखें। सच कहूँ तो,
00:04:08मैं कुछ भी ज़्यादा जटिल टाइप करने से थोड़ा डर रहा हूँ क्योंकि यह शायद मेरे हाथ को ही पिघला दे!
00:04:14हम जो विशिष्ट इंजन चला रहे हैं, वह डैन वुड्स का “Flash MoE” नामक एक प्रोजेक्ट है। इसे MacBook के लिए लिखा गया था
00:04:19और इसका एक छोटा iOS पोर्ट है जिसे “Flash iOS” कहा जाता है, जो उसी इंजन को एक iPhone ऐप में रैप करता है;
00:04:26और यही मुझे इसे अपने फ़ोन पर चलाने की अनुमति देता है। मुझे शुरुआत में एक बग का भी सामना करना पड़ा जहाँ मॉडल की
00:04:31सोच एक लूप में अटक जाती थी। यह ठीक शुरू होता था और फिर लगभग 10 शब्दों के बाद यह हमेशा के लिए
00:04:35उन्हीं दो टोकन को दोहराने लगता था। इसे ठीक करने के लिए मैंने `async_pre_read_weight` नामक फ़ंक्शन को अपडेट किया ताकि यह
00:04:41प्रत्येक एक्सपर्ट की रीड की तुलना उसके खुद के साइज से करे। 2-बिट वाले एक्सपर्ट्स 4-बिट वाले एक्सपर्ट्स के साइज के आधे होते हैं,
00:04:48इसलिए फिक्स से पहले हर 2-बिट एक्सपर्ट साइज चेक में फेल हो जाता था और स्किप हो जाता था। मॉडल प्रभावी रूप से
00:04:54आधे एक्सपर्ट्स के साथ चल रहा था और इसलिए यह लूप करने लगता था। और दोस्तों, अगर आपको यह वीडियो पसंद आ रहा है, तो
00:04:59चैनल को सब्सक्राइब करके आप हमारी बड़ी मदद कर सकते हैं ताकि हम हर दिन मुफ़्त कंटेंट बनाते रहें। अब
00:05:05इसे अपने फ़ोन पर सेट करने के लिए, आपको रिपॉजिटरी को क्लोन करना होगा, मेरे द्वारा बताए गए फ़िक्स को
00:05:11`metal_infer/infer.m` में लागू करना होगा, Xcode प्रोजेक्ट को अपनी टीम और बंडल आईडी से लिंक करना होगा। इसके लिए आपको एक पेड Apple Developer
00:05:18अकाउंट की आवश्यकता होगी। फिर एक रिलीज बिल्ड बनाएं और इसे अपने iPhone पर इंस्टॉल करें। प्री-पैक्ड
00:05:24टायर्ड मॉडल डाउनलोड करें (जो लगभग 13 GB का है), इसे USB के जरिए ऐप में पुश करें (जिसमें लगभग सात मिनट
00:05:30लगेंगे), फ़ोन पर Flash MoE ऐप खोलें, मॉडल पर टैप करें और चैट करना शुरू करें। और अगर आप
00:05:36और भी तेज़ गति के लिए अपने Mac पर लोकल मॉडल चलाना चाहते हैं, तो अगला वीडियो देखें। मैं Better Stack से
00:05:43Warren हूँ, देखने के लिए आपका बहुत-बहुत धन्यवाद, और निश्चित रूप से, मैं आपसे अगले वीडियो में मिलूँगा!

Key Takeaway

स्मार्ट RAM मैनेजमेंट, SSD से डायनामिक एक्सपर्ट स्ट्रीमिंग और टायर्ड क्वांटाइजेशन के ज़रिए 35B पैरामीटर वाला Qwen 3.5 MoE मॉडल iPhone पर 1.4 GB RAM उपयोग के साथ 11 टोकन प्रति सेकंड पर चलाया जा सकता है।

Highlights

  • Qwen 3.5 A3B Mixture of Experts (MoE) मॉडल iPhone पर 11 टोकन प्रति सेकंड की गति से चलता है।

  • SSD से एक्सपर्ट्स को स्ट्रीम करने और टायर्ड क्वांटाइजेशन की मदद से मॉडल का RAM उपयोग 20 GB से घटकर केवल 1.4 GB रह जाता है।

  • टायर्ड क्वांटाइजेशन से एक्टिव एक्सपर्ट्स 4-बिट पर रहते हैं और कम इस्तेमाल होने वाले एक्सपर्ट्स 2-बिट हो जाते हैं, जिससे मॉडल का साइज़ 19 GB से घटकर 13 GB हो जाता है।

  • iOS पेज कैश का उपयोग करने के लिए 9.8 GB का कस्टम ऐप कैश हटाने से परफॉर्मेंस में 38% का सुधार दर्ज किया गया।

  • मॉडल में 40 लेयर्स हैं, जिनमें प्रति लेयर 256 एक्सपर्ट्स और एक शेयर्ड एक्सपर्ट मौजूद है, जहाँ प्रति टोकन केवल 8 एक्सपर्ट्स ही एक्टिव होते हैं।

Timeline

iPhone पर MoE मॉडल आर्किटेक्चर और मेमोरी ऑप्टिमाइजेशन

  • Mixture of Experts (MoE) मॉडल का केवल एक छोटा हिस्सा ही किसी एक समय में एक्टिव रहता है।
  • Qwen 3.5 35B A3B मॉडल में प्रति टोकन केवल लगभग 3 बिलियन पैरामीटर्स ही निष्पादित होते हैं।
  • एम्बेडिंग्स, अटेंशन, राउटर्स और शेयर्ड एक्सपर्ट्स 1.4 GB RAM में स्थायी रूप से रहते हैं, जबकि बाकी एक्सपर्ट्स SSD पर रहते हैं।

35 billion पैरामीटर वाला सामान्य 4-बिट मॉडल RAM में लगभग 20 GB जगह लेता है, जो स्मार्टफ़ोन के लिए बहुत अधिक है। Qwen 3.5 A3B मॉडल में 40 लेयर्स होती हैं और प्रत्येक लेयर में 256 एक्सपर्ट्स होते हैं। एक राउटर प्रति टोकन केवल 8 एक्सपर्ट्स को चुनता है, जिससे केवल आवश्यक 1.4 GB डेटा RAM में रखा जाता है और 12 GB के एक्सपर्ट्स SSD पर ही रहते हैं।

पेज कैश तकनीक और टायर्ड क्वांटाइजेशन

  • हर टोकन के लिए इंजन SSD से GPU मेमोरी में 8 एक्सपर्ट्स को रीड करता है, जिससे प्रति टोकन 320 छोटी री्ड्स होती हैं।
  • 9.8 GB का इन-ऐप कैश हटाने से iOS का अपना पेज कैश एक्टिव हो गया और परफॉर्मेंस 38% बढ़ गई।
  • टायर्ड क्वांटाइजेशन से मॉडल फ़ाइल का आकार 19 GB से घटकर 13 GB (34% छोटा) हो जाता है।

अटेंशन मैकेनिज्म लगातार RAM में चलता है, जबकि एक्सपर्ट्स SSD से लोड होते हैं। iPhone की फ़्लैश मेमोरी रीड स्पीड 1.6 GB/s है, इसलिए iOS का पेज कैश हाल ही में इस्तेमाल हुए एक्सपर्ट्स को संभालता है। मॉडल के केवल 25% एक्सपर्ट्स ही 80% काम करते हैं, इसलिए एक्टिव एक्सपर्ट्स को 4-बिट और कम इस्तेमाल होने वालों को 2-बिट में बदल दिया जाता है।

Flash MoE ऐप, लूप बग फ़िक्स और सेटअप प्रक्रिया

  • Flash iOS ऐप डैन वुड्स के Flash MoE प्रोजेक्ट का एक पोर्ट है जो Mac के लिए लिखा गया था।
  • async_pre_read_weight फ़ंक्शन में एक्सपर्ट साइज़ चेक को अपडेट करके लूपिंग बग को ठीक किया गया।
  • Xcode और एक पेड Apple Developer अकाउंट की मदद से इस 13 GB के मॉडल को iPhone में पुश करके चलाया जा सकता है।

शुरुआत में 2-बिट एक्सपर्ट्स का आकार 4-बिट एक्सपर्ट्स से आधा होने के कारण साइज़ चेक में फ़ेल होकर स्किप हो जाते थे, जिससे मॉडल अनंत लूप में अटक जाता था। `metal_infer/infer.m` फ़ाइल में इस बग को ठीक करने के बाद ऐप का रिलीज़ बिल्ड तैयार किया जाता है। USB के ज़रिए 13 GB का टायर्ड मॉडल ऐप में ट्रांसफर करने में लगभग 7 मिनट लगते हैं।

Community Posts

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

Write about this video