Skip to content

[AgentX] Tune DSV4 GB300 MTP / 调优 DSV4 GB300 MTP - #2571

Merged
cquil11 merged 6 commits into
mainfrom
codex/dsv4-gb300-agentx-clean
Aug 14, 2026
Merged

[AgentX] Tune DSV4 GB300 MTP / 调优 DSV4 GB300 MTP#2571
cquil11 merged 6 commits into
mainfrom
codex/dsv4-gb300-agentx-clean

Conversation

@ivanium

@ivanium ivanium commented Aug 12, 2026

Copy link
Copy Markdown
Collaborator

Tune the GB300 AgentX MTP configs.

调优 GB300 AgentX MTP 配置。

Tests / 测试: 236 passed; changelog validation passed.

@github-actions

Copy link
Copy Markdown
Contributor

Thanks for the contribution! Please reach out to respective companies' CODEOWNER to fill in the latest PR_REVIEW_CHECKLIST.md before pinging core maintainer on Slack for review. In order for the signoff PR check bot to trigger, you must follow the PR_REVIEW_CHECKLIST.md template correctly, including the phrase As a PR reviewer and CODEOWNER, I have reviewed this and have.

For PR verification, add the full-sweep-fail-fast label (strongly recommended) to this PR — the benchmark sweep only runs on labeled PRs. Use full-sweep-enabled only if you need matrix jobs to keep running past a failure.

PR authors are responsible for ensuring that after merging, all GitHub Action jobs fully pass. A lot of the time, failures are just flakes and simply re-running the failed jobs will fix it. See GitHub's docs on re-running failed jobs


感谢你的贡献!请联系相应公司的 CODEOWNER 填写最新的 PR_REVIEW_CHECKLIST.md,然后再在 Slack 上联系核心维护者进行审阅。为了触发 signoff PR 检查机器人,你必须正确遵循 PR_REVIEW_CHECKLIST.md 模板,包括保留英文语句 As a PR reviewer and CODEOWNER, I have reviewed this and have

如需进行 PR 验证,请为此 PR 添加 full-sweep-fail-fast 标签(强烈推荐)— 基准测试 sweep 仅在带有标签的 PR 上运行。仅当需要矩阵任务在失败后继续运行时才使用 full-sweep-enabled

PR 作者有责任确保合并后所有 GitHub Action 任务完全通过。 很多时候失败只是偶发抖动(flake),重新运行失败的任务即可解决。参见 GitHub 关于重新运行失败任务的文档

@ivanium
ivanium force-pushed the codex/dsv4-gb300-agentx-clean branch 2 times, most recently from aa7d626 to 39a457c Compare August 12, 2026 09:29
@ivanium
ivanium marked this pull request as ready for review August 12, 2026 09:33
@ivanium
ivanium requested a review from a team August 12, 2026 09:33
@ivanium ivanium added full-sweep-enabled agentx AgentX benchmarks, recipes, and infrastructure and removed full-sweep-fail-fast labels Aug 12, 2026
@claude

claude Bot commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

Claude finished @ivanium's task in 3m 51s —— View job


Review of PR #2571

  • Gather PR diff and context
  • Review recipe YAML changes (agg + disagg, renamed/added files)
  • Validate configs/nvidia-master.yaml (images, model prefixes, renamed recipe references)
  • Validate perf-changelog.yaml (entry appended at end)
  • Post review feedback

LGTM - no blocking issues found

