Skip to content

[AMD][AgentX] Add MiniMax-M3 MXFP4 ATOM AgentX MTP on MI355X / 在 MI355X 上添加 MiniMax-M3 MXFP4 ATOM AgentX MTP recipe - #2816

Merged
cquil11 merged 32 commits into
mainfrom
feat/minimaxm3-mi355x-atom-agentic-mtp
Sep 15, 2026
Merged

cquil11 merged 32 commits into
mainfrom
feat/minimaxm3-mi355x-atom-agentic-mtp

Conversation

@charxwu

@charxwu charxwu commented Sep 3, 2026

Copy link
Copy Markdown
Collaborator

Summary / 摘要

Add the MiniMax-M3 MXFP4 ATOM AgentX MTP recipe on MI355X (minimaxm3-fp4-mi355x-atom-agentic-mtp), aligned with the existing vLLM arm (EAGLE3-GQA draft, synthetic acceptance length 2.78, thinking_mode enabled). The recipe uses upstream rocm/atom-dev:nightly_202609080825-lirzhang-triton-build as shipped — no runtime ATOM patch or waiver.

本 PR 在 MI355X 上新增 MiniMax-M3 MXFP4 ATOM AgentX MTP recipe(minimaxm3-fp4-mi355x-atom-agentic-mtp),与现有 vLLM 分支对齐(EAGLE3-GQA draft、合成接受长度 2.78、thinking_mode 启用)。recipe 直接使用上游镜像 rocm/atom-dev:nightly_202609080825-lirzhang-triton-build,无需运行时 ATOM patch 或豁免文档。

Recipe / 配置

  • Image: rocm/atom-dev:nightly_202609080825-lirzhang-triton-build
  • Launcher: benchmarks/single_node/agentic/minimaxm3_fp4_mi355x_atom_mtp.sh
  • Search space: TP4 conc [1, 2, 4, 5, 8, 10, 12, 15, 20, 24, 28, 32]; TP2 conc [1, 2, 5]; kv-offloading: none
  • Spec: EAGLE3-GQA (Inferact/MiniMax-M3-EAGLE3-GQA), 3 draft tokens, synthetic AL 2.78 on throughput runs
  • Server: FP8 KV/index cache, block size 128, prefix caching, max-num-seqs = 2×CONC, official MiniMax MXFP4 online quant settings

Validation / 验证

  • E2E sweep (15 configs, --no-evals): Actions run 34237169926success

  • Vultri dummy smoke (no patch): TP4 EAGLE3 + block-size 128 bring-up SMOKE_OK on the same image

  • GSM8K (manual, AIM): flexible-extract 96.29%, strict-match 96.36%

  • Matrix tests: 127 passed

  • E2E 扫描(15 个配置,--no-evals): Actions run 34237169926通过

  • Vultri dummy smoke(无 patch): 同一镜像上 TP4 EAGLE3 + block-size 128 启动 SMOKE_OK

  • GSM8K(手动,AIM): flexible-extract 96.29%,strict-match 96.36%

  • matrix tests: 127 passed

Test plan / 测试计划

  • generate_sweep_configs.py test-config for minimaxm3-fp4-mi355x-atom-agentic-mtp --no-evals (15 configs)
  • Vultri EAGLE3 dummy smoke on pinned image without runtime patch
  • Full agentic e2e sweep on MI355X (--no-evals)

Note

Low Risk
Benchmark/CI configuration and a new agentic launcher only; no changes to core inference libraries or auth/data paths.

Overview
Adds a new MI355X AgentX benchmark recipe for MiniMax-M3 MXFP4 on ATOM (minimaxm3-fp4-mi355x-atom-agentic-mtp), paired with the existing vLLM arm for apples-to-apples agentic trace replay.

The new launcher minimaxm3_fp4_mi355x_atom_mtp.sh starts the ATOM OpenAI server with official MiniMax MXFP4 settings (FP8 KV/index cache, EAGLE3-GQA MTP with synthetic AL 2.78 on throughput runs, thinking_mode), concurrency-specific ReplaySSM/spec knobs, and optional LMCache DRAM offload—including hybrid CPU attention state offload at higher conc and a separate high-conc path (c40/c48) with SLRU prefix/LMCache policy and spec decoding disabled. amd-master.yaml defines the sweep (TP4 conc 1–32, TP2 1/2/5, plus TP4 c40/c48 with LMCache). launch_mi355x-amds.sh pins defaults for this script (MODEL_PATH, prefix caching, AITER_LOG_LEVEL, GSM8K eval tasks dir).

Reviewed by Cursor Bugbot for commit 5a101bb. Bugbot is set up for automated code reviews on this repo. Configure here.

Wu, Charles and others added 7 commits September 1, 2026 18:16
新增 MiniMax-M3 ATOM AgentX recipe,固定可复现镜像并覆盖 MI355X TP4 concurrency sweep。

