الفئة: CompileTime: SparseCore No Viable Logical Replica Count
يحدث هذا الخطأ عندما يتعذّر على برنامج التجميع XLA:SparseCore تحديد إعداد صالح لعدد النسخ المتماثلة المنطقية يسمح بتناسب عبء العمل مع ذاكرة التخزين المؤقت المحلية (Tilespmem) في SparseCore.
أمثلة على رسائل الخطأ:
XLA:TPU compile permanent error. Compilation failure: No viable logical replica count for the embedding table with metadata: max_nz_per_row = 141352, max_unique_nz_per_row = 8, feature_width = 8, sample_count = 204800 (last tried split factor for vector splitting = 1, last tried split factor for sample dimension splitting = 1, fixed_size_allocation_bytes = 410880, row_dependent_size_allocation_bytes = 1696224, total_spmem_size_bytes = 524288) ...
البرامج الخلفية في XLA: وحدة معالجة الموتّرات (TPU)
نظرة عامة
يحدث هذا الخطأ تحديدًا في حالات استخدام SparseCore، لا سيما في "نماذج التضمين الكبيرة" (LEMs).
عدد النسخ المتماثلة المنطقية هو مَعلمة داخلية للمترجم تحدّد طريقة تقسيم دفعات الإدخال لإدارة ضغط تخصيص مساحة التخزين المؤقت. يحاول برنامج الترجمة تقسيم عبء العمل إلى أجزاء أصغر (نسخ متطابقة) لكي تتناسب المخازن المؤقتة الوسيطة المطلوبة لكل جزء مع ذاكرة Scratchpad المحدودة في SparseCore. بشكل عام، يؤدي ارتفاع عدد النسخ المتماثلة المنطقية إلى تقليل ضغط التخصيص من خلال معالجة دفعات أصغر من البيانات في كل مرة.
يشير هذا الخطأ إلى أنّه حتى بعد محاولة استخدام إعدادات تقسيم مختلفة، لم يتمكّن المحوّل البرمجي من العثور على إعداد يمكن فيه احتواء المخازن المؤقتة المطلوبة في ذاكرة Tilespmem. يتم تحديد حجم التخصيص من خلال مجموعة من العوامل، وهي:
sample_count: عدد أرقام تعريف البحث عن التضمين التي تم تعيينها لكل SparseCore (مشتقة من حجم الدفعة).feature_width: حجم سمة التضمين.-
max_nz_per_row: الحد الأقصى لعدد معرّفات البحث عن التضمين غير الفريدة في جميع SparseCore. max_unique_nz_per_row: الحد الأقصى لعدد معرّفات البحث الفريدة عن التضمين.
تصحيح الأخطاء
لحلّ هذا الخطأ، عليك تقليل الضغط على الذاكرة في لوحة الخدش SparseCore.
1. تحسين تقديرات البيانات الوصفية
يخصّص المترجم مساحة تخزين استنادًا إلى max_nz_per_row وmax_unique_nz_per_row. إذا تم تقدير هذه القيم بشكل متحفّظ (أي تم ضبطها على قيمة أعلى بكثير مما تتطلبه البيانات الفعلية)، سيحجز المترجم مساحة غير ضرورية، ما يؤدي إلى حدوث هذا الخطأ. تأكَّد من أنّ هذه المَعلمات تعكس بدقة التوزيع الفعلي لأرقام التعريف في مجموعة البيانات.
يمكنك التفكير في تطبيق التحسين المستند إلى الملاحظات (FDO) لتحديد القيم المثالية لهذه المَعلمات.
2. تقليل حجم الدفعة
يتم اشتقاق sample_count مباشرةً من حجم الدفعة الشاملة. يؤدي تقليل حجم الدفعة إلى تقليل كمية البيانات التي يجب أن تعالجها كل SparseCore في كل خطوة، ما يؤدي إلى تقليل حجم مخازن البيانات المؤقتة المطلوبة.