Skip to content

Commit cd50c62

Browse files
committed
perf(agentic): add GB200 DEP8 prefill candidate
1 parent 12d030a commit cd50c62

3 files changed

Lines changed: 198 additions & 0 deletions

File tree

.github/configs/nvidia-master.yaml

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12830,6 +12830,36 @@ dsv4-fp4-gb200-dynamo-vllm-agentic-1p2d:
1283012830
ep: 1
1283112831
dp-attn: false
1283212832

12833+
dsv4-fp4-gb200-dynamo-vllm-agentic-1p1d-dep8:
12834+
image: vllm/vllm-openai:v0.23.0
12835+
model: deepseek-ai/DeepSeek-V4-Pro
12836+
model-prefix: dsv4
12837+
runner: gb200
12838+
precision: fp4
12839+
framework: dynamo-vllm
12840+
multinode: true
12841+
disagg: true
12842+
scenarios:
12843+
agentic-coding:
12844+
- duration: 1800
12845+
search-space:
12846+
- spec-decoding: none
12847+
conc-list: [64, 96, 128, 160]
12848+
prefill:
12849+
num-worker: 1
12850+
# Matrix TP records physical GPUs per worker for normalization;
12851+
# the recipe implements them as attention DP8 / expert EP8.
12852+
tp: 8
12853+
ep: 8
12854+
dp-attn: true
12855+
additional-settings:
12856+
- "CONFIG_FILE=recipes/vllm/deepseek-v4/agentic/disagg-gb200-1p1d-dep8-tp8-agentic.yaml"
12857+
decode:
12858+
num-worker: 1
12859+
tp: 8
12860+
ep: 1
12861+
dp-attn: false
12862+
1283312863
dsv4-fp4-gb200-dynamo-vllm-agentic-2p1d:
1283412864
image: vllm/vllm-openai:v0.23.0
1283512865
model: deepseek-ai/DeepSeek-V4-Pro

