Kubernetes 1.36: Xử Lý Lỗi Thiết Bị GPU Mà Không Bị Kẹt Vô Hạn
NVIDIA
Meta
Trong Kubernetes, lỗi thiết bị GPU không tự động dẫn đến việc lập lịch lại pod; thay vào đó, kubelet khởi động lại container trên cùng một thiết bị hỏng, gây ra vòng lặp sập. Bài viết minh họa tình huống này trên một môi trường thử nghiệm và chỉ ra cách các cơ chế mới trong Kubernetes 1.36, như trạng thái sức khỏe thiết bị và taints (vết bẩn), có thể phá vỡ vòng lặp đó.
Bài viết nhấn mạnh rằng Kubernetes, theo mặc định, xử lý sự cố thiết bị bằng cách chỉ đơn giản khởi động lại container, điều này không đủ cho các khối lượng công việc tăng tốc bằng GPU. Trích dẫn nghiên cứu của Meta về việc huấn luyện Llama 3 405B, bài viết lưu ý rằng các cụm có hàng nghìn GPU thường xuyên bị gián đoạn, thường do lỗi GPU và bộ nhớ. Tác giả giải thích những hạn chế của cách tiếp cận plugin thiết bị cổ điển, vốn chỉ giảm số lượng có thể cấp phát, và so sánh nó với mô hình DRA (Cấp phát Tài nguyên Động) mới hơn, cung cấp quản lý thiết bị dựa trên đối tượng. Trên một cụm thử nghiệm, tác giả mô phỏng lỗi GPU bằng cách tháo nóng một thiết bị khỏi bus PCIe, dẫn đến Xid 79. Pod sau đó rơi vào vòng lặp sự cố, khởi động lại trên thiết bị chết, và bộ lập lịch không lên lịch lại cho nó vì nó vẫn bị ràng buộc với nút. Kubernetes 1.36 giới thiệu một số tính năng beta để giải quyết vấn đề này: trạng thái sức khỏe thiết bị trong trạng thái pod, vết bẩn (taints) và dung thứ (tolerations) cho thiết bị, và thiết bị có thể phân vùng (partitionable). Sử dụng những tính năng này, cụm có thể được cấu hình để nhận biết sự cố và lên lịch pod lên một GPU khỏe mạnh, tránh việc khởi động lại không dứt điểm.
Nguồn: Habr — хаб ML —
bản gốc
