Skip to content

Commit 83cb26a

Browse files
committed
Merge branch 'amd/dsv41flash-mi355x-vllm-attention-config-indexer' into amd/dsv41flash-mi355x-vllm-58671-mxfp4-indexer
Co-authored-by: Cursor <cursoragent@cursor.com> # Conflicts: # inferencex-e2e/benchmarks/single_node/srt-slurm-recipes/dsv41flash/vllm/mi355x-fp4-mtp/agentic.yaml # inferencex-e2e/configs/amd-master.yaml
2 parents 7132f30 + 6b2a44e commit 83cb26a

29 files changed

Lines changed: 636 additions & 513 deletions

‎README.md‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ Trusted by Operators of Trillion Dollar Token Factories such as OpenAI, Meta, Mi
2121
| [`InferenceX-e2e/`](inferencex-e2e/) | 🚀 End-to-end Inference Serving Benchmarks |
2222
| [`CollectiveX/`](collectivex/) | 🌐 Networking & Collective Communication Benchmarks (Experimental Beta) |
2323
| [`OperatorX/`](operatorx/) | ⚙️ Operator & Kernel Level Benchmarks (Experimental Beta) |
24+
| [`power_model/`](power_model/) | ⚡ OSS System Level Power Modelling |
2425
| [`shared/`](shared/) | 🧩 Home for shared components |
2526
| [`experimental/`](experimental/) | 🧪 Remaining experiments |
2627

@@ -92,6 +93,10 @@ This pace of software advancement creates a challenge: benchmarks conducted at a
9293
PRs are welcome! See [CONTRIBUTING.md](CONTRIBUTING.md) for more details on the PR review flow, the [PR Review Checklist](inferencex-e2e/docs/PR_REVIEW_CHECKLIST.md), and the merge process.
9394
For the maintainer and agent documentation map, start with [`docs/index.md`](inferencex-e2e/docs/index.md). It links the architecture, configuration, workflow, eval, runner, and troubleshooting references.
9495

96+
To benchmark an existing server without CI or Slurm, see
97+
[Run AgentX-Harness Standalone](inferencex-e2e/docs/agentx-standalone.md)
98+
for client installation and a direct `aiperf profile` command.
99+
95100
## Acknowledgements & Supporters
96101
Thank you to Lisa Su and Anush Elangovan for providing the MI355X and CDNA3 GPUs for this free and open-source project. We want to recognize the many AMD contributors for their responsiveness and for debugging, optimizing, and validating performance across AMD GPUs.
97102
We’re also grateful to Jensen Huang and Ian Buck for supporting this open source with access to a GB200 NVL72 rack (through OCI) and B200 GPUs. Thank you to the many NVIDIA contributors from the NVIDIA inference team, NVIDIA Dynamo team.

‎README_zh.md‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
| [`InferenceX-e2e/`](inferencex-e2e/) | 🚀 端到端推理服务基准测试 |
2222
| [`CollectiveX/`](collectivex/) | 🌐 网络与集合通信基准测试(实验性 Beta 版本) |
2323
| [`OperatorX/`](operatorx/) | ⚙️ 算子与内核级基准测试(实验性 Beta 版本) |
24+
| [`power_model/`](power_model/) | ⚡ 开源系统级功耗建模 |
2425
| [`shared/`](shared/) | 🧩 共享组件目录 |
2526
| [`experimental/`](experimental/) | 🧪 其余实验 |
2627

@@ -91,6 +92,10 @@ SGLang、vLLM、TensorRT-LLM、CUDA、ROCm 等 AI 软件通过核函式優化、
9192
欢迎提交 PR!有关 PR 审阅流程、[PR 审阅清单](inferencex-e2e/docs/PR_REVIEW_CHECKLIST_zh.md)与合并流程的更多详情,请参阅 [CONTRIBUTING_zh.md](CONTRIBUTING_zh.md)。
9293
维护者与 Agent 的文档导航请从 [`docs/index_zh.md`](inferencex-e2e/docs/index_zh.md) 开始,其中集中链接架构、配置、Workflow、评估、Runner 与故障排查参考。
9394

