dynamo/deploy
atchernych 15a01f75a0
feat: Streamline GAIE deployment (blackbox is still available with a simple flag) (#3591)
Signed-off-by: Anna Tchernych <atchernych@nvidia.com>
2025-10-15 18:44:20 +00:00
..
cloud feat: vllm data parallelism multi-node support in operator (#3595) 2025-10-15 10:42:16 -07:00
helm chore: pre-0.6.0 activities (#3592) 2025-10-13 17:45:19 -04:00
inference-gateway feat: Streamline GAIE deployment (blackbox is still available with a simple flag) (#3591) 2025-10-15 18:44:20 +00:00
logging fix: update dynamo namespace env var usage (#3477) 2025-10-08 12:24:03 -07:00
metrics docs: removed all TODOs from public facing docs within repo (#3540) 2025-10-13 08:59:11 -07:00
tracing feat: OTEL Exporter and Tempo Visualization (#3307) 2025-10-13 18:39:09 +00:00
utils fix: profilier bug fixes and doc improvements (#3530) 2025-10-09 14:47:26 -07:00
CONTRIBUTING.md feat: deprecate sdk as dependency (#2149) 2025-07-29 02:11:41 +00:00
README.md docs: fix deploy readme path (#3439) 2025-10-06 19:10:40 +00:00
__init__.py feat: add benchmarking guide (#2620) 2025-08-29 17:14:55 -07:00
docker-compose.yml feat: Add support for model express url injection (#2769) 2025-09-02 09:48:42 -06:00
dynamo_check.py refactor: rename dynamo_check.py to sanity_check.py (#3423) 2025-10-07 13:05:50 -07:00
sanity_check.py chore: Remove llama.cpp engine (#3499) 2025-10-08 16:44:53 -04:00

README.md

Deploying Inference Graphs to Kubernetes

High-level guide to Dynamo Kubernetes deployments. Start here, then dive into specific guides.

Pre-deployment Checks

Before deploying the platform, it is recommended to run the pre-deployment checks to ensure the cluster is ready for deployment. Please refer to the pre-deployment checks for more details.

1. Install Platform First

# 1. Set environment
export NAMESPACE=dynamo-system
export RELEASE_VERSION=0.x.x # any version of Dynamo 0.3.2+ listed at https://github.com/ai-dynamo/dynamo/releases

# 2. Install CRDs
helm fetch https://helm.ngc.nvidia.com/nvidia/ai-dynamo/charts/dynamo-crds-${RELEASE_VERSION}.tgz
helm install dynamo-crds dynamo-crds-${RELEASE_VERSION}.tgz --namespace default

# 3. Install Platform
helm fetch https://helm.ngc.nvidia.com/nvidia/ai-dynamo/charts/dynamo-platform-${RELEASE_VERSION}.tgz
helm install dynamo-platform dynamo-platform-${RELEASE_VERSION}.tgz --namespace ${NAMESPACE} --create-namespace

For more details or customization options (including multinode deployments), see Installation Guide for Dynamo Kubernetes Platform.

2. Choose Your Backend

Each backend has deployment examples and configuration options:

Backend Available Configurations
vLLM Aggregated, Aggregated + Router, Disaggregated, Disaggregated + Router, Disaggregated + Planner, Disaggregated Multi-node
SGLang Aggregated, Aggregated + Router, Disaggregated, Disaggregated + Planner, Disaggregated Multi-node
TensorRT-LLM Aggregated, Aggregated + Router, Disaggregated, Disaggregated + Router, Disaggregated Multi-node

3. Deploy Your First Model

export NAMESPACE=dynamo-cloud
kubectl create namespace ${NAMESPACE}

# to pull model from HF
export HF_TOKEN=<Token-Here>
kubectl create secret generic hf-token-secret \
  --from-literal=HF_TOKEN="$HF_TOKEN" \
  -n ${NAMESPACE};

# Deploy any example (this uses vLLM with Qwen model using aggregated serving)
kubectl apply -f components/backends/vllm/deploy/agg.yaml -n ${NAMESPACE}

# Check status
kubectl get dynamoGraphDeployment -n ${NAMESPACE}

# Test it
kubectl port-forward svc/vllm-agg-frontend 8000:8000 -n ${NAMESPACE}
curl http://localhost:8000/v1/models

What's a DynamoGraphDeployment (DGD)?

It's a Kubernetes Custom Resource that defines your inference pipeline:

  • Model configuration
  • Resource allocation (GPUs, memory)
  • Scaling policies
  • Frontend/backend connections

Refer to the API Reference and Documentation for more details.

📖 API Reference & Documentation

For detailed technical specifications of Dynamo's Kubernetes resources:

  • API Reference - Complete CRD field specifications for DynamoGraphDeployment and DynamoComponentDeployment
  • Operator Guide - Dynamo operator configuration and management
  • Create Deployment - Step-by-step deployment creation examples

Choosing Your Architecture Pattern

When creating a deployment, select the architecture pattern that best fits your use case:

  • Development / Testing - Use agg.yaml as the base configuration
  • Production with Load Balancing - Use agg_router.yaml to enable scalable, load-balanced inference
  • High Performance / Disaggregated - Use disagg_router.yaml for maximum throughput and modular scalability

Frontend and Worker Components

You can run the Frontend on one machine (e.g., a CPU node) and workers on different machines (GPU nodes). The Frontend serves as a framework-agnostic HTTP entry point that:

  • Provides OpenAI-compatible /v1/chat/completions endpoint
  • Auto-discovers backend workers via etcd
  • Routes requests and handles load balancing
  • Validates and preprocesses requests

Customizing Your Deployment

Example structure:

apiVersion: nvidia.com/v1alpha1
kind: DynamoGraphDeployment
metadata:
  name: my-llm
spec:
  services:
    Frontend:
      dynamoNamespace: my-llm
      componentType: frontend
      replicas: 1
      extraPodSpec:
        mainContainer:
          image: your-image
    VllmDecodeWorker:  # or SGLangDecodeWorker, TrtllmDecodeWorker
      dynamoNamespace: dynamo-dev
      componentType: worker
      replicas: 1
      envFromSecret: hf-token-secret  # for HuggingFace models
      resources:
        limits:
          gpu: "1"
      extraPodSpec:
        mainContainer:
          image: your-image
          command: ["/bin/sh", "-c"]
          args:
            - python3 -m dynamo.vllm --model YOUR_MODEL [--your-flags]

Worker command examples per backend:

# vLLM worker
args:
  - python3 -m dynamo.vllm --model Qwen/Qwen3-0.6B

# SGLang worker
args:
  - >-
    python3 -m dynamo.sglang
    --model-path deepseek-ai/DeepSeek-R1-Distill-Llama-8B
    --tp 1
    --trust-remote-code    

# TensorRT-LLM worker
args:
  - python3 -m dynamo.trtllm
    --model-path deepseek-ai/DeepSeek-R1-Distill-Llama-8B
    --served-model-name deepseek-ai/DeepSeek-R1-Distill-Llama-8B
    --extra-engine-args engine_configs/agg.yaml

Key customization points include:

  • Model Configuration: Specify model in the args command
  • Resource Allocation: Configure GPU requirements under resources.limits
  • Scaling: Set replicas for number of worker instances
  • Routing Mode: Enable KV-cache routing by setting DYN_ROUTER_MODE=kv in Frontend envs
  • Worker Specialization: Add --is-prefill-worker flag for disaggregated prefill workers

Additional Resources