Prhub

#39406 [AMD] GLM-5.2 MI355X MXFP4: bump image to 20260913, enable TOPK_V2

原始 PR 作者 ChangLiu0709 合并时间 2026-09-14 21:50 文件变更 2 提交数 3 评论 1 代码增减 +7 / -7

执行摘要

GLM-5.2 MI355X MXFP4 配方升级镜像并启用 TOPK_V2

PR body 明确动机是「syncs the GLM-5.2 MI355X MXFP4 cookbook recipes with SemiAnalysisAI/InferenceX#3081」。关联 Issue #3081 描述了两个诉求:一是把上游 SGLang ROCm 镜像从 lmsysorg/sglang-rocm:v0.5.19-rocm720-mi35x-20260910 更新到 -20260913;二是为 ROCm 上的 GLM-5.x 启用 SGLANG_OPT_USE_TOPK_V2=true,理由是「上游 PR sgl-project/sglang#36684 和 #36851 已使 v2 fused top-k kernel 可用,并为该模型系列在 ROCm 上启用此路径」。评论者 sogalin 也直接给出了价值判断:「LGTM, SGLANG_OPT_USE_TOPK_V2=1 can help improve the performance for GLM.」

是否值得精读:源码层面不值得精读——没有任何逻辑实现,全文 14 行 diff,属于典型的文档/配置同步,3-5 分钟即可看完。

值得关注的设计决策:一是镜像 tag 与 env flag 的耦合关系,建议在 docs/src/snippets/configs/zai-org/glm-5.2.jsx 的 dockerImages 条目旁就地加注释,或在 MDX 里补一句「TOPK_V2 需要 20260913 及以上镜像」,把隐含前提显式化;二是用 Revert 收敛范围的取舍,如果确实需要解释 HiCache arm,应把说明放在 InferenceX 侧,而不是回流到 cookbook。

给后续维护者的动作建议:(1) 若计划对外发布该配方,补一次 MI355X 实机精度/性能快照,别只依赖 reviewer 的经验判断;(2) 在 InferenceX#3081 合并后回头核对镜像 tag 与并发点集是否仍一致,避免短期漂移;(3) 排查 PR body 中 “PR Test (Extra)” 失败的原因,确认它与本次文档改动无关。

讨论亮点

本 PR 讨论密度很低:2 条 APPROVED、0 条行内 review 评论、1 条 issue 评论,没有任何技术分歧被显式记录。

sogalin(APPROVED):「LGTM, SGLANG_OPT_USE_TOPK_V2=1 can help improve the performance for GLM.」——这是全 PR 唯一的价值论证,来自维护者对 GLM 上 top-k 路径的经验,而不是本 PR 提供的实测数据。

1am9trash(APPROVED):「LGTM, cc @Jacob0226, @EricKing626」——纯批准 + 转交相关同学,没有提出条件或疑问。

值得注意的三个点:其一,没有任何 reviewer 追问「旧镜像 + TOPK_V2」这种组合是否安全;其二,HiCache 双 arm 说明的取舍不是 review 争出来的,而是作者自己在第三个 commit 里 Revert 掉的,属于作者主动的范围控制;其三,PR body 虽然标注了 “PR Test (Extra)” 失败,但讨论中没有人解释失败原因,也没有人把它与本次文档改动建立或排除关联。

实现拆解

1. 变更入口与范围界定:驱动源是 InferenceX#3081,落地只碰两个文件——docs/src/snippets/configs/zai-org/glm-5.2.jsx(+6/-6)与 docs/cookbook/autoregressive/GLM/GLM-5.2.mdx(+1/-1);python/sglang 下的运行时、内核与测试目录零改动,因此这不是内核修复本身,而是「内核能力具备后,配方跟进去启用」。

