Разработка

Опубликовано:

NVIDIA выпустила открытый Workload Map для описания ИИ-нагрузок в Kubernetes

NVIDIA Workload Map описывает распределённые нагрузки Kubernetes одинаково для JobSet, Ray, KServe и других фреймворков. Каталог включает 13 готовых описаний, код открыт под Apache 2.0.

NVIDIA выпустила NVIDIA Workload Map — открытый компонент для Kubernetes, который описывает структуру распределённых ИИ-нагрузок одинаково для разных фреймворков. Проект состоит из Custom Resource Definition и библиотеки на Go, которая читает такие описания. Код открыт под лицензией Apache 2.0 и уже используется в продакшене NVIDIA Run:ai.

На Kubernetes распределённая задача устроена как дерево ресурсов: группы подов с ролями, числами реплик, шаблонами и статусом. JobSet, LeaderWorkerSet и другие custom resources описывают это по-своему, поэтому планировщикам, панелям и инструментам учёта расходов нужен отдельный адаптер под каждый тип нагрузки. Workload Map переносит эти знания в YAML-описание: где искать шаблоны подов, как считать реплики и как переводить статус в общие фазы.

NVIDIA Run:ai workload list showing the demo leader and two worker Jobs as three separate running workloads, each requesting four GPUs.

Изображение: NVIDIA Developer

В каталог входят 13 готовых описаний: JobSet, PyTorchJob, RayCluster, RayJob, RayService, KServe, Knative, MPIJob, NVIDIA NIM, LeaderWorkerSet, Milvus, Grove PodCliqueSet и NVIDIA Dynamo. Для нового типа достаточно написать своё описание. Раньше проект назывался Karta, и имя ресурса в CRD осталось прежним.

В примере из статьи JobSet состоит из одного leader и двух worker, каждому поду нужно 4 GPU. Без общего описания kubectl показывает три отдельные задачи, и суммарный запрос в 12 GPU приходится считать вручную. С описанием Workload Map CLI выводит дерево нагрузки с ролями, готовностью и общим расходом GPU.

Side-by-side comparison of JobSet and LeaderWorkerSet schemas, definition paths, and resulting workload trees. Despite different resource structures, both resolve into a common view showing leader and worker roles, readiness, and GPU totals.

Изображение: NVIDIA Developer

Одно и то же описание используют разные инструменты. KAI Scheduler берёт из него данные для gang scheduling, то есть одновременного запуска группы подов, когда для типа нагрузки нет нативного плагина. NVIDIA Run:ai регистрирует тип нагрузки одним вызовом API и показывает её как одну задачу. В Nova от Elotl описания помогают выбирать кластер для распределённой нагрузки.

CLI ставится через Homebrew на macOS или Linux, для просмотра нагрузки достаточно kubeconfig: сам Workload Map в кластер устанавливать не нужно. Команда kli describe jobset/demo -n <namespace> показывает роли, фазу и расход GPU.

NVIDIA Run:ai interface showing the JobSet as a single workload using 12 GPUs, with a structure view displaying its leader and worker Jobs.

Изображение: NVIDIA Developer

Проект доступен в GitHub-организации NVIDIA DSX AI Factory, описания распространяются как обычные манифесты и применяются к кластеру без пересборки инструментов.