Align the ATOM serving entrypoint, prefix-cache settings, and generated matrix with the validated MI355X smoke path.
对齐 ATOM 服务入口、prefix cache 参数以及已验证的 MI355X smoke 路径矩阵。

Co-authored-by: Cursor <cursoragent@cursor.com>
修复 MiniMax ATOM prefix cache 默认关闭的问题。

Enable prefix caching by default so generated AgentX runs match the validated smoke configuration.
默认开启 prefix caching,使生成的 AgentX 运行与已验证 smoke 配置一致。

Co-authored-by: Cursor <cursoragent@cursor.com>
按 AgentX 并发度动态设置 ATOM max-num-seqs。

Scale ATOM scheduler capacity to two sequence slots per configured concurrency lane.
根据配置的并发 lane 数量为每个 lane 分配两个 ATOM scheduler sequence slot。

Co-authored-by: Cursor <cursoragent@cursor.com>
为 MiniMax AgentX 适配 ATOM PR #2106 补丁,并修复 served model 名称不匹配导致的 warmup 失败。

Co-authored-by: Cursor <cursoragent@cursor.com>
为 MiniMax ATOM AgentX MTP recipe 增加无 offloading 的 TP2 并发搜索空间,并更新矩阵快照校验。

Co-authored-by: Cursor <cursoragent@cursor.com>
让 MiniMax ATOM AgentX launcher 接受 TP2 search-space 配置。

Co-authored-by: Cursor <cursoragent@cursor.com>
将 MiniMax ATOM AgentX launcher 的 GPU memory utilization 提升到 0.9。

Co-authored-by: Cursor <cursoragent@cursor.com>
@charxwu
charxwu marked this pull request as ready for review September 3, 2026 16:48
@charxwu
charxwu requested a review from a team September 3, 2026 16:48
@charxwu charxwu changed the title perf: add MiniMax-M3 ATOM AgentX patch / 性能:加入 MiniMax-M3 ATOM AgentX 补丁 [AMD][AgentX] MiniMax-M3 MXFP4 MI355X ATOM MTP / [AMD][AgentX] MI355X 上 MiniMax-M3 MXFP4 ATOM MTP Sep 3, 2026

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Stale Bugbot comment from a previous run.

Comment thread benchmarks/single_node/agentic/minimaxm3_fp4_mi355x_atom_mtp.sh Outdated
Comment thread benchmarks/single_node/agentic/minimaxm3_fp4_mi355x_atom_mtp.sh Outdated
Comment thread benchmarks/single_node/agentic/apply_atom_pr2106_patch.sh Outdated

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

Beyond the inline findings, I also checked whether the per-concurrency case "$CONC" block's MAX_NUM_SEQS/MAX_NUM_BATCHED_TOKENS/GPU_MEM_UTIL settings are dead code now that they're overwritten right after the case statement — that overwrite is intentional (the adjacent comment states the fixed values are the official validated MiniMax-M3 launch settings), so it isn't a separate bug beyond what's already flagged inline.

Extended reasoning...

Confirmed findings already posted inline cover real, non-trivial bugs: the patch idempotency check in apply_atom_pr2106_patch.sh can never validate correctly against the excluded-file patch; SPEC_ARGS unconditionally enables EAGLE3 with 3 draft tokens even when the CONC=40/56 branches intend to disable it (NUM_SPEC_TOKENS=0); STATE_CKPT_ARGS is computed but never appended to ATOM_CMD, silently dropping --state-checkpoint-slots; and the waiver doc is misnamed relative to docs/PR_REVIEW_CHECKLIST.md's requirement. These are exactly the kind of functional discrepancies between comments/intent and actual behavior that warrant a human look, and the bug-hunt exit reason (max_bugs) means the search was cut off rather than exhausted, so no additional approval signal should be inferred. I verified the case block in minimaxm3_fp4_mi355x_atom_mtp.sh directly and confirmed the described overwrite pattern (MAX_NUM_SEQS=$((2*CONC)), fixed MAX_NUM_BATCHED_TOKENS=32768, GPU_MEM_UTIL=0.9 right after the case) is real, but distinguished it from a bug since the surrounding comment documents it as intentional — while the state-checkpoint-slots and spec-token gating issues in that same block are genuine bugs already captured inline. Given the number and severity of confirmed findings, this does not meet the bar for approval, and no prior review body exists on this PR to avoid duplicating, so a short informational defer note is appropriate.

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

Comment on lines +27 to +36
if git -C "$ATOM_ROOT" apply --reverse --check "$PATCH_FILE" >/dev/null 2>&1; then
echo "ATOM PR #2106 already applied"
exit 0
fi