2. 镜像分桶更新:dockerImages["mi355x|mxfp4"]:该条目从 v0.5.19-rocm720-mi35x-20260910 变为 v0.5.19-rocm720-mi35x-20260913,这是本次唯一被 bump 的镜像条目。关键在于 mi355x 默认档仍锚定 v0.5.13.post1-rocm720-mi35x-20260618,mi325x / mi300x 也不动,所以只有 MXFP4 四个 cell 受影响;MDX 中 gfx950 block-FP8 精度修复说明引用的仍是 20260618 镜像,未被误改。

3. 环境变量注入:四个 MXFP4 cell 的 env:low-latency(TP8/EP1,5-step MTP)、balanced(TP4)、high-throughput(TP4/EP4,5-step MTP)、mtp-314(TP4,3-step MTP)四处由 env: [] 改为 env: ["SGLANG_OPT_USE_TOPK_V2=true"]。对应的 flags 数组一字未动——TP/EP 拓扑、--kv-cache-dtype fp8_e4m3、Triton DSA 前后端、draft token 数与 --mem-fraction-static 全部保留,说明这是一次「只换内核路径、不动并行与显存策略」的最小改动,也意味着性能差异只能归因于 top-k 内核本身。

4. 文档同步:MDX 的 MTP 验证说明:GLM-5.2.mdx 的 “MTP / EAGLE speculative decoding on AMD” 段落把固定镜像从 20260910 改为 20260913,并新增一句说明该镜像同时启用 SGLANG_OPT_USE_TOPK_V2=true,附上游 #36684 / #36851 链接。这一步保证 snippet 与 cookbook 之间镜像 tag 与 env 的「单一事实来源」不漂移,是文档型 PR 的必要闭环。

5. 范围收敛:HiCache 双 arm 说明被自行回退:第二个 commit 4ea02a0 曾加入 InferenceX 双 arm 说明(TP4/EP4 + HiCache DRAM offload 仅跑并发 ≥ 4;TP8/EP1 无 KV offloading 跑低并发 ≤ 2),第三个 commit 17eca5b 以 Revert "[AMD] GLM-5.2 MDX: document MI355X MXFP4 HiCache arm selection" 整体撤销。PR body 的 “What is NOT changed” 给出了理由:并发点重分配是 InferenceX benchmark-harness 变更,不是 cookbook serving-command 变更;HiCache 相关 knob 维持「host-specific、故意从可移植命令中省略、用户可在 Playground 的 Hierarchical KV Cache 卡片里切换」的既有表述。

6. 测试与验证配套:无新增测试。PR body 的验证项属于 InferenceX 侧(Docker Hub digest 存在性、bash -n、PyYAML 解析与矩阵生成检查);本仓库 CI 状态显示 “Latest PR Test (Base)” 通过、“PR Test (Extra)” 失败、“AMD ROCm 10” 无对应运行,说明这次配方改动没有 AMD 实机 CI 背书,只有 reviewer 的经验判断。

文件 模块 状态 重要度
docs/src/snippets/configs/zai-org/glm-5.2.jsx 配方配置 modified 5.4
docs/cookbook/autoregressive/GLM/GLM-5.2.mdx Cookbook 文档 modified 2.14

关键符号

dockerImages["mi355x|mxfp4"] playgroundFeatures.cells[quant=mxfp4].env(low-latency / balanced / high-throughput / mtp-314) GLM-5.2.mdx:MTP / EAGLE speculative decoding on AMD 说明段落

关键源码片段

docs/src/snippets/configs/zai-org/glm-5.2.jsx configuration

