Transcript
00:00:00هذا نموذج لغوي يضم 28.9 مليون معامل يقوم بتوليد النصوص حالياً كلمة بكلمة
00:00:08على شريحة تبلغ تكلفتها حوالي ثمانية دولارات. لا يوجد واي فاي، ولا يتم إرسال أي شيء إلى خادم،
00:00:14كل شيء يحدث داخل ESP32S3، وهو متحكم دقيق يملك ذاكرة وصول عشوائي أقل من كمبيوتر
00:00:22من تسعينيات القرن الماضي. هذا أمر جنوني! كيف يعقل أن يكون هذا ممكناً حقاً؟ ما هو السر السحري وراء ذلك وكيف يمكننا
00:00:29بناء شيء مشابه؟ حسناً، هذه كلها أسئلة جيدة سنتناولها في فيديو
00:00:34اليوم. سيكون الأمر ممتعاً للغاية، فلنغوص فيه. شريحة ESP32S3 تمنحك
00:00:46512 كيلوبايت من ذاكرة SRAM، وتلك هي مساحة الذاكرة السريعة التي يمكن لهذه الشريحة الحساب بها. في العادة،
00:00:54إذا حاولت تشغيل نموذج لغوي كبير داخلها، فسيتعين على النموذج بأكمله الاستقرار هناك تماماً.
00:01:00آخر نموذج لغوي نجح أحد في تشغيله على شريحة كهذه كان حده الأقصى 260,000 معامل. لذا،
00:01:08هذا النموذج يحوي أكثر بحوالي 110 مرات، والشخص الذي حقق ذلك هو المطور الأوكراني “سلافا س”. إذن
00:01:16ما الحيلة السحرية؟ كيف فعلوا ذلك؟ كيف استطاعوا استيعاب نموذج بـ 28.9 مليون معامل على شريحة بـ 8 دولارات؟
00:01:24حسناً، التلتفاف يأتي من فكرة استخدمتها جوجل في Gemma. وتسمى التضمينات لكل طبقة (per-layer embeddings). معظم
00:01:31معاملات النموذج اللغوي لا تقوم بأي عمليات حسابية. بل تقبع في جدول تضمين يُقرأ منه فقط.
00:01:37إذا كانت معظم معاملتك تُستخدم للبحث فقط، فهي لا تحتاج ذاكرة سريعة. لذلك يمكنك الاكتفاء
00:01:44بترك ذلك الجدول مخزناً في ذاكرة فلاش بطيئة ورخيصة، وسحب الصفوف التي يحتاجها الرمز الحالي فقط. أما
00:01:52الجزء الصغير الذي يحسب ويفكر حقاً في الرمز التالي، مثل رأس الانتباه والتغذية الأمامية، فيبقى في SRAM.
00:01:59حسناً، هذا هو جانب الحساب. ولكن السؤال يظل قائماً: كيف نضع نموذجاً بهذا الحجم على شريحة ضئيلة كهذه؟
00:02:05جدول الـ 25 مليون صف يعيش في ذاكرة الفلاش. وهذا هو الجزء الأكبر من إجمالي
00:02:12معاملات النموذج البالغة 28.9 مليون معامل. وذاكرة الفلاش رخيصة وضخمة في هذه الشريحة بالذات، حيث تمتلك 16 ميجابايت منها.
00:02:20لذا بدلاً من محاولة حشر ذلك الجدول في الـ 512 كيلوبايت نفسها من SRAM،
00:02:26فهو يظل مستقراً في ذاكرة الفلاش. ونقوم بسحب حوالي ستة صفوف منه، صف واحد لكل طبقة من طبقات النموذج الست.
00:02:33وهذا يمثل حوالي 450 بايت إجمالاً. الآن، وقبل أن تتمادى في حماسك، يجب أن أشير إلى حقيقة
00:02:40أن هذا نموذج بسيط وغبي جداً. لن يكون كنموذج GPT التقليدي. لن يقوم بتوليد
00:02:47أكواد أو الإجابة عن أسئلة في مواضيع معقدة. لأنك لو حاولت تدريب نموذج عادي بهذا الحجم
00:02:53على مجموعة بيانات عادية، فإن 28 مليون معامل ستعطيك مجرد كلام فارغ غير مفهوم. لكن هذا النموذج تم تدريبه على
00:03:01Tiny Stories، وهي مجموعة بيانات صممها باحثون في مايكروسوفت، كُتبت ببساطة تعمدية لتكون
00:03:08سهلة حتى على نموذج مصغر ببضعة ملايين من المعاملات ليتعلم كتابتها بشكل مترابط. وتدريبه باستخدام لغة C المباشرة،
00:03:15على شريحة بلا نظام تشغيل وبلا مفسر بايثون، هي فكرة مستوحاة من مشروع Llama2.c الشهير
00:03:22للكاتب آندري كارباثي، والذي أظهر لنا أنه يمكنك تدريب نموذج لغوي صغير وتشغيل
00:03:28الاستنتاج عليه باستخدام ما لا يتعدى بضعة أسطر من لغة C المحمولة. وتلك هي الخطة الأساسية التي بُني عليها
00:03:35هذا المشروع بأكمله. بلولا كارباثي، لربما لم يكن هذا ممكناً من الأساس. إذن فهذا هو مبدأ عمله
00:03:40باختصار. والآن لنحاول بنائه بأنفسنا وتشغيله على الشريحة لنرى كيف سيكون أداؤه.
00:03:47لبناء هذا بأنفسنا حقاً، أول شيء تحتاجه هو العتاد المناسب، وتحديداً ESP32S3
00:03:54بذاكرة فلاش 16 ميجابايت وذاكرة PS RAM بسعة 8 ميجابايت. إنها النسخة 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 دقيقة على جهاز MacBook الخاص بي. وبمجرد اكتمال التدريب، ستلاحظ أن لمبات 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العبارة الشهيرة المكتوبة في بداية كل فيلم من أفلام “حرب النجوم” (Star Wars). ولنرَ إلى أين
00:06:30سينقلنا ذلك. هذا مثال مثير الاهتمام. يمكننا أن نرى أن النموذج ينجرف فوراً للعودة إلى
00:06:36سرد قصة الفتاة الصغيرة مجدداً. وأنا أفترض أنه بالنسبة لنموذج بهذا الحجم، فهو لا يفهم حتى
00:06:42ما هي المجرة. وربما لهذا السبب فهو يتجاهل الموجه المحدد الخاص بنا في هذه الحالة. و
00:06:47مرة أخرى، نرى أن الفقرة التالية تبدأ القصة نفسها. لذا، بالرغم من أن هذه التجربة
00:06:53مذهلة ورؤية نموذج ينتج تسعة رموز في الثانية على شريحة ميكروية ضئيلة هي أداء مدهش حقاً،
00:06:59إلا أنها تظل إثبات مفهوم محدود جداً. وكما رأينا، بغض النظر عما تطلبه من النموذج، فسوف
00:07:06ينجرف دائماً نحو سرد القصص لأن هذا ما تم تدريبه عليه. ولكن إذا وجدت هذا الاختبار
00:07:11ممتعاً، فقد قدمت فيديو آخر في مجال مشابه حيث اختبرت ما إذا كان جيل Raspberry Pi
00:07:18الأول يمكنه بالفعل تشغيل نموذج لغوي كبير حقيقي محلياً. لذا تفقد ذلك الفيديو إذا كنت مهتماً. وإلى هنا
00:07:24نصل للختام يا أصدقاء. هكذا تشغل نموذجاً لغوياً بـ 28.9 مليون معامل على شريحة ESP32. لقد اختبرناه
00:07:32وهو يعمل. تحية لـ “سلافا” على إنشاء هذا المشروع. ولكن ما رأيك في هذه التجربة؟
00:07:38هل ترى أي أمثلة من العالم الحقيقي قد يكون فيها هذا التطبيق مفيداً؟ شاركنا
00:07:43بأفكارك في قسم التعليقات بالأسفل. ويا أصدقاء، إذا كانت تعجبكم هذه الأنواع من الشروحات التقنية،
00:07:48فأخبروني بذلك عبر الضغط على زر الإعجاب أسفل الفيديو. وأيضاً لا تنسوا
00:07:53الاشتراك في قناتنا. كان معكم أندريس من Betterstack وسأراكم في الفيديوهات القادمة.
Community Posts
No posts yet. Be the first to write about this video!
Write about this video