95+
无需 CI 或 Slurm 即可对已有服务进行基准测试,请参阅
96+
[独立运行 AgentX-Harness](inferencex-e2e/docs/agentx-standalone_zh.md),
97+
其中包含客户端安装步骤和直接执行的 `aiperf profile` 命令。
98+
9499
## 致谢与支持者
95100
感谢 Lisa Su 与 Anush Elangovan 为这一免费开源项目提供 MI355X 与 CDNA3 GPU。我们也要感谢众多 AMD 贡献者的积极响应,以及他们在各类 AMD GPU 上进行调试、优化与性能验证所付出的努力。
96101
我们同样感谢 Jensen Huang 与 Ian Buck 通过提供 GB200 NVL72 机架(经由 OCI)与 B200 GPU 来支持本开源项目。感谢来自 NVIDIA 推理团队与 NVIDIA Dynamo 团队的众多 NVIDIA 贡献者。
Lines changed: 335 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,335 @@
1+
# DeepSeek-V4-Pro AgentX on B300 with SGLang EAGLE (3 steps, 4 draft tokens).
2+
# TP4 and TP8 run the flashinfer MXFP4 MoE with GPU-resident KV; DEP8
3+
# (attention DP + Mega-MoE + FP4 indexer) runs behind the SGLang router with a
4+
# HiCache DRAM tier.
5+
base:
6+
schema: 2
7+
name: dsv4-fp4-b300-sglang-agentic-eagle
8+
model:
9+
path: hf:deepseek-ai/DeepSeek-V4-Pro
10+
container: lmsysorg/sglang:dev-cu13-nightly-09242@sha256:c47bbe7448050608b4e08669c742df4835a45a95bf6b19f2c4e51a7f6609e9d5
11+
precision: fp4
12+
resources:
13+
gpu_type: b300
14+
gpus_per_node: 8
15+
frontend:
16+
type: sglang
17+
enable_multiple_frontends: false
18+
observability:
19+
enabled: false
20+
tachometer:
21+
enabled: false
22+
engine: sglang
23+
roles:
24+
agg:
25+
nodes: 1
26+
workers: 1
27+
gpus: 8
28+
args:
29+
served-model-name: deepseek-ai/DeepSeek-V4-Pro
30+
trust-remote-code: true
31+
tensor-parallel-size: 8
32+
moe-runner-backend: flashinfer_mxfp4
33+
disable-flashinfer-autotune: true
34+
mem-fraction-static: 0.88
35+
swa-full-tokens-ratio: 0.1
36+
allow-auto-truncate: true
37+
chunked-prefill-size: 8192
38+
tool-call-parser: deepseekv4
39+
reasoning-parser: deepseek-v4
40+
chat-template: /infmax-workspace/benchmarks/single_node/chat_templates/deepseek_v4_thinking.jinja
41+
watchdog-timeout: 1800
42+
speculative-algorithm: EAGLE
43+
speculative-num-steps: 3
44+
speculative-eagle-topk: 1
45+
speculative-num-draft-tokens: 4
46+
attention-backend: dsv4
47+
page-size: 256
48+
disable-shared-experts-fusion: true
49+
enable-metrics: true
50+
enable-cache-report: true
51+
env:
52+
SGLANG_ENABLE_UNIFIED_RADIX_TREE: '1'
53+
SGLANG_OPT_UNIFIED_CACHE_FREE_OUT_OF_WINDOW_SLOTS: '1'
54+
PYTHONNOUSERSITE: '1'
55+
TORCH_CUDA_ARCH_LIST: '10.0'
56+
# Outlast AIPerf's pooled connections past Uvicorn's keep-alive.
57+
SGLANG_TIMEOUT_KEEP_ALIVE: '900'
58+
SGLANG_JIT_DEEPGEMM_FAST_WARMUP: '1'
59+
SGLANG_OPT_SWA_SPLIT_LEAF_ON_INSERT: '1'
60+
SGLANG_OPT_USE_JIT_NORM: '1'
61+
SGLANG_OPT_USE_JIT_INDEXER_METADATA: '1'
62+
SGLANG_OPT_USE_TOPK_V2: '1'
63+
SGLANG_OPT_USE_CUSTOM_ALL_REDUCE_V2: '1'
64+
# Triton compiles with the image's CUDA ptxas.
65+
TRITON_PTXAS_PATH: /usr/local/cuda/bin/ptxas
66+
benchmark:
67+
type: custom
68+
command: bash /infmax-workspace/benchmarks/srt_agentic.sh
69+
env:
70+
MODEL: deepseek-ai/DeepSeek-V4-Pro
71+
# Warmup can leave bytes unacknowledged past AIPerf's 30 s default.
72+
AIPERF_HTTP_TCP_USER_TIMEOUT: '900000'
73+
AIPERF_REQUIRED_SERVER_METRIC_PREFIX: 'sglang:'
74+
75+
# One variant per point. TP4/TP8: admission is 2x CONC and the decode graph
76+
# batch 4x CONC, capped at 64.
77+
override_tp4_c1:
78+
roles:
79+
agg:
80+
gpus: 4
81+
args:
82+
tensor-parallel-size: 4
83+
max-running-requests: 2
84+
cuda-graph-max-bs-decode: 4
85+
benchmark:
86+
env:
87+
CONC: '1'
88+
KV_OFFLOADING: none
89+
90+
override_tp4_c2:
91+
roles:
92+
agg:
93+
gpus: 4
94+
args:
95+
tensor-parallel-size: 4
96+
max-running-requests: 4
97+
cuda-graph-max-bs-decode: 8
98+
benchmark:
99+
env:
100+
CONC: '2'
101+
KV_OFFLOADING: none
102+
103+
override_tp4_c4:
104+
roles:
105+
agg:
106+
gpus: 4
107+
args:
108+
tensor-parallel-size: 4
109+
max-running-requests: 8
110+
cuda-graph-max-bs-decode: 16
111+
benchmark:
112+
env:
113+
CONC: '4'
114+
KV_OFFLOADING: none
115+
116+
override_tp4_c8:
117+
roles:
118+
agg:
119+
gpus: 4
120+
args:
121+
tensor-parallel-size: 4
122+
max-running-requests: 16
123+
cuda-graph-max-bs-decode: 32
124+
benchmark:
125+
env:
126+
CONC: '8'
127+
KV_OFFLOADING: none
128+
129+
override_tp4_c16:
130+
roles:
131+
agg:
132+
gpus: 4
133+
args:
134+
tensor-parallel-size: 4
135+
max-running-requests: 32
136+
cuda-graph-max-bs-decode: 64
137+
benchmark:
138+
env:
139+
CONC: '16'
140+
KV_OFFLOADING: none
141+
142+
override_tp4_c32:
143+
roles:
144+
agg:
145+
gpus: 4
146+
args:
147+
tensor-parallel-size: 4
148+
max-running-requests: 64
149+
cuda-graph-max-bs-decode: 64
150+
benchmark:
151+
env:
152+
CONC: '32'
153+
KV_OFFLOADING: none
154+
155+
override_tp8_c1:
156+
roles:
157+
agg:
158+
args:
159+
max-running-requests: 2
160+
cuda-graph-max-bs-decode: 4
161+
benchmark:
162+
env:
163+
CONC: '1'
164+
KV_OFFLOADING: none
165+
166+
override_tp8_c2:
167+
roles:
168+
agg:
169+
args:
170+
max-running-requests: 4
171+
cuda-graph-max-bs-decode: 8
172+
benchmark:
173+
env:
174+
CONC: '2'
175+
KV_OFFLOADING: none
176+
177+
override_tp8_c4:
178+
roles:
179+
agg:
180+
args:
181+
max-running-requests: 8
182+
cuda-graph-max-bs-decode: 16
183+
benchmark:
184+
env:
185+
CONC: '4'
186+
KV_OFFLOADING: none
187+
188+
override_tp8_c8:
189+
roles:
190+
agg:
191+
args:
192+
max-running-requests: 16
193+
cuda-graph-max-bs-decode: 32
194+
benchmark:
195+
env:
196+
CONC: '8'
197+
KV_OFFLOADING: none
198+
199+
override_tp8_c16:
200+
roles:
201+
agg:
202+
args:
203+
max-running-requests: 32
204+
cuda-graph-max-bs-decode: 64
205+
benchmark:
206+
env:
207+
CONC: '16'
208+
KV_OFFLOADING: none
209+
210+
override_tp8_c32:
211+
roles:
212+
agg:
213+
args:
214+
max-running-requests: 64
215+
cuda-graph-max-bs-decode: 64
216+
benchmark:
217+
env:
218+
CONC: '32'
219+
KV_OFFLOADING: none
220+
221+
# DEP8 replaces the TP8 MoE path: the router keeps each session on the DP rank
222+
# holding its radix prefix, the global prefill chunk is 8192 per rank, decode
223+
# graphs cover the padded speculative batch across ranks, and AIPerf owns the
224+
# warmup. DEP8 mixes prefill into decode batches, schedules shortest prefill
225+
# first, coordinates speculative prefill across DP ranks, and keeps the router
226+
# circuit breaker off. HiCache capacity is a host/device ratio of 2.
227+
override_dep8_c64:
228+
frontend: &dep8_frontend
229+
type: sglang-router
230+
args:
231+
policy: consistent_hashing
232+
request-id-headers: x-correlation-id
233+
dp-aware: true
234+
connect-timeout-secs: 900
235+
request-timeout-secs: 14400
236+
disable-health-check: true
237+
disable-circuit-breaker: true
238+
# A transient router-to-engine send failure would otherwise abort the run.
239+
retry-max-retries: 8
240+
retry-initial-backoff-ms: 500
241+
retry-max-backoff-ms: 10000
242+
retry-backoff-multiplier: 2
243+
roles:
244+
agg:
245+
args:
246+
<<: &dep8_args
247+
moe-runner-backend: null
248+
data-parallel-size: 8
249+
tokenizer-worker-num: 8
250+
enable-prefill-delayer: true
251+
prefill-decode-interval: 32
252+
enable-dp-attention: true
253+
enable-dp-attention-local-control-broadcast: true
254+
incremental-streaming-output: true
255+
stream-interval: 20
256+
expert-parallel-size: 8
257+
moe-a2a-backend: megamoe
258+
enable-w4a4-mxfp4-megamoe: true
259+
enable-deepseek-v4-fp4-indexer: true
260+
enable-mixed-chunk: true
261+
schedule-policy: shortest-prefill-first
262+
mem-fraction-static: 0.84
263+
chunked-prefill-size: 65536
264+
cuda-graph-max-bs-decode: 544
265+
swa-full-tokens-ratio: 0.075
266+
enable-hierarchical-cache: true
267+
hicache-ratio: 2
268+
hicache-write-policy: write_back
269+
hicache-io-backend: direct
270+
hicache-mem-layout: page_first_direct
271+
skip-server-warmup: true
272+
max-running-requests: 128
273+
env: &dep8_env
274+
SGLANG_ENABLE_DP_SPEC_PREFILL_COORDINATION: '1'
275+
# Covers the 8192-token per-rank prefill budget.
276+
SGLANG_OPT_DEEPGEMM_MEGA_MOE_NUM_MAX_TOKENS_PER_RANK: '8320'
277+
benchmark:
278+
env:
279+
<<: &dep8_client
280+
AIPERF_HTTP_X_SMG_ROUTING_KEY_FROM_CORRELATION_ID: 'true'
281+
KV_OFFLOADING: dram
282+
TOTAL_CPU_DRAM_GB: '2849'
283+
CONC: '64'
284+
285+
override_dep8_c128:
286+
frontend: *dep8_frontend
287+
roles:
288+
agg:
289+
args:
290+
<<: *dep8_args
291+
max-running-requests: 256
292+
env: *dep8_env
293+
benchmark:
294+
env:
295+
<<: *dep8_client
296+
CONC: '128'
297+
298+
override_dep8_c256:
299+
frontend: *dep8_frontend
300+
roles:
301+
agg:
302+
args:
303+
<<: *dep8_args
304+
max-running-requests: 512
305+
env: *dep8_env
306+
benchmark:
307+
env:
308+
<<: *dep8_client
309+
CONC: '256'
310+
311+
override_dep8_c384:
312+
frontend: *dep8_frontend
313+
roles:
314+
agg:
315+
args:
316+
<<: *dep8_args
317+
max-running-requests: 768
318+
env: *dep8_env
319+
benchmark:
320+
env:
321+
<<: *dep8_client
322+
CONC: '384'
323+
324+
override_dep8_c512:
325+
frontend: *dep8_frontend
326+
roles:
327+
agg:
328+
args:
329+
<<: *dep8_args
330+
max-running-requests: 1024
331+
env: *dep8_env
332+
benchmark:
333+
env:
334+
<<: *dep8_client
335+
CONC: '512'

0 commit comments

Comments
 (0)