Verified: perf-changelog.yaml entry is appended at the end; master config CONFIG_FILE paths match the renamed/added recipes with no stale references to the old c128/c384 filenames; the dynamo: version:dynamo: wheel: change aligns these two recipes with the key every other recipe uses (and that the launcher's DynamoConfig.wheel actually reads, so the wheel pin now takes effect); container images are unchanged public Docker Hub references; and the decode scheduler settings are internally consistent with MTP3 (max-num-batched-tokens = max-num-seqs × 4) across all three disagg recipes.

@claude claude Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM — the reported issues are minor nits (changelog blank-line separator, a duplicable search-space entry, and a missing env var on one sibling config) that don't affect correctness of the sweep.

Extended reasoning...

Overview

This PR tunes GB300 AgentX MTP benchmark recipes for DeepSeek-V4-Pro: scheduler/CUDA-graph/memory settings across four existing recipe YAMLs, a new disagg 2P1D DEP8/DEP16 c1024 recipe, wiring changes in configs/nvidia-master.yaml's search-space definitions, and an appended perf-changelog.yaml entry. All changes are benchmark-harness config (SLURM recipes, env vars, vLLM engine args, sweep matrix entries) — no application/serving code paths are touched.

Security risks

None identified. These are benchmark configuration files consumed by an internal SLURM-based sweep harness; there's no user input handling, auth, or crypto surface in scope.

Level of scrutiny

This warrants light scrutiny: it's config-only tuning following the repo's well-established recipe pattern (topology, env vars, gpu-memory-utilization, cudagraph capture sizes), consistent with many prior similar PRs in this repo's history (e.g. the recent Kimi K3 DSpark and GLM-5.2 tuning PRs). The three findings from the bug-hunting pass are all nits: a missing blank-line separator in the changelog, a mergeable duplicate search-space entry, and a missing env var on one sibling config that only affects benchmark-harness flakiness (not served-model correctness). None of them block the sweep from running correctly or produce incorrect results.

Other factors

The PR description states 236 tests passed and changelog validation passed. No CODEOWNER-sensitive code is touched, and there are no unresolved reviewer comments in the timeline. Given the nature and low severity of the findings, human review is not required to safely merge this.

Comment thread perf-changelog.yaml Outdated
Comment thread configs/nvidia-master.yaml
@github-actions

Copy link
Copy Markdown
Contributor

@ivanium
ivanium force-pushed the codex/dsv4-gb300-agentx-clean branch 2 times, most recently from 15557ef to ce61fdc Compare August 12, 2026 10:06
@github-actions

Copy link
Copy Markdown
Contributor

@ivanium
ivanium force-pushed the codex/dsv4-gb300-agentx-clean branch from ce61fdc to 7e5fb67 Compare August 12, 2026 17:51
@github-actions

Copy link
Copy Markdown
Contributor

ivanium and others added 2 commits August 12, 2026 19:30
Consolidate the GB300 AgentX MTP bring-up, runner selection, Dynamo transport hardening, AIPerf integration, and six-point aggregate/P-D sweep. Keep DeepGEMM AMX FP4 Mega MoE on expert-parallel P/D engines while restoring automatic MoE backend selection for pure aggregate TP. Disable the vLLM cumem allocator for aggregate TP, retain the 8192-token budget, size max-num-seqs as max(16, 4*concurrency) with matching MTP CUDA graph coverage, and use gpu-memory-utilization 0.94.

中文:整合 GB300 AgentX MTP 的启动流程、运行节点选择、Dynamo 传输加固、AIPerf 集成和六点聚合/P-D 扫描。在专家并行 P/D 引擎上保留 DeepGEMM AMX FP4 Mega MoE,并为纯聚合 TP 恢复自动 MoE 后端选择;聚合 TP 禁用 vLLM cumem 分配器并保留 8192-token 预算,同时按 max(16, 4*并发) 设置 max-num-seqs、配置对应的 MTP CUDA Graph 覆盖范围,并将 gpu-memory-utilization 设为 0.94。
Route GB300 multi-node AgentX recipes through the shared throughput-only synthetic acceptance injector and add regression coverage for eval-only behavior.\n\n中文:让 GB300 多节点 AgentX 配方使用仅吞吐量启用的共享合成接受率注入器,并添加仅评估模式的回归测试。
@ivanium
ivanium force-pushed the codex/dsv4-gb300-agentx-clean branch from 1f70b31 to 9926c05 Compare August 12, 2026 19:32
@github-actions

Copy link
Copy Markdown
Contributor

@github-actions

Copy link
Copy Markdown
Contributor

1 similar comment
@github-actions

Copy link
Copy Markdown
Contributor

@ivanium

ivanium commented Aug 13, 2026

Copy link
Copy Markdown
Collaborator Author

/stage-results 31624709550

@github-actions

github-actions Bot commented Aug 13, 2026

Copy link
Copy Markdown
Contributor

@ivanium staged run 31624709550: https://inferencemax-app-git-staging-semianalysisai.vercel.app/inference?i_dates=2026-08-12~r31624709550

This run remains available across future /stage-results requests. Staging the same run ID again updates its staged data. Staging workflow

@ivanium

ivanium commented Aug 13, 2026

Copy link
Copy Markdown
Collaborator Author

/stage-results 31633154542

@github-actions

github-actions Bot commented Aug 13, 2026

Copy link
Copy Markdown
Contributor

@ivanium staged run 31633154542: https://inferencemax-app-git-staging-semianalysisai.vercel.app/inference?i_dates=2026-08-12~r31633154542

This run remains available across future /stage-results requests. Staging the same run ID again updates its staged data. Staging workflow

@cquil11

cquil11 commented Aug 13, 2026

Copy link
Copy Markdown
Collaborator

/reuse-sweep-run 31633154542

@cquil11
cquil11 merged commit d136fa6 into main Aug 14, 2026
9 checks passed
@cquil11
cquil11 deleted the codex/dsv4-gb300-agentx-clean branch August 14, 2026 20:45
sammshen added a commit that referenced this pull request Aug 14, 2026
Two fixes in one:

1. Restore PR #2571's entry (dsv4-fp4-gb300-dynamo-vllm-agentic-mtp-agg
   / -disagg). My automated merge-conflict resolution dropped it while
   reconciling the append-only tail, which the changelog gate correctly
   rejected -- deletions are not permitted.