本次变更的核心文件:同时承担镜像分桶升级(dockerImages["mi355x|mxfp4"] 由 20260910 到 20260913)与四个 MXFP4 cell 的 env 注入(SGLANG_OPT_USE_TOPK_V2=true),是 Playground/cookbook 生成启动命令的唯一事实来源。

  // AMD MI355X 的镜像按量化形态分桶:FP8/BF16 档沿用较旧的 20260618 镜像,
  // 只有 `mi355x|mxfp4` 这一档跟随最新日构建(本次 20260910 → 20260913)。
  // 注意:默认 mi355x 档未同步升级,因此 TOPK_V2 只在 MXFP4 四个 cell 上被打开。
  dockerImages: {
    h200: "lmsysorg/sglang:latest",
    b200: "lmsysorg/sglang:latest",
    gb300: "lmsysorg/sglang:latest",
    b300: "lmsysorg/sglang:latest",
    mi355x: "lmsysorg/sglang-rocm:v0.5.13.post1-rocm720-mi35x-20260618",
    // 本次唯一被 bump 的条目:该镜像内含 GLM-5.2 MXFP4 所需的 ROCm 侧改动,
    // 也是启用 SGLANG_OPT_USE_TOPK_V2 的前置条件(旧镜像不要开这个 flag)。
    "mi355x|mxfp4": "lmsysorg/sglang-rocm:v0.5.19-rocm720-mi35x-20260913",
    mi325x: "lmsysorg/sglang-rocm:v0.5.13.post1-rocm700-mi30x-20260616",
    mi300x: "lmsysorg/sglang-rocm:v0.5.13.post1-rocm700-mi30x-20260616",
  },
  // MI355X + MXFP4 一共四个 cell(low-latency / balanced / high-throughput / mtp-314),
  // 本次统一把 env 从 [] 改为注入 SGLANG_OPT_USE_TOPK_V2=true,从而在 ROCm 上走
  // v2 fused top-k 的 MoE 路由内核(上游 sgl-project/sglang#36684、#36851 落地,
  // 取代此前 gfx950 上强制 v1 的 workaround)。
  // flags 保持原样:TP/EP 拓扑、--kv-cache-dtype fp8_e4m3、Triton DSA 前后端、
  // MTP 步数与 --mem-fraction-static 都未改,性能差异只能归因于 top-k 内核本身。
  {
    match: { hw: "mi355x", variant: "default", quant: "mxfp4", strategy: "low-latency", nodes: "single" },
    verified: false,
    env: ["SGLANG_OPT_USE_TOPK_V2=true"], // ← 本次新增;balanced / high-throughput / mtp-314 同样处理
    flags: [
      "--trust-remote-code",
      "--model-path {{MODEL_NAME}}",
      "--tp 8",
      "--ep-size 1",
      "--kv-cache-dtype fp8_e4m3",
      "--dsa-prefill-backend triton",
      "--dsa-decode-backend triton",
      "--speculative-algorithm EAGLE",
      "--speculative-num-steps 5",
      "--speculative-eagle-topk 1",
      "--speculative-num-draft-tokens 6",
      "--chunked-prefill-size 131072",
      "--mem-fraction-static 0.80",
      "--watchdog-timeout 1200",
      "--host {{HOST_IP}}",
      "--port {{PORT}}",
    ],
  },

评论区精华

TOPK_V2 对 GLM 的性能收益确认 性能

sogalin 在合并前评论:LGTM, SGLANG_OPT_USE_TOPK_V2=1 can help improve the performance for GLM. 这是全 PR 唯一的价值论证,来自维护者经验而非本 PR 提供的实测数据。

结论:接受启用 TOPK_V2,理由是它对 GLM 有性能收益;但 PR 内没有附任何 MI355X 实测曲线或精度对比。 · 已解决

InferenceX 双 arm / HiCache 并发点集是否要写进 cookbook 设计

作者先在 commit 4ea02a0 为 MI355X MXFP4 增加双 arm 说明(TP4/EP4 + HiCache DRAM offload 仅并发 ≥ 4;TP8/EP1 无 KV offloading 跑低并发 ≤ 2),随后在 commit 17eca5b 以 Revert 整体撤销。PR body 的 “What is NOT changed” 说明并发重分配是 InferenceX benchmark-harness 变更,不是 cookbook serving-command 变更。

