
سبع لوحات ESP32-S3 تشغّل نموذج لغة بدقة 1.58 بت كعنقود واحد
مشروع منشور على GitHub يوزّع نموذج Qwen2-0.5B المكمّم على 24 طبقة بين ست عُقد حسابية من ESP32-S3 وعقدة رئيسية واحدة، متصلة عبر SPI. الأوزان الثلاثية تُبقي البرنامج الثابت لكل عقدة داخل 16 ميغابايت من الذاكرة الوميضية.
يعرض مشروع ESP32s3-LLM-Cluster المنشور على GitHub كيف تعمل سبع لوحات ESP32-S3 معًا على نموذج لغة صغير واحد. ست لوحات منها عُقد حسابية، والسابعة عقدة رئيسية تتولى مُرمِّز BPE والبحث في جدول التضمينات والتطبيع النهائي وLM Head. الأساس هو Qwen2-0.5B، وقد قُلِّص وكُمِّم ليعمل على متحكمات دقيقة.
تحتوي كل عقدة حسابية على أربع من كتل المحوّل البالغ عددها 24. واللوحات لا تتحدث مع بعضها مباشرة: فهي موصولة على شكل سلسلة، لذلك تخرج الحالة المخفية من العقدة الرئيسية وتمرّ بالترتيب عبر جميع العقد ثم تعود من أجل الطبقة الأخيرة.
1.58 بت لكل وزن
تستخدم جميع الطبقات الخطية تكميمًا ثلاثيًا على طريقة BitNet: لا يأخذ الوزن إلا إحدى القيم الثلاث -1 أو 0 أو 1. ولأن ثلاث قيم تتسع في بتين، تُحزَم أربعة أوزان في بايت واحد، وهو ما يسمح بإدخال النموذج في شرائح بهذا الصغر. أما جدول التضمينات فيُحفظ منفصلًا بصيغة INT4.
وفق ملف README، تشغل الطبقة الواحدة نحو 3.82 ميغابايت، وتشغل الطبقات الأربع في العقدة نحو 15.3 ميغابايت داخل قسم ذاكرة وميضية سعة 16 ميغابايت. وتحتاج العقدة الرئيسية إلى نحو 14 ميغابايت لتضمينات INT4 و64 كيلوبايت للتطبيع النهائي. نافذة السياق 512 رمزًا، ويُحفظ مخزن KV في ذاكرة PSRAM لكل عقدة.
سلسلة SPI
تحتوي كل لوحة على قناتي SPI: إحداهما ترسل (CS 4 وMOSI 5 وCLK 7) والأخرى تستقبل (CS 15 وMOSI 16 وCLK 18). تتصل قناة الإرسال في العقدة الأولى بقناة الاستقبال في الثانية، وتعيد العقدة الأخيرة النتيجة إلى الرئيسية. أما خطوط منفصلة فتتولى إعادة التشغيل وجاهزية اللوحات: يعيد الطرف GPIO 1 في العقدة الرئيسية ضبط العقد، ويعيد GPIO 3 إشارة من نهاية السلسلة تؤكد أن جميع اللوحات أقلعت. ويضيء مؤشر LED الموصول بـGPIO 8 أثناء العمل.
الطاقة والقيود
بحسب قياسات المؤلف، يستهلك العنقود في وضع الخمول 5 فولت و0.23 أمبير، أي نحو 1.17 واط، ويرتفع الاستهلاك أثناء الاستدلال إلى نحو 1.53 واط. وتحتاج كل عقدة نحو 1.3 ثانية لحصتها من الحساب، لذا يزداد التأخير خطيًا مع إضافة اللوحات: كل لوحة ESP32-S3 تتولى أربع طبقات.
يذكر المشروع نقاط ضعفه بوضوح. فالتدريب الواعي بالتكميم جرى جزئيًا فقط، ويتوقف الخطأ عند نحو 8.0، وكثيرًا ما يُخرج النموذج رموزًا عشوائية أو يكرر الكلمة نفسها عند أخذ العينات الجشع. ويحذر README أيضًا من أن ترتيب حزم البتات الثنائي في Python إن لم يطابق منطق فك الحزم في شيفرة C واللغة التجميعية، فستتلف جميع الأوزان بصمت. يُنشر الكود برخصة MIT، ومن مصادر الإلهام Microsoft BitNet ومشروعان مبكران على ESP32.
SiTech — تطوير ويب مدعوم بالذكاء الاصطناعي
نبني مواقع سريعة وعصرية وندمج الذكاء الاصطناعي في سير عمل الشركات. لديك مشروع أو سؤال؟ يسعدنا مساعدتك.