Проблема фрагментации в Kubernetes
Запуск распределенных AI-моделей на Kubernetes редко ограничивается одним подом. Это сложная иерархия ресурсов: группы подов с разными ролями (лидер, воркеры), специфичными шаблонами и статусами. Каждая новая CRD (Custom Resource Definition), такая как JobSet, PyTorchJob или RayCluster, требует от разработчиков платформ написания уникального кода-адаптера для интерпретации этой структуры. Это превращает поддержку нового фреймворка в длительную задачу разработки, а не просто в конфигурацию.
Решение: единое описание нагрузки
NVIDIA Workload Map (ранее известный как Karta) решает эту проблему, предоставляя общий язык описания workload'ов. Это Kubernetes CRD и Go-библиотека, которые преобразуют специфичные для фреймворка манифесты в унифицированную структурную модель. Потребители — такие как планировщики, контроллеры и платформы управления — получают доступ к единым данным о ролях подов, количестве реплик и статусе, не нуждаясь в специфичном парсинге кода.
Каталог поддерживаемых фреймворков
Решение поставляется с готовым каталогом протестированных определений. Ниже приведен список фреймворков, архитектура которых уже интегрирована в Workload Map:
| Категория | Поддерживаемые фреймворки/Ресурсы |
|---|---|
| Тренировка и оркестрация | JobSet, PyTorchJob, MPIJob, LeaderWorkerSet |
| Ray Ecosystem | RayCluster, RayJob, RayService |
| Inference и Serving | KServe, Knative, NVIDIA NIM, NVIDIA Dynamo |
| Данные и векторы | Milvus, Grove PodCliqueSet |
Практическая польза: от инспекции до Gang Scheduling
Использование Workload Map позволяет реализовать три ключевые функции на основе одного определения:
- Workload Inspection: CLI-инструменты могут отображать логическую структуру задачи (например, «1 лидер + 2 воркера»), а не просто список разрозненных подов.
- Gang Scheduling: Планировщик KAI Scheduler использует эти данные для корректного распределения ресурсов (например, 12 GPU для всей задачи, а не для каждого пода отдельно).
- Unified Management: Платформа NVIDIA Run:ai и решения от Elotl (Nova) используют единый интерфейс для управления мультикластерными средами и мониторинга стоимости.
Техническая реализация
Определение workload'а выносится из скомпилированного кода в YAML-манифесты. Например, для JobSet разработчик указывает путь к статусу (.status.conditions), группу, версию и kind ресурса. Это позволяет администраторам кластеров добавлять поддержку новых фреймворков путем развертывания новых манифестов, а не обновления бинарных файлов платформ.
Источник: NVIDIA dev blog ↗
