Skip to content

feat(agentx): retune GLM-5.2 FP4 MI355X ATOM recipe on nightly_202610181506 / feat(agentx):基于 nightly_202610181506 重新调优 GLM-5.2 FP4 MI355X ATOM recipe - #4308

Open
zhuyuhua-v wants to merge 10 commits into
mainfrom
amd/glm5.2-fp4-mi355x-atom-1018
Open

zhuyuhua-v wants to merge 10 commits into
mainfrom
amd/glm5.2-fp4-mi355x-atom-1018

Conversation

@zhuyuhua-v

@zhuyuhua-v zhuyuhua-v commented Oct 19, 2026 •

Copy link
Copy Markdown
Collaborator

Track the GLM-5.2 standalone recipe of ROCm/ATOM PR 2632 (open; recipe document only, measured on df86c4829) on glm5.2-fp4-mi355x-atom-agentic-mtp.

Validation

Full sweep 39540045682 (attempt 4) on c919625, whose recipe and master config are identical to head (later commits only merge main). All 14 points finished, and the gsm8k eval at DCP4 C48 scored em_strict 0.972. Earlier attempts failed on a Docker Hub 429 when pulling the image, and on client payload errors at DCP4 C16; none of the failures points at the recipe. The server logs show the forced golden ALs (2.99 at MTP3, 3.33 at MTP4, 3.61 at MTP5).

Arm Conc Total tok/s/GPU Interactivity p50 (tok/s)
TP4 1 / 2 / 4 / 8 / 10 4511 / 4879 / 6738 / 11813 / 14692 276 / 265 / 223 / 177 / 153
TP8 1 / 2 / 4 2199 / 2265 / 3746 253 / 256 / 246
TP4+DCP4 LMCache 16 / 24 / 32 / 40 / 48 18885 / 27863 / 34911 / 37078 / 41668 95 / 73 / 67 / 51 / 43
中文

按 ROCm/ATOM PR 2632(尚未合并,只改 recipe 文档,测量基于 df86c4829)的 GLM-5.2 单机配方更新 glm5.2-fp4-mi355x-atom-agentic-mtp。

验证

完整 sweep 39540045682(第 4 次尝试),基于 c919625,其 recipe 和 master config 与 head 相同(之后的提交只是合并 main)。14 个点位全部完成,DCP4 C48 的 gsm8k 评测 em_strict 为 0.972。之前几次尝试失败的原因是拉取镜像时 Docker Hub 返回 429,以及 DCP4 C16 的客户端 payload 错误,均与 recipe 无关。服务日志显示了强制的 golden AL(MTP3 为 2.99,MTP4 为 3.33,MTP5 为 3.61)。

分支 并发 每 GPU 总 tok/s Interactivity p50 (tok/s)
TP4 1 / 2 / 4 / 8 / 10 4511 / 4879 / 6738 / 11813 / 14692 276 / 265 / 223 / 177 / 153
TP8 1 / 2 / 4 2199 / 2265 / 3746 253 / 256 / 246
TP4+DCP4 LMCache 16 / 24 / 32 / 40 / 48 18885 / 27863 / 34911 / 37078 / 41668 95 / 73 / 67 / 51 / 43
AI model disclosure
  • Claude Opus 5.5 (claude-opus-5-5) via Claude Code: perf-changelog rewrite, PR description, draft data-type verification and sweep summary.

🤖 Generated with Claude Code

Mono-decode eval

The default agentic selector evals only the highest concurrency. That is DCP4 C48, where ATOM_MONO_ENABLE=0. TP4 C1/C2 are the points that set ATOM_MONO_ENABLE=1. glm5.2-fp4-mi355x-atom-agentic-mtp-mono is an evals-only key with just those two points, so its GSM8K runs at C2 on the mono-decode kernel. Throughput is unchanged on glm5.2-fp4-mi355x-atom-agentic-mtp.

