الفئة: وقت التشغيل: عدم تطابق مخزن إدخال البرنامج المؤقت
يحدث هذا الخطأ عندما يرصد وقت تشغيل XLA عدم تطابق بين حجم مخزن مؤقت للذاكرة يتوقّعه برنامج مترجَم وحجم المخزن المؤقت الذي يتم توفيره فعليًا في وقت التنفيذ.
نموذج رسالة خطأ:
XlaRuntimeError: INVALID_ARGUMENT: Executable(jit_embedding_pipeline_step_fn) expected parameter 2482 of size 5242880 (bf16[16,1280,40]{2,1,0:T(8,128)(2,1)}) but got buffer with incompatible size 1638400 (bf16[16,1280,40]{1,2,0:T(8,128)(2,1)}): while running replica 0 and partition 0 of a replicated computation (other replicas may have failed as well).
البرامج الخلفية في XLA: وحدة معالجة الموتّرات (TPU)
نظرة عامة
تشير رسالة الخطأ إلى الحجم المتوقّع والحجم الفعلي، بالإضافة إلى أشكال وتنسيقات الموتر. يُرجى العِلم أنّ هذه الأخطاء قد تحدث حتى إذا كان لموترَين الشكل نفسه ولكن قد يختلف حجمهما في الذاكرة إذا كان التنسيق الفعلي لهما (طريقة تقسيم البيانات وترتيبها على الجهاز) مختلفًا.
تحدث هذه الأخطاء بشكل أساسي بسبب ما يلي:
- عدم تطابق إعدادات نقطة التحقّق وXLA: يتم تدريب نموذج وحفظ نقطة تحقّق. يتم تحديد التنسيق الفعلي للأوزان في نقطة التحقّق هذه من خلال إصدار XLA وإعداداته المحدّدة (مثل علامات XLA) في ذلك الوقت. في وقت لاحق، يتم تحميل نقطة التحقّق هذه في بيئة مختلفة تم فيها تغيير الإعدادات. يمكن أن يؤدي ظهور علامة جديدة أو قيمة تلقائية مختلفة أو تغيير في رمز النموذج/XLA إلى توقّع وقت التشغيل لتصميم مادي مختلف للأوزان. عندما يتم تمرير المخزن المؤقت القديم من نقطة التوقف إلى برنامج XLA الجديد الذي تم تجميعه، يعرض وقت التشغيل خطأ.
- التنسيقات الخاصة بالأجهزة/البنية: يمكن لمترجم XLA اختيار تنسيقات مادية مختلفة للموترات من أجل تحسين الأداء على أجهزة مختلفة. قد يختلف التنسيق الأمثل لوحدة TPU الإصدار 4 عن التنسيق الأمثل لوحدة TPU الإصدار 5، أو حتى عن شرائح مختلفة من وحدة المعالجة نفسها (مثل، 4x4x4 مقابل 4x8). يحدث الخطأ عندما يتم تجميع نموذج مع افتراض بشأن تصميم أحد أنظمة الطوبولوجيا، ولكن يتم جدولة النموذج في وقت التشغيل على نظام طوبولوجيا مختلف، أو عندما يكون هناك خطأ في منطق التصميم الخاص بالمجمّع لجزء معيّن من الأجهزة.
تصحيح الأخطاء
- تأكَّد من اتّساق الإعدادات بين عملية تصدير النموذج وعمليات إعادة التشغيل من نقاط التفتيش:
- تجنَّب استخدام نقاط التحقّق القديمة مع الرمز الجديد ما لم تكن متأكّدًا من عدم إجراء أي تغييرات تؤثّر في التنسيق.
- إعادة تصدير النموذج المحفوظ: إذا كنت تشك في حدوث عدم تطابق بين نقطة التحقّق والإعداد، فإنّ الحل الأكثر موثوقية هو إعادة تصدير النموذج المحفوظ باستخدام قاعدة الرموز والإعدادات نفسها (والحالية) التي تستخدمها للاستدلال أو الضبط الدقيق.
- ابحث عن تغييرات في الإعدادات (مثل علامات XLA) بين عمليتَي التشغيل.
- التنسيقات الخاصة بالأجهزة/البنية:
- تحقَّق من عدم تطابق إصدارات الأجهزة والمخططات الهيكلية في حال تبديل الأجهزة أو المخططات الهيكلية.