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

For clean Markdown content of this page, append .md to this URL. For the complete documentation index, see https://docs.nvidia.com/dynamo/llms.txt. For full content including API reference and SDK examples, see https://docs.nvidia.com/dynamo/llms-full.txt.

Примеры Profiler

Полные примеры профилирования с помощью DGDR.

Примеры DGDR

Плотная модель: быстрый режим

Быстрое профилирование (~30 секунд):

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

Плотная модель: тщательный режим

Профилирование с реальными измерениями на GPU:

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

MoE-модель

Многоузловое профилирование MoE с SGLang:

PVC, на который ссылается modelCache.pvcName, должен уже существовать в том же namespace и содержать веса модели по указанному pvcModelPath. Контроллер DGDR не создает и не заполняет PVC — он только монтирует его в profiling job и развернутые worker.

apiVersion: nvidia.com/v1beta1
kind: DynamoGraphDeploymentRequest
metadata:
name: sglang-moe
spec:
model: "deepseek-ai/DeepSeek-R1"
backend: sglang
image: "nvcr.io/nvidia/ai-dynamo/dynamo-planner:1.2.0" # dynamo-frontend for Dynamo < 1.1.0

hardware:
numGpusPerNode: 8

modelCache:
pvcName: "model-cache"
pvcModelPath: "deepseek-r1" # path within the PVC

Приватная модель

Для gated или приватных моделей HuggingFace передавайте токен через переменную окружения, внедренную в profiling job. Сначала создайте secret:

kubectl create secret generic hf-token-secret \
--from-literal=HF_TOKEN="${HF_TOKEN}" \
-n ${NAMESPACE}

Затем укажите его в DGDR:

apiVersion: nvidia.com/v1beta1
kind: DynamoGraphDeploymentRequest
metadata:
name: llama-private
spec:
model: "meta-llama/Llama-3.1-8B-Instruct"
image: "nvcr.io/nvidia/ai-dynamo/dynamo-planner:1.2.0" # dynamo-frontend for Dynamo < 1.1.0

overrides:
profilingJob:
template:
spec:
containers: [] # required placeholder; leave empty to inherit defaults
initContainers:
- name: profiler
env:
- name: HF_TOKEN
valueFrom:
secretKeyRef:
name: hf-token-secret
key: HF_TOKEN

Пользовательские цели SLA

Управляйте тем, как profiler оптимизирует ваше развертывание, задавая цели по задержке и характеристики нагрузки.

Явные цели TTFT + ITL (режим по умолчанию):

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

sla:
ttft: 500 # Time To First Token target in milliseconds
itl: 20 # Inter-Token Latency target in milliseconds

workload:
isl: 2000 # expected input sequence length (tokens)
osl: 500 # expected output sequence length (tokens)

Цель по сквозной задержке (альтернатива ttft+itl):

spec:
...
sla:
e2eLatency: 10000 # total request latency budget in milliseconds

Переопределения

Используйте overrides, чтобы настроить спецификацию pod profiling job, например добавить tolerations для taint'ов GPU-узлов или внедрить переменные окружения.

Toleration для GPU-узла (часто используется в GKE и общих кластерах):

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

overrides:
profilingJob:
template:
spec:
containers: [] # required placeholder; leave empty to inherit defaults
tolerations:
- key: nvidia.com/gpu
operator: Exists
effect: NoSchedule

Переопределение сгенерированного DynamoGraphDeployment (например, чтобы внедрить переменные окружения worker):

spec:
...
overrides:
dgd:
apiVersion: nvidia.com/v1alpha1
kind: DynamoGraphDeployment
spec:
envs:
- name: TRITON_PTXAS_PATH
value: "/usr/local/cuda/bin/ptxas"
services:
VllmWorker:
envs:
- name: CUSTOM_ENV
value: "my-value"

Runtime-профилирование SGLang

Профилируйте worker'ы SGLang во время выполнения через HTTP endpoints:

# Start profiling
curl -X POST http://localhost:9090/engine/start_profile \
-H "Content-Type: application/json" \
-d '{"output_dir": "/tmp/profiler_output"}'

# Run inference requests to generate profiling data...

# Stop profiling
curl -X POST http://localhost:9090/engine/stop_profile

Тестовый скрипт находится в examples/backends/sglang/test_sglang_profile.py:

python examples/backends/sglang/test_sglang_profile.py

Просматривайте трассировки с помощью chrome://tracing в Chrome, Perfetto UI или TensorBoard.