Kubernetes 1.36: Menangani Kegagalan Perangkat GPU tanpa Status Pending Tanpa Batas
NVIDIA
Meta
Di Kubernetes, kegagalan perangkat GPU tidak secara otomatis menyebabkan penjadwalan ulang pod; sebaliknya, kubelet memulai ulang container pada perangkat yang sama yang rusak, menyebabkan loop crash. Artikel ini menunjukkan skenario tersebut pada lingkungan uji dan menjelaskan bagaimana mekanisme baru di Kubernetes 1.36, seperti status kesehatan perangkat dan taint (noda), dapat memutus siklus ini.
Artikel ini menyoroti bahwa Kubernetes, secara default, menangani kegagalan perangkat dengan hanya me-restart kontainer, yang tidak memadai untuk beban kerja yang dipercepat GPU. Mengutip studi Meta tentang pelatihan Llama 3 405B, artikel ini mencatat bahwa klaster dengan ribuan GPU sering mengalami gangguan, sering kali disebabkan oleh kegagalan GPU dan memori. Penulis menjelaskan keterbatasan pendekatan plugin perangkat klasik, yang hanya mengurangi jumlah yang dapat dialokasikan, dan membedakannya dengan model DRA (Dynamic Resource Allocation) yang lebih baru yang menyediakan manajemen perangkat berbasis objek. Pada klaster uji, penulis mensimulasikan kegagalan GPU dengan melepas perangkat secara panas dari bus PCIe, menghasilkan Xid 79. Pod kemudian memasuki siklus crash, me-restart pada perangkat yang mati, dan penjadwal tidak menjadwalkan ulang karena masih terikat pada node. Kubernetes 1.36 memperkenalkan beberapa fitur beta untuk mengatasi hal ini: status kesehatan perangkat di status pod, taint dan toleransi perangkat, serta perangkat yang dapat dipartisi. Dengan menggunakan ini, klaster dapat dibuat untuk mengenali kegagalan dan menjadwalkan pod ke GPU yang sehat, menghindari restart yang tiada henti.
Sumber: Habr — хаб ML —
asli
