Управление GPU и TPU в Kubernetes: интервью с лидерами WG Device Management

Популярность AI, Edge и телекоммуникационных нагрузок на Kubernetes привела к новым требованиям к управлению оборудованием. Теперь необходимо выделять не только CPU и память, но и GPU, TPU, сетевые интерфейсы и другие устройства, иногда после запуска pod или с разделением времени. Эффективное управл

Управление GPU и TPU в Kubernetes: интервью с лидерами WG Device Management

Популярность AI, Edge и телекоммуникационных нагрузок на Kubernetes привела к новым требованиям к управлению оборудованием. Теперь необходимо выделять не только CPU и память, но и GPU, TPU, сетевые интерфейсы и другие устройства, иногда после запуска pod или с разделением времени. Эффективное управление этим специализированным оборудованием — миссия рабочей группы Device Management (WG). Их ключевой проект, Dynamic Resource Allocation (DRA), недавно достиг статуса GA, что знаменует фундаментальный сдвиг в том, как проект обрабатывает интенсивные нагрузки на оборудование в масштабе. В этом интервью мы беседуем с председателями группы Кевином Клюзом, Патриком Оли и Джоном Беламариком о ограничениях старой модели устройств, NP-сложных задачах планирования и о том, как они строят более программируемое и осведомлённое об оборудовании будущее для Kubernetes.

Знакомство с Device Management

Натали Фишер: Представьтесь, расскажите о своей роли и о том, как вы пришли в рабочую группу Device Management.

Кевин Клюз: Меня зовут Кевин Клюз. Я Distinguished Engineer в NVIDIA. Я являюсь сопредседателем рабочей группы по управлению устройствами с момента её основания на Kubecon EU 2024. Также я участвую в DRA (основной результат работы группы) с момента её зарождения в 2019–2020 годах. Я также являюсь мейнтейнером kubelet с 2019 года, сосредоточившись на его компонентах: device manager, CPU manager и topology manager. Проблемы, с которыми мы столкнулись при использовании этих компонентов для рабочих нагрузок, полагающихся на внешние ускорители (например, GPU), и стали причиной начала работы над DRA.

Патрик Оли: Я Principal Engineer в Intel. В Kubernetes я Tech Lead для SIG Testing и SIG Instrumentation и сопредседатель WG Device Management. Ранее я был сопредседателем WG Structured Logging и членом Steering Committee. Среди моих ранних вкладов в Kubernetes — эфемерные CSI-тома и структурированное логирование.

Ограничения старой модели устройств

Кевин Клюз: Старая модель управления устройствами в Kubernetes была жёсткой и негибкой. Она поддерживала только статическое выделение устройств на этапе запуска pod, не позволяя динамически запрашивать ресурсы после старта или делиться устройствами между несколькими pod. Например, GPU часто выделялись целиком, даже если рабочая нагрузка использовала лишь часть их возможностей. Это приводило к неэффективному использованию дорогостоящего оборудования. Кроме того, не было возможности указывать сложные топологические ограничения, такие как близость GPU к определённым процессорам или сетевым интерфейсам.

Патрик Оли: Добавлю, что старая модель была основана на простых счетчиках ресурсов, вроде nvidia.com/gpu. Она не позволяла различать разные модели GPU или их конфигурации. Для AI-нагрузок, где критичны такие параметры, как объём памяти GPU или версия архитектуры, это было серьёзным ограничением. DRA решает эту проблему, вводя модель с богатой семантикой, где устройства описываются через параметры, а не просто через количество.

Динамическое выделение ресурсов (DRA) и переход к GA

Кевин Клюз: DRA — это фреймворк для динамического выделения ресурсов, который позволяет запрашивать устройства с определёнными характеристиками, а не просто по имени. Он поддерживает выделение после запуска pod, временное разделение устройств и сложные топологические ограничения. Мы перешли к GA в Kubernetes 1.32 после нескольких лет разработки и тестирования. Основная идея — отделить описание потребностей (ResourceClaim) от фактического выделения (ResourceClaimTemplate), что даёт большую гибкость.

