Repository navigation
Commit f516173
Add four GB300 DeepSeek V4.1 Flash Dynamo vLLM AgentX points (#3941)
* Add GB300 DeepSeek-V4.1-Flash Dynamo + vLLM disaggregated AgentX recipes
Add 8P1D, 6P1D and 5P1D points (DEP2 prefill, DEP16 decode) behind the Dynamo KV router with native vLLM sidecars.
新增 GB300 DeepSeek-V4.1-Flash Dynamo + vLLM 分离式 AgentX 配方:8P1D、6P1D、5P1D 三个点(DEP2 prefill、DEP16 decode),使用 Dynamo KV 路由与原生 vLLM sidecar。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Address review: drop setup script, enable prefill autotune; GB300 single-node arm on the new image
Drop the vllm-container-deps.sh setup script (the image already has numactl and msgpack), enable FlashInfer autotune on prefill, move the GB300 single-node arm to vllm/vllm-openai:nightly-aarch64-dev-20261012-59e75f4 with its TP4 points at conc 1 and 8, and restore a historical changelog pr-link that the previous commit changed by mistake.
处理评审意见:删除 vllm-container-deps.sh 安装脚本(镜像已自带 numactl 和 msgpack),prefill 开启 FlashInfer autotune;GB300 单节点配置改用 vllm/vllm-openai:nightly-aarch64-dev-20261012-59e75f4,TP4 只跑 conc 1 和 8;并恢复上一个提交误改的一条历史 changelog pr-link。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Move the TP4 points to a Dynamo aggregated key; leave the single-node vLLM arm unchanged
Add dsv41flash-fp4-gb300-dynamo-vllm-agentic-dspark-agg (one TP4 worker with a native Dynamo sidecar, conc 1 and 8) and restore the GB300 single-node vLLM key and recipe to main.
将 TP4 点移到新的 Dynamo 聚合配置项,单节点 vLLM 配置保持不变:新增 dsv41flash-fp4-gb300-dynamo-vllm-agentic-dspark-agg(单个 TP4 worker + 原生 Dynamo sidecar,conc 1 和 8),并将 GB300 单节点 vLLM 配置项和配方恢复为 main 的版本。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Add a 10P1D point at conc 6656 to the Dynamo disaggregated key
Ten DEP2 prefill instances feed the DEP16 decode at max-num-seqs 132.
在 Dynamo 分离式配置项中新增 10P1D 点(conc 6656):10 个 DEP2 prefill 实例配 DEP16 decode,max-num-seqs 132。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Dynamo frontend settings for the GB300 DSV4.1-Flash Dynamo + vLLM AgentX recipes (#3950)
* Dynamo frontend settings for the GB300 DSV4.1-Flash Dynamo + vLLM AgentX recipes
Carry the Dynamo runtime and router settings that held up on the GB300 Dynamo + vLLM
P/D frontier (c1 to c640, full-hour AgentX replays) into the disaggregated and
aggregated recipes:
- Conditional disaggregation off: active-decode-blocks-threshold,
active-prefill-tokens-threshold and active-prefill-tokens-threshold-frac set to
None, so every request is prefilled on a prefill rank and never on one of the 16
lockstep MegaMoE decode ranks.
- Router defaults pinned: DYN_ROUTER_TEMPERATURE=0 and DYN_ROUTER_QUEUE_THRESHOLD
None (temperature 1 measured as noise, +1 to 4%).
- Dynamo request plane tcp and event plane zmq; the NATS service is dropped (no
broker hop; the frontier ran this way at c640).
- Disaggregated recipe: etcd on a dedicated infra node and the frontend placed
beside it, so the single Rust frontend does not share a node with two DEP2
prefill ranks running Engram CPU offload and 70 GiB host KV each. Adds one
CPU-only node to the job; the GPU count of the measurement is unchanged.
- vLLM engines run with --reasoning-parser None on every role: the deepseek_v41 tool-call and
reasoning parsers are applied once, by the Dynamo frontend (published through the sidecar
--dyn-*-parser flags), not a second time inside vllm-rs.
- DYN_LOG=warn for measured runs.
Validated with srtctl dry-run (5P1D c2560 and TP4 c1) on oci-jhb.
* Keep the Dynamo frontend on the head node; etcd stays on infra
srtctl's orchestrator accepts only head|first_decode|last_decode for
frontend.placement.node (src/srtctl/core/topology.py), even though the schema and
`srtctl dry-run` accept `infra`; a 10P1D job with the previous commit's placement
failed at launch with "frontend.placement.node='infra' is invalid". Drop the
frontend placement and the dedicated infra node for etcd; the frontend runs on the
head node as before. Verified: the same 10P1D job launches with this change.
* Give each worker step every CPU on its node so prefill numa-bind can auto-detect
With cpus-per-task 72 every worker step was pinned to CPUs 0-71 (NUMA 0), including the DEP2 prefill worker on
GPUs 2-3, and vLLM refuses automatic GPU-to-NUMA detection under a constrained affinity, so the prefill engines
exited. With 144 each step (one task, --overlap) gets CPUs 0-143 and vLLM binds each DEP2 prefill worker to its
GPUs' NUMA node (GPUs 0-1 -> node 0, GPUs 2-3 -> node 1).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Bump srt-slurm to v2.51.4
Picks up NVIDIA/srt-slurm#602: on the Python sidecar launcher (multi-node hybrid-DP decode) srtctl drops
`reasoning-parser: none`, which Python vLLM rejects as an unknown parser name, while single-node `vllm-rs serve`
endpoints keep it as Dynamo sidecars require.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Run the Dynamo frontend and the AgentX client on a dedicated node
On the head node the frontend and the client grew next to two DEP2 prefill instances (Engram CPU tables plus 70 GiB
host KV per rank) until the 8P1D c5120 job was OOM-killed during warmup. Both now share one CPU-only node
(frontend and benchmark placement dedicated, colocated), which adds one node per disaggregated point and leaves the
GPU count unchanged. The frontend is pinned to NUMA node 0 (frontend.numa_bind) now that worker steps get every CPU.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Retune the AgentX points and bind workers to NUMA nodes
Disaggregated points move to 8P1D c4096, 6P1D c2884 and 4P1D c1228, with
10P1D dropped. Prefill keeps its Engram tables in transparent huge pages
and takes 32K batched tokens; each aggregated TP4 worker binds to its GPU's
NUMA node.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Add GB300 DeepSeek-V4.1-Flash Dynamo + vLLM disaggregated AgentX recipes
Add 8P1D, 6P1D and 5P1D points (DEP2 prefill, DEP16 decode) behind the Dynamo KV router with native vLLM sidecars.
新增 GB300 DeepSeek-V4.1-Flash Dynamo + vLLM 分离式 AgentX 配方:8P1D、6P1D、5P1D 三个点(DEP2 prefill、DEP16 decode),使用 Dynamo KV 路由与原生 vLLM sidecar。
* Address review: drop setup script, enable prefill autotune; GB300 single-node arm on the new image
Drop the vllm-container-deps.sh setup script (the image already has numactl and msgpack), enable FlashInfer autotune on prefill, move the GB300 single-node arm to vllm/vllm-openai:nightly-aarch64-dev-20261012-59e75f4 with its TP4 points at conc 1 and 8, and restore a historical changelog pr-link that the previous commit changed by mistake.
处理评审意见:删除 vllm-container-deps.sh 安装脚本(镜像已自带 numactl 和 msgpack),prefill 开启 FlashInfer autotune;GB300 单节点配置改用 vllm/vllm-openai:nightly-aarch64-dev-20261012-59e75f4,TP4 只跑 conc 1 和 8;并恢复上一个提交误改的一条历史 changelog pr-link。
* Move the TP4 points to a Dynamo aggregated key; leave the single-node vLLM arm unchanged
Add dsv41flash-fp4-gb300-dynamo-vllm-agentic-dspark-agg (one TP4 worker with a native Dynamo sidecar, conc 1 and 8) and restore the GB300 single-node vLLM key and recipe to main.
将 TP4 点移到新的 Dynamo 聚合配置项,单节点 vLLM 配置保持不变:新增 dsv41flash-fp4-gb300-dynamo-vllm-agentic-dspark-agg(单个 TP4 worker + 原生 Dynamo sidecar,conc 1 和 8),并将 GB300 单节点 vLLM 配置项和配方恢复为 main 的版本。
* Add a 10P1D point at conc 6656 to the Dynamo disaggregated key
Ten DEP2 prefill instances feed the DEP16 decode at max-num-seqs 132.
在 Dynamo 分离式配置项中新增 10P1D 点(conc 6656):10 个 DEP2 prefill 实例配 DEP16 decode,max-num-seqs 132。
* Dynamo frontend settings for the GB300 DSV4.1-Flash Dynamo + vLLM AgentX recipes (#3950)
* Dynamo frontend settings for the GB300 DSV4.1-Flash Dynamo + vLLM AgentX recipes
Carry the Dynamo runtime and router settings that held up on the GB300 Dynamo + vLLM
P/D frontier (c1 to c640, full-hour AgentX replays) into the disaggregated and
aggregated recipes:
- Conditional disaggregation off: active-decode-blocks-threshold,
active-prefill-tokens-threshold and active-prefill-tokens-threshold-frac set to
None, so every request is prefilled on a prefill rank and never on one of the 16
lockstep MegaMoE decode ranks.
- Router defaults pinned: DYN_ROUTER_TEMPERATURE=0 and DYN_ROUTER_QUEUE_THRESHOLD
None (temperature 1 measured as noise, +1 to 4%).
- Dynamo request plane tcp and event plane zmq; the NATS service is dropped (no
broker hop; the frontier ran this way at c640).
- Disaggregated recipe: etcd on a dedicated infra node and the frontend placed
beside it, so the single Rust frontend does not share a node with two DEP2
prefill ranks running Engram CPU offload and 70 GiB host KV each. Adds one
CPU-only node to the job; the GPU count of the measurement is unchanged.
- vLLM engines run with --reasoning-parser None on every role: the deepseek_v41 tool-call and
reasoning parsers are applied once, by the Dynamo frontend (published through the sidecar
--dyn-*-parser flags), not a second time inside vllm-rs.
- DYN_LOG=warn for measured runs.
Validated with srtctl dry-run (5P1D c2560 and TP4 c1) on oci-jhb.
* Keep the Dynamo frontend on the head node; etcd stays on infra
srtctl's orchestrator accepts only head|first_decode|last_decode for
frontend.placement.node (src/srtctl/core/topology.py), even though the schema and
`srtctl dry-run` accept `infra`; a 10P1D job with the previous commit's placement
failed at launch with "frontend.placement.node='infra' is invalid". Drop the
frontend placement and the dedicated infra node for etcd; the frontend runs on the
head node as before. Verified: the same 10P1D job launches with this change.
* Give each worker step every CPU on its node so prefill numa-bind can auto-detect
With cpus-per-task 72 every worker step was pinned to CPUs 0-71 (NUMA 0), including the DEP2 prefill worker on
GPUs 2-3, and vLLM refuses automatic GPU-to-NUMA detection under a constrained affinity, so the prefill engines
exited. With 144 each step (one task, --overlap) gets CPUs 0-143 and vLLM binds each DEP2 prefill worker to its
GPUs' NUMA node (GPUs 0-1 -> node 0, GPUs 2-3 -> node 1).
* Bump srt-slurm to v2.51.4
Picks up NVIDIA/srt-slurm#602: on the Python sidecar launcher (multi-node hybrid-DP decode) srtctl drops
`reasoning-parser: none`, which Python vLLM rejects as an unknown parser name, while single-node `vllm-rs serve`
endpoints keep it as Dynamo sidecars require.
* Run the Dynamo frontend and the AgentX client on a dedicated node
On the head node the frontend and the client grew next to two DEP2 prefill instances (Engram CPU tables plus 70 GiB
host KV per rank) until the 8P1D c5120 job was OOM-killed during warmup. Both now share one CPU-only node
(frontend and benchmark placement dedicated, colocated), which adds one node per disaggregated point and leaves the
GPU count unchanged. The frontend is pinned to NUMA node 0 (frontend.numa_bind) now that worker steps get every CPU.
* Retune the AgentX points and bind workers to NUMA nodes
Disaggregated points move to 8P1D c4096, 6P1D c2884 and 4P1D c1228, with
10P1D dropped. Prefill keeps its Engram tables in transparent huge pages
and takes 32K batched tokens; each aggregated TP4 worker binds to its GPU's
NUMA node.
* Adapt GB300 Dynamo AgentX recipes to current launch contracts
Use master recipe selectors and shared AgentX fragments while preserving the five tuned points and dedicated frontend/client placement. Backport the vLLM sidecar reasoning-parser fix through the existing patch mechanism and retain the shared srt-slurm pin.
* Limit GB300 Dynamo AgentX submission to completed points
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Pei Li <peili.dev@gmail.com>
Co-authored-by: Cam Quilici <cjquilici@gmail.com>1 parent 01acaba commit f516173
6 files changed
Lines changed: 538 additions & 1 deletion
File tree
- inferencex-e2e
- benchmarks/multi_node/srt-slurm-recipes/dsv41flash/vllm/gb300-fp4/agentx
- configs
- runners/srt-slurm/patches
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 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 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 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 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
0 commit comments