benchmarks/multi_node/srt-slurm-recipes/vllm/deepseek-v4/agentic/GB200_VLLM_AGENTIC_SWEEP_NOTES.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -753,3 +753,24 @@ while the first production 2P/1D batch is the end-to-end validation.
753753
The B200 database baseline was re-queried before the high-throughput launch.
754754
Workflow `2022` c196 with offload remains the normalized target at 113,671.86
755755
tok/s total and 14,208.98 tok/s/GPU (15.526s mean TTFT, 279.09ms mean TPOT).
756+
757+
## High-Concurrency Server-Reuse Run
758+
759+
Official run `27922709353` uses one 2P/1D allocation for c128, c160, c192,
760+
and c256. The first point completed successfully but established that c128 is
761+
already deep overload for this topology: 59,345.29 tok/s total, 2,472.72
762+
tok/s/GPU, 337.97s mean TTFT, and 21.82% aggregate server GPU cache hit rate.
763+
The theoretical trace reuse remained 96.65%. Decode generally had only 6--28
764+
running requests and roughly 15--30% KV usage; both prefills stayed near 20%
765+
KV usage. There were no NIXL errors, and all decode ranks passed compatibility
766+
checks. This rules out decode saturation and KV-capacity thrashing at c128;
767+
the fixed-duration run admitted too many distinct long trajectories to reach
768+
the high-reuse steady state.
769+
770+
Added a separate 1P/1D DEP8-prefill experiment using 16 inference GPUs. It
771+
keeps Dynamo KV routing, prefix caching, the 32K retention interval, KV event
772+
publication, and the validated TP8 decode path. Its prefill follows the repo's
773+
existing vLLM DEP pattern (`TP1 x DP8`, EP8, `deep_gemm_mega_moe`) and raises
774+
the prefill batch-token ceiling from 16K to 32K. This tests whether eight-way
775+
attention parallelism can improve raw prefill throughput enough to offset the
776+
expected per-rank load-balance and cache-affinity penalty.
Lines changed: 147 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,147 @@
1+
name: "svf-vllm-disagg-gb200-1p1d-dep8-tp8-agentic"
2+
3+
# High-throughput experiment: one DEP8 prefill worker and one TP8 decode
4+
# worker. DEP exposes eight independent attention ranks behind one vLLM worker
5+
# while EP8 retains full-system MoE execution. This trades cache-affinity and
6+
# rank-balance simplicity for higher raw prefill parallelism.
7+
8+
model:
9+
path: "deepseek-v4-pro"
10+
container: "vllm/vllm-openai:v0.23.0"
11+
precision: "fp4"
12+
13+
dynamo:
14+
install: true
15+
wheel: "1.3.0.dev20260618"
16+
17+
setup_script: vllm-container-deps.sh
18+
19+
slurm:
20+
time_limit: "8:00:00"
21+
22+
health_check:
23+
max_attempts: 1440
24+
interval_seconds: 10
25+
26+
resources:
27+
gpu_type: "gb200"
28+
gpus_per_node: 4
29+
prefill_nodes: 2
30+
decode_nodes: 2
31+
prefill_workers: 1
32+
decode_workers: 1
33+
gpus_per_prefill: 8
34+
gpus_per_decode: 8
35+
36+
infra:
37+
etcd_nats_dedicated_node: true
38+
nats_max_payload_mb: 32
39+
40+
frontend:
41+
type: dynamo
42+
enable_multiple_frontends: false
43+
env:
44+
DYN_REQUEST_PLANE: "tcp"
45+
args:
46+
router-mode: "kv"
47+
router-reset-states: true
48+
49+
backend:
50+
type: vllm
51+
connector: null
52+
prefill_environment:
53+
DYN_REQUEST_PLANE: "tcp"
54+
TILELANG_CLEANUP_TEMP_FILES: "1"
55+
VLLM_USE_NCCL_SYMM_MEM: "1"
56+
TORCH_SYMMMEM: "NVSHMEM"
57+
NCCL_CUMEM_ENABLE: "1"
58+
NCCL_MNNVL_ENABLE: "1"
59+
NCCL_NVLS_ENABLE: "1"
60+
VLLM_SERVER_DEV_MODE: "1"
61+
VLLM_PREFIX_CACHE_RETENTION_INTERVAL: "32768"
62+
VLLM_SPARSE_INDEXER_MAX_LOGITS_MB: "1024"
63+
VLLM_MAX_TOKENS_PER_EXPERT_FP4_MOE: "2048"
64+
UCX_MEMTYPE_CACHE: "n"
65+
UCX_MEMTYPE_REG_WHOLE: "n"
66+
UCX_RCACHE_MAX_UNRELEASED: "1024"
67+
UCX_TLS: "cuda_copy,rc"
68+
NCCL_P2P_LEVEL: NVL
69+
decode_environment:
70+
DYN_REQUEST_PLANE: "tcp"
71+
TILELANG_CLEANUP_TEMP_FILES: "1"
72+
VLLM_USE_NCCL_SYMM_MEM: "1"
73+
TORCH_SYMMMEM: "NVSHMEM"
74+
NCCL_CUMEM_ENABLE: "1"
75+
NCCL_MNNVL_ENABLE: "1"
76+
NCCL_NVLS_ENABLE: "1"
77+
VLLM_SERVER_DEV_MODE: "1"
78+
VLLM_PREFIX_CACHE_RETENTION_INTERVAL: "32768"
79+
UCX_MEMTYPE_CACHE: "n"
80+
UCX_MEMTYPE_REG_WHOLE: "n"
81+
UCX_RCACHE_MAX_UNRELEASED: "1024"
82+
UCX_TLS: "cuda_copy,rc"
83+
NCCL_P2P_LEVEL: NVL
84+
85+
vllm_config:
86+
prefill:
87+
kv-transfer-config: '{"kv_connector": "NixlConnector", "kv_role": "kv_both"}'
88+
kv-events-config: '{"publisher":"zmq","topic":"kv-events","endpoint":"tcp://*:20080","enable_kv_cache_events":true}'
89+
served-model-name: "deepseek-ai/DeepSeek-V4-Pro"
90+
kv-cache-dtype: "fp8"
91+
tensor-parallel-size: 1
92+
pipeline-parallel-size: 1
93+
data-parallel-size: 8
94+
data-parallel-rpc-port: 13345
95+
enable-expert-parallel: true
96+
enable-ep-weight-filter: true
97+
attention-config: '{"use_fp4_indexer_cache": true}'
98+
moe-backend: "deep_gemm_mega_moe"
99+
enforce-eager: true
100+
max-num-seqs: 256
101+
max-num-batched-tokens: 32768
102+
trust-remote-code: true
103+
no-enable-flashinfer-autotune: true
104+
no-async-scheduling: true
105+
block-size: 256
106+
gpu-memory-utilization: 0.9
107+
no-disable-hybrid-kv-cache-manager: true
108+
tokenizer-mode: deepseek_v4
109+
decode:
110+
kv-transfer-config: '{"kv_connector": "NixlConnector", "kv_role": "kv_both"}'
111+
served-model-name: "deepseek-ai/DeepSeek-V4-Pro"
112+
kv-cache-dtype: "fp8"
113+
tensor-parallel-size: 8
114+
pipeline-parallel-size: 1
115+
attention-config: '{"use_fp4_indexer_cache": true}'
116+
max-num-seqs: 512
117+
max-cudagraph-capture-size: 512
118+
max-num-batched-tokens: 512
119+
trust-remote-code: true
120+
no-enable-flashinfer-autotune: true
121+
block-size: 256
122+
compilation-config: '{"cudagraph_mode":"FULL_DECODE_ONLY","mode":0}'
123+
gpu-memory-utilization: 0.9
124+
stream-interval: 50
125+
all2all-backend: "flashinfer_nvlink_one_sided"
126+
no-disable-hybrid-kv-cache-manager: true
127+
tokenizer-mode: deepseek_v4
128+
129+
sbatch_directives:
130+
cpus-per-task: "72"
131+
132+
srun_options:
133+
container-remap-root: ""
134+
135+
benchmark:
136+
type: custom
137+
aiperf_server_metrics: true
138+
command: bash /infmax-workspace/benchmarks/multi_node/agentic_srt.sh
139+
env:
140+
INFMAX_CONTAINER_WORKSPACE: /infmax-workspace
141+
RESULT_DIR: /logs/agentic
142+
PORT: "8000"
143+
IS_MULTINODE: "true"
144+
AIPERF_DYNAMO_SESSION_TIMEOUT_SECONDS: "14400"
145+
AIPERF_DATASET_MMAP_CACHE_DIR: "/aiperf_mmap_cache"
146+
HF_HUB_CACHE: "/hf_hub_cache"
147+
WEKA_LOADER_OVERRIDE: "semianalysis_cc_traces_weka_061526"

0 commit comments

Comments
 (0)