结论:cookbook 只保留可移植的 serving 命令,HiCache arm 与并发点集留在 InferenceX 侧;这条边界由作者自行 Revert 确立,未见 reviewer 反对。 · 已解决

镜像 tag 与 TOPK_V2 的绑定是否被充分说明 测试

PR body 的 CI 状态显示 AMD ROCm 10 无对应运行、“PR Test (Extra)” 失败,且四个 MXFP4 cell 仍是 verified: false;无人解释 Extra 失败原因,也没有 reviewer 追问旧镜像搭配 TOPK_V2 的安全性。

结论:未闭环:改动缺少 AMD 实机验证,文档也没写明「TOPK_V2 需要 20260913 及以上镜像」这一前提。 · 待处理

风险与影响

  1. 文档与镜像的隐式耦合(具体到 docs/src/snippets/configs/zai-org/glm-5.2.jsx):SGLANG_OPT_USE_TOPK_V2=true 只在 MXFP4 四个 cell 生效,其正确性依赖 20260913 镜像提供的 v2 fused top-k 内核;但同一文件里 mi355x 默认档仍停在 20260618,MDX 段落也没有写出「旧镜像请勿开启该 flag」的显式告警。用户若拿默认 mi355x 镜像跑 MXFP4 并手动补上该 env,就会走到未验证的内核路径——这是本次改动新引入的误用面。

  2. 缺少实机与性能证据:CI 读数是 “AMD ROCm 10” 无对应运行、“PR Test (Extra)” 失败且未解释;四个 MXFP4 cell 仍保留 verified: false。也就是说,镜像 digest 存在性与性能收益都没有在本 PR 内被机器验证,属于纯人工判断。

  3. 外部同步源尚未闭环:同步依据 InferenceX#3081 目前仍是 open 状态,且该 PR 还包含本 PR 明确不做的 concurrency 重分配。若上游再调整镜像 tag 或点集,cookbook 会再次漂移,存在短周期内反复对齐的维护成本。

  4. 回退造成的信息缺口:4ea02a0 的双 arm 说明被撤销后,读者无法从 cookbook 得知 TP4/EP4 在低并发下已被移出 sweep 的背景;考虑到这些是 benchmark 主机专属语义,这个缺口可接受,但需要确认 InferenceX 侧文档确实承载了这部分解释。

  5. 评估盲区:改动本身不带内存/部署风险——不动 --mem-fraction-static、不动 KV cache dtype、不动并行度,回滚成本仅是文档回退;真正的不确定性集中在「新镜像 + 新内核」组合在 GLM-5.2 MXFP4 上的数值正确性,这一点全仓库 CI 不会覆盖。

对用户:按 cookbook 或 Playground 生成 GLM-5.2 MI355X MXFP4 启动命令的用户,会无感知地切换到 20260913 镜像并启用 v2 fused top-k MoE 路由内核,预期收益是 MoE top-k 段开销下降;FP8/BF16 单元格、MI300X / MI325X、H200 / B200 / GB300 等档位完全不受影响,因为镜像分桶与 env 都限定在 hw: mi355x 且 quant: mxfp4 的四个 cell。

对系统:零运行时、零内核、零调度改动,无兼容性、显存或部署面影响;回滚只需回退文档,代价极低。

对团队与流程:本 PR 固化了一次「AMD 日构建镜像 tag + env flag 同步」的操作范式,更重要的是用一次 Revert 划清了 cookbook(可移植 serving 命令)与 InferenceX(benchmark harness,含 HiCache arm 与并发点集)的职责边界,可作为后续 AMD 类文档同步 PR 的参考模板。

镜像与 env 隐式耦合 缺少 AMD 实机验证 CI 未覆盖且 Extra 失败未解释 外部同步源仍 open 无性能 / 精度数据支撑

关联 Issue

#3081 [AMD] Bump GLM-5.2 MI355X SGLang daily image / 更新 GLM-5.2 MI355X SGLang daily 镜像

完整报告

参与讨论