Проект HAMi для виртуализации ускорителей перешел в инкубатор CNCF

от автора

Зачастую дорогие графические процессоры фрагментируются и простаивают. Классическая проблема — задача забирает видеокарту целиком, хотя в действительности использует лишь малую часть ее ресурсов. Как в таком случае эффективно распоряжаться кластером? Не забываем, что оборудование поставляется разными вендорами, каждый из которых предлагает свою модель управления.

Проблему оркестрации для таких случаев берет на себя HAMi (Heterogeneous AI Computing Virtualization Middleware) — решение с открытым исходным кодом для виртуализации GPU в Kubernetes. На днях проект получил статус Incubating в экосистеме Cloud Native Computing Foundation (CNCF).

Зачем нужен HAMi

С точки зрения платформенной команды, HAMi — это инструмент, который позволяет выжать максимум из железа без переписывания кода приложений и изменения манифестов Kubernetes.

Вместо того чтобы отдавать карту монопольно, HAMi позволяет «нарезать» физический GPU (а также NPU, DCU, MLU и другие ускорители) на доли по объему памяти, вычислительным ядрам или количеству устройств. При этом обеспечивается жесткая изоляция ресурсов.

Ключевое отличие от конкурентов — архитектура, поддерживающая множество вендоров. Обычно инструменты — например, device plugins — строятся вокруг экосистемы конкретного производителя. HAMi же предоставляет единый унифицированный интерфейс для гетерогенного парка железа и умеет планировать поды, используя политики с учетом топологии, а также продвинутые стратегии — например, «максимальное уплотнение» и «равномерное распределение».

Новые GPU в облаке Selectel от 132,18 ₽/час

Видеокарты для ресурсоемких задач — NVIDIA® H200, RTX™ 6000 Pro.

Подробнее →

10 000+ GPU в проде

С момента попадания в Sandbox в августе 2024 года, проект показал взрывной рост. В разработке участвуют более 550 организаций, включая контрибьюторов из NVIDIA и dynamia.ai. База разработчиков за год выросла на 43% и сейчас насчитывает 2 687 человек.

У главного репозитория около 3 500 звезд на GitHub и более 550 форков. Текущая стабильная версия — v2.9.0.

Как отмечают представители технического комитета CNCF (TOC), HAMi закрывает самую острую инфраструктурную потребность при масштабировании ИИ-нагрузок в K8s — шеринг ускорителей от разных вендоров в едином контуре.

Как это работает под капотом

Архитектура HAMi логично встраивается в стандарты Kubernetes, дополняя планировщик, а не ломая его. Основные компоненты:

  • Mutating Webhook — ерехватывает создание подов на уровне API-сервера и «на лету» переписывает запросы ресурсов для нагрузок, требующих виртуализированных устройств;

  • Scheduler Extender — отвечает за фильтрацию, скоринг и привязку (bind) подов к нодам и конкретным чипам, опираясь на заданные политики размещения;

  • Device Plugins — набор специфичных для каждого вендора плагинов, которые регистрируют ускорители в K8s и аллоцируют их доли для контейнеров;

  • HAMi-Core — тот самый слой виртуализации внутри контейнера, который обеспечивает жесткие лимиты на вычисления и память, перехватывая вызовы нативного CUDA-драйвера (для устройств NVIDIA).

  • HAMi-WebUI & Observability — визуальный интерфейс для управления кластером плюс совместимый с Prometheus эндпоинт и готовые дашборды Grafana, что дает провайдерам картину реальной утилизации всего оборудования.

Что дальше

HAMi уже плотно интегрирован с другими проектами CNCF — например, с Volcano для пакетного ИИ-планирования и с Koordinator для пайплайнов с разделением GPU.

В ближайших планах команды:

  • продвинутый шедулинг — для внедрения группового планирования, вытеснения и автоскейлинга;

  • мониторинг DRA (Dynamic Resource Allocation);

  • расширение поддержки ускорителей — добавление AMD Mi Series и PPU.

Альтернативы

Востребованность в шеринге GPU возникла не вчера и уже есть множество решений — например, Hugging Face, Run AI, BentoML Cloud.

О том, как реализовать подобный динамический шеринг на нашей инфраструктуре, используя в Managed Kubernetes инструменты с открытым кодом, и раньше рассказывалось в наших статьях — например:

Шеринг можно воспроизвести и самостоятельно — мы описали пошаговую настройку инфраструктуры, протестировали автомасштабирование на практике. В материалах есть сравнение технологий MIG, MPS и TimeSlicing, что поможет выбрать правильный метод шеринга в зависимости целей — будь то жесткая аппаратная изоляция или просто логическое разделение процессов.

По мере роста мощностей, задействуемых для работы ИИ‑моделей, запрос индустрии на шеринг GPU будет только нарастать. Если HAMi станет хабом лучших практик для управления любым гетерогенным железом в облачных средах, то все только выиграют от этого. Будем надеяться, что переход в инкубатор CNCF — хороший знак и проект ждет успех.

ссылка на оригинал статьи https://habr.com/ru/articles/1060424/