Prhub

#29194 [AMD] [GLM5] GLM-5.1 MXFP4 (MI355X) + enable EAGLE for gfx950 in cookbook

原始 PR 作者 Raiden-Makoto 合并时间 2026-06-25 18:54 文件变更 2 提交数 1 评论 2 代码增减 +53 / -17

执行摘要

GLM-5.1 MXFP4 + EAGLE 文档更新

PR body 指出 SGLang Cookbook 的 GLM-5.1 页面缺少对 MXFP4 checkpoint(amd/GLM-5.1-MXFP4)在 MI355X 上的部署说明,且原有的“EAGLE 在 AMD 上不支持”表述对于 gfx950 已不准确(已在 GPU 上验证通过)。本次变更旨在补充文档,消除用户歧义。

本文档 PR 内容清晰,没有技术争议,可安全合并。建议部署人员关注后续 gfx942 EAGLE 验证进展,及时同步文档。

讨论亮点

无 reviewer 评论。PR 由 HaiShaw 直接批准,无公开讨论。

实现拆解

  1. 交互式部署生成器(glm-51-deployment.jsx
    - 在硬件注释中添加 MI355X (gfx950) 的专用量化推荐:MXFP4,并注明 MI350X 与 MI355X 散热差异可忽略。
    - getDynamicItems 中新增 mxfp4 量化选项(id: 'mxfp4'),仅当硬件为 mi355x 时启用且默认选中。
    - BF16 的默认逻辑从“所有 AMD”调整为“AMD 非 gfx950”(即 mi300x/mi325x 默认 BF16,mi355x 默认 MXFP4)。
    - 关键变更:删除 speculative 选项块,不再通过 UI 切换来开关投机解码;改为对 MI355X 默认生成 EAGLE 参数,对 MI300X/MI325X (gfx942) 排除。
    • modelConfigs.mi355x 增加 mxfp4: { tp: 4, mem: 0.85 } 配置,并在命令生成逻辑中据此输出 --model-path amd/GLM-5.1-MXFP4 --tp 4 --kv-cache-dtype fp8_e4m3
  2. Cookbook 页面(GLM-5.1.mdx
    - 在硬件表格中新增“MXFP4”列,为每个硬件行填充对应值(MI355X 为 tp=4,其余为 “— ”)。
    - 在 4.2 节添加 MXFP4 (MI355X/gfx950) 的命令示例块,包含 SGLANG_DSA_TRITON_PREFILL=1 可选环境变量和 EAGLE 参数。
    - 更新 AMD 说明文字:“EAGLE 投机解码在 MI355X (gfx950) 上受支持,在 MI300X/MI325X (gfx942) 上未验证”。
  3. 无配套测试:当前变更仅涉及文档和 UI 配置,未引入可执行的测试。
文件 模块 状态 重要度
docs_new/src/snippets/autoregressive/glm-51-deployment.jsx 部署生成器 modified 6.61
docs_new/cookbook/autoregressive/GLM/GLM-5.1.mdx 文档页面 modified 3.98

关键源码片段

docs_new/src/snippets/autoregressive/glm-51-deployment.jsx core-logic

交互式部署生成器,核心变更文件:新增 MXFP4 量化选项、调整 EAGLE 生成逻辑、删除 speculative UI 切换。

// 该段选自 getDynamicItems 函数,展示量化选项的生成逻辑
getDynamicItems: (values) => {
  const hw = values.hardware;
  const isAMD = ['mi300x', 'mi325x', 'mi355x'].includes(hw);
  const isGfx950 = hw === 'mi355x'; // 仅 MI355X 支持 MXFP4
  const supportsNVFP4 = ['b300', 'gb300'].includes(hw);
  const isB300 = hw === 'b300';
  const isGB300 = hw === 'gb300';
  return [
    {
      id: 'mxfp4',
      label: 'MXFP4',
      subtitle: 'gfx950',
      default: isGfx950, // MI355X 默认选中
      disabled: !isGfx950,
      disabledReason: !isGfx950 ? 'MXFP4 verified on MI355X (gfx950)' : ''
    },
    {
      id: 'bf16',
      label: 'BF16',
      subtitle: 'Full Weights',
      default: isAMD && !isGfx950, // 非 gfx950 的 AMD 硬件默认 BF16
      disabled: !isAMD,
      disabledReason: supportsNVFP4 ? 'NVFP4 is recommended for this hardware' : 'FP8 is recommended for this hardware'
    },
    // fp8 和 nvfp4 选项保持不变(略)……
  ];
}
// modelConfigs 中为 MI355X 新增 mxfp4 配置
const modelConfigs = {
  // …其他硬件…
  mi355x: {
    bf16: { tp: 8, mem: 0.80 },
    mxfp4: { tp: 4, mem: 0.85 } // 新增:MXFP4 使用 tp=4,内存比例 0.85
  }
};
// 命令生成逻辑中,当选择 mxfp4 时输出对应参数
// (片段仅展示关键条件分支)
const generateCommand = () => {
  const { hardware, quantization } = values;
  const isGfx950 = hardware === 'mi355x';
  const cfg = modelConfigs[hardware][quantization];
  let cmd = `python3 -m sglang.launch_server --model-path ${modelPath}`;
  cmd += ` --tp ${cfg.tp}`;
  if (quantization === 'mxfp4') {
    cmd += ` --kv-cache-dtype fp8_e4m3`; // MXFP4 需要指定 KV 缓存 dtype
  }
  if (isGfx950) {
    // EAGLE 参数:仅对 gfx950 自动添加
    cmd += ` --enable-eagle --eagle-num-predict 3`;
  } else if (['mi300x', 'mi325x'].includes(hardware)) {
    // gfx942 上不添加 EAGLE 参数(未验证)
  }
  // ……
};

评论区精华

没有提炼出高价值讨论线程

当前评论区没有形成足够清晰的争议点或结论,后续有更多讨论时会体现在这里。

风险与影响

  • 风险极低:本次 PR 仅修改文档和交互式配置生成器 JSX,不涉及任何 Python 运行时、模型加载、推理逻辑或构建流程。
  • 潜在文档误导:EAGLE 在 MI300X/MI325X 上的支持状态标注为“未验证”,若后续验证通过但未及时更新文档,可能导致用户低估可用性。
  • 无回归风险:不修改核心代码,不影响现有功能。
  • 用户影响:部署 GLM-5.1 到 MI355X 的用户现在可以直接选择 MXFP4 量化并自动获得 EAGLE 参数,降低配置成本。
  • 系统影响:无运行时影响。
  • 团队影响:小幅文档维护,需跟进后续 gfx942 EAGLE 验证结果以更新文档。
仅文档变更

关联 Issue

未识别关联 Issue

当前没有检测到明确关联的 Issue 链接,后续同步到相关引用后会出现在这里。

完整报告

参与讨论