Перейти к основному содержимому

Для чистой Markdown-версии этой страницы добавьте .md к этому URL. Полный индекс документации см. в https://docs.nvidia.com/dynamo/llms.txt. Полное содержимое, включая справочник API и примеры SDK, см. в https://docs.nvidia.com/dynamo/llms-full.txt.

Справочник DGDR

DynamoGraphDeploymentRequest (DGDR) — это API Dynamo с подходом deploy-by-intent. Вы описываете, что хотите запустить, и свои целевые показатели производительности; profiler определяет оптимальную конфигурацию и создает live deployment.

Пошаговое руководство по развертыванию модели — включая выбор стратегии, кеширование модели, настройку planner и типичные ошибки — см. в Руководстве по развертыванию модели.

DGDR против DGD

Dynamo предоставляет два Custom Resource для развертывания inference graphs:

DGDR (рекомендуется)DGD (вручную)
Вы предоставляетеМодель + необязательные SLA-целиПолный deployment spec (parallelism, replicas, resource limits и т. д.)
ПрофилированиеАвтоматическое — перебирает конфигурации, чтобы найти оптимальнуюНет — вы приносите собственную конфигурацию
Переносимость по оборудованиюАдаптируется к любым GPU в вашем кластереПривязан к hardware, для которого вы его настроили
Лучше всего подходит дляБольшинства развертываний, оптимизации по SLAИзвестно удачных конфигураций, закрепленных recipes

Когда вместо этого использовать DGD: Используйте DGD, когда у вас есть вручную созданная конфигурация для конкретной комбинации модели и hardware (например, из recipes/). Такие конфиги могут быть более оптимальными для известных сценариев, но требуют понимания того, какие параметры parallelism (TP, PP, EP) подходят, и не обобщаются на разное hardware.

Подробности развертывания DGD см. в Creating Deployments.

Справочник по spec

Минимальный пример

apiVersion: nvidia.com/v1beta1
kind: DynamoGraphDeploymentRequest
metadata:
name: my-model
spec:
model: Qwen/Qwen3-0.6B
image: "nvcr.io/nvidia/ai-dynamo/dynamo-planner:1.2.0" # dynamo-frontend for Dynamo < 1.1.0

Справочник по полям

ПолеОбязательноЗначение по умолчаниюНазначение
modelДаИдентификатор модели HuggingFace (например, Qwen/Qwen3-0.6B)
imageНетКонтейнерный образ для profiling job. Для Dynamo >= 1.1.0 используйте dynamo-planner; для более ранних версий используйте dynamo-frontend.
backendНетautoInference engine: auto, vllm, sglang, trtllm
searchStrategyНетrapidГлубина profiling: rapid (моделирование в стиле DynoSim на базе AIC, ~30s) или thorough (реальный GPU, 2–4h)
autoApplyНетtrueАвтоматически разворачивать рекомендованную profiler конфигурацию
sla.ttftНетЦелевое время до первого токена (мс)
sla.itlНетЦелевая задержка между токенами (мс)
sla.e2eLatencyНетЦелевая сквозная задержка (мс). Нельзя сочетать с явными ttft/itl.
workload.islНет4000Ожидаемая средняя длина входной последовательности
workload.oslНет1000Ожидаемая средняя длина выходной последовательности
workload.requestRateНетЦелевая частота запросов в секунду
workload.concurrencyНетЦелевое число параллельных запросов
hardware.gpuSkuНетauto-detectedGPU SKU (see SKU Format)
hardware.vramMbНетauto-detectedОбъем VRAM GPU в МБ
hardware.totalGpusНетauto-detected (capped at 32)Общее число GPU, доступных для deployment
hardware.numGpusPerNodeНетauto-detectedЧисло GPU на узел
hardware.interconnectНетauto-detectedТип interconnect
hardware.rdmaНетauto-detectedДоступен ли RDMA
modelCache.pvcNameНетИмя PVC ReadWriteMany, содержащего кешированные веса модели
modelCache.pvcModelPathНетПуть к каталогу модели внутри PVC
modelCache.pvcMountPathНет/opt/model-cacheПуть монтирования внутри контейнеров
features.plannerНетdisabledВключить Planner, учитывающий SLA (raw JSON config)
features.mockerНетdisabledВключить режим mocker для тестирования
overrides.profilingJobНетПереопределения batchv1.JobSpec для profiling job (например, tolerations)
overrides.dgdНетRaw DGD override base, применяемое к сгенерированному deployment

Полный CRD spec см. в API Reference.

Generated DGD Overrides

Используйте spec.overrides.dgd, когда сгенерированному DynamoGraphDeployment нужен field, который DGDR не exposes directly. Значение — это частичный объект DGD nvidia.com/v1alpha1, который merge'ится в deployment, сгенерированный profiler, после того как Dynamo выберет конфигурацию.

Например, чтобы внедрить переменную окружения в каждый сгенерированный service:

