قمت بتشغيل نموذج بـ 35 مليار معامل على آيفون الخاص بي (ذكاء اصطناعي محلي)
BBetter Stack
Computing/SoftwareConsumer ElectronicsCell Phones
Transcript
00:00:00هذا النموذج بحجم 35 مليار معلمة يعمل مباشرة على هاتف الآيفون الخاص بي، وأستطيع توليد 11 رمزًا في
00:00:06الثانية بفضل بعض الهندسة الذكية. لم يُصمم هذا النموذج لهذا الغرض أصلًا، وفي هذا الفيديو
00:00:11سأريك بالضبط كيفية القيام بالشيء نفسه. ما أشغّله هنا هو نموذج “مزيج الخبراء” (Mixture of Experts)، وهو
00:00:21بحجم 35 مليار معلمة، وهو كملف عادي بترميز 4 بت يبلغ حجمه نحو 20 جيجابايت وكان يفترض أن ينسكب في الذاكرة العشوائية (RAM)،
00:00:28ولكن عبر مجموعة تقنيات مثل التدفق الفوري للخبراء من القرص الصلب (SSD) عند الطلب، فإن الأوزان التي
00:00:33تستقر فعليًا في الذاكرة تنخفض إلى 1.4 جيجابايت فقط. سأشرح كيف يعمل كل هذا، ثم
00:00:39سنستعرض إعداد الآيفون نفسه. معظم النماذج تستقر بالكامل في الذاكرة العشوائية، ولكن الميزة الرائعة في نموذج
00:00:45مزيج الخبراء هي أن جزءًا صغيرًا فقط يكون نشطًا في أي وقت. هذا يعني أن الأجزاء غير النشطة
00:00:51من النموذج يمكن أن تبقى على القرص الصلب لتنتظر دورها للعمل. الحيلة لتشغيل نماذج أكبر
00:00:56بذاكرة محدودة هي بث هؤلاء الخبراء إلى الذاكرة فقط عند الحاجة إليهم. نحن نشغّل Qwen
00:01:023.5 بالتنويعة ذات الـ 35 مليار معلمة، ورمز A3B في النهاية يعني أن نحو 3 مليارات معلمة فقط
00:01:10تكون نشطة لأي رمز واحد. يحتوي هذا النموذج على 40 طبقة، كل منها يضم 256 خبيرًا صغيرًا بالإضافة إلى خبير مشترك واحد. ويقوم الموجه (Router)
00:01:19باختيار ثمانية من هؤلاء الخبراء لكل رمز، لذا فإن الرمز الواحد يشغّل نحو 3 مليارات فقط من أصل 35 مليارات
00:01:26معلمة في الإجمالي. الآن، النموذج بأكمله مقسم؛ فعادةً ما يستقر كليًا في الذاكرة، لكن هذا
00:01:32لن يتسع فعليًا على آيفون. بدلاً من ذلك، الأجزاء التي يحتاجها كل رمز—مثل المضمنات (Embeddings) والتوجه (Attention) والموجهات
00:01:39والخبير المشترك—تُحمَّل مرة واحدة فقط وتبقى مقيمة في الذاكرة العشوائية طوال الوقت، وحجمها نحو
00:01:441.4 جيجابايت. أما الخبراء، وهم 40 ملفًا بحجم 300 ميجابايت تقريبًا لكل منها وبإجمالي 12 جيجابايت، فتستقر على القرص الصلب. لذا فلكل رمز،
00:01:53يعمل التوجه على معالج الرسومات (GPU)، ثم يختار الموجه 8 خبراء، ويقرأ المحرك هؤلاء الخبراء الثمانية مباشرة من القرص الصلب
00:02:00إلى ذاكرة معالج الرسومات ويشغلهم مع الخبير المشترك نفسه. يحدث هذا في كل طبقة من
00:02:06تلك الطبقات الـ 40، أي 320 عملية قراءة صغيرة لكل رمز واحد. وإذا لم تكن مطلعًا على مفهوم “التوجه”،
00:02:14فهو الجزء من النموذج الذي يراجع كل شيء في المحادثة حتى الآن ويحدد
00:02:19أي الكلمات السابقة مهمة للتنبؤ بالكلمة التالية. يعمل التوجه على كل رمز بغض النظر عن أي شيء،
00:02:25لذا يجب أن يظل في الذاكرة. والخبراء هم الجزء الذي يقوم بالتفكير الفعلي في الرمز بمجرد
00:02:31أن يحدد التوجه السياق. ولكن نظرًا لاستخدام ثمانية خبراء فقط، يمكننا ترك
00:02:36البقية على القرص. لا توجد ذاكرة مؤقتة (Cache) للخبراء في التطبيق إطلاقًا؛ فكل قراءة تمر عبر نظام التشغيل،
00:02:42ويقوم نظام iOS بالاحتفاظ بالخبراء المستخدمين حديثًا في ذاكرة الصفحات المؤقتة الخاصة به ما دام يملك ذاكرة عشوائية فائضة. المطورون
00:02:49أنشأوا في الواقع ذاكرة مؤقتة خاصة بهم بحجم 9.8 جيجابايت ثم حذفوها، وجعل ذلك الأمور أسرع بنسبة 38% لأن
00:02:55أي ذاكرة عشوائية يأخذها التطبيق في أجهزة ماك أو آيفون هي ذاكرة تُسحب من معالج الرسومات ومن ذاكرة الصفحات المؤقتة معًا،
00:03:03وتلك الذاكرة المؤقتة تؤدي معظم العمل هنا. عند سرعة 11 رمزًا في الثانية، لو كان كل خبير يُقرأ من ذاكرة الفلاش،
00:03:09لسيحتاج الهاتف لأكثر من 5 جيجابايت في الثانية من سرعة القراءة، بينما ذاكرة الفلاش في الآيفون تتكفل بـ 1.6 فقط في
00:03:15الثانية، لذا فإن غالبية الخبراء تأتي من الذاكرة العشوائية التي يديرها نظام التشغيل لنا. الحيلة التالية هي التكميم
00:03:22المتدرج (Tiered Quantization). يضغط التكميم أوزان النموذج لتشغل مساحة أقل، ولكنه يقلل أيضًا
00:03:29من دقة تلك الأوزان وبالتالي يؤثر على الذكاء. ولكن في هذا النموذج، يستحوذ نحو 25% من
00:03:35الخبراء على نحو 80% من العمل، لذا يظل الخبراء الأكثر استخدامًا عند 4 بت وتُكمَّم الأجزاء
00:03:41الأقل استخدامًا إلى 2 بت، مما يجعلها أصغر بنسبة 44%. وينكمش الملف بأكمله بنسبة 34% من نحو 19 جيجابايت إلى
00:03:5013 جيجابايت، مما يعني اتساع المزيد منه في ذاكرة الصفحات المؤقتة. على هاتف آيفون 17 الخاص بي، يعمل هذا بقدرة 11 رمزًا في الثانية مع
00:03:57كون النموذج في وضع التفكير. يجب أن أقول رغم ذلك إن الهاتف يسخن حرفيًا بمجرد إلقاء التحية، إذ أمكنني الشعور
00:04:03بارتفاع حرارة الهاتف في يدي، لذا حاول ألا تفجر الهاتف عندما تختبر هذا. أنا في الواقع
00:04:08خائف قليلاً من كتابة أي شيء معقد للغاية لأن هذا قد يذيب يدي فعليًا.
00:04:14المحرك المخصص الذي نشغله هو مشروع يسمى Flash MoE من تطوير دان وودز، وكُتب أصلاً لجهاز
00:04:19ماك بوك، وتوجد نسخة مصغرة مخصصة لـ iOS تسمى Flash iOS تغلف المحرك نفسه داخل تطبيق آيفون،
00:04:26وهذا ما يتيح لي تشغيل الأمر بأكمله على هاتفي. لقد واجهت أيضًا في البداية خطأً برلمجيًا حيث علقت عملية تفكير
00:04:31النموذج في حلقة تكرارية؛ إذ كانت تبدأ بشكل جيد، ثم بعد حوالي 10 كلمات تكرر
00:04:35الرمزين نفسيهما إلى الأبد. ولإصلاح هذا، حدثت دالة تسمى async pre-read weight بحيث تفحص
00:04:41قراءة كل خبير مقابل حجم الخبير نفسه. الخبراء الأقل استخدامًا تأتي بترميز 2 بت وبنصف حجم الخبراء الأنشط،
00:04:48لذا قبل الإصلاح، فشل كل خبير غير نشط في فحص الحجم وتُم تخطيه ضمنيًا. كان النموذج يعمل فعليًا
00:04:54ببنصف عدد الخبراء ولهذا كان يدخل في حلقة تكرارية. وإذا كنتم تستمتعون بهذا الفيديو يا رفاق، فستقدمون لنا
00:04:59معروفًا كبيرًا بالاشتراك في القناة لنتمكن من الاستمرار في إنشاء محتوى مجاني كل يوم. الآن،
00:05:05لإعداد هذا على هاتفك، تحتاج إلى استنساخ المستودع (Repo)، وتطبيق إصلاح القراءة المسبقة الذي ذكرته للتو في
00:05:11مسار metal infer/infer.m، ثم توجيه مشروع Xcode إلى فريقك ومعرّف الحزمة (Bundle ID)، وستحتاج إلى حساب
00:05:18مطور آبل مدفوع لهذا الغرض. قم ببناء نسخة إصدار (Release Build) وتثبيتها على جهاز الآيفون الخاص بك، وتنزيل النموذج المتدرج
00:05:24المجهز مسبقًا والذي يبلغ حجمه حوالي 13 جيجابايت، ثم نفخه إلى التطبيق عبر USB وهو ما ينبغي أن يستغرق نحو سبع دقائق.
00:05:30على الهاتف، افتح تطبيق Flash MoE، وانقر على النموذج، ثم ابدأ الدردشة. وإذا أردت تجربة تشغيل
00:05:36النماذج المحلية على جهاز ماك الخاص بك للحصول على رموز أسرع في الثانية، فشاهد هذا الفيديو التالي. كان معكم وارن من
00:05:43Better Stack، شكرًا جزيلًا لكم على المشاهدة، وبالطبع أراكم في الفيديو القادم.
Community Posts
No posts yet. Be the first to write about this video!
Write about this video