Skip to content

[Klaud Cold] minimaxm3-fp4-b200-dynamo-vllm-mtp: day-zero B200 disagg EAGLE3 recipes (mirrored from B300) / 新增 MiniMax M3 NVFP4 B200 分离式 EAGLE3 配方 - #2462

Open
xinli-sw wants to merge 6 commits into
mainfrom
feat/minimaxm3-fp4-b200-dynamo-vllm-mtp-v2
Open

[Klaud Cold] minimaxm3-fp4-b200-dynamo-vllm-mtp: day-zero B200 disagg EAGLE3 recipes (mirrored from B300) / 新增 MiniMax M3 NVFP4 B200 分离式 EAGLE3 配方#2462
xinli-sw wants to merge 6 commits into
mainfrom
feat/minimaxm3-fp4-b200-dynamo-vllm-mtp-v2

Conversation

@xinli-sw

@xinli-sw xinli-sw commented Aug 3, 2026

Copy link
Copy Markdown
Collaborator

Summary

Fresh start for B200 disagg MTP. Directly mirrors the working B300 disagg EAGLE3 recipe set — 6 YAML files with only gpu_type: b200 changed.

  • 6 srt-slurm recipe YAMLs under benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/mtp/
  • minimaxm3-fp4-b200-dynamo-vllm-mtp master config entry (runner: b200-multinode), mirrored from B300 MTP

中文说明

B200 分离式 MTP 全新起点,直接复用已验证的 B300 分离式 EAGLE3 配方集,仅将 gpu_type 改为 b200

@github-actions

github-actions Bot commented Aug 3, 2026

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 关于重新运行失败任务的文档

Comment thread perf-changelog.yaml Outdated
Comment on lines +5358 to +5363

- config-keys:
- minimaxm3-fp4-b200-dynamo-vllm-mtp
description:
- "Add MiniMax M3 NVFP4 B200 disagg EAGLE3 MTP recipes, mirrored from B300"
pr-link: TBD

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.

🟡 The new perf-changelog.yaml entry sets pr-link: TBD instead of a real PR URL — every other entry in the file uses https://github.com/SemiAnalysisAI/InferenceX/pull/<N>, matching the template documented in AGENTS.md. Since this is PR #2462, it should read https://github.com/SemiAnalysisAI/InferenceX/pull/2462.

Extended reasoning...

The last entry added to perf-changelog.yaml (for the minimaxm3-fp4-b200-dynamo-vllm-mtp config) sets pr-link: TBD, whereas every prior entry in this ~5360-line file uses a concrete https://github.com/SemiAnalysisAI/InferenceX/pull/<N> URL. grep -c 'pr-link:\s*TBD' perf-changelog.yaml returns exactly 1 — this is the only placeholder value in the file.

The convention is also explicit in AGENTS.md, which documents the changelog entry template with pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/XXX — i.e. the placeholder is meant to take the shape of a real URL with a stand-in number, not the bare string TBD. Since this PR is #2462, the correct value is https://github.com/SemiAnalysisAI/InferenceX/pull/2462.

Step-by-step:

  1. Open perf-changelog.yaml and search for pr-link: — every one of the ~600+ prior entries resolves to a full GitHub pull URL.
  2. The new entry at the bottom of the file (lines 5358-5363) is the sole exception: pr-link: TBD.
  3. Any tooling that treats pr-link as a parseable URL (e.g. to link back to the originating PR from a changelog viewer, or to validate changelog entries in CI) would fail or produce a broken link for this one entry.
  4. Since the PR author already knows the PR number ahead of merge in this repo's workflow (branch name/PR title references [Klaud Cold] minimaxm3-fp4-b200-dynamo-vllm-mtp: day-zero B200 disagg EAGLE3 recipes (mirrored from B300) / 新增 MiniMax M3 NVFP4 B200 分离式 EAGLE3 配方 #2462), there's no reason to leave it as a placeholder — it can be filled in directly as https://github.com/SemiAnalysisAI/InferenceX/pull/2462.

This has no functional impact on the benchmark sweep itself — the sweep triggers off config-keys, not pr-link — so it's purely a documentation/traceability nit. Fix is a one-line change.

Comment on lines +7770 to +7799
minimaxm3-fp4-b200-dynamo-vllm-mtp:
image: vllm/vllm-openai:nightly-4080263bb2c5d10deac17aaeb88e0823bc35bca9
model: nvidia/MiniMax-M3-NVFP4
model-prefix: minimaxm3
runner: b200-multinode
precision: fp4
framework: dynamo-vllm
router: { name: dynamo-router, version: "1.3.0.dev20260710" }
kv-p2p-transfer: nixl
multinode: true
disagg: true
scenarios:
fixed-seq-len:
- isl: 8192
osl: 1024
search-space:
- spec-decoding: "mtp"
conc-list: [24, 48]
prefill:
num-worker: 1
tp: 2
ep: 2
dp-attn: true
additional-settings:
- "CONFIG_FILE=recipes/vllm/minimax-m3/b200-fp4/8k1k/mtp/1p6d-dep2-tp4-eagle3-8k1k.yaml"
decode:
num-worker: 6
tp: 4
ep: 1
dp-attn: false

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.

