Prhub

#23486 docs(cookbook): add Qwen3.6-27B dense variant

原始 PR 作者 JustinTong0323 合并时间 2026-04-23 01:22 文件变更 2 提交数 1 评论 2 代码增减 +55 / -17

执行摘要

为 Qwen3.6 文档添加 27B 密集变体支持,更新部署配置和模型说明。

根据 PR body 描述,Qwen3.6 发布了 27B 密集变体,需要更新文档以覆盖这一新变体。PR 作者指出,需要“更新 cookbook 页面和部署代码片段以覆盖两者”,并“重写介绍/可用模型/硬件要求章节以覆盖两个变体”。这反映了项目需要及时更新文档以匹配模型发布,确保用户能正确部署和使用新模型。

该 PR 主要涉及文档更新,对于核心开发者来说,无需深入阅读代码逻辑。但值得关注的是:

  1. 部署代码片段中模型配置的结构化设计(嵌套的 modelConfigs 对象)展示了如何优雅地支持多变体,可作为类似文档工具的参考。
  2. 文档中引用的测试数据(MMMU 结果)与官方数据的差异,可能需要后续澄清或更新,以确保信息准确性。
讨论亮点

本次 PR 没有 review 评论,直接由 mickqian 合并。但在关联的 Issue #23467 中,有评论者 cs-cat 提出了一个疑问:“MMMU 结果与官方结果(82.9)差异很大。这个测试是在 sglang 主分支上进行的吗?” 这暗示了文档中引用的测试数据(MMMU val 55.1% 和 53.0%)可能需要进一步验证或说明,但该讨论未在 PR 本身进行,也未影响合并决策。

