كوبيرنيتيس 1.36: التعامل مع أعطال وحدات معالجة الرسومات بدون انتظار لانهائي
NVIDIA
Meta
في كوبيرنيتيس، فشل وحدة معالجة الرسومات لا يودي تلقائيًا إلى إعادة جدولة الحاوية؛ بدلًا من ذلك، يعيد كوبيليت تشغيل الحاوية على نفس الجهاز المعطوب، مما يسبب حلقة انهيار متكرر. توضح المقالة هذا السيناريو على بيئة اختبار وتعرض كيف يمكن للآليات الجديدة في كوبيرنيتيس 1.36، مثل حالة الصحة للجهاز والوسوم، كسر هذه الحلقة.
تسلط المقالة الضوء على أن نظام Kubernetes، بشكل افتراضي، يتعامل مع أعطال الأجهزة عن طريق إعادة تشغيل الحاوية ببساطة، وهو ما لا يكفي لأحمال العمل المعجلة بوحدات معالجة الرسوميات (GPUs). وبالاستناد إلى دراسة أجرتها Meta حول تدريب نموذج Llama 3 405B، يشير المقال إلى أن المجموعات (Clusters) التي تضم آلاف وحدات معالجة الرسوميات تشهد انقطاعات متكررة، غالبًا بسبب أعطال في وحدات معالجة الرسوميات أو الذاكرة. ويشرح المؤلف قيود نهج المكوّن الإضافي للأجهزة (Device Plugin) التقليدي، الذي يكتفي بتقليل العدد القابل للتخصيص، ويقارنه بنموذج تخصيص الموارد الديناميكي (Dynamic Resource Allocation - DRA) الأحدث الذي يوفر إدارة للأجهزة قائمة على الكائنات. وعلى مجموعة اختبارية، يحاكي المؤلف عطلًا في وحدة معالجة رسوميات عن طريق إزالتها فعليًا من ناقل PCIe، مما يؤدي إلى ظهور خطأ Xid 79. بعدها تدخل الحاوية (Pod) في حلقة انهيار (Crash Loop)، حيث تُعاد تشغيلها على الجهاز المعطل، ولا يعيد المجدول (Scheduler) جدولتها لأنها ما زالت مرتبطة بالعقدة (Node). يقدم الإصدار Kubernetes 1.36 العديد من الميزات التجريبية لمعالجة هذه المشكلة: حالة صحة الأجهزة في حالة الحاوية (Pod Status)، ووسوم (Taints) وتحملات (Tolerations) الأجهزة، والأجهزة القابلة للتقسيم (Partitionable Devices). وباستخدام هذه الميزات، يمكن جعل المجموعة تكتشف العطل وتعید جدولة الحاوية إلى وحدة معالجة رسوميات سليمة، متجنبةً عمليات إعادة التشغيل المتكررة بلا نهاية.
المصدر: Habr — хаб ML —
الأصلي
