Dharma-AI подняла загрузку GPU на 33 пункта, изменив только порядок распределения задач
Планировщик Dharma-AI в тестах поднял загрузку видеокарт на величину до 33 процентных пунктов по сравнению с очередью по принципу «кто первый пришёл». Полезная работа с учётом приоритетов выросла в среднем на 52%. Оборудование и задачи не менялись.

Компания Dharma-AI показала, что тот же кластер видеокарт может работать заметно продуктивнее, если по-другому решать, какая задача на какой GPU попадёт. Её планировщик сравнили с обычной очередью, которая обслуживает задачи в порядке поступления. Тестов было семь, и в лучшем из них загрузка выросла на 33 процентных пункта. Объём полезной работы с учётом приоритетов вырос во всех семи тестах, максимум — на 105%.
Авторы считают, что простая очередь теряет мощности двумя способами. Первый — резерв под ответы в реальном времени. Если сервису в полдень нужно шесть GPU, а в четыре утра два, очередь держит за ним все шесть круглые сутки. Четыре карты большую часть дня простаивают, и никакая другая задача занять их не может. Второй — порядок. Задача, которая пришла раньше, получает место первой, даже если она неважная, а позже поздней задаче, которой нужен непрерывный блок карт, места уже не хватает.
Новый планировщик видит всю очередь сразу и раскладывает её на 24 часа вперёд. Спрос сервисов реального времени он считает меняющейся кривой, а не постоянным пиком, и отдаёт свободные в провалы карты обучению, пакетной обработке и квантизации. Недобор мощности для ответов в реальном времени обходится ему в 5–10 раз дороже, чем выигрыш от пакетной работы. Запущенные задачи не прерываются. Одно решение принимается за 1–2 миллисекунды, на кластере из 64 GPU — за 15 миллисекунд.
Самый показательный результат — тест на 64 GPU и 30 задач. Загрузка у обоих планировщиков совпала до десятой доли процента (44,9%), и завершили они одинаково: 27 задач из 30. Но у нового планировщика полезная работа с учётом приоритетов оказалась на 15,9% выше. Ещё в одном тесте всем задачам дали одинаковый приоритет, и загрузка всё равно выросла с 76,8% до 87,5%. Значит, выигрыш даёт уже само планирование наперёд, без приоритетов.
Весь расчёт держится на прогнозах: сколько часов работы GPU займёт каждая задача и какой будет трафик. Поэтому каждый тип нагрузки прогнозируют по-своему: обучение, квантизацию и ответы в реальном времени. Чтобы ошибки прогнозов не копились, система выполняет план только на ближайший шаг и пересчитывает его каждые 30–60 минут. Все цифры получены на собственных тестах компании, и как планировщик поведёт себя на чужих кластерах, пока неизвестно.