Skip to content

Use latest configs for MiniMax M3.1 GB300 AgentX / 更新 MiniMax M3.1 GB300 AgentX 配置 - #4468

Open
xinli-sw wants to merge 18 commits into
mainfrom
codex/minimax-m31-gb300-configs
Open

xinli-sw wants to merge 18 commits into
mainfrom
codex/minimax-m31-gb300-configs

Conversation

@xinli-sw

@xinli-sw xinli-sw commented Oct 24, 2026 •

Copy link
Copy Markdown
Collaborator

Use latest configs for MiniMax M3.1 GB300 AgentX submission.

中文

更新 MiniMax M3.1 GB300 AgentX 提交配置。

AI model disclosure

Prepared by Codex with delegated agents (exact model/version identifiers could not be verified from the runtime) and Claude Opus 5.5 (claude-opus-5-5).

🤖 Generated with Claude Code

@github-actions

Copy link
Copy Markdown
Contributor

Thanks for the contribution!

  • Review: If this PR changes files owned by someone other than a repository admin or @SemiAnalysisAI/core, ask one eligible CODEOWNER to complete the latest PR_REVIEW_CHECKLIST.md before contacting a core maintainer on Slack. Follow the template exactly, including As a PR reviewer and CODEOWNER, I have reviewed this and have, so sign-off verification triggers.
  • PR verification: Sweeps run only when the PR appends an inferencex-e2e/perf-changelog.yaml entry and carries exactly one primary label: full-sweep-fail-fast (strongly recommended; canary plus per-matrix fail-fast), full-sweep-enabled (canary; matrix jobs continue after a failure), or non-canary-full-sweep-enabled (no canary or fail-fast). The modifiers all-evals, evals-only, and agentx-fast require a primary label. On fork PRs, a maintainer applies the label. See sweep labels and reuse.
  • After merging: PR authors must ensure all GitHub Actions jobs pass. Transient failures often pass on rerun; see how to rerun failed jobs.
中文

感谢你的贡献!

  • **审阅:**如果 PR 修改的文件归属于仓库管理员及 @SemiAnalysisAI/core 之外的 CODEOWNER,请先联系一位有资格的 CODEOWNER 填写最新的 PR_REVIEW_CHECKLIST.md,再通过 Slack 联系核心维护者。必须严格遵循模板,并保留 As a PR reviewer and CODEOWNER, I have reviewed this and have,才能触发签核验证。
  • **PR 验证:**只有当 PR 在 inferencex-e2e/perf-changelog.yaml 末尾追加了条目,并且恰好带有一个主标签时,才会运行扫描:full-sweep-fail-fast(强烈推荐;canary 加逐矩阵 fail-fast)、full-sweep-enabled(有 canary;矩阵任务在失败后继续运行)或 non-canary-full-sweep-enabled(无 canary,也无 fail-fast)。修饰标签 all-evals、evals-only 和 agentx-fast 必须与主标签一起使用。fork PR 的标签由维护者添加。参见扫描标签与复用。
  • **合并后:**PR 作者必须确保所有 GitHub Actions 任务通过。临时性失败通常可以通过重新运行恢复;参见重新运行失败任务的说明。

@xinli-sw
xinli-sw force-pushed the codex/minimax-m31-gb300-configs branch from 65ddfae to 606eac8 Compare October 24, 2026 13:29
@xinli-sw xinli-sw added the non-canary-full-sweep-enabled Run the full sweep without the canary gate (full search space, no trim) label Oct 24, 2026

@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.

Findings marked 🟡 are optional suggestions and need no follow-up push.

args:
tensor-parallel-size: 4
max-num-seqs: 96
kv-transfer-config: '{"kv_connector":"SimpleCPUOffloadConnector","kv_role":"kv_both","kv_connector_extra_config":{"cpu_bytes_to_use":964000000000,"lazy_offload":true}}'

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 two TP4 points (conc 64 and 96) pin almost all of a GB300 node's job memory as KV pool, so they can be OOM-killed at startup or under load. cpu_bytes_to_use 964000000000 is 919,346 MiB. The exclusive job gets 920,000 MiB, so about 650 MiB is left for every vLLM process and the client. Fix: keep a real margin for the TP4 pool, e.g. dram-utilization near 0.85-0.9 with cpu_bytes_to_use to match. Other full-node pools use 0.80-0.95. Same pattern at 2 sites (agg-variants.yaml:72, agg-variants.yaml:97); master:8901 sets the 1.0.