2. Drop #2602's entry, which arrived with the code merge and pulled its
   whole vllm-simple sweep (c1..c20) onto this PR. That is not a deletion
   relative to main, since the entry only exists on #2602's branch.

Rebuilding as 'main verbatim + this PR's entry' makes both correct by
construction: zero deletions vs main, one addition.
xinli-sw added a commit that referenced this pull request Aug 16, 2026
…orkers

Adds a GB200 counterpart to the GB300 AgentX DSV4 MTP recipes tuned in
PR #2571. Every setting is copied unchanged except workers that used 4
GPUs on GB300 now use 8 on GB200 (agg TP4->TP8, disagg prefill DEP4->DEP8);
worker sizes that were already 8/12/16 GPUs are untouched.

New recipe files and dsv4-fp4-gb200-dynamo-vllm-agentic-mtp2-{agg,disagg}
master-config keys are kept separate from the existing GB200 AgentX MTP
recipes/keys, which have unrelated tuning and are left untouched.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
ChangLiu0709 added a commit that referenced this pull request Aug 17, 2026
Keep all new entries from main (PRs #2567, #2608, #2610, #2571, #2609,

Co-authored-by: Cursor <cursoragent@cursor.com>
#2611, #2616, #2612, #2620) and re-append our #2605 entry at the tail.
pull Bot pushed a commit to saidrhs/InferenceMAX that referenced this pull request Aug 17, 2026
…4-GPU->8-GPU workers (SemiAnalysisAI#2619)

* [AgentX] Mirror GB300 MTP tuning (SemiAnalysisAI#2571) to GB200 with 4-GPU->8-GPU workers

Adds a GB200 counterpart to the GB300 AgentX DSV4 MTP recipes tuned in
PR SemiAnalysisAI#2571. Every setting is copied unchanged except workers that used 4
GPUs on GB300 now use 8 on GB200 (agg TP4->TP8, disagg prefill DEP4->DEP8);
worker sizes that were already 8/12/16 GPUs are untouched.

New recipe files and dsv4-fp4-gb200-dynamo-vllm-agentic-mtp2-{agg,disagg}
master-config keys are kept separate from the existing GB200 AgentX MTP
recipes/keys, which have unrelated tuning and are left untouched.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* Fill in pr-link for GB200 mtp2 changelog entry

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* Switch GB200 mtp2 recipes to stock nightly image + regular MegaMoE

The GB300-pinned nightly-dev-arm64-cu13.0.1-426e59f tag is an ephemeral
dev-branch build that has already been pruned from Docker Hub, and it
exists specifically to carry deep_gemm_amxf4_mega_moe (W4A4 MegaMoE)
support that isn't in stock vLLM nightly. Since these GB200 recipes don't
need to stay on that dev branch, switch to vllm/vllm-openai:nightly and
drop back to the regular deep_gemm_mega_moe backend that stock nightly
supports.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* Revert "Switch GB200 mtp2 recipes to stock nightly image + regular MegaMoE"

This reverts commit 9749e1ef489e06744ff661e5eb5f97036e613ea3.

* GB200 mtp2 disagg: lower Mooncake segment to 160GB, halve conc points

Job 23562 (disagg-gb200-2p1d-dep8-dep16-c1024-mtp2-agentic, conc=1024)
died silently mid-run: one prefill worker process was killed with no
CUDA-OOM warning or traceback (exit code: None), which cascaded into an
EngineDeadError and aborted the whole disagg job. No host-RAM telemetry
was captured to confirm the cause, but the recipe reserves a 180GB host
Mooncake KV-store segment per node on top of whatever vLLM/Dynamo itself
uses, so as a mitigation: drop global_segment_size to 160GB across all
three GB200 mtp2 disagg recipes, and halve each large-conc file's target
concurrency (and rename/re-point accordingly) to reduce memory pressure:
  c256  -> c128  (disagg-gb200-1p1d-dep8-dep8)
  c1024 -> c512  (disagg-gb200-2p1d-dep8-dep16)
  c1152 -> c576  (disagg-gb200-2p1d-dep8-dep12)
configs/nvidia-master.yaml's mtp2-disagg search-space conc-list and
CONFIG_FILE references are updated to match.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* Fix decode CUDA-graph capture size on GB200 c128 disagg recipe

Job 23607 (disagg-gb200-1p1d-dep8-dep8-c128-mtp2-agentic) OOM'd during
decode CUDA-graph capture: 183.24 GiB already in use on a 184 GiB GB200
GPU, then the capture-size warmup forward pass needed another 768 MiB it
didn't have. The decode block's max-num-seqs (256) and
max-cudagraph-capture-size (1024) were still sized for the pre-rename
c256 concurrency, not the current c128 target.

max-cudagraph-capture-size should track (num_speculative_tokens + 1) *
max-num-seqs for MTP-3 decode graphs. Set decode max-num-seqs to 128
(matching the file's concurrency) and max-cudagraph-capture-size to 512
(4 * 128). The other two GB200 disagg mtp2 decode blocks (c576, c512)
already satisfy this (64 * 4 = 256); prefill blocks are unaffected.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* Lower GB200 c128 prefill gpu-memory-utilization to leave OOM headroom

Job 23635 got past startup (decode capture-size fix from the previous
commit held) but crashed ~4 min into serving: three prefill DP ranks hit
torch.OutOfMemoryError inside the MTP speculator's draft-token prefill
pass (speculator.py:_prefill -> wq_b block-scaled matmul), with the GPU
already at 183.03/184 GiB in use. prefill's gpu-memory-utilization: 0.92
(copied from the GB300 source) reserves too much of the 184 GiB GB200
GPU for vLLM's static pool, leaving too little headroom for transient
MTP draft-prefill activations on large-batch requests. Drop prefill
gpu-memory-utilization to 0.85; decode is untouched since this failure
was prefill-only.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* GB200 mtp2 disagg: 140GB Mooncake segment, add 1p1d c256 point

Job 23715 (c576, global_segment_size 160GB) still died silently after
~1h51m of steady serving with no CUDA-OOM/cuBLAS error, matching the
same host-RAM-exhaustion signature as job 23562 (180GB). Lower
global_segment_size to 140GB across all three GB200 mtp2 disagg
recipes as a further mitigation.

Job 23714 (c128, fixed decode/prefill sizing) completed successfully.
Its GPU KV-cache usage peaked at ~80% on prefill and ~39% on decode --
not maxed out -- so add the next concurrency point (256) on the same
1p1d dep8/dep8 topology rather than jumping to 2p1d: create
disagg-gb200-1p1d-dep8-dep8-c256-mtp2-agentic.yaml as a clone of the
working c128 file (decode max-num-seqs/max-cudagraph-capture-size and
prefill gpu-memory-utilization left unchanged, since DEP8 replication
already gives 8x the c128 file's per-rank max-num-seqs budget, well
above a conc=256 target) and add its conc-list: [256] search-space
entry to dsv4-fp4-gb200-dynamo-vllm-agentic-mtp2-disagg.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* Update perf-changelog.yaml

---------

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
Co-authored-by: Cameron Quilici <cjquilici@gmail.com>
adibarra added a commit that referenced this pull request Aug 18, 2026
* [AgentX] Mirror GB300 MTP tuning (#2571) to GB200 with 4-GPU->8-GPU workers

Adds a GB200 counterpart to the GB300 AgentX DSV4 MTP recipes tuned in
PR #2571. Every setting is copied unchanged except workers that used 4
GPUs on GB300 now use 8 on GB200 (agg TP4->TP8, disagg prefill DEP4->DEP8);
worker sizes that were already 8/12/16 GPUs are untouched.

New recipe files and dsv4-fp4-gb200-dynamo-vllm-agentic-mtp2-{agg,disagg}
master-config keys are kept separate from the existing GB200 AgentX MTP
recipes/keys, which have unrelated tuning and are left untouched.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* Fill in pr-link for GB200 mtp2 changelog entry

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* Switch GB200 mtp2 recipes to stock nightly image + regular MegaMoE

The GB300-pinned nightly-dev-arm64-cu13.0.1-426e59f tag is an ephemeral
dev-branch build that has already been pruned from Docker Hub, and it
exists specifically to carry deep_gemm_amxf4_mega_moe (W4A4 MegaMoE)
support that isn't in stock vLLM nightly. Since these GB200 recipes don't
need to stay on that dev branch, switch to vllm/vllm-openai:nightly and
drop back to the regular deep_gemm_mega_moe backend that stock nightly
supports.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* Revert "Switch GB200 mtp2 recipes to stock nightly image + regular MegaMoE"

This reverts commit 9749e1ef489e06744ff661e5eb5f97036e613ea3.

* GB200 mtp2 disagg: lower Mooncake segment to 160GB, halve conc points

Job 23562 (disagg-gb200-2p1d-dep8-dep16-c1024-mtp2-agentic, conc=1024)
died silently mid-run: one prefill worker process was killed with no
CUDA-OOM warning or traceback (exit code: None), which cascaded into an
EngineDeadError and aborted the whole disagg job. No host-RAM telemetry
was captured to confirm the cause, but the recipe reserves a 180GB host
Mooncake KV-store segment per node on top of whatever vLLM/Dynamo itself
uses, so as a mitigation: drop global_segment_size to 160GB across all
three GB200 mtp2 disagg recipes, and halve each large-conc file's target
concurrency (and rename/re-point accordingly) to reduce memory pressure:
  c256  -> c128  (disagg-gb200-1p1d-dep8-dep8)
  c1024 -> c512  (disagg-gb200-2p1d-dep8-dep16)
  c1152 -> c576  (disagg-gb200-2p1d-dep8-dep12)
configs/nvidia-master.yaml's mtp2-disagg search-space conc-list and
CONFIG_FILE references are updated to match.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* Fix decode CUDA-graph capture size on GB200 c128 disagg recipe

Job 23607 (disagg-gb200-1p1d-dep8-dep8-c128-mtp2-agentic) OOM'd during
decode CUDA-graph capture: 183.24 GiB already in use on a 184 GiB GB200
GPU, then the capture-size warmup forward pass needed another 768 MiB it
didn't have. The decode block's max-num-seqs (256) and
max-cudagraph-capture-size (1024) were still sized for the pre-rename
c256 concurrency, not the current c128 target.

max-cudagraph-capture-size should track (num_speculative_tokens + 1) *
max-num-seqs for MTP-3 decode graphs. Set decode max-num-seqs to 128
(matching the file's concurrency) and max-cudagraph-capture-size to 512
(4 * 128). The other two GB200 disagg mtp2 decode blocks (c576, c512)
already satisfy this (64 * 4 = 256); prefill blocks are unaffected.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* Lower GB200 c128 prefill gpu-memory-utilization to leave OOM headroom

Job 23635 got past startup (decode capture-size fix from the previous
commit held) but crashed ~4 min into serving: three prefill DP ranks hit
torch.OutOfMemoryError inside the MTP speculator's draft-token prefill
pass (speculator.py:_prefill -> wq_b block-scaled matmul), with the GPU
already at 183.03/184 GiB in use. prefill's gpu-memory-utilization: 0.92
(copied from the GB300 source) reserves too much of the 184 GiB GB200
GPU for vLLM's static pool, leaving too little headroom for transient
MTP draft-prefill activations on large-batch requests. Drop prefill
gpu-memory-utilization to 0.85; decode is untouched since this failure
was prefill-only.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* GB200 mtp2 disagg: 140GB Mooncake segment, add 1p1d c256 point

Job 23715 (c576, global_segment_size 160GB) still died silently after
~1h51m of steady serving with no CUDA-OOM/cuBLAS error, matching the
same host-RAM-exhaustion signature as job 23562 (180GB). Lower
global_segment_size to 140GB across all three GB200 mtp2 disagg
recipes as a further mitigation.

Job 23714 (c128, fixed decode/prefill sizing) completed successfully.
Its GPU KV-cache usage peaked at ~80% on prefill and ~39% on decode --
not maxed out -- so add the next concurrency point (256) on the same
1p1d dep8/dep8 topology rather than jumping to 2p1d: create
disagg-gb200-1p1d-dep8-dep8-c256-mtp2-agentic.yaml as a clone of the
working c128 file (decode max-num-seqs/max-cudagraph-capture-size and
prefill gpu-memory-utilization left unchanged, since DEP8 replication
already gives 8x the c128 file's per-rank max-num-seqs budget, well
above a conc=256 target) and add its conc-list: [256] search-space
entry to dsv4-fp4-gb200-dynamo-vllm-agentic-mtp2-disagg.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* chore: prepare pr 2619 ingest recovery

中文:准备 PR 2619 推理结果写入恢复。

* fix: recover pr 2619 production ingest

中文:恢复 PR 2619 的生产环境推理结果写入。

---------

Co-authored-by: Xin Li <xinli@nvidia.com>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

agentx AgentX benchmarks, recipes, and infrastructure full-sweep-enabled

Projects

Development

Successfully merging this pull request may close these issues.

2 participants