Управление отказами GPU в кластерах Kubernetes

В сфере высокопроизводительных вычислений, особенно при обучении масштабных моделей искусственного интеллекта, стабильность аппаратного обеспечения играет критически важную роль. Согласно данным, опубликованным в 2024 году, кластер Meta, состоящий из 16 384 карт H100, столкнулся с 419 внезапными прерываниями за 54 дня обучения модели Llama 3 405B, что соответствует примерно одному сбою каждые три часа. Примечательно, что 58,7% этих инцидентов были связаны с графическими процессорами (GPU) и их памятью, в то время как отказы центральных процессоров (CPU) за тот же период составили всего два случая.

Несмотря на отсутствие более свежих публичных данных такого масштаба, использование Kubernetes для управления контейнеризированными нагрузками продолжает расти. Опрос CNCF за 2025 год показал, что 82% пользователей применяют Kubernetes в производственной среде, а 66% компаний, работающих с моделями генеративного ИИ, используют его для инференса.

Проблема обработки отказов GPU в Kubernetes

Традиционно, Kubernetes воспринимает отказы как проблемы, решаемые перезапуском. Этот подход эффективен для сервисов без сохранения состояния (stateless), но совершенно не подходит для подов, использующих GPU. Если контейнер, использующий GPU, завершает работу из-за отказа устройства, kubelet попытается перезапустить его на том же неисправном оборудовании, что приводит к бесконечному циклу сбоев и состоянию Pending.

Стас Погоржельский, технологический евангелист VK Cloud, отмечает, что, хотя механизмы распределения GPU через DRA и общие вопросы отказоустойчивости кластеров уже обсуждались, мало внимания уделялось тому, что происходит после отказа выделенного устройства. Предстоящий анализ продемонстрирует процесс отказа GPU, покажет, как это отражается в kubectl, и, что наиболее важно, представит механизмы, появившиеся в версии Kubernetes 1.36. Эти новые возможности позволяют выйти из ситуации с отказавшим GPU без застревания в состоянии Pending и без необходимости полного выключения узла.