Why this was flagged

The TP4 master rows at inferencex-e2e/configs/nvidia-master.yaml:8904 and :8906 sit under dram-utilization: 1.0 (:8901) on cluster:gb300-nv. They select override_tp4_c64 and override_tp4_c96, which set cpu_bytes_to_use to 964000000000 (agg-variants.yaml:72, :97). runners.yaml:641 gives gb300-nv available-cpu-dram-mib: 920_000, which is 964,689,920,000 bytes. A single-node job is exclusive by default (single_node_exclusive default True, infx/clusters/slurm.py:191), so it requests --mem=0 and its whole budget is those 920,000 MiB. The pinned pool leaves about 658 MiB for the vLLM API server, the engine core, the 4 TP workers (CUDA contexts, torch), the AgentX client and the container. On base, the TP4 high-concurrency point was the DEP4 row with kv-offloading: none, which pins no host pool. The binder check at infx/srt_slurm/single_node.py:144-146 compares only metadata, not headroom, so nothing catches this before submission.

Verification: agg-variants.yaml:72 (override_tp4_c64) and :97 (override_tp4_c96) both set "cpu_bytes_to_use":964000000000. That is about 919,342 MiB. runners.yaml:641 gives gb300-nv available-cpu-dram-mib: 920_000, which is 964,689,920,000 bytes. So the KV pool is about 99.93% of the node's job-usable DRAM, leaving roughly 660 MiB.

kv-transfer-config: '{"kv_connector":"SimpleCPUOffloadConnector","kv_role":"kv_both","kv_connector_extra_config":{"cpu_bytes_to_use":482000000000,"lazy_offload":true}}'
benchmark:
env:
CONC: '48'

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.

🟡 nit (optional): If dram-utilization or the runner's DRAM metadata changes, the run reports a DRAM budget that differs from what vLLM pins, and nothing catches it. Each override hard-codes cpu_bytes_to_use (482 GB at TP2, 964 GB at TP4) but leaves out TOTAL_CPU_DRAM_GB. That key is what single_node.py:144 checks against the matrix. Fix: add TOTAL_CPU_DRAM_GB: '482' to the two TP2 overrides and '964' to the two TP4 overrides under benchmark.env, as the B200 sibling recipe does. The binder then fails on any drift.

Why this was flagged

In inferencex-e2e/infx/srt_slurm/single_node.py:144-146, the binder checks CONC, KV_OFFLOADING and TOTAL_CPU_DRAM_GB against the matrix point, but only for keys the recipe's benchmark env declares. The four new overrides (agg-variants.yaml:53-100) declare only CONC. The matrix computes TOTAL_CPU_DRAM_GB from available-cpu-dram-mib: 920_000 (runners.yaml gb300-nv) × dram-utilization: 1.0 × gpus/4, giving 964/482 today, so the values match for now. infx/results/agentic/init.py:192 records that matrix value as allocated_cpu_dram_gb. If either input changes, the reported allocation and the bytes vLLM actually pins split silently. The B200 recipe (b200-fp4-mtp/agentic.yaml, override_tp4_c32_dram) avoids this by declaring TOTAL_CPU_DRAM_GB: '1073'.

Verification: The trigger is a later edit to the gb300-nv available-cpu-dram-mib value or to this entry's dram-utilization. Nothing is wrong today: the values match. inferencex-e2e/infx/srt_slurm/single_node.py:144-146 checks TOTAL_CPU_DRAM_GB only if the recipe declares it, and the four new overrides declare only CONC. If either input changes, infx/results/agentic/__init__.py:192 records the wrong allocated_cpu_dram_gb and no check flags it.

Comment on lines +8900 to +8901
- { tp: 4, spec-decoding: mtp, kv-offloading: none, conc-list: [1, 4, 8, 16, 32], srt-recipe: agentic.yaml }
- { tp: 4, ep: 4, dp-attn: true, spec-decoding: mtp, kv-offloading: none, conc-list: [64, 96, 128], router: { name: vllm-router, version: "0.1.14" }, srt-recipe: agentic.yaml }
- dram-utilization: 1.0

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.

