Skip to content

[Klaud Cold] glm5.2-fp8-mi355x-sglang-agentic-mtp: day-zero GLM-5.2 FP8 SGLang AgentX MTP on MI355X / MI355X 上 GLM-5.2 FP8 SGLang AgentX MTP 首发配方 - #2867

Open
functionstackx wants to merge 2 commits into
mainfrom
feat/glm5.2-fp8-mi355x-sglang-agentic-mtp-dayzero
Open

[Klaud Cold] glm5.2-fp8-mi355x-sglang-agentic-mtp: day-zero GLM-5.2 FP8 SGLang AgentX MTP on MI355X / MI355X 上 GLM-5.2 FP8 SGLang AgentX MTP 首发配方#2867
functionstackx wants to merge 2 commits into
mainfrom
feat/glm5.2-fp8-mi355x-sglang-agentic-mtp-dayzero

Conversation

@functionstackx

@functionstackx functionstackx commented Sep 8, 2026

Copy link
Copy Markdown
Collaborator

Summary

Day-zero GLM-5.2 FP8 AgentX (agentic-coding) recipe on MI355X with SGLang native EAGLE/MTP: glm5.2-fp8-mi355x-sglang-agentic-mtp, the FP8 precision sibling of glm5.2-fp4-mi355x-sglang-agentic-mtp.

  • Checkpoint: zai-org/GLM-5.2-FP8 (~756 GB, 141 shards, quant_method=fp8, 128x128 weight blocks). Quantization is auto-detected from the checkpoint, as the ROCm GLM-5.2 FP8 MI325X sibling does.
  • Script: benchmarks/single_node/agentic/glm5.2_fp8_mi355x_sglang_mtp.sh, a port of the validated MXFP4 MI355X script. Serve flags unchanged: fp8_e4m3 KV, tilelang DSA prefill/decode backends, SGLANG_OPT_USE_TOPK_V2=false (top-k v2 JIT cannot build for gfx950), glm47/glm45 parsers, chunked-prefill 32768, mem-fraction-static 0.85, HiCache ratio 1.5 write_through_selective. EAGLE num-steps 5 / topk 1 / 6 draft tokens with acceptance pinned to golden AL 3.61 (K=5, thinking_on), which was measured on this FP8 checkpoint. The MXFP4 script's Mooncake L3 branch is not carried.
  • Image: lmsysorg/sglang-rocm:v0.5.19-rocm720-mi35x-20260907 (verified on Docker Hub, pushed 2026-09-07T14:35:05Z, digest sha256:1a31d1ff5f6b4afee1866d72c0610445c629fa3b0c056f372f843ef839dbd8be), the newest tag in the rocm720-mi35x flavor the other MI355X SGLang recipes use. The DSA backend flags and env vars the script relies on are present in v0.5.19.
  • Search space (TP8-only): GPU-resident KV at conc [1, 2, 4, 10] (mirrors the MXFP4 sibling's TP8 arm) and HiCache DRAM offload at conc [8, 12, 16]; dram-utilization 0.8. ~94.5 GB/rank of weights leaves a ~150 GB/rank fp8 KV pool; TP4 would leave ~56 GB/rank and is not attempted on day zero (the MI325X FP8 sibling is TP8-only too).
  • Launcher: runners/launch_mi355x-amds.sh mounts the NFS hf-hub cache for zai-org/GLM-5.2-FP8 (MiniMax-M3 precedent) so the 756 GB pull happens once for the cluster rather than once per node-local NVMe cache. Script-name routing already resolves glm5.2_fp8_mi355x_sglang_mtp.sh.

Validation: bash -n on the script and launcher, both YAMLs parse, generate_sweep_configs.py test-config yields the expected 7 cells, and the launcher's script-name construction resolves to the new file.

Recipes touched: glm5.2-fp8-mi355x-sglang-agentic-mtp

Test plan

  • full-sweep-enabled sweep passes on cluster:mi355x-amds (7 cells).

🤖 Generated with Claude Code


Note

Low Risk
Changes are limited to benchmark scripts, cluster launcher cache routing, and YAML/changelog entries with no production serving or auth paths touched.

Overview
Adds the first GLM-5.2 FP8 AgentX (agentic-coding) benchmark on MI355X via SGLang EAGLE/MTP, as the FP8 sibling of the existing MXFP4 recipe.

A new run script benchmarks/single_node/agentic/glm5.2_fp8_mi355x_sglang_mtp.sh ports the validated MXFP4 MI355X agentic flow for zai-org/GLM-5.2-FP8 (~756 GB, TP8-only), with HiCache DRAM offload at higher concurrency and throughput runs pinning simulated acceptance to golden AL 3.61. Master config glm5.2-fp8-mi355x-sglang-agentic-mtp defines a 7-cell sweep (GPU-resident KV at conc 1/2/4/10; HiCache at 8/12/16) on lmsysorg/sglang-rocm:v0.5.19-rocm720-mi35x-20260908 (re-pinned after intermittent DSA fp8 KV crashes on the 20260907 image).

runners/launch_mi355x-amds.sh now mounts the shared NFS Hugging Face cache for this checkpoint (same pattern as MiniMax-M3). perf-changelog.yaml documents the recipe.

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

Update: re-pinned to the 2026-09-08 ROCm daily

First sweep (run 34173459478) on v0.5.19-rocm720-mi35x-20260907: the four GPU-resident cells (c1/c2/c4/c10) and HiCache c8 passed; HiCache c12, c16 and the eval crashed after minutes to an hour of clean serving with AttributeError: 'NoneType' object has no attribute 'translate_dcp_read_ids' on the DSA fp8 KV read path (the EAGLE draft backend never binds a translator). sgl-project/sglang#38318 (merged 2026-09-07T20:03Z) adds the None guard. Re-pinned to lmsysorg/sglang-rocm:v0.5.19-rocm720-mi35x-20260908 (pushed 2026-09-08T14:36:46Z, digest sha256:976bdf01d2e41ed5354741f99afc2cf0164e4f25607a1263e2f5c7519c60fa9f), the first mi35x daily built after that fix. Recipe otherwise unchanged; the passing cells show the port itself is sound.

@github-actions

github-actions Bot commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

Thanks for the contribution! Please reach out to respective companies' CODEOWNER to fill in the latest PR_REVIEW_CHECKLIST.md before pinging core maintainer on Slack for review. In order for the signoff PR check bot to trigger, you must follow the PR_REVIEW_CHECKLIST.md template correctly, including the phrase As a PR reviewer and CODEOWNER, I have reviewed this and have.

For PR verification, add the full-sweep-fail-fast label (strongly recommended) to this PR — the benchmark sweep only runs on labeled PRs. Use full-sweep-enabled only if you need matrix jobs to keep running past a failure.

PR authors are responsible for ensuring that after merging, all GitHub Action jobs fully pass. A lot of the time, failures are just flakes and simply re-running the failed jobs will fix it. See GitHub's docs on re-running failed jobs


感谢你的贡献!请联系相应公司的 CODEOWNER 填写最新的 PR_REVIEW_CHECKLIST.md,然后再在 Slack 上联系核心维护者进行审阅。为了触发 signoff PR 检查机器人,你必须正确遵循 PR_REVIEW_CHECKLIST.md 模板,包括保留英文语句 As a PR reviewer and CODEOWNER, I have reviewed this and have

如需进行 PR 验证,请为此 PR 添加 full-sweep-fail-fast 标签(强烈推荐)— 基准测试 sweep 仅在带有标签的 PR 上运行。仅当需要矩阵任务在失败后继续运行时才使用 full-sweep-enabled

PR 作者有责任确保合并后所有 GitHub Action 任务完全通过。 很多时候失败只是偶发抖动(flake),重新运行失败的任务即可解决。参见 GitHub 关于重新运行失败任务的文档

Comment on lines +276 to +279
# passes no chat_template_kwargs (mini-swe-agent doesn't); the heavy
# thinking burns the shared 75-step budget. Double it, as the GLM-5.2 B200
# and MI325X recipes do.
export SWEBENCH_AGENT_STEP_LIMIT=150

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.

🔴 SWEBENCH_AGENT_STEP_LIMIT=150 is meant to 'double' the mini-swe-agent step budget, but the real default (benchmark_lib.sh:2545, int(os.environ.get("SWEBENCH_AGENT_STEP_LIMIT","250"))) is 250, not 75 as the comment claims — so this override actually cuts the budget by 40% for this recipe's EVAL_ONLY (SWE-bench) runs. Fix: either drop the override so EVAL_ONLY keeps the true 250 default, or set it to a value actually above 250 if more thinking budget is genuinely needed; verify against the real default instead of the stale '75-step' comment copied from other GLM-5.2 recipes. The FP4 MI355X sibling this script claims to be an unchanged 'serve flags' port of has no such override, so eval-mode results between the two 'comparable' precision curves will diverge.

Extended reasoning...

benchmark_lib.sh's _run_swebench_agentic_generation reads SWEBENCH_AGENT_STEP_LIMIT with Python default "250" and writes it into mini-swe-agent's agent.step_limit. The new script unconditionally exports SWEBENCH_AGENT_STEP_LIMIT=150 in the EVAL_ONLY branch (added net-new vs. the FP4 MI355X sibling, which sets nothing and gets 250). Any EVAL_ONLY run of this recipe therefore gives the agent only 150 commands instead of the 250 it would otherwise get, increasing the LimitsExceeded-unsubmitted rate and depressing the resolved-rate score, while the comment frames this as 'doubling' a 75-step budget that does not exist in code — the same wrong-default claim is copied from glm5.2_fp4_b200/b300 and glm5.2_fp8_mi325x, but this is its first appearance on MI355X where the FP4 sibling has no override at all.

Verification: nit. The comment at benchmarks/single_node/agentic/glm5.2_fp8_mi355x_sglang_mtp.sh:277 claims GLM-5.2 thinking "burns the shared 75-step budget. Double it" and line 279 sets export SWEBENCH_AGENT_STEP_LIMIT=150. The real default is 250, not 75: benchmark_lib.sh:2545 reads int(os.environ.get("SWEBENCH_AGENT_STEP_LIMIT", "250")) and utils/evals/EVALS.md:642 documents the default as 250.…

Comment thread perf-changelog.yaml
- "Image lmsysorg/sglang-rocm:v0.5.19-rocm720-mi35x-20260907 (2026-09-07 ROCm 7.2 mi35x nightly, digest sha256:1a31d1ff5f6b4afee1866d72c0610445c629fa3b0c056f372f843ef839dbd8be; Docker Hub last pushed 2026-09-07T14:35:05Z), the newest tag in the rocm720-mi35x flavor the other MI355X SGLang recipes use. --dsa-prefill-backend/--dsa-decode-backend tilelang, SGLANG_OPT_USE_TOPK_V2 and SGLANG_SIMULATE_ACC_TOKEN_MODE are all present in v0.5.19."
- "Memory: the ~756 GB block-FP8 checkpoint (141 shards) is ~94.5 GB/rank at TP8 on 288 GB MI355X (MXFP4: ~47 GB/rank), leaving a ~150 GB/rank fp8 KV pool inside the 0.85 static share (MXFP4 TP8: ~182.7 GB/rank). TP8-only on day zero: TP4 would leave ~56 GB/rank for KV, DSA indexer, and EAGLE verification batches, and the MI325X FP8 sibling is TP8-only for the same reason. HiCache ratio 1.5 pins ~1.8 TB across TP8, inside the ~3.0 TB of host DRAM on cluster:mi355x-amds."
- "Search space, steps of at least 2 with a hard stop at 16: TP8/EP1 GPU-resident KV at conc [1, 2, 4, 10] (mirrors the MXFP4 sibling's TP8 arm exactly) and TP8/EP1 HiCache DRAM offload at conc [8, 12, 16]; dram-utilization 0.8."
- "runners/launch_mi355x-amds.sh mounts the NFS hf-hub cache (/it-share/hf-hub-cache) for zai-org/GLM-5.2-FP8, following the MiniMax-M3 precedent, so the 756 GB checkpoint is pulled once for the cluster instead of once per node-local NVMe cache. No script-name routing change was needed: the launcher already resolves <model>_<precision>_mi355x_<framework>_mtp.sh."

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🔴 The new changelog entry ships with pr-link: PRLINK_PLACEHOLDER even though the PR is already open (opened 2026-09-08), violating configuration-procedures.md's rule that the placeholder is only allowed before the PR exists and must be replaced with the real URL immediately after creation. Fix: replace PRLINK_PLACEHOLDER with the actual PR URL (https://github.com/SemiAnalysisAI/InferenceX/pull/) before merge.

Extended reasoning...

docs/configuration-procedures.md:254 states 'Before the PR exists ... permits pr-link: TBD. Replace it with the real URL immediately after creating the PR.' Every other entry in perf-changelog.yaml (e.g. the entry immediately above at line 6923) has a resolved github.com/.../pull/ link; this new entry breaks that append-only invariant by merging with an unresolved placeholder, leaving the changelog unable to trace this recipe back to its originating PR once merged.

Verification: normal. The new appended entry ends with pr-link: PRLINK_PLACEHOLDER (perf-changelog.yaml:6937), added by this PR. Beyond the traceability rule in docs/configuration-procedures.md:254, this token is not a recognized placeholder: utils/validate_perf_changelog.py:24-27 defines PR_LINK_PLACEHOLDERS = {"XXX", "https://github.com/SemiAnalysisAI/InferenceX/pull/XXX"}. The automated… | nit.…

@github-actions

github-actions Bot commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

functionstackx and others added 2 commits September 8, 2026 13:12
…P8 SGLang AgentX MTP on MI355X

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
… (EAGLE DSA fp8 read-door None guard)

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@functionstackx
functionstackx force-pushed the feat/glm5.2-fp8-mi355x-sglang-agentic-mtp-dayzero branch from b03aa7d to a7422ba Compare September 8, 2026 17:12
@github-actions

github-actions Bot commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

1 similar comment
@github-actions

github-actions Bot commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

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

Projects

Status: No status

Development

Successfully merging this pull request may close these issues.

1 participant