Prhub

#27660 [AMD] Update amd qwen3.5 cookbook

原始 PR 作者 1am9trash 合并时间 2026-06-10 07:26 文件变更 2 提交数 3 评论 2 代码增减 +62 / -29

执行摘要

更新 AMD Qwen3.5 部署文档与交互式片段

根据 PR body 所述,目的是“Update amd qwen 3.5 command and docs. Sync with inferenceX script.”,并关联了 InferenceX 的 PR#1680。

本 PR 属于常规文档更新,值得 AMD 用户关注。建议审阅时确认:

  • Docker 镜像标签是否与当前发布版本一致;
  • sglang servepython3 -m sglang.launch_server 的选择是否与项目标准一致。
讨论亮点

Review 由 gemini-code-assist[bot] 和 HaiShaw 完成。关键讨论点:

  1. 环境变量前置(高优先级):bot 建议在 AMD GPU 的生成命令中,在 cmd 前直接加上 SGLANG_USE_AITER=1SGLANG_USE_AITER_UNIFIED_ATTN=1,以确保复制的命令立即可用。该建议在后续 commit 中被采纳。
  2. 使用 sglang serve 替代 python3 -m sglang.launch_server(中优先级):bot 建议在 cookbook 中使用标准的 sglang serve 入口,以保持与 NVIDIA 命令的一致性。该建议未被采纳,最终版本仍使用 python3 -m sglang.launch_server

实现拆解

  1. 更新 qwen35-deployment.jsx 交互式部署配置生成器

    • 修改 FP4 注释,标明 AMD MI355X 支持 MXFP4。
    • 在 hardware 选项中,mi355x 在 FP4 模式下不再禁用(由 disabled: isNvfp4 改为 disabled: false),允许选择 MI355X 进行 FP4 部署。
    • mi355x 的配置字典添加 FP4 条目:fp4: { tp: 2, mem: 0.8 }
    • 修改模型名称生成逻辑:当选择 FP4 且硬件为 mi355x 时,使用 amd/Qwen3.5-397B-A17B-MXFP4 而非 Nvidia 的 NVFP4 模型。
    • 修改 FlashInfer allreduce fusion 的启用条件:排除 AMD GPU(mi300xmi325xmi355x),因为这些 GPU 应使用 AITER allreduce fusion。
    • 替换 AMD GPU 的 attention 后端配置:从 --attention-backend triton 改为 --attention-backend aiter,并添加 --page-size 16 和可选的 --enable-aiter-allreduce-fusion(当 TP>1 时)。
  2. 更新 Qwen3.5.mdx 部署指南

    • 在模型表格中新增 AMD MXFP4 模型链接 amd/Qwen3.5-397B-A17B-MXFP4
    • 更新 Docker 镜像标签:MI300X/MI325X 改为 lmsysorg/sglang-rocm:v0.5.12.post1-rocm720-mi30x-20260604,MI355X 改为 lmsysorg/sglang-rocm:v0.5.12.post1-rocm720-mi35x-20260604
    • 修改 AMD GPU 的部署说明:从使用 SGLANG_USE_AITER=1--attention-backend triton 改为使用 SGLANG_USE_AITER=1SGLANG_USE_AITER_UNIFIED_ATTN=1--attention-backend aiter--page-size 16 以及可选的 --enable-aiter-allreduce-fusion
    • 更新 Qwen3.5-397B-A17B 的完整部署命令,添加环境变量。
    • 更新 Mamba chunk size 建议,将 chunk_size 调整为与 tokenizer worker num 相同的值。
文件 模块 状态 重要度
docs_new/src/snippets/autoregressive/qwen35-deployment.jsx 部署脚本 modified 6.75
docs_new/cookbook/autoregressive/Qwen/Qwen3.5.mdx 部署文档 modified 3.87

关键源码片段

docs_new/src/snippets/autoregressive/qwen35-deployment.jsx core-logic

核心交互式部署配置生成器,定义了 Qwen3.5 各模型变体在各硬件平台上的部署命令。本次变更添加了 MI355X 的 MXFP4 支持、AITER 后端切换以及环境变量设置。

// docs_new/src/snippets/autoregressive/qwen35-deployment.jsx ( 关键片段 )
export const Qwen35Deployment = () => {
  // ... 省略常量定义 ...  const options = {
    // ... hardware 和 quantization 选项 ...
  };  // 生成命令行
  let cmd = `python3 -m sglang.launch_server \\\n --model-path ${modelName}`;
  // ... 其他参数 ...  // AMD GPU 配置块
  const amdGpu = hardware === 'mi300x' || hardware === 'mi325x' || hardware === 'mi355x';
  if (amdGpu) {
    // 将环境变量前置到命令中,确保开箱即用
    cmd = "SGLANG_USE_AITER=1 \\\nSGLANG_USE_AITER_UNIFIED_ATTN=1 \\\n" + cmd;
    cmd += ` \\\n --attention-backend aiter`; // 使用 AITER unified-attention 后端
    cmd += ` \\\n --page-size 16`; // 页大小固定为 16
    if (hwConfig.tp > 1) {
      cmd += ` \\\n --enable-aiter-allreduce-fusion`; // 多 GPU 时启用 allreduce 融合
    }
  }
  // ...
};

评论区精华

环境变量前置到命令中 设计

gemini-code-assist[bot] 建议在生成的 AMD GPU 命令前直接附加 SGLANG_USE_AITER=1 和 SGLANG_USE_AITER_UNIFIED_ATTN=1 环境变量,以确保用户复制命令后可直接运行。原实现中这些变量分散在文档说明中,未直接嵌入命令字符串。

结论:该建议被采纳,最终版本中命令前添加了环境变量前缀。 · 已解决

使用 sglang serve 替代 python3 -m sglang.launch_server 设计

gemini-code-assist[bot] 建议在 cookbook 的 AMD 部署命令中使用 `sglang serve` 作为标准入口,以与 NVIDIA 命令保持一致。原文档中 Nvidia 命令使用 `sglang serve`,而 AMD 命令使用 `python3 -m sglang.launch_server`。

结论:该建议未被采纳,最终版本仍使用 `python3 -m sglang.launch_server`。可能由于 `sglang serve` 与某些环境变量或参数尚不完全兼容。 · unresolved

风险与影响

无显著技术风险。本次变更为文档和配置生成器更新,不涉及核心代码逻辑变更。潜在风险包括:

  • 如果用户直接从交互式片段复制命令,缺少环境变量前缀可能导致 AMD GPU 部署失败。但该问题已在后续 commit 中修复。
  • Docker 镜像标签指向特定版本,可能存在过时风险。

影响范围:

  • 用户:AMD GPU(特别是 MI355X)用户将获得更新的部署指南,支持最新的 MXFP4 模型和 AITER 后端。
  • 系统:无后端代码变更。
  • 团队:文档与 InferenceX 仓库同步,减少维护负担。
文档变更 配置生成器更新

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论