[NV] minimax-m3-gb300-dynamo: nightly image + 2xDEP8 decode to 1xDEP16 / [NV] minimax-m3-gb300-dynamo:nightly 镜像 + 2×DEP8 解码合并为 1×DEP16 - #2340
Conversation
…DEP8 decode to 1xDEP16 minimaxm3-fp8-gb300-dynamo-vllm: - image -> vllm/vllm-openai:nightly-4080263bb2c5d10deac17aaeb88e0823bc35bca9 - dynamo -> 1.3.0.dev20260710 (recipe files) - drop minimax-m3-gb300-vllm-fixes.sh setup patch + launcher wiring (shipped in the nightly image) - the one 2xDEP8 decode (3p2d, conc 512) -> 1xDEP16 (decode_workers 2->1, gpus_per_decode 8->16, data-parallel-size 8->16); recipe renamed 3p2d-dep2-dep8 -> 3p1d-dep2-dep16
|
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 For PR verification, add the 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 模板,包括保留英文语句 如需进行 PR 验证,请为此 PR 添加 PR 作者有责任确保合并后所有 GitHub Action 任务完全通过。 很多时候失败只是偶发抖动(flake),重新运行失败的任务即可解决。参见 GitHub 关于重新运行失败任务的文档 |
There was a problem hiding this comment.
Beyond the inline nit, I also checked whether dropping minimax-m3-gb300-vllm-fixes.sh (the FlashInfer all-reduce force_oneshot_support patch and the MSA sparse_attention_msa.py .contiguous() workaround) removes a fix still needed at runtime — ruled out, since this PR bumps to a newer nightly vLLM image that the PR description states now ships both patches upstream.
Extended reasoning...
configs/nvidia-master.yaml is CODEOWNER-owned (per .github/CODEOWNERS: @Ankur-singh @kedarpotdar-nv @InferenceX/core), so per policy this isn't auto-approved regardless of how mechanical the change looks. Beyond the inline nit finding, I read the diff for the vllm-fixes.sh removal (the launcher's --setup-script wiring in runners/launch_gb300-nv.sh is cleanly removed alongside it, and no other recipe references the script) and confirmed there's no orphaned reference or now-broken code path.
| name: "minimax-m3-vllm-disagg-gb300-3p2d-dep2-dep8-fp8-8k1k" | ||
| name: "minimax-m3-vllm-disagg-gb300-3p1d-dep2-dep16-fp8-8k1k" | ||
|
|
||
| # 3P DEP2 prefill (TP1 DP2 EP, 2 GPU/worker) + 2D DEP8 decode (TP1 DP8 EP, 8 GPU/worker = 2 nodes each). |
There was a problem hiding this comment.
🟡 In benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3-gb300-fp8/8k1k/3p1d-dep2-dep16-8k1k.yaml, the descriptive comment on line 3 still says '2D DEP8 decode (TP1 DP8 EP, 8 GPU/worker = 2 nodes each)', describing the pre-PR topology. This PR collapsed decode to a single DEP16 worker (decode_workers 2->1, gpus_per_decode 8->16, data-parallel-size 8->16) and correctly updated the name: field and the matching comment in configs/nvidia-master.yaml, but missed this in-file comment. It's a documentation-only inconsistency with no runtime effect — worth a quick fix before merge for clarity.
Extended reasoning...
What's wrong: Line 3 of 3p1d-dep2-dep16-8k1k.yaml (renamed from 3p2d-dep2-dep8-8k1k.yaml) reads:
# 3P DEP2 prefill (TP1 DP2 EP, 2 GPU/worker) + 2D DEP8 decode (TP1 DP8 EP, 8 GPU/worker = 2 nodes each).
This describes the pre-PR decode topology: two DEP8 decode workers, each spanning 2 nodes (2 x 8 GPU = 16 GPU total across 2 workers). That topology no longer exists in this file.
What actually changed: The PR's decode-collapse diff for this file is:
prefill_workers: 3
- decode_workers: 2
+ decode_workers: 1
gpus_per_prefill: 2
- gpus_per_decode: 8
+ gpus_per_decode: 16
...
- data-parallel-size: 8
+ data-parallel-size: 16
So post-PR the decode side is a single DEP16 worker (TP1 DP16 EP, 16 GPU spanning 4 nodes) — not 2D DEP8. The comment on line 3 is now self-contradictory with the resources: block a few lines below it (decode_workers: 1, gpus_per_decode: 16) and with the vllm_config.decode block (data-parallel-size: 16).
Why this wasn't caught elsewhere: the author clearly intended to keep documentation in sync — they updated the name: field from ...3p2d-dep2-dep8... to ...3p1d-dep2-dep16..., and they updated the analogous comment in configs/nvidia-master.yaml from # 3p2d DEP2+DEP8, 6n to # 3p1d DEP2+DEP16, 6n. Both of those sibling annotations were fixed, which is strong evidence this in-file comment on line 3 was simply missed rather than intentionally left as-is.
Proof walkthrough:
- Pre-PR:
decode_workers: 2,gpus_per_decode: 8→ 2 workers x 8 GPU = 16 GPU, each worker = 8/4 = 2 nodes. Comment ('2D DEP8 ... 2 nodes each') matches. - Post-PR diff:
decode_workers 2->1,gpus_per_decode 8->16,data-parallel-size 8->16. - Post-PR: 1 worker x 16 GPU = 16 GPU total, spanning 16/4 = 4 nodes for that single worker.
- Line 3 comment still says '2D DEP8 decode ... 8 GPU/worker = 2 nodes each' — describing state (1), not the actual state (3).
- Line 5 ('Nodes: 2 prefill + 4 decode') is unaffected and remains correct, since total decode node count (4) didn't change — only the fix on line 3 is needed.
Impact: This is a comment-only defect — the executable resources: and vllm_config: blocks are correct, so the recipe runs with the intended 1xDEP16 topology regardless. The only harm is to a future reader (or another automation adapting this recipe) who trusts the comment over the config and misunderstands the decode topology.
Fix: Update line 3 to match the pattern already used in configs/nvidia-master.yaml, e.g.:
# 3P DEP2 prefill (TP1 DP2 EP, 2 GPU/worker) + 1D DEP16 decode (TP1 DP16 EP, 16 GPU/worker = 4 nodes).
Severity is nit since it has zero effect on execution or benchmark results — it is purely a stale explanatory comment.
|
see unofficial run visualizer at https://inferencex.semianalysis.com/inference?unofficialRun=30208366514 |
|
/reuse-sweep-run |
|
As a PR reviewer and CODEOWNER, I have reviewed this and have:
Additional detail section:
Signed: |
✅✅✅ Verdict: PASS ✅✅✅✅ Check 0 (CODEOWNER): PASS — |
|
/reuse-sweep-run |
# Conflicts: # perf-changelog.yaml
✅✅✅ Verdict: PASS ✅✅✅✅ Check 0 (CODEOWNER): PASS — |
Summary
GB300 disaggregated (
minimaxm3-fp8-gb300-dynamo-vllm) — same treatment as the GB200 PR:vllm/vllm-openai:nightly-4080263bb2c5d10deac17aaeb88e0823bc35bca9and dynamo to1.3.0.dev20260710minimax-m3-gb300-vllm-fixes.shsetup patch and its launcher wiring — the fix ships in the nightly image3p2d, conc 512) collapses into a single DEP16 worker —decode_workers 2→1,gpus_per_decode 8→16,data-parallel-size 8→16(decode still 4 nodes / 16 GPU). Recipe renamed3p2d-dep2-dep8→3p1d-dep2-dep16. The remaining decodes are 1×DEP8 or TEP and are unchanged.中文说明
GB300 分离式推理配置(
minimaxm3-fp8-gb300-dynamo-vllm)——采用与 GB200 PR 相同的调整:vllm/vllm-openai:nightly-4080263bb2c5d10deac17aaeb88e0823bc35bca9,并将 Dynamo 升级至1.3.0.dev20260710minimax-m3-gb300-vllm-fixes.shsetup patch 及其启动器接线——相关修复已包含在 nightly 镜像中3p2d,并发度 512)合并为单个 DEP16 worker——decode_workers 2→1、gpus_per_decode 8→16、data-parallel-size 8→16(解码侧仍使用 4 个节点 / 16 张 GPU)。配方由3p2d-dep2-dep8重命名为3p1d-dep2-dep16。其余解码分支仍为 1×DEP8 或 TEP,保持不变。