# These files were structurally rewritten after the pinned image's ATOM
# commit. Their freshness guard is orthogonal to the draft-KV OOM fix and
# is intentionally omitted until it can be ported against that revision.
git -C "$ATOM_ROOT" apply --check "${PATCH_EXCLUDES[@]}" "$PATCH_FILE"
git -C "$ATOM_ROOT" apply "${PATCH_EXCLUDES[@]}" "$PATCH_FILE"

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 'already applied' idempotency check at line 27 runs git apply --reverse --check on the FULL patch, but the patch is only ever forward-applied with PATCH_EXCLUDES (backends.py, eagle_proposer.py excluded at lines 14-17). Since those two files never get patched, the whole-patch reverse-check can never succeed once already applied, so every re-run against an already-patched ATOM_ROOT falls through to the excludes-scoped apply --check at line 35, which now fails (hunks already applied) and aborts under set -e. Fix: scope the idempotency check to the same exclude set used to apply the patch (or detect a marker unaffected by the excludes), so an already-patched tree is recognized on every invocation, not just the first.

Extended reasoning...

First run: ATOM_ROOT is unpatched, reverse --check fails as expected, so the script applies the patch with PATCH_EXCLUDES (lines 35-36), leaving backends.py and eagle_proposer.py unmodified by design. Second run against the same ATOM_ROOT (e.g. a persistent/shared AMD runner container reused across the matrix's per-concurrency jobs, or a retried/rerun job) — line 27's reverse --check on the unfiltered patch requires ALL hunks including the excluded files' to reverse cleanly; those files are still in pre-patch state so reversal fails, so the 'already applied' fast path is never taken. The script proceeds to line 35 git apply --check (with excludes) against files that are already forward-patched, which fails because the expected pre-patch context no longer matches. Under set -euo pipefail this aborts the entire script with a raw git error instead of the friendly already-applied message, killing the whole benchmark launch for that concurrency point.

Verification: normal (conditional on re-run against a persistent ATOM_ROOT — the very scenario the idempotency block exists for). Line 27 git apply --reverse --check "$PATCH_FILE" checks the UNFILTERED patch (no PATCH_EXCLUDES), but the patch is only ever forward-applied with atom/model_ops/attentions/backends.py and atom/spec_decode/eagle_proposer.py excluded (lines 14-17, 35-36). Those two files are…

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Patch is removed.

Comment thread benchmarks/single_node/agentic/minimaxm3_fp4_mi355x_atom_mtp.sh Outdated
Comment on lines +274 to +278
SPEC_ARGS=(
--method eagle3
--draft-model Inferact/MiniMax-M3-EAGLE3
--num-speculative-tokens 3
)

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.

🟡 (optional) SPEC_ARGS unconditionally enables eagle3 with 3 speculative tokens regardless of NUM_SPEC_TOKENS, so the CONC=40/56 case branches that set NUM_SPEC_TOKENS=0 (meant to disable the draft model past the throughput knee, per the comment above SPEC_ARGS) have no effect. Fix: gate SPEC_ARGS on NUM_SPEC_TOKENS -gt 0, omitting --method/--draft-model/--num-speculative-tokens when it is 0.

Extended reasoning...

Lines 157/167 set NUM_SPEC_TOKENS=0, SPEC_DECODE_AL=0 for CONC 40 and 56. Line 279 only echoes these values; SPEC_ARGS at lines 274-278 is a fixed array always containing --method eagle3 --draft-model Inferact/MiniMax-M3-EAGLE3 --num-speculative-tokens 3, unconditionally appended to ATOM_CMD. Any manual/TP8 run at CONC=40 or 56 (the script's header says TP8 is accepted for larger-memory variants/manual smoke tests) launches with the draft model enabled contrary to the documented design, wasting the draft forward pass past the intended throughput knee.

Verification: nit. Real dead-variable/logic defect, but it does not degrade any shipped configuration. SPEC_ARGS (lines 274-278) is a fixed array hardcoding --method eagle3 --draft-model Inferact/MiniMax-M3-EAGLE3 --num-speculative-tokens 3, appended unconditionally at line 298. Grep confirms NUM_SPEC_TOKENS is referenced only in the echo at line 279 — never used to gate/build SPEC_ARGS. Therefore the…

Comment thread docs/waiver/2106.md Outdated
@functionstackx functionstackx changed the title [AMD][AgentX] MiniMax-M3 MXFP4 MI355X ATOM MTP / [AMD][AgentX] MI355X 上 MiniMax-M3 MXFP4 ATOM MTP [wip - contains patches that need to be removed] [amd agentx m3 atom] Sep 3, 2026
WuxCharles and others added 3 commits September 7, 2026 14:31
将 MiniMax ATOM AgentX launcher 与 MI355X vLLM 配置对齐:EAGLE3-GQA draft、synthetic acceptance length 2.78,并启用 thinking_mode。

Co-authored-by: Cursor <cursoragent@cursor.com>
Switch the MI355X MiniMax ATOM AgentX path to the validated #2147 KV-pool
forward diff, keep #2106 selectable, and default EVAL_ONLY to lm-eval gsm8k.

默认 MiniMax ATOM AgentX 启动器改用已验证的 #2147 KV pool 前向补丁,保留

Co-authored-by: Cursor <cursoragent@cursor.com>
#2106 可选,并将 EVAL_ONLY 默认指向 lm-eval gsm8k。
Use rocm/atom-dev:nightly_202609080825-lirzhang-triton-build, which
includes merged ROCm/ATOM PR #2147 KV-pool fixes validated by MI355X
EAGLE3 dummy smoke without runtime patching.

中文:将 MiniMax ATOM AgentX recipe 镜像升级到
rocm/atom-dev:nightly_202609080825-lirzhang-triton-build(已包含合并后的
PR #2147 KV pool 修复),并移除运行时 patch 脚本与豁免文档。

Co-authored-by: Cursor <cursoragent@cursor.com>

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Stale Bugbot comment from a previous run.

Comment thread configs/amd-master.yaml Outdated
@charxwu charxwu changed the title [wip - contains patches that need to be removed] [amd agentx m3 atom] Add MiniMax-M3 MXFP4 ATOM AgentX MTP on MI355X / 在 MI355X 上添加 MiniMax-M3 MXFP4 ATOM AgentX MTP recipe Sep 8, 2026
Enable CPU-only LMCache offload (256 GiB/rank, 256-token chunks) at TP4
conc 40 and 48 for the MI355X MiniMax ATOM agentic recipe.

为 MI355X MiniMax ATOM agentic recipe 在 TP4 并发 40 和 48 启用仅 CPU 的
LMCache offload(每 rank 256 GiB,256 token chunk)。

Co-authored-by: Cursor <cursoragent@cursor.com>

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Stale Bugbot comment from a previous run.

Comment thread benchmarks/single_node/agentic/minimaxm3_fp4_mi355x_atom_mtp.sh
@charxwu charxwu changed the title Add MiniMax-M3 MXFP4 ATOM AgentX MTP on MI355X / 在 MI355X 上添加 MiniMax-M3 MXFP4 ATOM AgentX MTP recipe [AMD][AgentX] Add MiniMax-M3 MXFP4 ATOM AgentX MTP on MI355X / 在 MI355X 上添加 MiniMax-M3 MXFP4 ATOM AgentX MTP recipe Sep 9, 2026
WuxCharles and others added 3 commits September 9, 2026 16:52
Resolve perf-changelog and matrix test conflicts after the infx matrix
refactor on main; keep MiniMax ATOM recipe entries appended at the tail.

将 main 上的 infx matrix 重构变更与 MiniMax ATOM 分支合并,解决 perf-changelog
与 matrix 测试冲突,并保留 recipe 条目追加在文件末尾。

Co-authored-by: Cursor <cursoragent@cursor.com>
The merge left the first MiniMax ATOM changelog block without its
`- config-keys:` line, which broke check-changelog YAML parsing.

合并后第一条 MiniMax ATOM changelog 缺少 `- config-keys:` 行,导致
check-changelog 的 YAML 解析失败。

Co-authored-by: Cursor <cursoragent@cursor.com>
Drop the TP4 conc 40/48 LMCache search-space points for now and remove
the launcher knobs dedicated to that arm; the recipe stays GPU-resident
through conc 32.

暂缓 TP4 并发 40/48 的 LMCache 配置点,并移除 launcher 中对应分支;recipe
在 conc 32 及以下保持纯 GPU resident。

Co-authored-by: Cursor <cursoragent@cursor.com>
@github-actions

Copy link
Copy Markdown
Contributor

@billishyahao billishyahao left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

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. Please link to GitHub Action workflow that shows this. Link: https://inferencex.semianalysis.com/inference?unofficialRun=34462316872
  • Verified that this PR passes evals. Please link to GitHub Action workflow that shows this. Link: https://inferencex.semianalysis.com/evaluation?unofficialRun=34462316872
  • 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 against the current MODELS.md that this PR does not submit a deprecated model, scenario, or model-scenario combination.
  • 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.
  • 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 this PR uses append-only: true, verified that it only adds generated points or recipe variants inside a selected existing config/scenario and existing same-image visual curve: every previously generated point remains present with the same recipe, no prior point is removed or rerun, and every benchmark-affecting change in the complete diff can affect only the corresponding newly appended points (never an existing point), regardless of which file contains it.
  • If any of the above criteria cannot reasonably be satisfied, I have provided additional reasoning below.

Additional detail section:

Signed: @billishyahao

@Klaud-Cold

Copy link
Copy Markdown
Collaborator

✅✅✅ Verdict: PASS ✅✅✅

✅ Check 0 (CODEOWNER): PASS — @billishyahao is a listed owner of configs/amd-master.yaml; the other two changed paths fall under the * catch-all, which any CODEOWNER satisfies.
✅ Check 1 (sweep on in-PR commit): PASS — PR tip is still c93a8be, and run 34462316872 executed on that SHA with all 17 agentic / and 17 agentic eval / per-config check-runs success (the single-node */ and eval / lanes are skipped only because this is an agentic-only config).
✅ Check 2 (evals pass): PASS — agg_eval_all.json from that run holds 17/17 GSM8K results on rocm/atom-dev:nightly_202609091233-lirzhang-triton-build (same image as the config), em_strict 0.961–0.970 over 1319 samples, no infrastructure or integration errors; eval-only launches drop the synthetic-AL flag so accuracy is measured with real verification.
✅ Check 3 (recipe linked/merged/complete): PASS — ATOM (non-vLLM/SGLang) submission, so the single-node vLLM/SGLang recipe-link item does not apply; the sign-off links the published ATOM recipe (on main, updated 2026-09-10), which matches the major args: amd/MiniMax-M3-MXFP4, TP4, --kv_cache_dtype fp8, --block-size 128, identical ptpc_fp8 online-quant config, thinking_mode: enabled, prefix caching, EAGLE3 Inferact/MiniMax-M3-EAGLE3-GQA with 3 draft tokens, ATOM_FORCE_ATTN_TRITON=1, AITER_QUICK_REDUCE_QUANTIZATION=INT4, and LMCache CPU offload (256 GiB, 256-token chunks) at high concurrency. Recipe's --spec-decode-acceptance-rate 0.5933 equals AL 1+3×0.5933=2.78, and --index-cache-dtype fp8 equals ATOM's default of following kv_cache_dtype. Informational only: the TP2 conc [1,2,5] points and the aiter MoE kernel toggles AITER_SITUV2_A4W4=1 / AITER_FLYDSL_STAGE2_FP8=1 (already used by the merged Kimi-K3 ATOM script) are not in the published recipe; recipe's --attn-prefill-chunk-size, SLRU cache-policy env vars, and NCCL/RCCL_IB_DISABLE are harness/host tuning.
✅ Check 4 (reuse command): PASS — /reuse-sweep-run 34462316872 posted by billishyahao (COLLABORATOR).
✅ Check 5 (latest checklist): PASS — every item in the current docs/PR_REVIEW_CHECKLIST.md template (including the nested recipe-link item) is present and checked.
✅ Check 6 (upstream image / engine-first): PASS — the new entry is framework: atom (upstream-image rule targets vLLM/SGLang entries), and minimaxm3-fp4-mi355x-vllm-agentic-mtp on vllm/vllm-openai-rocm already covers minimaxm3 on cluster:mi355x-amds, so engine-first ordering holds.
✅ Check 7 (no deprecated models/scenarios): PASS — minimaxm3 Agentic coding is active in MODELS.md, and the EAGLE3 arm is the published arm of the pending spec-decode A/B retirement. Informational: conc 40/48 launch with NUM_SPEC_TOKENS=0 (no draft) under the spec-decoding: mtp key, the same pattern as the merged Kimi-K3 ATOM script.
✅ Check 8 (no architecture hacks): PASS — no --hf-overrides / model-config edits; ptpc_fp8 online quant, FP8 KV/index cache and EAGLE3 are precision/spec-decode choices, not FLOP removals.
✅ Check 9 (spec-decode via chat template): PASS — build_replay_cmd targets /v1/chat/completions with --endpoint-type chat, and the script adds --apply-chat-template.
✅ Check 10 (no engine patches): PASS — no .patch, sed -i, heredoc rewrites, site-packages edits, or engine wheel installs; the only extra install is sentencepiece/tiktoken tokenizer deps placed on PYTHONPATH (--no-deps, not engine code), and the pinned image runs as shipped.
✅ Check 11 (agentic spec-decode golden AL): PASS — throughput runs pin --spec-decode-acceptance-length 2.78 (ATOM's synthetic force-accept knob), which equals golden_al_distribution/minimaxm3_eagle3_gqa.yaml minimax-m3.thinking_on[3] = 2.78 for the EAGLE3-GQA draft with 3 speculative tokens and thinking_mode: enabled; no synthetic knob appears on a non-agentic config.
➖ Check 12 (append-only): N/A — the new perf-changelog.yaml entry does not set append-only: true.

WuxCharles and others added 4 commits September 14, 2026 15:17
在 conc 40/48 LMCache 路径增加 ATOM/LMCache SLRU 相关环境变量,
并添加 MI355X 临时测试脚本(镜像 nightly_202609140645)。

Co-authored-by: Cursor <cursoragent@cursor.com>
将 minimaxm3-fp4-mi355x-atom-agentic-mtp 镜像更新为
rocm/atom-dev:nightly_202609140645-lirzhang-triton-build,并同步 perf-changelog。

Co-authored-by: Cursor <cursoragent@cursor.com>
在 perf-changelog 单条 entry 中写明 conc 40/48 的 SLRU 环境变量名称。

Co-authored-by: Cursor <cursoragent@cursor.com>
空提交以重新触发 PR 流水线。

Co-authored-by: Cursor <cursoragent@cursor.com>
@github-actions

Copy link
Copy Markdown
Contributor

@github-actions

Copy link
Copy Markdown
Contributor

1 similar comment
@github-actions

Copy link
Copy Markdown
Contributor

@billishyahao

Copy link
Copy Markdown
Collaborator

/reuse-sweep-run 34834280359

@billishyahao billishyahao left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

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. Please link to GitHub Action workflow that shows this. Link: https://inferencex.semianalysis.com/inference?unofficialRun=34834280359
  • Verified that this PR passes evals. Please link to GitHub Action workflow that shows this. Link: https://inferencex.semianalysis.com/evaluation?unofficialRun=34834280359
  • 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 against the current MODELS.md that this PR does not submit a deprecated model, scenario, or model-scenario combination.
  • 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.
  • 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 this PR uses append-only: true, verified that it only adds generated points or recipe variants inside a selected existing config/scenario and existing same-image visual curve: every previously generated point remains present with the same recipe, no prior point is removed or rerun, and every benchmark-affecting change in the complete diff can affect only the corresponding newly appended points (never an existing point), regardless of which file contains it.
  • If any of the above criteria cannot reasonably be satisfied, I have provided additional reasoning below.

Additional detail section:

Signed: @billishyahao

@Klaud-Cold

Copy link
Copy Markdown
Collaborator

✅✅✅ Verdict: PASS ✅✅✅

✅ Check 0 (CODEOWNER): PASS — @billishyahao is a listed owner of configs/amd-master.yaml; the other three changed paths (benchmarks/single_node/agentic/minimaxm3_fp4_mi355x_atom_mtp.sh, experimental/minimax_atom_slru_conc4048_mi355x_test.sh, perf-changelog.yaml) fall under the * catch-all, which any CODEOWNER satisfies.
✅ Check 1 (sweep on in-PR commit): PASS — PR tip is still 62d3a68 (the signed-off commit), and run 34834280359 executed on that SHA with all 17 agentic / and 17 agentic eval / per-config check-runs success (single-node */ and eval / are skipped only because this is an agentic-only config).
✅ Check 2 (evals pass): PASS — agg_eval_all.json from that run holds 17/17 completed minimax-vendor / minimax_m3_smoke results on rocm/atom-dev:nightly_202609140645-lirzhang-triton-build (same image as the config), n_eff=1 each, infrastructure_success=true, no integration errors, and every point clears the repo's infx/evals/thresholds.yaml bar of 0.0 (the tool-use smoke is non-blocking by design, #2634). Reviewer attention: the score is 0.0 on all 17 points because the single pinned tool call matched (tool_calls_match_rate=1.0) but failed schema validation (ignore_statuses emitted as "" plus a stray "item":"on_hold" key instead of an array). No vendor-smoke baseline exists yet for the merged vLLM arm on main (its executed run still used GSM8K), so this cannot be attributed to ATOM vs. the checkpoint. The earlier in-PR run 34462316872 on the previous image scored GSM8K em_strict 0.961–0.970 over 1319 samples on this recipe.
✅ Check 3 (recipe linked/merged/complete): PASS — ATOM (non-vLLM/SGLang) submission, so the single-node vLLM/SGLang recipe-link item in docs/PR_REVIEW_CHECKLIST.md does not apply; the sign-off nonetheless links the published ATOM recipe (on main, last updated 2026-09-10), whose major args match the TP4 ladder: amd/MiniMax-M3-MXFP4, TP4, --kv_cache_dtype fp8, --block-size 128, identical ptpc_fp8 online-quant config, thinking_mode: enabled, prefix caching, EAGLE3 Inferact/MiniMax-M3-EAGLE3-GQA with 3 draft tokens (recipe's --spec-decode-acceptance-rate 0.5933 = AL 2.78), ATOM_FORCE_ATTN_TRITON=1, AITER_QUICK_REDUCE_QUANTIZATION=INT4, --max-num-seqs 2×CONC, 32768 batched tokens, GPU mem 0.9, and the 48c LMCache CPU tier with SLRU env. Informational only: the PR's conc 40/48 LMCache points run without the draft model (recipe's 48c keeps EAGLE3), the TP2 conc [1,2,5] and conc 40 points are not in the recipe, and AITER_SITUV2_A4W4=1 / AITER_FLYDSL_STAGE2_FP8=1 (already in the merged Kimi-K3 ATOM script) are not in the recipe.
✅ Check 4 (reuse command): PASS — /reuse-sweep-run 34834280359 posted by billishyahao (COLLABORATOR); that run's head_sha is the PR tip.
✅ Check 5 (latest checklist): PASS — every item in the current docs/PR_REVIEW_CHECKLIST.md template (including the nested recipe-link item) is present and checked.
✅ Check 6 (upstream image / engine-first): PASS — the new entry is framework: atom (the upstream-image rule targets vLLM/SGLang entries), and minimaxm3-fp4-mi355x-vllm-agentic-mtp on vllm/vllm-openai-rocm already covers minimaxm3 on cluster:mi355x-amds, so engine-first ordering holds.
✅ Check 7 (no deprecated models/scenarios): PASS — as of 2026-09-15, minimaxm3 Agentic coding is active in MODELS.md, and EAGLE3 is the published arm of the pending spec-decode A/B retirement. Informational: conc 40/48 launch with NUM_SPEC_TOKENS=0 (no draft) under the spec-decoding: mtp key, the same pattern as the merged Kimi-K3 ATOM script; the non-spec-arm retirement is not yet enacted.
✅ Check 8 (no architecture hacks): PASS — no --hf-overrides / --json-model-override-args / model-config edits (server log shows hf_overrides: None); ptpc_fp8 online quant, FP8 KV/index cache, and EAGLE3 are precision/spec-decode choices, not FLOP removals.
✅ Check 9 (spec-decode via chat template): PASS — build_replay_cmd targets /v1/chat/completions with --endpoint-type chat, and the script adds --apply-chat-template.
✅ Check 10 (no engine patches): PASS — no .patch, git apply, sed -i, heredoc rewrites, site-packages edits, or engine wheel installs; the only extra install is sentencepiece/tiktoken tokenizer deps (--no-deps, into a separate PYTHONPATH dir, not engine code), so the pinned image runs as shipped.
✅ Check 11 (agentic spec-decode golden AL): PASS — throughput runs pin --spec-decode-acceptance-length 2.78 (ATOM's forced-acceptance knob documented in golden_al_distribution/README.md, dropped on eval-only runs), which equals golden_al_distribution/minimaxm3_eagle3_gqa.yaml minimax-m3.thinking_on[3] = 2.78 for thinking_mode: enabled with 3 speculative tokens; no synthetic knob appears on a non-agentic config.
➖ Check 12 (append-only): N/A — the new perf-changelog.yaml entry does not set append-only: true.

@seungrokj
seungrokj self-requested a review September 15, 2026 16:37
@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 关于重新运行失败任务的文档

@seungrokj seungrokj left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

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. Please link to GitHub Action workflow that shows this.
  • Verified that this PR passes evals. Please link to GitHub Action workflow that shows this.
  • 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 against the current MODELS.md that this PR does not submit a deprecated model, scenario, or model-scenario combination.
  • 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.
  • 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 this PR uses append-only: true, verified that it only adds generated points or recipe variants inside a selected existing config/scenario and existing same-image visual curve: every previously generated point remains present with the same recipe, no prior point is removed or rerun, and every benchmark-affecting change in the complete diff can affect only the corresponding newly appended points (never an existing point), regardless of which file contains it.
  • If any of the above criteria cannot reasonably be satisfied, I have provided additional reasoning below.

Additional detail section:

Signed: seungrokj

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes using default effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Want higher recall? High effort reviews run extra passes and find more bugs. A team admin can switch effort levels in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 122c83e. Configure here.

Comment thread experimental/minimax_atom_slru_conc4048_mi355x_test.sh Outdated
@Klaud-Cold

Copy link
Copy Markdown
Collaborator

✅✅✅ Verdict: PASS ✅✅✅

✅ Check 0 (CODEOWNER): PASS — @billishyahao is a listed owner of configs/amd-master.yaml; the other three changed paths (benchmarks/single_node/agentic/minimaxm3_fp4_mi355x_atom_mtp.sh, experimental/minimax_atom_slru_conc4048_mi355x_test.sh, perf-changelog.yaml) fall under the * catch-all, which any CODEOWNER satisfies.
✅ Check 1 (sweep on in-PR commit): PASS — PR tip is still 122c83e (a merge of main whose four PR files are byte-identical to 62d3a68), and run 34834280359 executed on 62d3a68 (still in this PR's commit list) with all 17 agentic / and 17 agentic eval / per-config check-runs success (single-node */ and eval / are skipped only because this is an agentic-only config).
✅ Check 2 (evals pass): PASS — agg_eval_all.json from that run holds 17/17 completed minimax-vendor / minimax_m3_smoke results on rocm/atom-dev:nightly_202609140645-lirzhang-triton-build (same image as the config), n_eff=1 each, infrastructure_success=true, no integration errors, and every point meets the repo's infx/evals/thresholds.yaml bar of 0.0 for this non-blocking tool-use smoke (#2634); eval-only launches drop --spec-decode-acceptance-length, so accuracy uses real target verification. Reviewer attention: the score is 0.0 on all 17 points because the single pinned tool call was emitted (tool_calls_match_rate=1.0) but failed schema validation (ignore_statuses emitted as "" instead of an array). The earlier in-PR run 34462316872 on the previous image scored GSM8K em_strict 0.961–0.970 over 1319 samples on this recipe.
✅ Check 3 (recipe linked/merged/complete): PASS — ATOM (non-vLLM/SGLang) submission, so the single-node vLLM/SGLang recipe-link item in docs/PR_REVIEW_CHECKLIST.md does not apply; the sign-off nonetheless links the published ATOM recipe (on main, last updated 2026-09-10 via ROCm/ATOM#2184), whose major args match the TP4 ladder: amd/MiniMax-M3-MXFP4, TP4, --kv_cache_dtype fp8, --block-size 128, identical ptpc_fp8 online-quant config, thinking_mode: enabled, prefix caching, EAGLE3 Inferact/MiniMax-M3-EAGLE3-GQA with 3 draft tokens (recipe's --spec-decode-acceptance-rate 0.5933 = AL 2.78), ATOM_FORCE_ATTN_TRITON=1, AITER_QUICK_REDUCE_QUANTIZATION=INT4, --max-num-seqs 2×CONC, 32768 batched tokens, GPU mem 0.9, and the 48c LMCache CPU tier with SLRU env. --index-cache-dtype fp8 equals ATOM's default (non-DSv4 models follow kv_cache_dtype, per atom/config.py). Informational only: the PR's conc 40/48 LMCache points run without the draft model (recipe's 48c keeps EAGLE3), the TP2 conc [1,2,5] and conc 40 points are not in the recipe, and AITER_SITUV2_A4W4=1 / AITER_FLYDSL_STAGE2_FP8=1 (already in the merged Kimi-K3 ATOM script) are not in the recipe.
✅ Check 4 (reuse command): PASS — /reuse-sweep-run 34834280359 posted by billishyahao (COLLABORATOR); that run's head_sha 62d3a68 is in this PR's commit list.
✅ Check 5 (latest checklist): PASS — every item in the current docs/PR_REVIEW_CHECKLIST.md template (including the nested recipe-link item) is present and checked.
✅ Check 6 (upstream image / engine-first): PASS — the new entry is framework: atom (the upstream-image rule targets vLLM/SGLang entries), and minimaxm3-fp4-mi355x-vllm-agentic-mtp on vllm/vllm-openai-rocm already covers minimaxm3 on cluster:mi355x-amds, so engine-first ordering holds.
✅ Check 7 (no deprecated models/scenarios): PASS — as of 2026-09-15, minimaxm3 Agentic coding is active in MODELS.md, and EAGLE3 is the published arm of the pending spec-decode A/B retirement. Informational: conc 40/48 launch with NUM_SPEC_TOKENS=0 (no draft) under the spec-decoding: mtp key, the same pattern as the merged Kimi-K3 ATOM script; the non-spec-arm retirement is not yet enacted.
✅ Check 8 (no architecture hacks): PASS — no --hf-overrides / --json-model-override-args / model-config edits; ptpc_fp8 online quant, FP8 KV/index cache, and EAGLE3 are precision/spec-decode choices, not FLOP removals.
✅ Check 9 (spec-decode via chat template): PASS — build_replay_cmd targets /v1/chat/completions with --endpoint-type chat, and the script adds --apply-chat-template.
✅ Check 10 (no engine patches): PASS — no .patch, git apply, sed -i, heredoc rewrites, site-packages edits, or engine wheel installs; the only extra install is sentencepiece/tiktoken tokenizer deps (--no-deps, into a separate PYTHONPATH dir, not engine code), so the pinned image runs as shipped.
✅ Check 11 (agentic spec-decode golden AL): PASS — throughput runs pin --spec-decode-acceptance-length 2.78 (ATOM's forced-acceptance knob documented in golden_al_distribution/README.md, ROCm/ATOM#1948 merged; dropped on eval-only runs), which equals golden_al_distribution/minimaxm3_eagle3_gqa.yaml minimax-m3.thinking_on[3] = 2.78 for thinking_mode: enabled with 3 speculative tokens; no synthetic knob appears on a non-agentic config.
➖ Check 12 (append-only): N/A — the new perf-changelog.yaml entry does not set append-only: true.

@seungrokj

Copy link
Copy Markdown
Collaborator

@cquil11 @functionstackx can you plz review this ?

@cquil11

cquil11 commented Sep 15, 2026

Copy link
Copy Markdown
Collaborator

/stage-results 34834280359

@github-actions

github-actions Bot commented Sep 15, 2026

Copy link
Copy Markdown
Contributor

@cquil11 staged run 34834280359: https://inferencemax-app-git-staging-semianalysisai.vercel.app/inference?i_dates=2026-09-14~r34834280359

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

@cquil11
cquil11 merged commit 1d119e8 into main Sep 15, 2026
32 checks passed
@cquil11
cquil11 deleted the feat/minimaxm3-mi355x-atom-agentic-mtp branch September 15, 2026 17:31
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 AMD full-sweep-enabled

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

7 participants