实现拆解

  1. 更新部署代码片段(qwen36-deployment.jsx
    • options 配置对象中添加 modelSize 字段,包含 35b-a3b(MoE)和 27b(密集)两个选项。
    • 重构 modelConfigs 对象,按模型大小(35b-a3b27b)嵌套硬件和量化配置,每个变体包含 baseName 用于生成模型路径。
    • 修改 generateCommand 函数,从 values 中读取 modelSize,根据选择的变体获取配置并生成对应的 --model-path 参数(例如 Qwen/Qwen3.6-27BQwen/Qwen3.6-35B-A3B)。
    • 在遍历 options 生成命令行参数时,跳过新增的 modelSize 字段,避免其产生额外参数。
  2. 更新 cookbook 文档(Qwen3.6.mdx
    • 更新元描述,将“35B MoE 多模态模型”扩展为“包含 35B MoE(3B 激活)变体和 27B 密集变体的多模态系列”。
    • 重写模型介绍部分,明确列出两个变体:35B-A3B(稀疏 MoE)和 27B(密集),并说明它们共享相同的混合推理、工具调用和多模态接口。
    • 更新“关键特性”部分,将架构描述从“Gated Delta Networks + 稀疏 MoE”扩展为“Gated Delta Networks 主干;稀疏 MoE(35B / 3B 激活)或密集 27B 变体”。
    • 更新“可用模型”和“硬件要求”表格,添加 27B 变体的信息。
  3. 清理过时内容
    • 移除了 cookbook 中过时的 sglang[all] 安装提示,替换为通用的 uv pip install sglang,以匹配安装文档并避免引入不相关的扩散/追踪/HTTP2 依赖。
文件 模块 状态 重要度
docs_new/src/snippets/autoregressive/qwen36-deployment.jsx 部署片段 modified 5.89
docs_new/cookbook/autoregressive/Qwen/Qwen3.6.mdx 文档页面 modified 4.02

关键符号

Qwen36Deployment

关键源码片段

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

这是交互式部署代码片段的核心文件,负责生成用户部署命令。本次变更添加了模型大小选择逻辑,直接影响用户部署体验。

export const Qwen36Deployment = () => {
  const options = {
    // ... 其他配置(如 hardware)保持不变
    modelSize: {
      name: 'modelSize',
      title: 'Model Size',
      items: [
        { id: '35b-a3b', label: '35B-A3B (MoE)', default: true }, // 默认选中 MoE 变体
        { id: '27b', label: '27B (Dense)', default: false }, // 新增 27B 密集变体选项
      ],
    },
    // ... 其他配置(如 quantization、reasoning 等)
  };  // 模型配置现在按 modelSize 嵌套,每个变体包含 baseName 和硬件 / 量化配置
  const modelConfigs = {
    '35b-a3b': {
      baseName: '35B-A3B', // 用于生成模型路径的基础名称
      h100: { bf16: { tp: 1, mem: 0.8 }, fp8: { tp: 1, mem: 0.8 } },
      h200: { bf16: { tp: 1, mem: 0.8 }, fp8: { tp: 1, mem: 0.8 } },
      b200: { bf16: { tp: 1, mem: 0.8 }, fp8: { tp: 1, mem: 0.8 } },
    },
    '27b': {
      baseName: '27B', // 27B 变体的基础名称
      h100: { bf16: { tp: 1, mem: 0.8 }, fp8: { tp: 1, mem: 0.8 } },
      h200: { bf16: { tp: 1, mem: 0.8 }, fp8: { tp: 1, mem: 0.8 } },
      b200: { bf16: { tp: 1, mem: 0.8 }, fp8: { tp: 1, mem: 0.8 } },
    },
  };  const generateCommand = () => {
    const { hardware, modelSize, quantization, speculative } = values;
    const sizeConfig = modelConfigs[modelSize]; // 根据选择的 modelSize 获取配置
    const hwConfig = sizeConfig?.[hardware]?.[quantization]; // 嵌套获取硬件和量化配置
    if (!hwConfig) {
      return '# Please select a valid hardware and quantization combination';
    }    const quantSuffix = quantization === 'fp8' ? '-FP8' : '';
    const modelName = `Qwen/Qwen3.6-${sizeConfig.baseName}${quantSuffix}`; // 动态生成模型路径
    // ... 后续命令生成逻辑
  };
};

评论区精华

MMMU 测试结果差异 question

在关联 Issue #23467 中,cs-cat 评论指出文档中引用的 MMMU 结果(55.1%)与官方结果(82.9%)差异很大,询问测试是否在 sglang 主分支进行。

结论:未在 PR 中直接回应或解决,但 PR 作者在测试计划中已说明差异在置信区间内,且 FP8 变体达到 BF16 同等精度。 · unresolved

风险与影响

技术风险较低,主要涉及文档和前端代码片段:

  • 内容准确性风险:文档中引用的 MMMU 测试结果(55.1% 和 53.0%)与官方结果(82.9%)存在差异,可能误导用户对模型性能的预期。但 PR 作者已在测试计划中说明该差异在 Wilson 95% CI 范围内,且 FP8 变体在 #23467 修复后达到 BF16 同等精度。
  • 配置错误风险:部署代码片段中新增的 modelSize 逻辑如果存在 bug(如配置映射错误),可能导致生成的命令行参数不正确,影响用户部署。但变更相对简单,且基于现有结构扩展,风险可控。
  • 兼容性风险:无,本次变更不影响核心系统功能或 API。

影响范围主要针对文档用户和部署流程:

  • 对用户的影响:用户现在可以在文档中看到 Qwen3.6 的 27B 密集变体信息,并使用交互式工具生成对应的部署命令。这降低了用户部署新变体的门槛,提升了文档的实用性和时效性。
  • 对系统的影响:无直接影响,不涉及运行时逻辑变更。
  • 对团队的影响:文档与模型发布保持同步,减少了用户因信息滞后产生的支持问题。
内容准确性风险

关联 Issue

#23467 fix: dot-boundary match in is_layer_skipped for FP8 modules_to_not_convert

完整报告

参与讨论