Track the GLM-5.2 standalone recipe of ROCm/ATOM PR 2632 on
rocm/atom-dev:nightly_202610181506.

- TP4 C1/C2 run the GLM-5.2 mono decode at 3 draft tokens (AL 2.99);
  every other point sets ATOM_MONO_ENABLE=0, which ATOM defaults on.
- C1 joins the TP4 arm; C4/C8 stay at MTP5 and C10 at MTP4.
- Restore the TP4+DCP4 arm at C16-C48 with ATOM_DCP_PREFILL_QREP=1 and
  the LMCache DRAM tier at 256 GiB per rank via extra-kv-connectors
  (MTP4, MTP3 at C48).
- dram-utilization 0.171 -> 0.74 so TOTAL_CPU_DRAM_GB (1109 GB) covers
  the 4 x 256 GiB = 1099.5 GB LMCache tier.

中文:按 ROCm/ATOM PR 2632 的 GLM-5.2 单机配方更新 MI355X ATOM AgentX
配置,镜像换为 rocm/atom-dev:nightly_202610181506。TP4 C1/C2 使用
GLM-5.2 mono decode,3 个 draft token(AL 2.99),其余点显式设置
ATOM_MONO_ENABLE=0(ATOM 默认开启);TP4 新增 C1,C4/C8 保持 MTP5,
C10 保持 MTP4。恢复 TP4+DCP4 臂(C16-C48),开启
ATOM_DCP_PREFILL_QREP=1,并通过 extra-kv-connectors 接入每 rank
256 GiB 的 LMCache DRAM 层(MTP4,C48 为 MTP3)。dram-utilization 由
0.171 调为 0.74,使 TOTAL_CPU_DRAM_GB(1109 GB)覆盖
4 x 256 GiB = 1099.5 GB 的 LMCache 层。

Signed-off-by: zhuyuhua-v <yuhzhu@amd.com>
@zhuyuhua-v
zhuyuhua-v requested review from a team and a balanced review from Copilot October 19, 2026 09:39
@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 任务通过。临时性失败通常可以通过重新运行恢复;参见重新运行失败任务的说明。

Copilot AI 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.

🔵 Needs a closer look

The new image and serving paths lack integration evidence and require human validation.

2 open issues
What changed in this PR

Retunes the GLM-5.2 FP4 MI355X ATOM AgentX benchmark for the updated container image.

Changes:

  • Enables mono decode for TP4 C1/C2 with three draft tokens.
  • Restores TP4+DCP4 concurrency points with LMCache offloading and a larger DRAM budget.
  • Records the benchmark changes in the performance changelog.
File Description
inferencex-e2e/​perf-changelog.yaml Records affected configuration and tuning changes.
inferencex-e2e/​configs/​amd-master.yaml Updates image, concurrency coverage, and DRAM allocation.
inferencex-e2e/​benchmarks/​single_node/​srt-slurm-recipes/​glm5.2/​atom/​mi355x-fp4-mtp/​agentic.yaml Configures mono decode and DCP4 LMCache variants.

Review effort: Balanced

Comment on lines +43 to +47
# One variant per point. Admission is 2x CONC. TP4 C1/C2 run mono decode at
# three draft tokens; C4/C8 draft five and C10 four on the production path. The
# DCP4 arm shards the decode KV, adds the LMCache DRAM tier at 256 GiB per rank
# (1024 GiB, 1099.5 GB per server, within the 1109 GB TP4 share at
# dram-utilization 0.74) and drafts four tokens, three at C48.
Comment on lines +1465 to +1469
# decoding, matching the standalone recipe (ROCm/ATOM PR 2632). Small
# concurrency (C1-C10) is TP4-only on the GPU prefix cache with no KV offload;
# C1/C2 run the GLM-5.2 mono decode at K3. Large concurrency (C16-C48) adds DCP4
# to shard the decode KV and the LMCache DRAM tier. The recipe sets the draft
# depth per point (K3 for C1/C2 and C48, K5 for C4/C8, K4 for C10-C40). The TP8

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

