Очередь GPU-задач: приоритеты, вытеснение и почему обучение ждёт часами
Обычный планировщик Kubernetes рассчитан на сервисы: он размещает поды по одному и не умеет двух вещей, критичных для обучения. Первая — групповое размещение: распределённая задача на восемь карт бесполезна, если запланировано только пять подов, но они уже заняли ресурсы и ждут остальных; так возникает взаимная блокировка, когда несколько задач держат по половине нужного и ни одна не может начаться. Вторая — очередь с приоритетами и справедливостью: без неё эксперимент, отправленный первым, занимает кластер на сутки, а короткая задача ждёт. Решают это специализированные планировщики (Volcano, Kueue, Yunikorn), которые добавляют очереди с квотами на команду, gang scheduling, приоритеты и вытеснение. Практический набор правил: инференс имеет приоритет выше обучения; обучение обязано уметь возобновляться с контрольной точки, иначе вытеснение уничтожает часы работы; у каждой очереди своя квота, чтобы одна команда не забирала кластер целиком.