Prhub

#27396 Cookbook for QAT

原始 PR 作者 kpham-sgl 合并时间 2026-06-06 02:18 文件变更 2 提交数 2 评论 2 代码增减 +16 / -2

执行摘要

为 Gemma 4 部署交互文档新增 QAT 检查点支持

Gemma 4 系列模型发布了 QAT (Quantization-Aware Training) 检查点版本,用户需要一种直观的方式来选择这些检查点并正确生成部署命令。PR body 中的模板表明这是文档更新,旨在帮助用户轻松切换检查点类型。

建议合入。这是一个低风险、高收益的文档更新,通过交互式组件降低了用户使用 QAT 检查点的门槛,符合 SGLang 持续丰富模型部署指南的方向。

讨论亮点

该 PR 的 review 讨论较少。审核者 zijiexia 直接批准了变更,无额外评论。唯一的 comments 来自 gemini-code-assist[bot](每日配额限制提示)和 mintlify[bot](自动文档预览部署通知),与技术内容无关。

实现拆解

  1. 修改部署命令生成组件 (docs_new/src/snippets/autoregressive/gemma4-deployment.jsx):

    • options 对象中新增 checkpoint 选项,包含 standard(默认,BF16)和 qat(q4_0-unquantized)两个条目。
    • generateCommand 函数中,根据 values.checkpoint 的值计算 qatSuffix,若为 'qat' 则追加 -qat-q4_0-unquantized,否则为空字符串。
    • modelPath 由固定的 modelNames[modelSize] 改为 ${modelNames[modelSize]}${qatSuffix},并用于所有命令生成(包括 --model-path 和 speculative decoding 的 --speculative-draft-model-path)。
    • 添加注释说明 QAT 检查点保持 BF16 权重,因此 TP 和内存要求与标准检查点一致。
  2. 更新 cookbook 文档 (docs_new/cookbook/autoregressive/Google/Gemma4.mdx):

    • 在文档的“注意事项”列表中添加一行描述,说明可以选择 QAT 检查点,并强调内存和 TP 要求与标准检查点相同,且有对应的辅助 draft 模型用于 MTP。
文件 模块 状态 重要度
docs_new/src/snippets/autoregressive/gemma4-deployment.jsx 文档组件 modified 5.92
docs_new/cookbook/autoregressive/Google/Gemma4.mdx 文档 modified 2.0

关键源码片段

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

核心变更文件:在交互式部署命令生成器中新增了 Checkpoint 选择器,并调整了模型路径拼接逻辑以支持 QAT 后缀。

// docs_new/src/snippets/autoregressive/gemma4-deployment.jsx
// 新增 checkpoint 字段,让用户选择 Standard (BF16) 或 QAT 检查点
export const Gemma4Deployment = () => {
  const options = {
    modelSize: {
      name: 'modelSize',
      title: 'Model Variant',
      items: [
        { id: 'e2b', label: 'E2B (~2B)', default: false },
        { id: 'e4b', label: 'E4B (~4B)', default: true },
        { id: '12b', label: '12B (Dense)', default: false },
        { id: '31b', label: '31B (Dense)', default: false },
        { id: '26b-a4b', label: '26B-A4B (MoE)', default: false },
      ]
    },
    // --- 新增:Checkpoint 选择 ---
    checkpoint: {
      name: 'checkpoint',
      title: 'Checkpoint',
      items: [
        { id: 'standard', label: 'Standard', subtitle: 'BF16', default: true },
        { id: 'qat', label: 'QAT', subtitle: 'q4_0-unquantized', default: false },
      ]
    },
    // ... hardware, reasoning, toolcall, speculative 等原有字段保持不变
  };  // ... modelConfigs, getInitialState 等保持不变  const generateCommand = (values) => {
    const { hardware, modelSize } = values;
    const hwConfig = modelConfigs[hardware]?.[modelSize];
    if (!hwConfig) return `# Error: Unknown hardware/model combination`;    let { tp, mem } = hwConfig;    const modelNames = {
      'e2b': 'google/gemma-4-E2B-it',
      'e4b': 'google/gemma-4-E4B-it',
      '12b': 'google/gemma-4-12B-it',
      '31b': 'google/gemma-4-31B-it',
      '26b-a4b': 'google/gemma-4-26B-A4B-it',
    };    // QAT 发布版本保持 bf16 权重 (q4_0-unquantized),因此唯一变化是模型路径后缀;
    // TP 和内存需求与标准检查点一致。
    const qatSuffix = values.checkpoint === 'qat' ? '-qat-q4_0-unquantized' : '';
    const modelPath = `${modelNames[modelSize]}${qatSuffix}`;    // ... MTP 相关逻辑保持不变    let cmd = `sglang serve --model-path ${modelPath}`;
    if (tp > 1) {
      cmd += ` \\
  --tp ${tp}`;
    }
    // ... 处理其他选项的命令规则    if (mtpEnabled) {
      cmd += ` \\
  --speculative-algorithm NEXTN`;
      cmd += ` \\
  --speculative-draft-model-path ${modelPath}-assistant`;
      // ... 其余 speculative 参数
    }    cmd += ` \\
  --mem-fraction-static ${mem}`;
    cmd += ` \\
  --host 0.0.0.0 --port 30000`;    return cmd;
  };

}
}
}
    }
  }
}

评论区精华

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

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

风险与影响

风险极低。变更仅限于文档和交互式选择器组件,不涉及任何后端推理逻辑、API 或配置解析。主要风险是用户可能误以为 QAT 检查点需要在启动参数中额外指定,但代码注释和文档均已明确说明仅路径后缀不同,无其他差异。

  • 用户:使用 Gemma 4 cookbook 部署页面的用户可以轻松切换 Standard/QAT 检查点,并获得正确的启动命令(包括 draft 模型路径)。
  • 文档:Gemma 4 部署说明新增了一行,提升了文档覆盖率。
  • 系统/团队:无运行时影响;维护成本低,后续检查点类型变化时需同步更新。
文档变更,无风险

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论