Nothing blocking. The comments below are optional suggestions. There is no need to push a fix for them before merging.

Comment on lines 1464 to +1470
# GLM-5.2 FP4 agentic-coding benchmark on MI355X via ATOM with MTP speculative
# decoding, matching the standalone recipe (ROCm/ATOM PR 2345). Small
# concurrency (C2-C10) is TP4-only on the GPU prefix cache with no KV offload;
# large concurrency (C16-C48) adds DCP4 to shard the decode KV and keeps the
# LMCache DRAM offload. The script resolves the draft depth and forced golden AL
# per concurrency point (K5/3.61 for C2-C8, K4/3.33 for C10-C40, K3/2.99 for
# C48). The TP8 arm stays GPU-resident with no KV offload.
# decoding, matching the standalone recipe (ROCm/ATOM PR 2632). Small
# concurrency (C1-C10) is TP4-only on the GPU prefix cache with no KV offload;
# C1/C2 run the GLM-5.2 mono decode at K3. Large concurrency (C16-C48) adds DCP4
# to shard the decode KV and the LMCache DRAM tier. The recipe sets the draft
# depth per point (K3 for C1/C2 and C48, K5 for C4/C8, K4 for C10-C40). The TP8
# arm stays GPU-resident with no KV offload.

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): Two comment blocks this PR rewrote break the mandatory AGENTS.md comment rules. Maintainers get header text that restates the config, plus upstream-PR provenance. The amd-master.yaml:1464-1470 block sits above the config key, describes the topology, and cites "matching the standalone recipe (ROCm/ATOM PR 2632)". The agentic.yaml:43-47 block sits above override_tp4_c1 and repeats each override's draft depth. Fix: drop both header blocks. Move only the non-obvious reasons (why ATOM_MONO_ENABLE is '0' by default, the 1109 GB vs 1099.5 GB sizing) into short comments on the exact lines they explain. [also at: inferencex-e2e/benchmarks/single_node/srt-slurm-recipes/glm5.2/atom/mi355x-fp4-mtp/agentic.yaml:47 - nit: The comments this PR rewrote break the AGENTS.md comment rules, so maintainers get header and provenance text that drifts out of date as values change.]

Why this was flagged

AGENTS.md:64 says "Never add broad, overarching comments ... above a recipe, override, or section". AGENTS.md:65 bans history and provenance comments ("where it was derived from"). The diff rewrites amd-master.yaml:1464-1470 to cite "ROCm/ATOM PR 2632" and to list the draft depth for each concurrency point, which the recipe already encodes. It also rewrites the header at agentic.yaml:43-47 above override_tp4_c1, which restates the num-speculative-tokens and DCP settings in the overrides below it. Both blocks exist on the base, but this PR re-authors them, so the convention slip now lands in new text. Nothing changes at runtime. The cost is maintainability: these restatements go stale the next time a draft depth changes, and the PR link is history that perf-changelog.yaml already records.

Verification: The trigger is that this PR rewrites both comment blocks. AGENTS.md:65 bans comments about "where it was derived from". The amd-master.yaml:1464-1470 block sits directly above glm5.2-fp4-mi355x-atom-agentic-mtp:. It cites provenance ("matching the standalone recipe (ROCm/ATOM PR 2632)"), and this PR changed that PR number from 2345. Nothing breaks at runtime.

@zhuyuhua-v zhuyuhua-v added AMD full-sweep-enabled Full sweep with canary gate; matrix jobs run to completion despite failures agentx AgentX benchmarks, recipes, and infrastructure labels Oct 19, 2026
…-atom-1018

Signed-off-by: zhuyuhua-v <yuhzhu@amd.com>

# Conflicts:
#	inferencex-e2e/perf-changelog.yaml
@github-actions

github-actions Bot commented Oct 20, 2026 •

Copy link
Copy Markdown
Contributor

…-atom-1018

