forked from ai-dynamo/dynamo
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdeploy.yaml
More file actions
108 lines (108 loc) · 3.75 KB
/
Copy pathdeploy.yaml
File metadata and controls
108 lines (108 loc) · 3.75 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# SPDX-License-Identifier: Apache-2.0
#
# DynamoGraphDeployment for deepseek-ai/DeepSeek-V4-Flash on vLLM,
# aggregated serving (no prefill/decode disaggregation).
#
# Upstream vLLM recipe:
# https://github.com/vllm-project/recipes/blob/main/models/deepseek-ai/DeepSeek-V4-Flash.yaml
#
# Shape: 1 replica x 4 B200 GPUs, DP=4 + Expert Parallel, TP=1.
# Tested on 4 of 8 GPUs per B200 node.
#
# Weights: served from the `model-cache` PVC populated by
# `../../model-cache/model-download.yaml`.
apiVersion: nvidia.com/v1alpha1
kind: DynamoGraphDeployment
metadata:
name: dsv4-flash-agg
spec:
backendFramework: vllm
pvcs:
- name: model-cache
create: false
services:
Frontend:
componentType: frontend
replicas: 1
volumeMounts:
- name: model-cache
mountPoint: /opt/models
extraPodSpec:
mainContainer:
image: nvcr.io/nvidia/ai-dynamo/vllm-runtime:1.2.0-deepseek-v4-cuda13-dev.3
workingDir: /workspace/examples/backends/vllm
env:
- name: HF_HOME
value: /opt/models
- name: HF_HUB_OFFLINE
value: "1"
VllmDecodeWorker:
componentType: worker
subComponentType: decode
envFromSecret: hf-token-secret
volumeMounts:
- name: model-cache
mountPoint: /opt/models
sharedMemory:
size: 200Gi
extraPodSpec:
mainContainer:
image: nvcr.io/nvidia/ai-dynamo/vllm-runtime:1.2.0-deepseek-v4-cuda13-dev.3
workingDir: /workspace/examples/backends/vllm
# Up to ~60 min for first launch: weight load + FlashInfer autotune +
# cudagraph warmup. periodSeconds * failureThreshold = 10 * 360 = 3600s.
startupProbe:
httpGet:
path: /health
port: 9090
periodSeconds: 10
timeoutSeconds: 10
failureThreshold: 360
env:
- name: SERVED_MODEL_NAME
value: deepseek-ai/DeepSeek-V4-Flash
- name: MODEL_PATH
value: deepseek-ai/DeepSeek-V4-Flash
- name: HF_HOME
value: /opt/models
# Read weights from the PVC only; do not hit the HF Hub at startup.
- name: HF_HUB_OFFLINE
value: "1"
# Give the engine room to finish first-launch init.
- name: VLLM_ENGINE_READY_TIMEOUT_S
value: "3600"
# Stabilize DP dummy inputs (matches the DeepSeek-R1 vLLM recipe).
- name: VLLM_RANDOMIZE_DP_DUMMY_INPUTS
value: "1"
- name: VLLM_SKIP_P2P_CHECK
value: "1"
- name: NCCL_CUMEM_ENABLE
value: "1"
command:
- /bin/sh
- -c
args:
- |
python3 -m dynamo.vllm \
--model "${MODEL_PATH}" \
--served-model-name "${SERVED_MODEL_NAME}" \
--trust-remote-code \
--kv-cache-dtype fp8 \
--block-size 256 \
--tensor-parallel-size 1 \
--data-parallel-size 4 \
--enable-expert-parallel \
--tokenizer-mode deepseek_v4 \
--dyn-reasoning-parser deepseek_v4 \
--dyn-tool-call-parser deepseek_v4 \
--attention-config '{"use_fp4_indexer_cache":true}' \
--compilation-config '{"cudagraph_mode":"FULL_AND_PIECEWISE","custom_ops":["all"]}' \
--no-enable-flashinfer-autotune \
--max-num-seqs 256
replicas: 1
resources:
limits:
gpu: "4"
requests:
gpu: "4"