Патрик Оли: Архитектура DRA включает ResourceClaim и ResourceClaimTemplate, которые позволяют пользователям описывать требования к оборудованию декларативно. Затем ресурсы выделяются через драйверы, которые взаимодействуют с реальным оборудованием. Это похоже на CSI для устройств, но более универсально. В GA версии мы добавили поддержку нескольких типов устройств в одном запросе и улучшили производительность планировщика.

NP-сложные задачи планирования устройств

Кевин Клюз: Планирование устройств — это NP-сложная задача из-за необходимости учитывать топологию (близость к CPU, NUMA-узлам) и ограничения по разделению. Например, если два GPU должны быть подключены к одному PCIe-коммутатору для низкой задержки, планировщик должен проверить все комбинации. DRA решает это, используя расширяемые фильтры и скоринг-функции, которые могут учитывать специфические требования устройств.

Патрик Оли: Мы не пытаемся решить NP-полную задачу в общем виде. Вместо этого мы предоставляем API, который позволяет драйверам устройств самостоятельно выполнять сложную логику планирования, а Kubernetes просто проверяет базовые ограничения. Это компромисс между гибкостью и производительностью.

Какие проблемы решает Dynamic Resource Allocation в Kubernetes?

DRA решает ключевые проблемы старой модели: негибкость, неэффективное использование ресурсов и отсутствие поддержки сложных топологий. Благодаря DRA, пользователи могут описывать требования к устройствам декларативно, что упрощает управление GPU, TPU и другими ускорителями. Это особенно важно для AI-нагрузок, где требуется точное соответствие оборудования задачам. Кроме того, DRA позволяет динамически выделять устройства после запуска pod, что открывает новые возможности для масштабирования и оптимизации затрат.

Будущее управления устройствами в Kubernetes

Джон Беламарик: Мы видим несколько направлений развития. Во-первых, улучшение интеграции с AI-фреймворками, чтобы они могли динамически запрашивать GPU по мере необходимости. Во-вторых, поддержка более сложных топологий, таких как сети с высокой пропускной способностью (например, InfiniBand). В-третьих, мы работаем над стандартизацией метрик и мониторинга для устройств, чтобы операторы могли лучше понимать использование оборудования.

Кевин Клюз: В ближайших планах — улучшить поддержку разделения устройств по времени (time-sharing) для GPU, что позволит эффективно использовать дорогие ускорители для мелких задач. Также мы рассматриваем возможность динамического изменения выделения устройств во время выполнения pod, что потребует изменений в kubelet и runtime.

Кого затронут изменения

Разработчики AI- и ML-приложений получат возможность более гибко запрашивать GPU и TPU, не привязываясь к жёстким конфигурациям. Операторы Kubernetes смогут эффективнее использовать оборудование за счёт динамического выделения и разделения. Для бизнеса это означает снижение затрат на облачные GPU-инстансы и возможность запускать более сложные рабочие нагрузки на собственном оборудовании. В России и СНГ, где импорт оборудования ограничен, эффективное использование существующих GPU становится критически важным.

Что будет дальше

WG Device Management планирует выпустить несколько дополнительных функций в течение 2026 года, включая улучшенную поддержку FPGA и пользовательских ускорителей. Также ожидается интеграция DRA с популярными AI-фреймворками, такими как TensorFlow и PyTorch, через плагины. Наиболее вероятный сценарий — постепенное расширение возможностей DRA и его принятие крупными облачными провайдерами.

Итог

Переход DRA в GA — важный шаг для Kubernetes, открывающий новые возможности для управления специализированным оборудованием. Разработчикам и операторам стоит обратить внимание на эту технологию, чтобы оптимизировать свои AI- и Edge-нагрузки. Следите за обновлениями WG Device Management, так как в ближайшие годы она станет ключевой для эффективного использования оборудования в Kubernetes.