Skip to content

Add MiniMax M3 8k/1k Dynamo vLLM B300 EAGLE recipes / 新增 MiniMax M3 8k/1k Dynamo vLLM B300 EAGLE 配方#2182

Merged
Ankur-singh merged 9 commits into
mainfrom
hjjq/minimax
Jul 17, 2026
Merged

Add MiniMax M3 8k/1k Dynamo vLLM B300 EAGLE recipes / 新增 MiniMax M3 8k/1k Dynamo vLLM B300 EAGLE 配方#2182
Ankur-singh merged 9 commits into
mainfrom
hjjq/minimax

Conversation

@hjjq

@hjjq hjjq commented Jul 13, 2026

Copy link
Copy Markdown
Collaborator

This PR adds MiniMax M3 NVFP4 B300 Dynamo-vLLM disaggregated EAGLE3 recipes.

  • Uses vLLM container vllm/vllm-openai:nightly-8e981630c9336233ca9de91452f68918bddbc4e2
  • Uses EAGLE draft model Inferact/MiniMax-M3-EAGLE3-GQA

中文说明

本 PR 新增适用于 B300 的 MiniMax M3 NVFP4 Dynamo-vLLM 分离式 EAGLE3 配方。

  • 使用 vLLM 镜像 vllm/vllm-openai:nightly-8e981630c9336233ca9de91452f68918bddbc4e2
  • 使用 EAGLE 草稿模型 Inferact/MiniMax-M3-EAGLE3-GQA

中文:新增 MiniMax M3 NVFP4 在 B300 上的 Dynamo vLLM 分离式 EAGLE Pareto 配置,并使用官方 nightly 镜像与模型名称。
@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 关于重新运行失败任务的文档

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

