NVIDIA AICR собирает Dynamo и его окружение на Kubernetes в проверенные рецепты
NVIDIA AI Cluster Runtime собирает Dynamo и окружение Kubernetes в проверенные рецепты с закреплёнными версиями компонентов и валидацией. Пример — Amazon EKS на GB200 и GB300 NVL72.
В платформе NVIDIA DSX AI Factory есть AI Cluster Runtime (AICR): он собирает Dynamo и инфраструктуру вокруг него в проверенные рецепты. Рецепт фиксирует версии компонентов, ограничения совместимости и проверки, которые нужно пройти перед запуском модели. Пример в документации: Amazon EKS на системах GB200 NVL72 и GB300 NVL72 с Dynamo Platform 1.4.2.
Dynamo распределяет обслуживание модели между GPU-воркерами, но на Kubernetes ему нужен слой инфраструктуры. Это драйверы GPU, выделение ускорителей через Dynamic Resource Allocation, планировщик с gang scheduling, сигналы здоровья узлов и метрики Prometheus. AICR ставит всё перечисленное из одного рецепта: GPU Operator, Node Feature Discovery, DRA Driver, KAI Scheduler, Grove, NVSentinel, NodeWright и стек Prometheus.
Работа разделена на пять шагов: снимок кластера, генерация рецепта под задачу инференса, сборка бандла с Helm-значениями и манифестами, развёртывание через Helmfile или GitOps (Argo CD, Flux) и валидация уже установленного рантайма. Рабочая нагрузка DynamoGraphDeployment ставится только после того, как проверки пройдут.
Маршрутизацию запросов можно построить двумя способами. В первом варианте Dynamo Frontend с режимом DYN_ROUTER_MODE=kv считает пересечение префиксов и текущую нагрузку, выбирает воркер и отправляет запрос по TCP, а события KV-кэша приходят через ZMQ. Второй вариант опирается на Gateway API Inference Extension: agentgateway находит InferencePool, EPP выбирает конечную точку по состоянию KV-кэша, а каждый воркер получает сайдкар Frontend в режиме direct.
С Dynamo 1.4 NATS больше не устанавливается по умолчанию, сервисы находят друг друга через ресурсы Kubernetes. С версии 1.5 нативный Rust EPP должен заменить связку Go и CGO: он работает через интерфейс Lightweight Endpoint Picker и переменные DYN_* вместо eppConfig. Проверка производительности идёт отдельным этапом, потому что для неё разворачивают временную нагрузку и занимают GPU.