أدى نقل نموذج Google’s Gemma-4 31B إلى AWS Inferentia2 inf2.24xlarge إلى مطابقة تامة لكل رمز (token) مقابل المرجع الخاص بالمعالج المركزي (CPU)—ومع ذلك، كانت كل جملة يتم إنتاجها عبارة عن كلام غير مفهوم. إن الفجوة بين "المطابقة" و"العمل" تعمل الآن كتحذير لأي شخص يحاول حشر نماذج LLM ضخمة على رقائق الاستدلال المخصصة من Amazon.

لماذا لا تكفي المطابقة رمزاً مقابل رمز

قارن المطور كل رمز مخرج من جهاز Inferentia مع الرمز الذي أنتجه تشغيل النموذج على المعالج المركزي (CPU). كانت التدفقات متطابقة، لذا بدا أن الأجهزة قد أعادت إنتاج التنفيذ المرجعي بدقة. في الواقع، قام كلا التدفقين بتغذية مطالبة (prompt) مشوهة في نموذج تم تجريده من قالب الدردشة (chat template) وتزويده بعلامات تبديل الأدوار (turn markers) خاطئة. أدى القالب المفقود إلى إدخال النموذج في حلقة مفرغة، مما أدى إلى إخراج كلام غير مفهوم. لقد قامت الأجهزة بعملها—لقد أعادت إنتاج خطأ كان موجوداً في الكود المرجعي.

الدرس بسيط: SEQ_MATCH (تساوي الرموز المتسلسل) لا يعني الصحة. إذا كان التنفيذ المرجعي معطلاً، فإن النسخة المادية المخلصة ستورث نفس الفشل. يجب أن يتجاوز التحقق من الصحة مجرد التكافؤ على مستوى الرمز؛ إذ يحتاج إلى فحوصات وظيفية شاملة (end-to-end) مع مدخلات منسقة بشكل صحيح.

مخازن مؤقتة (Buffers) تتنكر في زي معاملات (parameters)

خلال مرحلة التحميل، تخطى محمل النموذج مكوناً يسمى layer_scalar. سجل الكود هذا الكائن كـ buffer بدلاً من parameter في تعريف نموذج PyTorch. الـ Buffers هي موترات (tensors) ثابتة لا تقوم عملية التدريب بتحديثها، وتتجاهلها العديد من المحملات عند التحويل إلى تنسيقات متوافقة مع Neuron. أدى تخطي هذا المكون إلى ترك عوامل القياس (scaling factors) لعدة طبقات عند قيمها الافتراضية، مما أدى إلى تشويه الحسابات عبر الشبكة بأكملها. لم يتم رفع أي خطأ؛ فقد تم تجميع النموذج (compiled)، وعمل مسار الاستدلال (inference pipeline)، لكن النتائج الرقمية كانت خاطئة.

لأي شخص ينقل نماذج ضخمة إلى Inferentia، قم بمراجعة كل موتر غير معلمي (non-parameter tensor). حتى لو لم يكن من المفترض تعلم الموتر، فقد يظل ضرورياً لحساب التمرير الأمامي (forward-pass) بشكل صحيح. يمكن أن تمنع المراجعة اليدوية لتضمين الـ buffers أخطاء القياس الصامتة التي يصعب تشخيصها بخلاف ذلك.

تقلب المثيلات الفورية (Spot-instances) وعملية التجميع التي استغرقت 39 دقيقة

يبدو تشغيل نموذج بـ 31 مليار معلمة (parameter) على مثيل فوري (spot instance) رخيصاً، لكن التوفير يأتي مع أحداث استرداد غير متوقعة. وقت التجميع الخاص بالمطور—حوالي 39 دقيقة لترجمة النموذج إلى كود متوافق مع Neuron—تبخر عندما استردت AWS المثيل. وللنجاة من الانقطاعات، قام ببناء شبكة أمان ثلاثية المحاور:

  • حافظ ModelBuilder على استخدام الذاكرة ضمن حد المضيف البالغ 384 جيجابايت، متجنباً الانهيارات التي قد تفرض إعادة التشغيل.
  • سمح النسخ المتماثل الفوري لـ S3 لكل من ملفات الأوزان الخام وملفات "neffs" المجمعة (ملفات Neuron التنفيذية) للمثيل الجديد بالبدء تماماً من حيث توقف المثيل السابق.
  • قام poller متعدد المناطق بمسح مناطق AWS بحثاً عن سعة فورية متاحة وتشغيل مثيل جديد بمجرد ظهور واحد.

حولت هذه الخطوات عملية تجميع هشة وذات نقطة فشل واحدة إلى مسار مرن يصمد أمام تقلبات أسواق الـ spot.

فخاخ التجزئة (Sharding) مع تخطيطات الانتباه المختلطة

يستخدم Gemma-4 31B تكوينين للانتباه (attention configurations). تستخدم بعض الطبقات أربعة رؤوس مفتاح-قيمة (KV heads)، بينما تستخدم طبقات أخرى عدداً مختلفاً. تفشل عملية تقسيم النموذج بالتساوي عبر ثماني رتب (ranks) متوازية عندما لا يقبل عدد رؤوس KV في الطبقة القسمة بشكل نظيف. إن محاولة تجزئة طبقة ذات 4 رؤوس عبر ثماني رتب ستجبر كل رتبة على التعامل مع نصف رأس—وهو أمر مستحيل رياضياً يؤدي إلى عدم تطابق الأشكال (shape mismatches) وأخطاء وقت التشغيل.

كان الحل هو تكرار الطبقات المجزأة عالمياً (تلك التي تمتلك أعداد رؤوس متوافقة) عبر جميع الرتب، وتجزئة الطبقات "المزلقة" (sliding layers) فقط التي تسمح أعداد رؤوسها بتقسيم متساوٍ. حافظت هذه الاستراتيجية الهجينة على كفاءة التوازي للموتر (tensor-parallel efficiency) مع تجنب القسمة غير القانونية لرؤوس KV، مما قضى على أخطاء التوازي للموتر التي عطلت المحاولات السابقة.

الخلاصة

إن نقل نموذج LLM عملاق إلى Inferentia هو أكثر من مجرد عملية "تجميع وتشغيل". فهو يتطلب اختباراً وظيفياً صارماً يتجاوز تساوي الرموز، وتحققاً دقيقاً من أن كل موتر—سواء كان parameter أو buffer—يتم التعامل معه بشكل صحيح، واستراتيجية نشر تتوقع استرداد المثيلات الفورية (spot-instances). وأخيراً، يجب أن تحترم عملية التجزئة (sharding) هندسة الانتباه الداخلية للنموذج؛ وإلا فإن التوازي الذي يعد بالسرعة سيصبح مصدراً للفشل الصامت.