🟡 nit (optional): Maintainers are left with a dead recipe variant. The removed DEP4 row was the only user of zip_override_dep4 in gb300-fp4-mtp/agentic.yaml. AGENTS.md:74 says to delete recipes that no active config uses. Fix: delete the zip_override_dep4 block from minimaxm31flash/vllm/gb300-fp4-mtp/agentic.yaml in this PR. Keep zip_override_tp4, which the unchanged TP4 conc 1-32 row still selects.

Why this was flagged

The diff removes the { tp: 4, ep: 4, dp-attn: true, ... conc-list: [64, 96, 128], router: vllm-router, srt-recipe: agentic.yaml } row from minimaxm31flash-fp4-gb300-vllm-agentic-dspark in nvidia-master.yaml (old line ~8905). That row was the only matrix point that could match zip_override_dep4 in inferencex-e2e/benchmarks/single_node/srt-slurm-recipes/minimaxm31flash/vllm/gb300-fp4-mtp/agentic.yaml, which sets tp1/dp4/EP, the vllm-router frontend and CONC 64/96/128. A repo-wide grep shows nvidia-master.yaml:8896 is the only reference to minimaxm31flash/vllm/gb300-fp4-mtp. The remaining agentic.yaml row is TP4 with no EP, and validate_recipe in infx/srt_slurm/single_node.py rejects the DEP4 variant for that row. So after merge the block is unreachable dead config, which AGENTS.md:74 says to delete. Nothing fails at runtime, so this is a nit.

Verification: The diff deletes the only DEP4 row from minimaxm31flash-fp4-gb300-vllm-agentic-dspark (nvidia-master.yaml, around line 8905). zip_override_dep4 stays at minimaxm31flash/vllm/gb300-fp4-mtp/agentic.yaml:67. select_recipe (single_node.py:95-107) drops the dep4 variants on validation, so no matrix point can ever select the dep4 block any more.

@xinli-sw
xinli-sw force-pushed the codex/minimax-m31-gb300-configs branch from 606eac8 to 5958b9a Compare October 24, 2026 14:18
@github-actions

github-actions Bot commented Oct 24, 2026 •

Copy link
Copy Markdown
Contributor

使用最新配置提交 MiniMax M3.1 AgentX。
@xinli-sw
xinli-sw force-pushed the codex/minimax-m31-gb300-configs branch from 5958b9a to 8461aab Compare October 24, 2026 15:13
xinli-sw and others added 10 commits October 25, 2026 09:55
…00-configs-local

# Conflicts:
#	inferencex-e2e/perf-changelog.yaml
使用最新配置提交 MiniMax M3.1 AgentX。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
使用最新配置提交 MiniMax M3.1 AgentX。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
# Conflicts:
#	inferencex-e2e/perf-changelog.yaml
# Conflicts:
#	inferencex-e2e/perf-changelog.yaml
# Conflicts:
#	inferencex-e2e/perf-changelog.yaml
@github-actions

github-actions Bot commented Oct 27, 2026 •

Copy link
Copy Markdown
Contributor

@xinli-sw staged run 40445022376.

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

xinli-sw and others added 2 commits October 27, 2026 06:52
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…00-dynagg

# Conflicts:
#	inferencex-e2e/perf-changelog.yaml
@xinli-sw xinli-sw added non-canary-full-sweep-enabled Run the full sweep without the canary gate (full search space, no trim) and removed non-canary-full-sweep-enabled Run the full sweep without the canary gate (full search space, no trim) labels Oct 27, 2026
@xinli-sw

Copy link
Copy Markdown
Collaborator Author

/use 40627456192

@github-actions

github-actions Bot commented Oct 28, 2026 •

Copy link
Copy Markdown
Contributor

@xinli-sw staged run 40627456192.

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

This branch has not been deployed

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

Labels

non-canary-full-sweep-enabled Run the full sweep without the canary gate (full search space, no trim)

Projects

Status: No status

Development

Successfully merging this pull request may close these issues.

1 participant