🟡 The new 2p1d-dep2-dep4-eagle3-8k1k.yaml recipe file is never referenced by a CONFIG_FILE= entry in configs/nvidia-master.yaml, so it's dead code that will never run in the sweep. On B300 this same scenario is wired via a separate minimaxm3-fp4-b300-dynamo-vllm-mtp-legacy-dep4 master-config entry; adding the analogous minimaxm3-fp4-b200-dynamo-vllm-mtp-legacy-dep4 entry (decode ep:4, dp-attn:true, conc-list [256,512]) would complete the mirror.

Extended reasoning...

The bug: This PR adds 6 new B200 recipe YAMLs under benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b200-fp4/8k1k/mtp/, but the new minimaxm3-fp4-b200-dynamo-vllm-mtp master-config block in configs/nvidia-master.yaml (lines 7770-7856) only contains 5 search-space entries, each pointing at one of the recipe files via CONFIG_FILE=...1p6d, 1p4d, 1p2d, 1p1d, and 2p3d. The sixth file, 2p1d-dep2-dep4-eagle3-8k1k.yaml, is never referenced anywhere.

Proof:

$ grep -c "2p1d-dep2-dep4-eagle3-8k1k" configs/nvidia-master.yaml
0

Every other new file appears exactly once as a CONFIG_FILE= value inside the minimaxm3-fp4-b200-dynamo-vllm-mtp block; 2p1d-dep2-dep4-eagle3-8k1k.yaml appears zero times in the master config. Since the sweep runner only executes recipes that are reachable through a CONFIG_FILE= reference in a search-space entry, this file is orphaned — it will sit in the repo and never be picked up by any benchmark run.

Why this happened / why B300 doesn't have the same gap: The PR description says it "directly mirrors the working B300 disagg EAGLE3 recipe set." Looking at the B300 side (minimaxm3-fp4-b300-dynamo-vllm-mtp, further down in the same file) confirms the same 5 topologies (1p6d/1p4d/1p2d/1p1d/2p3d) are wired inside that one block — but the 2p1d/dep4 scenario is wired through a separate, second master-config entry: minimaxm3-fp4-b300-dynamo-vllm-mtp-legacy-dep4 (conc-list [256, 512], decode ep:4, dp-attn:true), which matches the B200 file's own concurrencies: "256x512" and decode data-parallel-size: 4 / enable-expert-parallel: true settings almost exactly. This PR never created the B200 equivalent of that second entry, so the sixth recipe has no home.

Supporting evidence that this file really was intended to be wired up (not an intentional but currently-unused addition): the new 2p1d-dep2-dep4-eagle3-8k1k.yaml uses a distinct container image (nightly-8e981630c9336233ca9de91452f68918bddbc4e2) that matches the B300 -legacy-dep4 entry's image, whereas all 5 of the other new B200 files use nightly-4080263bb2c5d10deac17aaeb88e0823bc35bca9. That's a strong signal the file was copied specifically to mirror the B300 legacy-dep4 recipe, and the corresponding master-config wiring was simply forgotten.

Impact: Nothing crashes and no other config is broken — this is a silent coverage gap, not a functional regression. The practical effect is that the B200 dep4/2p1d disaggregation topology (concurrencies 256 and 512) will never be benchmarked, leaving this PR's "day-zero" B200 recipe set incomplete relative to its stated goal of mirroring all 6 B300 files.

Fix: Add a minimaxm3-fp4-b200-dynamo-vllm-mtp-legacy-dep4 master-config entry analogous to minimaxm3-fp4-b300-dynamo-vllm-mtp-legacy-dep4, referencing CONFIG_FILE=recipes/vllm/minimax-m3/b200-fp4/8k1k/mtp/2p1d-dep2-dep4-eagle3-8k1k.yaml with decode ep:4/dp-attn:true and conc-list: [256, 512]. Alternatively, if the dep4 topology isn't actually needed yet for B200, delete the unused recipe file to avoid leaving dead code in the tree.

@github-actions

github-actions Bot commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

@github-actions

github-actions Bot commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

@github-actions

github-actions Bot commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Status: No status

Development

Successfully merging this pull request may close these issues.

1 participant