Skip to content
1 / 12

GPU в кластере: как запрашивать видеокарты и что такое их разделение

Видеокарта в Kubernetes — не обычный ресурс: её предоставляет device plugin от производителя, она запрашивается как расширенный ресурс (nvidia.com/gpu: 1) и не делится между подами по умолчанию — запрос всегда целое число карт, а limits обязан совпадать с requests. Отсюда главная проблема утилизации: сервис, которому нужна пятая часть карты, занимает её целиком. Разделение решается тремя способами. MIG аппаратно режет карту на изолированные экземпляры с собственной памятью и вычислительными блоками — самый честный вариант с гарантией изоляции. Time-slicing позволяет нескольким подам делить карту по времени без изоляции памяти — просто и опасно: сосед может занять всю память. MPS даёт параллельное выполнение с меньшими накладными расходами, но тоже без строгой изоляции. Дополнительно нужны драйверы на узлах (обычно через operator), метки узлов с моделью карты и мониторинг утилизации — без него легко платить за простаивающие карты.

GPU в кластере: как запрашивать видеокарты и что такое их разделение | JScriptiser