hjjq added 2 commits July 13, 2026 16:09
中文:移除 MiniMax M3 提交配置中的注释,并更新性能变更日志的 PR 链接。
中文:将 MiniMax M3 Pareto 主配置和全部配方统一改为不带提交哈希的 vLLM nightly 镜像。
Comment thread runners/launch_b300-nv.sh Outdated
Comment on lines 79 to 92
elif [[ $FRAMEWORK == "dynamo-vllm" && $MODEL_PREFIX == "minimaxm3" && $PRECISION == "fp4" ]]; then
git clone --branch main --single-branch https://github.com/NVIDIA/srt-slurm.git "$SRT_REPO_DIR"
cd "$SRT_REPO_DIR" || exit 1
mkdir -p recipes/vllm/minimax-m3
cp -rT "$GITHUB_WORKSPACE/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3" recipes/vllm/minimax-m3
elif [[ $FRAMEWORK == "dynamo-vllm" && $MODEL_PREFIX == "minimaxm3" && $PRECISION == "fp8" ]]; then
git clone https://github.com/NVIDIA/srt-slurm.git "$SRT_REPO_DIR"
cd "$SRT_REPO_DIR" || exit 1
git checkout sa-submission-q2-2026
mkdir -p recipes/vllm/minimax-m3
cp -rT "$GITHUB_WORKSPACE/benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3" recipes/vllm/minimax-m3
if [[ $PRECISION == "fp8" ]]; then
SRTCTL_SETUP_SCRIPT="minimax-m3-vllm-fixes.sh"
fi
SRTCTL_SETUP_SCRIPT="minimax-m3-vllm-fixes.sh"
# NVIDIA/srt-slurm#38
git show 22d46ba9971615016d2339c9ffbc7b4597accfad --format= -- src/srtctl/core/ip_utils/get_node_ip.sh | git apply - || exit 1

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 fp4-only branch in runners/launch_b300-nv.sh (lines 79-92) is keyed only on MODEL_PREFIX==minimaxm3 && PRECISION==fp4 && FRAMEWORK==dynamo-vllm, which also matches the pre-existing, unrelated minimaxm3-fp4-b300-dynamo-vllm sweep in configs/nvidia-master.yaml (different image, router 1.3.0.dev20260614, recipes under b300-fp4/1k1k and 8k1k). That existing sweep is silently rerouted from the pinned sa-submission-q2-2026 branch (with the NVIDIA/srt-slurm#38 get_node_ip.sh patch) to unpinned srt-slurm main with no patch, and the same unscoped condition at line 187 also strips --no-preflight validation from it. Please scope both changes to the new MTP config (e.g. by CONFIG_FILE, router version, or image) so the pre-existing sweep is unaffected.

Extended reasoning...

What the bug is: The PR splits the previous combined elif [[ $FRAMEWORK == "dynamo-vllm" && $MODEL_PREFIX == "minimaxm3" && ( $PRECISION == "fp4" || $PRECISION == "fp8" ) ]] branch into two separate branches — one for fp4 and one for fp8. The new fp4-only branch was rewritten to support the new MTP/EAGLE3 recipe set this PR introduces, but the condition that selects it (FRAMEWORK==dynamo-vllm && MODEL_PREFIX==minimaxm3 && PRECISION==fp4) is not specific enough to distinguish "the new MTP sweep" from "any minimaxm3 fp4 dynamo-vllm sweep" — including the pre-existing, unrelated minimaxm3-fp4-b300-dynamo-vllm config already defined in configs/nvidia-master.yaml:12951.

The code path that triggers it: configs/nvidia-master.yaml:12951 defines minimaxm3-fp4-b300-dynamo-vllm with model-prefix: minimaxm3, precision: fp4, framework: dynamo-vllm — exactly the three keys the launcher branches on. It uses its own image (vllm-minimax-m3-perf-x86_64-13.0.1-8b00f41), its own router version (1.3.0.dev20260614), and recipes under b300-fp4/1k1k and b300-fp4/8k1k — none of which were touched by this PR. Before this PR, when that config ran, the launcher's combined fp4||fp8 branch cloned NVIDIA/srt-slurm, ran git checkout sa-submission-q2-2026, and unconditionally applied the NVIDIA/srt-slurm#38 get_node_ip.sh patch (only SRTCTL_SETUP_SCRIPT was fp8-gated). After this PR, that same config now falls into the new fp4-only branch (lines 79-84), which clones --branch main --single-branch with no checkout and no patch applied. Separately, the unscoped guard added at lines 187-189 (if [[ MODEL_PREFIX == minimaxm3 && PRECISION == fp4 ]]; then SRTCTL_APPLY_ARGS+=(--no-preflight); fi) also fires for this same pre-existing config, silently disabling srtctl's preflight validation for a sweep that previously ran with preflight enabled.

Why existing code doesn't prevent it: The launcher routes purely on MODEL_PREFIX/PRECISION/FRAMEWORK, which is shared, coarse-grained infrastructure — it has no way to distinguish "old fp4 sweep" from "new MTP fp4 sweep" using those three keys alone, since both configs share all three values. Nothing in the diff adds a discriminator (e.g. CONFIG_FILE path, router version, or image) to scope the new git-clone/patch logic or the --no-preflight flag to just the new MTP recipes.

Impact: If the pre-existing minimaxm3-fp4-b300-dynamo-vllm sweep is triggered after this PR merges, it silently builds against an unpinned, unvalidated srt-slurm main ref instead of the previously-tested sa-submission-q2-2026 branch, and loses the get_node_ip.sh IP-resolution patch it depended on. It also now skips srtctl's preflight node/health validation. Depending on whether main has diverged from sa-submission-q2-2026 in ways incompatible with the old recipe/setup flow, or lacks the #38 fix, this can cause node-IP resolution failures or let a bad node config slip past preflight and fail mid-run, wasting cluster time on the shared B300 runner.

How to fix: Scope the new branch condition (lines 79-84) and the --no-preflight guard (lines 187-189) more narrowly than MODEL_PREFIX/PRECISION/FRAMEWORK alone — e.g. gate on the CONFIG_FILE path (*-mtp recipes), the router version, or a dedicated env var passed from the new minimaxm3-fp4-b300-dynamo-vllm-mtp config key, so the old sweep keeps its original clone/patch/preflight behavior untouched.

Step-by-step proof:

  1. configs/nvidia-master.yaml:12951 defines minimaxm3-fp4-b300-dynamo-vllm with model-prefix: minimaxm3, precision: fp4, framework: dynamo-vllm.
  2. When this config's sweep runs, the launcher (runners/launch_b300-nv.sh) evaluates MODEL_PREFIX=minimaxm3, PRECISION=fp4, FRAMEWORK=dynamo-vllm against the elif chain.
  3. The new condition at line 79, [[ $FRAMEWORK == "dynamo-vllm" && $MODEL_PREFIX == "minimaxm3" && $PRECISION == "fp4" ]], evaluates true for this pre-existing config exactly as it does for the new MTP config — there is no key that differs between them in this condition.
  4. Execution enters lines 80-83: git clone --branch main --single-branch ..., no git checkout sa-submission-q2-2026, no git show ... | git apply for [NVIDIA] Add SGL B200 FP4 docker script #38.
  5. Separately, at line 187, [[ "$MODEL_PREFIX" == "minimaxm3" && "$PRECISION" == "fp4" ]] is also true, so --no-preflight is appended to SRTCTL_APPLY_ARGS for this same run.
  6. Net effect for a sweep the PR never intended to touch: it now builds against srt-slurm main (unpinned, no [NVIDIA] Add SGL B200 FP4 docker script #38 patch) and applies without srtctl preflight checks — a behavior change with no test coverage for the old recipe set against main.

Comment on lines +7 to +15
resources:
gpu_type: "b300"
gpus_per_node: 8
prefill_nodes: 1
decode_nodes: 1
prefill_workers: 2
decode_workers: 1
gpus_per_prefill: 2
gpus_per_decode: 4

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.

🟡 In this new 2p1d-dep2-dep4-eagle3-8k1k.yaml recipe, decode_nodes: 1 reserves a second b300 node even though the topology (2×DEP2 prefill + 1×DEP4 decode = 8 GPUs) fits exactly within one 8-GPU node, and colocation is enabled. Every other sibling recipe added in this same PR (e.g. 1p1d-dep2-dep4-eagle3-8k1k.yaml and 1p3d-tp2-tp2-eagle3-8k1k.yaml) sets decode_nodes: 0 for an equal-or-larger single-node-fitting topology, so this looks like a copy-paste leftover from the DEP8-decode variant it was likely derived from.

Extended reasoning...

The bug. benchmarks/multi_node/srt-slurm-recipes/vllm/minimax-m3/b300-fp4/8k1k/mtp/2p1d-dep2-dep4-eagle3-8k1k.yaml sets prefill_nodes: 1, decode_nodes: 1, prefill_workers: 2 (2 GPUs each → 4 GPUs) and decode_workers: 1 (4 GPUs) — total 8 GPUs. gpus_per_node: 8, so the whole topology fits in exactly one b300 node, and both allow_prefill_decode_colocation and allow_prefill_decode_colocation_across_nodes are true, meaning decode is explicitly permitted to share the prefill node. prefill_nodes + decode_nodes = 2 therefore reserves a second, entirely unused b300 node (16 GPUs reserved for an 8-GPU job).\n\nEvidence this is a real inconsistency and not just a stylistic quirk. Within this exact PR, 8 sibling recipes are added in the same mtp/ directory, and every one of them follows a strict rule: prefill_nodes + decode_nodes == ceil(total_gpus / gpus_per_node) given the packing enabled by the colocation flags. Concretely: 1p1d-dep2-dep4 (2+4=6 GPUs) → decode_nodes=0; 1p3d-tp2-tp2 (2+6=8 GPUs) → decode_nodes=0; 1p2d-tp4-tp4 (4+8=12) → decode_nodes=1 (1+1=2 nodes, correct since 12>8); 1p7d-tp4-tp4 (4+28=32) → decode_nodes=3 (4 nodes total, correct). The 2p1d recipe is the only one of the nine new files that breaks this pattern — its 8-GPU total should map to 1 total node (decode_nodes=0), matching its direct sibling 1p1d-dep2-dep4 and 1p3d-tp2-tp2, both of which also land exactly at a node boundary.\n\nLikely root cause. The existing (pre-PR) 1k1k recipe 2p1d-dep2-dep8-1k1k.yaml has the same worker shape (2×DEP2 prefill + 1 decode worker) but gpus_per_decode: 8, so its decode worker legitimately cannot fit in the prefill node's remaining 4 GPUs and correctly needs decode_nodes: 1. This new recipe appears to have been derived from that file by shrinking the decode worker from DEP8 to DEP4, but decode_nodes was left at 1 instead of being dropped to 0 — a copy-paste-style leftover.\n\nAddressing the counterargument. One reviewer pointed out that an older, unrelated recipe in this repo — b300-fp4/8k1k/1p1d-dep2-tp4-8k1k.yaml (not touched by this PR, added earlier) — has an identical GPU layout (2+4=6 GPUs, one-node-fittable, allow_prefill_decode_colocation: true) yet also sets decode_nodes: 1, arguing this is 'the norm' rather than a bug. That file is real and does contradict the ceil-based rule too — but it's evidence of a pre-existing, unrelated inconsistency elsewhere in the repo, not evidence that this PR's own internal convention (which every other new file in this PR follows exactly) was intentional here. The stronger, more local signal is that this PR's own freshly-authored, directly-adjacent sibling (1p1d-dep2-dep4-eagle3-8k1k.yaml) uses decode_nodes=0 for a smaller topology, making the 2p1d file the clear outlier among files introduced in this very diff.\n\nImpact and fix. This does not crash the job or corrupt the benchmark result — the reported GPU/worker counts used for the sa-bench metrics come from prefill_workers/decode_workers × gpus_per_* in the master config, not from the node reservation. The concrete cost is wasted cluster allocation (an extra b300 node sits idle for the duration of the sweep) and, if allow_prefill_decode_colocation_across_nodes causes the scheduler to actually spread prefill and decode across the two reserved nodes instead of packing them, it could shift KV transfer from intra-node NVLink to inter-node UCX/NIXL, changing the measured latency profile relative to the intended single-node topology. The fix is simply to set decode_nodes: 0 in this file, consistent with its sibling 1p1d-dep2-dep4-eagle3-8k1k.yaml and 1p3d-tp2-tp2-eagle3-8k1k.yaml.

Hanjie Qiu and others added 4 commits July 17, 2026 07:13
Merge the latest origin/main and replace the older EAGLE3 sweep with six measured GQA-EAGLE3 Pareto topologies using only Pareto-optimal concurrencies. Preserve the canonical model and floating nightly container aliases.

中文:合并最新的 origin/main,并将旧版 EAGLE3 扫描替换为六个实测 GQA-EAGLE3 Pareto 拓扑,仅保留 Pareto 最优并发点;同时沿用当前提交中的规范模型别名和浮动 nightly 镜像别名。
@github-actions

Copy link
Copy Markdown
Contributor

@hjjq hjjq changed the title [DoNotMerge] Add MiniMax M3 vLLM B300 disagg EAGLE Add MiniMax M3 vLLM B300 disagg EAGLE Jul 17, 2026
@github-actions

Copy link
Copy Markdown
Contributor

@hjjq hjjq changed the title Add MiniMax M3 vLLM B300 disagg EAGLE Add MiniMax M3 8k/1k Dynamo vLLM B300 EAGLE recipes Jul 17, 2026
@Ankur-singh Ankur-singh changed the title Add MiniMax M3 8k/1k Dynamo vLLM B300 EAGLE recipes Add MiniMax M3 8k/1k Dynamo vLLM B300 EAGLE recipes / 新增 MiniMax M3 8k/1k Dynamo vLLM B300 EAGLE 配方 Jul 17, 2026
@Ankur-singh

Copy link
Copy Markdown
Collaborator

/reuse-sweep-run 29591495842

@Ankur-singh

Ankur-singh commented Jul 17, 2026

Copy link
Copy Markdown
Collaborator

As a PR reviewer and CODEOWNER, I have reviewed this and have:

  • Verified that as of the moment of typing this, this is the latest version of PR_REVIEW_CHECKLIST.md
  • Verified that the general code quality meets the InferenceX standard and does not make the code quality any worse.
  • Verified that this PR has passed PR validation. GitHub Actions workflow
  • Verified that this PR passes evals. GitHub Actions workflow
  • Verified that speculative decoding PRs uses chat templates to align the AL distribution to real world
  • For agentic workloads: verified that speculative-decoding configs (EAGLE / MTP / draft models) run with simulated synthetic acceptance, with the acceptance-length value taken from the committed golden AL curve in golden_al_distribution/ for that model, thinking mode, and draft length. A submission may choose any supported draft length, but it may not substitute a different acceptance target.
  • Verified that the model architecture isn't changed with benchmark hacks like using --hf-overrides to skipping indexer for every x layers on models that don't natively support this. As a general rule, we won't accept optimizations that reduces the number of model architecture FLOPs. Anything that makes that same computation run faster is fair game; FLOPs at lower precisions is fine, given that the config passes private evals. As an general north star princple, we should only use optimizations which is used in production by customers that care about accuracy
  • If an company claims that they support vLLM/SGLang as first class LLM inference engines on their hardware, I have verified that the respective vLLM submission made using upstream https://hub.docker.com/u/vllm docker repo, upstream SGLang https://hub.docker.com/u/lmsysorg docker repo. The only exceptions are for new hardware, such as MI455X UALoE72, Vera Rubin NVL72, Rubin NVL8, etc., and for new model architectures where there is an actual reason why vLLM/SGLang does not fundamentally support them yet as supported by vLLM/SGLang community maintainers
  • If an company claims that they support vLLM/SGLang as first class upstream in-tree LLM inference engines on their hardware, I have have verified that the respective vLLM/SGLang submission has been made before additional frameworks (TRT-LLM, ATOM, etc.). The only exceptions are for new hardware, such as MI455X UALoE72, Vera Rubin NVL72, Rubin NVL8, etc., and for new model architectures where there is an actual reason why vLLM/SGLang does not fundamentally support them yet as supported by vLLM/SGLang community maintainers
  • Verified that every single-node vLLM/SGLang recipe in this PR is documented in the official vLLM recipes and/or the SGLang cookbook:
    • I linked the corresponding upstream PR in the vLLM recipe repo or SGLang repo and verified that it is MERGED before this InferenceX PR merges. An opened, draft, or closed-without-merge upstream PR does not satisfy this requirement. If the matching recipe was already published, I linked the published recipe/cookbook page in the additional detail section below.
  • Verified that this PR does not patch the inference engine or serving stack — the pinned image must run as shipped. This covers .patch files / git apply / patch, inline patches embedded in benchmark scripts (e.g. a python3/sed heredoc that rewrites installed engine sources before serving), in-place edits of site-packages, monkey-patching, overwriting container files, and installing forked/rebuilt engine wheels on top of the pinned image. The only exception is a patch covered by a filled-out waiver at docs/waiver/<PR_NUMBER>.md — named after the PR that introduces the patch and filed in that same PR, stating what is patched, why the unmodified upstream image cannot run this benchmark, the upstream PR/issue link, and the removal plan — which I have linked below in the additional detail section.
  • If any of the above criteria cannot reasonably be satisfied, I have provided additional reasoning below.

Additional detail section:

  • Exact-head validation and evals passed: https://github.com/SemiAnalysisAI/InferenceX/actions/runs/29591495842
  • This is a multi-node Dynamo-vLLM submission; the single-node upstream recipe requirement is not applicable. The upstream vLLM-first requirement is satisfied by the existing minimaxm3-fp4-b300-vllm-mtp configuration on main.
  • This is not an AgentX workload; the golden synthetic-acceptance requirement is not applicable.

Signed: Ankur-singh

@Klaud-Cold

Copy link
Copy Markdown
Collaborator

✅✅✅ Verdict: PASS ✅✅✅

✅ Check 0 (CODEOWNER): PASS — Ankur-singh is a listed owner of configs/nvidia-master.yaml (CODEOWNERS); remaining changed paths fall under the catch-all, which a recognized CODEOWNER satisfies.
✅ Check 1 (passing sweep on in-PR commit): PASS — the PR head e1955fe itself carries run 29591495842 with all 6 multi-node 8k1k / benchmark jobs and all 6 multi-node eval / jobs concluded success (executed, not skipped).
✅ Check 2 (evals pass): PASS — aggregated eval artifact from run 29591495842 shows GSM8K em_strict 0.922–0.961 across all six disagg topologies (repo bar: 0.90 default in utils/evals/thresholds.yaml), n_eff 1319, on the same image vllm/vllm-openai:nightly-8e981630c9336233ca9de91452f68918bddbc4e2 as this PR's config.
➖ Check 3 (upstream recipe link): N/A — disaggregated/multi-node submission (all recipes under benchmarks/multi_node/**, master entry has multinode: true + disagg: true, framework dynamo-vllm); the recipe-link requirement applies to single-node recipes only.
✅ Check 4 (reuse command): PASS — /reuse-sweep-run 29591495842 posted by Ankur-singh (COLLABORATOR).
✅ Check 5 (latest checklist template): PASS — every item in the current docs/PR_REVIEW_CHECKLIST.md template is present and checked in the sign-off.
✅ Check 6 (upstream image / engine-first): PASS — image is upstream vllm/vllm-openai:nightly-8e981630…; the non-vLLM framework (dynamo-vllm) is preceded by the existing minimaxm3-fp4-b300-vllm-mtp (framework: vllm, runner: b300) on main, as the sign-off states.
✅ Check 7 (no architecture hacks): PASS — no --hf-overrides/model-config edits; language-model-only: true and indexer_kv_dtype: fp8 match the already-merged minimax-m3 B300 recipes and do not remove architecture FLOPs (kv-dtype precision is allowed with passing evals).
✅ Check 8 (spec-decode chat templates): PASS — all six EAGLE3 configs benchmark via sa-bench with use_chat_template: true.
✅ Check 9 (no engine patches): PASS — no .patch/sed/heredoc engine rewrites; the pinned srt-slurm clone and dynamo install are orchestration/frontend for the declared dynamo-vllm framework, and the pinned vLLM image runs as shipped.
➖ Check 10 (agentic golden AL): N/A — spec-decode but non-agentic (fixed-seq-len 8k1k benchmarks, not under agentic/); no synthetic-acceptance knobs present, so real-traffic acceptance per Check 8 applies.

@github-actions

Copy link
Copy Markdown
Contributor

@Ankur-singh

Copy link
Copy Markdown
Collaborator

/reuse-sweep-run

1 similar comment
@Ankur-singh

Copy link
Copy Markdown
Collaborator

/reuse-sweep-run

@Ankur-singh

Copy link
Copy Markdown
Collaborator

/reuse-sweep-run

@Klaud-Cold

Copy link
Copy Markdown
Collaborator

✅✅✅ Verdict: PASS ✅✅✅

✅ Check 0 (CODEOWNER): PASS — Ankur-singh is a listed owner of configs/nvidia-master.yaml; all other changed paths fall under the catch-all, which any recognized CODEOWNER covers.
✅ Check 1 (sweep on in-PR commit): PASS — in-PR commit e1955fe2 carries executed, green multi-node 8k1k / and multi-node eval / check-runs for all 6 configs (single-node lanes correctly skipped; this PR is multi-node only): run 29591495842.
✅ Check 2 (evals pass): PASS — downloaded eval_results_all: 6/6 disagg topologies scored GSM8K em_strict 0.9507–0.9606 (n_eff=1319), meeting the MiniMax-M3 bar, on the PR's exact image vllm/vllm-openai:nightly-8e981630c9336233ca9de91452f68918bddbc4e2.
➖ Check 3 (recipe link): N/A — disaggregated/multi-node submission (benchmarks/multi_node/**, multinode: true, disagg: true, framework: dynamo-vllm); the recipe-link requirement applies to single-node recipes only.
✅ Check 4 (reuse command): PASS — /reuse-sweep-run 29591495842 posted by Ankur-singh (COLLABORATOR).
✅ Check 5 (latest checklist): PASS — sign-off contains every item of the current docs/PR_REVIEW_CHECKLIST.md template, all checked.
✅ Check 6 (upstream image / engine-first): PASS — image is upstream vllm/vllm-openai:nightly-…; vLLM-first satisfied by existing minimaxm3-fp4-b300-vllm-mtp (framework: vllm, runner b300) on main.
✅ Check 7 (no architecture hacks): PASS — no --hf-overrides/model-config edits; indexer_kv_dtype: fp8 and language-model-only are precision/loading knobs already used by the existing MiniMax-M3 B300 recipes on main.
✅ Check 8 (spec-decode via chat template): PASS — all 6 EAGLE3 recipes benchmark via sa-bench with use_chat_template: true.
✅ Check 9 (no engine patches): PASS — no patches/heredocs/engine-wheel installs; the launcher change only pins the NVIDIA srt-slurm orchestration repo and copies recipe YAMLs (--no-preflight is harness-side).
➖ Check 10 (agentic golden AL): N/A — no agentic spec-decode configs (8k1k fixed-seq-len only), and no synthetic-acceptance knobs on these non-agentic configs.

@Ankur-singh
Ankur-singh merged commit d85fa13 into main Jul 17, 2026
25 checks passed
@Ankur-singh
Ankur-singh deleted the hjjq/minimax branch July 17, 2026 20:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Development

Successfully merging this pull request may close these issues.

5 participants