# Conflicts:
#	inferencex-e2e/perf-changelog.yaml
Track ROCm/ATOM PR 2632: TP4 C1 and C2 start the server with max-num-seqs 1
and 2 (exactly CONC) and capture graphs only up to it.
@zhuyuhua-v
zhuyuhua-v requested a review from zijiecode as a code owner October 21, 2026 03:36
@zhuyuhua-v zhuyuhua-v added AMD full-sweep-enabled Full sweep with canary gate; matrix jobs run to completion despite failures agentx AgentX benchmarks, recipes, and infrastructure and removed AMD full-sweep-enabled Full sweep with canary gate; matrix jobs run to completion despite failures agentx AgentX benchmarks, recipes, and infrastructure labels Oct 21, 2026
…-atom-1018

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

Copy link
Copy Markdown
Collaborator

/reuse-sweep-run 39540045682

seungrokj and others added 2 commits October 25, 2026 21:21
- Image rocm/atom-dev:nightly_202609211553 (ATOM 0.1.7.dev517+g52a6a96fd) -> nightly_202610181506 (ATOM 0.1.8.dev77+gdf86c4829); the atomesh router container_image digest moves from f00a9dc5 (nightly_202609161445) to 1bb1909a, the same nightly as the workers.
- Settings follow the GLM-5.2 recipe in ROCm/ATOM PR 2632 (open; recipe document only, measured on df86c4829).
- Add TP4 C1 (TP4 now C1-C10) and restore the TP4+DCP4 arm at C16-C48 with the LMCache DRAM tier (0.5.6.dev139+gf22dec28), which #3463 dropped with the other search-space entries without an srt-recipe; TP8 C1-C4 unchanged.
- dram-utilization 0.171 -> 0.74, so TOTAL_CPU_DRAM_GB is 1109 GB per TP4 server, covering the 4 x 256 GiB LMCache tier.
- TP4 C1 and C2 run GLM-5.2 mono decode (ATOM_MONO_ENABLE=1) at 3 draft tokens (golden AL 2.99), max-num-seqs equal to the concurrency, graphs [1] and [1,2]; C2 was 5 draft tokens, max-num-seqs 4, graphs [1,2,4].
- Every other point sets ATOM_MONO_ENABLE=0, which the new ATOM defaults on; TP4 C4/C8 (5 drafts, AL 3.61), C10 (4, AL 3.33) and TP8 keep their settings.
- DCP4 points: decode-context-parallel-size 4, ATOM_DCP_PREFILL_QREP=1, LMCache 256 GiB per rank via extra-kv-connectors lmcache_offload, 2x admission, 4 draft tokens (AL 3.33), 3 at C48 (AL 2.99).
- Relevant ATOM changes: GLM-5.2 mono decode (#2479, #2483, #2535); DCP prefill QREP and QREP with MTP (#2437, #2290); DCP prefill fixes with MTP (#2430, #2496, #2506, #2348); MTP verify/draft-graph fixes (#2451, #2367, #2566, #2495); lmcache_offload fixes (#2305, #2339, #2547) and the LMCache pin (#2438).
- Draft data types unchanged: the BF16 MTP layer 78 stays BF16 (excluded from ptpc_fp8 by model.layers.78.*), with the target's FP8 KV and FP4 indexer cache; mono decode covers only target layers 0-77.

- 镜像 rocm/atom-dev:nightly_202609211553(ATOM 0.1.7.dev517+g52a6a96fd)-> nightly_202610181506(ATOM 0.1.8.dev77+gdf86c4829);atomesh router 的 container_image digest 从 f00a9dc5(nightly_202609161445)改为 1bb1909a,与 worker 使用同一 nightly。
- 设置与 ROCm/ATOM PR 2632 中的 GLM-5.2 recipe 一致(该 PR 尚未合并,只改 recipe 文档,测量基于 df86c4829)。
- 新增 TP4 C1(TP4 覆盖 C1-C10),并恢复带 LMCache DRAM 层(0.5.6.dev139+gf22dec28)的 TP4+DCP4 C16-C48 分支;该分支曾在 #3463 中随其他没有 srt-recipe 的搜索空间条目一起被删除。TP8 C1-C4 不变。
- dram-utilization 0.171 -> 0.74,每个 TP4 服务的 TOTAL_CPU_DRAM_GB 为 1109 GB,可容纳 4 x 256 GiB 的 LMCache 层。
- TP4 C1 和 C2 以 3 个 draft token(golden AL 2.99)运行 GLM-5.2 mono decode(ATOM_MONO_ENABLE=1),max-num-seqs 等于并发数,graph 为 [1] 和 [1,2];C2 原为 5 个 draft token、max-num-seqs 4、graph [1,2,4]。
- 其他点位都设置 ATOM_MONO_ENABLE=0(新 ATOM 默认开启);TP4 C4/C8(5 个 draft,AL 3.61)、C10(4 个,AL 3.33)和 TP8 设置不变。
- DCP4 点位:decode-context-parallel-size 4,ATOM_DCP_PREFILL_QREP=1,通过 extra-kv-connectors lmcache_offload 每个 rank 使用 256 GiB LMCache,准入为 2 倍并发,4 个 draft token(AL 3.33),C48 为 3 个(AL 2.99)。
- 相关 ATOM 改动:GLM-5.2 mono decode(#2479、#2483、#2535);DCP prefill QREP 及 QREP 与 MTP 同时使用(#2437、#2290);DCP prefill 与 MTP 的修复(#2430、#2496、#2506、#2348);MTP verify/draft graph 修复(#2451、#2367、#2566、#2495);lmcache_offload 修复(#2305、#2339、#2547)和 LMCache 版本固定(#2438)。
- Draft 数据类型不变:BF16 的 MTP 第 78 层保持 BF16(被 model.layers.78.* 排除在 ptpc_fp8 之外),与 target 共用 FP8 KV cache 和 FP4 indexer cache;mono decode 只覆盖 target 第 0-77 层。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@seungrokj seungrokj changed the title feat(agentx): retune GLM5.2 FP4 MI355X ATOM recipe on _1018 docker feat(agentx): retune GLM-5.2 FP4 MI355X ATOM recipe on nightly_202610181506 / feat(agentx):基于 nightly_202610181506 重新调优 GLM-5.2 FP4 MI355X ATOM recipe Oct 26, 2026
@seungrokj

Copy link
Copy Markdown
Collaborator

Draft data types: no change. The MTP draft (model.layers.78 in amd/GLM-5.2-MXFP4, num_nextn_predict_layers 1) is stored as follows (read from the safetensors headers; the checkpoint's Quark exclude list names every layer-78 module):

Part Data type
Attention q_a, q_b, kv_a_proj_with_mqa, kv_b, o_proj; indexer wq_b, wk, weights_proj BF16
Routed experts (256) and shared experts BF16 (the target's layer 77 experts are MXFP4)
Router gate BF16, FP32 e_score_correction_bias
Norms, eh_proj, enorm, hnorm BF16
Embedding / LM head shared with the target, BF16

At ATOM df86c48298f926c98ee71972ace8bda237bc9958 (head image nightly_202610181506) and 52a6a96fd27a4812ec69c81f3edeb2d5bfb1c827 (base image nightly_202609211553, from the image's OCI revision label), GLM-5.2 builds the draft as DeepSeekMTP with the target's config (head, base) under the prefix model.layers.78 without remapping (deepseek_mtp.py#L203, #L77; the file is identical at both commits). exclude_layer entries containing * are matched with fnmatch (head config.py#L560, base #L521), and an excluded layer gets no quantization (head #L462, base #L423; online requant skipped at head quant_spec.py#L110, base #L99). The recipe's online_quant_config excludes model.layers.78.*, so ptpc_fp8 does not reach the draft, and the FP8 prologue of eh_proj is not taken (deepseek_mtp.py#L252). The draft uses the shared FP8 KV pool (kv_cache_dtype fp8, aiter_mla.py#L425) and the FP4 indexer cache (index_cache_dtype fp4, sparse_indexer_fp4.py#L79), like the target.

The draft therefore runs as shipped: BF16 weights and activations on every layer, an FP8 KV cache and an FP4 indexer cache, before and after the PR. The new GLM-5.2 mono decode (ATOM_MONO_ENABLE=1 at TP4 C1/C2) is wired only into the target forward (deepseek_v2.py#L3578) and covers layers 0-77 (glm52/mono/contract.py#L27); ATOM has no GLM-5.2 draft mono runner, so the draft stays on the standard path. At the base commit neither GLM-5.2 mono nor ATOM_MONO_ENABLE exists.

中文

Draft 数据类型:无变化。 MTP draft(amd/GLM-5.2-MXFP4 中的 model.layers.78,num_nextn_predict_layers 为 1)的存储方式如下(读自 safetensors header;checkpoint 的 Quark exclude 列表包含第 78 层的全部模块):

部分 数据类型
Attention q_a、q_b、kv_a_proj_with_mqa、kv_b、o_proj;indexer wq_b、wk、weights_proj BF16
路由专家(256 个)和共享专家 BF16(target 第 77 层的专家为 MXFP4)
Router gate BF16,e_score_correction_bias 为 FP32
Norm、eh_proj、enorm、hnorm BF16
Embedding / LM head 与 target 共享,BF16

在 ATOM df86c48298f926c98ee71972ace8bda237bc9958(head 镜像 nightly_202610181506)和 52a6a96fd27a4812ec69c81f3edeb2d5bfb1c827(base 镜像 nightly_202609211553,取自镜像的 OCI revision label)中,GLM-5.2 使用 target 的配置构建 DeepSeekMTP draft(head、base),前缀为 model.layers.78,不做重映射(deepseek_mtp.py#L203、#L77;该文件在两个版本中完全相同)。含 * 的 exclude_layer 条目用 fnmatch 匹配(head config.py#L560、base #L521),被排除的层不做量化(head #L462、base #L423;在线重量化在 head quant_spec.py#L110、base #L99 处跳过)。recipe 的 online_quant_config 排除了 model.layers.78.*,因此 ptpc_fp8 不会作用于 draft,eh_proj 的 FP8 prologue 也不会执行(deepseek_mtp.py#L252)。draft 与 target 一样使用共享的 FP8 KV pool(kv_cache_dtype fp8,aiter_mla.py#L425)和 FP4 indexer cache(index_cache_dtype fp4,sparse_indexer_fp4.py#L79)。

因此 PR 前后 draft 都按原样运行:所有层均为 BF16 权重和激活,KV cache 为 FP8,indexer cache 为 FP4。新的 GLM-5.2 mono decode(TP4 C1/C2 设置 ATOM_MONO_ENABLE=1)只接入 target 的 forward(deepseek_v2.py#L3578),覆盖第 0-77 层(glm52/mono/contract.py#L27);ATOM 没有 GLM-5.2 的 draft mono runner,因此 draft 仍走标准路径。base 版本中既没有 GLM-5.2 mono,也没有 ATOM_MONO_ENABLE。

@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
  • Verified that every draft model and draft head is served as it ships: the draft that ships with the served checkpoint, at its stored precision, through the pinned upstream image's default handling, with the shipped and effective draft precision recorded in the additional detail section. No submission-side quantization, dtype override, checkpoint substitution, or patch may lower draft precision below that default, regardless of eval results or AL. Explicitly verified that SGLANG_NVFP4_CKPT_FP8_NEXTN_MOE is not enabled in the effective recipe, including inherited settings; enabling it is prohibited going forward, and historical runs do not grant an exception. See Draft-model precision for what counts as the default and the MLPerf comparison.
  • 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 infx/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; target/verifier FLOPs at lower precisions is fine, given that the config passes private evals, but this does not permit lowering draft-model or draft-head precision below what ships. As an general north star princple, we should only use optimizations which is used in production by customers that care about accuracy
  • For affected Dynamo TRT-LLM benchmarks, verified that iteration/KV-cache metrics are collected and published under the pinned Dynamo implementation and effective engine settings. Resolve the installed Dynamo version separately from the container tag; use supported metrics controls without requiring KV events. Record the version and configuration evidence in the additional detail section. See verifier Check 17. N/A for unaffected serving paths or frameworks without these Dynamo settings.
  • 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 affected vLLM/SGLang production serving configuration in this PR, including Dynamo deployments, is documented in the official vLLM recipes and/or the SGLang cookbook, for both single-node and multi-node aggregated and disaggregated serving. The documentation covers production-useful flags, environment variables, and launch commands (including prefill, decode, and router/frontend commands for disaggregation); InferenceX-only benchmark/harness settings are excluded with reasoning in the additional detail section:
    • I linked the corresponding upstream PR in the vLLM recipe repo or SGLang cookbook source 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.
  • Reported measured throughput/E2EL Pareto counts and evidence per affected curve (≥5 points strongly recommended). Below 5 or unverifiable: tag a core maintainer for review; recorded admin bypass required before merge. N/A if no curves are affected. Details.

Additional detail section:

Signed: seungrokj

@github-actions

github-actions Bot commented Oct 26, 2026 •

Copy link
Copy Markdown
Contributor

❌❌❌ REJECTED ❌❌❌

@seungrokj Blocking: no eval covers the new GLM-5.2 mono-decode kernel path. TP4 C1/C2 enable it, and the only eval ran at DCP4 C48 with it disabled. Every other check passes or is N/A.

❌ Check 2 (Evals pass): FAIL — No eval exercised the mono-decode path this PR turns on: override_tp4_c1/override_tp4_c2 set ATOM_MONO_ENABLE: '1' (a separate GLM-5.2 target decode kernel, new in nightly_202610181506), but the only eval (run 39540045682, TP4/DCP4 C48) inherits the base ATOM_MONO_ENABLE: '0'; run an eval on a mono-decode point (TP4 C1 or C2) or explain it with rerun evidence. The C48 eval itself is fine: gsm8k em_strict 0.9719 ± 0.0045 on rocm/atom-dev:nightly_202610181506, compared with the closest ingested cohort (run 35693365964, TP4 C48, 0.9742 ± 0.0044): gap 0.0023, 2-sigma threshold 0.0126, no sibling eval rows.

Passed and not applicable checks

✅ Check 0 (CODEOWNER): PASS — seungrokj is a named owner of inferencex-e2e/configs/amd-master.yaml; the recipe and perf-changelog.yaml fall only under the catch-all.

✅ Check 1 (In-PR sweep): PASS — In-PR commit c919625c6 has all 13 agentic / jobs plus the agentic eval / job green at attempt 4 of run 39540045682 (the facts report marked it unsatisfied only because it looks for the skipped single-node/eval / names). Later commits are non-material: four merges of main (no change to this config's recipe or master block; harness fixes in f8eceffc1/36f6a427e and an atom-neutral DCP validation change in 9d3cc289e do not alter its launch, benchmark or eval path; removed INFERENCEX_RUNTIME_ENV_VARS had no consumer) and 4cbffd76b, which only rewrites the changelog.

➖ Check 3 (Upstream recipe): N/A — No vLLM/SGLang serving configuration is affected: the only changed entry is glm5.2-fp4-mi355x-atom-agentic-mtp (framework: atom, vendor engine); the linked ROCm/ATOM recipe is informational.

✅ Check 4 (Reuse command): PASS — COLLABORATOR seungrokj posted /reuse-sweep-run 39540045682 on its own line (2026-10-26), naming the Check 1 run.

✅ Check 5 (Checklist template): PASS — All 17 current-template items, including the recipe sub-item, are present and checked.

✅ Check 6 (Upstream images / ordering): PASS — The ATOM entry needs no upstream vLLM/SGLang image; open-source engine entry glm5.2-fp4-mi355x-sglang-agentic-mtp already exists for glm5.2 on cluster:mi355x-amds.

✅ Check 7 (Deprecated models): PASS — MODELS.md lists glm5.2 agentic coding as active (2026-10-26).

✅ Check 8 (No arch hacks): PASS — No --hf-overrides or model-config edits; the accuracy levers online_quant_config ptpc_fp8 and AITER_QUICK_REDUCE_QUANTIZATION=INT4 are base settings, so the C48 eval covers them.

✅ Check 9 (Chat template): PASS — Base benchmark env sets AIPERF_APPLY_CHAT_TEMPLATE: 'true' for every MTP point.

✅ Check 10 (No engine patches): PASS — No patches, setup scripts, source edits or wheel installs on the reachable recipe path at the pinned SHA.

✅ Check 11 (Golden AL): PASS — Launcher pins the ATOM spec-decode-acceptance-length from glm5.2_mtp.yaml thinking_on: K3 = 2.99 (TP4 C1/C2, C48; C1 submission shows 2.99), K4 = 3.33 (C10, C16-C40), K5 = 3.61 (TP4 C4/C8, TP8). The eval point runs real acceptance.

➖ Check 12 (Append-only): N/A — No new changelog entry sets append-only: true.

✅ Check 13 (Draft precision): PASS — The MTP draft model.layers.78 of amd/GLM-5.2-MXFP4 (78 target layers, num_nextn_predict_layers 1) ships BF16 and is in the checkpoint's quantization exclusions. ATOM df86c4829 fnmatch-matches model.layers.78.* and leaves it unquantized. Mono decode covers target layers only. KV is FP8 and the indexer cache FP4, shared with the target. SGLANG_NVFP4_CKPT_FP8_NEXTN_MOE does not apply (ATOM).

✅ Check 14 (Pareto coverage): PASS — glm5.2 / agentic-coding / mi355x_atom / fp4 / p90 E2EL curve: 13 measured points, 7 on the frontier (TP4 C8, C10; DCP4 C16-C48), via pareto_coverage on bmk_agentic_* artifacts of run 39540045682 (c919625c6).

✅ Check 15 (PR description): PASS — The image, the per-point settings and all 13 throughput values match the pinned recipe and run artifacts. The recipe and master config at c919625c6 are identical to the head; the later commits are merges plus a changelog-only rewrite.

➖ Check 16 (NVIDIA overview): N/A — AMD MI355X only.

➖ Check 17 (Metrics publication): N/A — No Dynamo TRT-LLM serving path is affected (ATOM with atomesh frontend).

✅ Check 18 (Recipe/sweep consistency): PASS — All 13 head points generate and bind. Master tp/dcp-size/conc lists match the recipe overrides (gpus 4/8, decode-context-parallel-size 4). TOTAL_CPU_DRAM_GB 1109 matches the result's allocated_cpu_dram_gb. rocm/atom-dev:nightly_202610181506 and frontend digest 1bb1909a both resolve (same config digest). The changelog matches the diff. No undominated or unmeasured removed points (old-image points re-added on the new image).

Assessed commit: 4cbffd76bb16247420c3b9d8916175e5e5b16c58.

The default agentic selector evals only the highest concurrency, DCP4 C48,
where ATOM_MONO_ENABLE is 0. TP4 C1/C2 are the points that turn the new
mono-decode kernel on, so add an evals-only key whose highest point is C2.

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

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

agentx AgentX benchmarks, recipes, and infrastructure AMD full-sweep-enabled Full sweep with canary gate; matrix jobs run to completion despite failures

Projects

Status: No status

Development

Successfully merging this pull request may close these issues.

3 participants