apiVersion: nvidia.com/v1beta1
kind: DynamoGraphDeploymentRequest
metadata:
name: qwen3-sglang
spec:
model: Qwen/Qwen3-30B-A3B
backend: sglang
image: "nvcr.io/nvidia/ai-dynamo/dynamo-planner:1.2.0" # dynamo-frontend for Dynamo < 1.1.0
overrides:
dgd:
apiVersion: nvidia.com/v1alpha1
kind: DynamoGraphDeployment
spec:
envs:
- name: TRITON_PTXAS_PATH
value: /usr/local/cuda/bin/ptxas

Используйте spec.envs для переменных, которые должны применяться ко всем сгенерированным service. Чтобы нацелиться на один service, вместо этого переопределите запись envs этого service:

spec:
overrides:
dgd:
apiVersion: nvidia.com/v1alpha1
kind: DynamoGraphDeployment
spec:
services:
decode: # replace with the generated service name
envs:
- name: CUSTOM_WORKER_ENV
value: "enabled"

overrides.profilingJob только настраивает profiling Job. Используйте overrides.dgd для параметров, которые должны присутствовать на развернутых worker pod.

SKU Format

При ручном указании конфигурации hardware используйте формат в нижнем регистре с подчеркиванием:

ПравильноНеправильно
h100_sxmH100-SXM5-80GB
h200_sxmH200-SXM-141GB
a100_sxmA100-SXM4-80GB
a30A30
l40sL40S

Все поддерживаемые значения: gb200_sxm, b200_sxm, h200_sxm, h100_sxm, h100_pcie, a100_sxm, a100_pcie, a30, l40s, l40, l4, v100_sxm, v100_pcie, t4, mi200, mi300.

Не все SKU поддерживаются AIC profiler в режиме rapid. Подробности см. в Матрице поддержки AIC.

Варианты PCIe пока не поддерживаются profiler. CRD принимает PCIe SKU (h100_pcie, a100_pcie, v100_pcie), но profiler пока не поставляется с training data для них. Вы можете отправить DGDR со значением PCIe; operator его примет, но sizing с помощью profiler перейдет на defaults. Поддержка profiler для PCIe SKU отслеживается как engineering follow-up.

Жизненный цикл

После создания DGDR он проходит через такие фазы:

ФазаЧто происходит
Pendingspec проверен; operator обнаруживает GPU hardware и готовит profiling job
ProfilingProfiling job выполняется — подфазы: Initializing, SweepingPrefill, SweepingDecode, SelectingConfig, BuildingCurves, GeneratingDGD, Done
ReadyProfiling завершен; оптимальная конфигурация сохранена в .status.profilingResults.selectedConfig. Конечное состояние при autoApply: false.
DeployingСоздается DynamoGraphDeployment (только при autoApply: true)
DeployedDGD запущен и находится в healthy состоянии
FailedНевосстановимая ошибка — сбои profiling не повторяются (backoffLimit: 0); подробности смотрите в events и conditions

Conditions

Operator поддерживает следующие conditions в статусе DGDR:

ConditionЗначение
ValidationПроверка spec прошла или не прошла
ProfilingProfiling job выполняется, завершился успешно или с ошибкой
SpecGeneratedДоступен сгенерированный DGD spec
DeploymentReadyDGD развернут и healthy
SucceededСводное условие — true, когда DGDR достиг целевого состояния

Мониторинг

# Следите за переходами фаз
kubectl get dgdr my-model -n $NAMESPACE -w

# Подробный статус, conditions и events
kubectl describe dgdr my-model -n $NAMESPACE

# Подфаза profiling
kubectl get dgdr my-model -n $NAMESPACE -o jsonpath='{.status.profilingPhase}'

# Логи profiling job
kubectl get pods -n $NAMESPACE -l nvidia.com/dgdr-name=my-model
kubectl logs -f <profiling-pod-name> -n $NAMESPACE

# Посмотреть сгенерированный DGD spec (когда autoApply: false)
kubectl get dgdr my-model -n $NAMESPACE \
-o jsonpath='{.status.profilingResults.selectedConfig}' | python3 -m json.tool

# Посмотреть Pareto-optimal конфигурации из profiling
kubectl get dgdr my-model -n $NAMESPACE \
-o jsonpath='{.status.profilingResults.pareto}'

Владение ресурсами

  • DGDR не устанавливает owner reference на создаваемый DGD. Удаление DGDR не удаляет DGD — он остается независимым, чтобы продолжать обслуживать трафик.
  • Связь отслеживается через labels: dgdr.nvidia.com/name и dgdr.nvidia.com/namespace.
  • Дополнительные ресурсы (planner ConfigMaps) создаются в том же namespace и помечаются dgdr.nvidia.com/name.

Известные проблемы

  • pareto_analysis.py produces NaN for some configurations. Отслеживается как engineering follow-up. Обходной путь: запустите снова с более узким sweep; узкие sweeps на практике обходят путь с NaN.
  • PCIe profiler data not yet available. См. примечание о PCIe в разделе SKU Format.

Дополнительные материалы