Prhub

#36440 Add GLM-5.3-Flash cookbook

原始 PR 作者 JustinTong0323 合并时间 2026-08-26 22:00 文件变更 6 提交数 1 评论 1 代码增减 +850 / -4

执行摘要

新增 GLM-5.3-Flash 部署 cookbook 与基准配置

PR body 明确说明目标是“Add the GLM-5.3-Flash cookbook: deployment recipes for GB300 / H100 / H200 / B200 / B300 / GB200 / MI300X with NEXTN speculative decoding and multimodal serving”。这是 sglang 文档体系中“新模型 Day-0 cookbook”系列的一部分,为社区用户提供可复现的部署命令、推荐配置与性能基准,降低新硬件的上手成本。

建议

可作为 cookbook 编写规范的参考 PR 快速阅读。重点留意 _deployment.jsx 中 overlay 维度回退逻辑的通用化处理——它解决了 URL hash 与 UI 状态不一致的历史问题,是后续扩展部署面板时值得复用的设计。对普通用户来说,文档页面的命令生成和基准注释(区分模拟与真实数据)也体现了良好的可复现性实践。

讨论亮点

评论区精华

本 PR 没有 review 评论,唯一审核人 zijiexia 直接 APPROVED。Mintlify bot 提供了文档预览部署状态,未涉及技术讨论。因此没有需要提炼的设计权衡或未解决疑虑。

实现拆解

实现拆解

  1. 新增模型配置片段docs/src/snippets/configs/zai-org/glm-5.3-flash.jsx 定义 config 对象,声明 supportedHardwarematchDims(strategy)、overlayDims(KV Cache + DSA Backend / VLM Transport / HiCache)、modelNameszai-org/GLM-5.3-Flash)与各类占位符。其中 kvDsaPairfp8-trtllm 选项通过 disabled 回调在 Hopper(H100/H200)上禁用,hicache 提供 off / L1+L2 / Mooncake 三档。

  2. 新增基准数据片段docs/src/snippets/configs/zai-org/glm-5.3-flash-benchmarks.jsx 提供 benchmarks 数组。GB300 上实测 Low Latency 与 High Throughput 两个策略,High Throughput 覆盖 16 / 64 / 256 三个并发档位,并附详细 notes 说明 SGLANG_SIMULATE_ACC_LEN=3 仅用于吞吐机制验证,GSM8K 97.50% 来自非模拟的完整评估。其他硬件留空占位,等待后续验证补充。

  3. 新增文档页面docs/cookbook/autoregressive/GLM/GLM-5.3-Flash.mdx 导入 DeploymentPlayground 组件,介绍模型架构(320B 总参 / 18B 激活、MLA + DSA + KDA 混合注意力、288 路由专家、原生 MTP 草稿层),并给出两种策略的说明与已验证/未验证的徽标语义。

  4. 增强部署面板通用逻辑docs/src/snippets/_deployment.jsx 修改 validateSelection,当 URL hash 选中的 overlay 选项被 showWhen 隐藏或规则禁用时,snap 到该维度下第一个可用选项;selSummary 改为只拼接非空字段,避免缺少 variant/quant 维度时展示多余分隔符。该改动对所有复用此面板的 cookbook 生效。

  5. 注册文档路由并清理旧标记docs/docs.json 在 GLM 分组中插入新页面路径;GLM-5.2.mdx 移除 tag: NEW,避免两个模型同时标记为 NEW。

  6. 测试与部署配套:本次为纯文档与前端 snippet 变更,未新增自动化测试;CI 中的 PR Test 通过,Extra 运行失败但未在 review 中讨论,推测为基础设施抖动。

文件 模块 状态 重要度
docs/src/snippets/configs/zai-org/glm-5.3-flash.jsx 配置片段 added 7.07
docs/src/snippets/configs/zai-org/glm-5.3-flash-benchmarks.jsx 基准数据 added 6.28
docs/cookbook/autoregressive/GLM/GLM-5.3-Flash.mdx 文档页面 added 5.62
docs/src/snippets/_deployment.jsx 部署面板 modified 5.8
docs/docs.json 路由配置 modified 2.36
docs/cookbook/autoregressive/GLM/GLM-5.2.mdx 文档页面 modified 2.17

关键符号

validateSelection

关键源码片段

docs/src/snippets/configs/zai-org/glm-5.3-flash-benchmarks.jsx core-logic

提供 GB300 实测吞吐与 GSM8K 准确率数据,其余硬件留占位,是部署面板基准矩阵的数据源。

// 基准矩阵数据:Deployment 面板按 hw + strategy 匹配单元格。
// 只有真实测过的条目才填 speed/accuracy,其余为占位符,
// 页面会据此显示 Verified / Not Verified 徽标。
export const benchmarks = [
  {
    match: { hw: "gb300", strategy: "low-latency" },
    sglang_version: "f13cb6f6a7",
    latencyPercentile: "Mean",
    speed: [
      {
        workload: { dataset: "random", isl: 1024, osl: 256, max_concurrency: 16, num_prompts: 80 },
        ttft_ms: 589.2,
        tpot_ms: 6.48,
        tokens_per_sec_per_gpu: 2277.46,
      },
    ],
    accuracy: { gsm8k_pct: 97.50 },
    // 注释明确说明 SGLANG_SIMULATE_ACC_LEN=3 是吞吐机制验证,
    // 不是准确率数据来源;准确率来自共享的非模拟 GSM8K gate。
    notes:
      "Measured on 4x GB300 (TP4/EP4) with the final weights (zai-org/GLM-5.3-Flash, c5b82b63e37b) at the rc2 cut (f13cb6f6a7), adaptive MTP 5/1/6 with SGLANG_SIMULATE_ACC_LEN=3 ...",
  },
  {
    match: { hw: "gb300", strategy: "high-throughput" },
    sglang_version: "f13cb6f6a7",
    latencyPercentile: "Mean",
    speed: [
      { workload: { dataset: "random", isl: 1024, osl: 256, max_concurrency: 16, num_prompts: 80 }, ttft_ms: 684.63, tpot_ms: 11.53, tokens_per_sec_per_gpu: 1410.4 },
      { workload: { dataset: "random", isl: 1024, osl: 256, max_concurrency: 64, num_prompts: 320 }, ttft_ms: 1691.64, tpot_ms: 19.88, tokens_per_sec_per_gpu: 3023.31 },
      { workload: { dataset: "random", isl: 1024, osl: 256, max_concurrency: 256, num_prompts: 1280 }, ttft_ms: 5192.23, tpot_ms: 43.35, tokens_per_sec_per_gpu: 4856.19 },
    ],
    accuracy: { gsm8k_pct: 97.50 },
    notes:
      "Measured on 4x GB300 (TP4/EP4) with the final weights ..., speculative decoding off, after two discarded warmups per row ...",
  },
  // 其他硬件暂无实测数据,保留空单元格以便后续 PR 补充。
  { match: { hw: "h100", strategy: "low-latency" } },
  { match: { hw: "h100", strategy: "high-throughput" } },
  { match: { hw: "h200", strategy: "low-latency" } },
  { match: { hw: "h200", strategy: "high-throughput" } },
  { match: { hw: "b200", strategy: "low-latency" } },
  { match: { hw: "b200", strategy: "high-throughput" } },
  { match: { hw: "b300", strategy: "low-latency" } },
  { match: { hw: "b300", strategy: "high-throughput" } },
  { match: { hw: "gb200", strategy: "low-latency" } },
  { match: { hw: "gb200", strategy: "high-throughput" } },
];
docs/src/snippets/_deployment.jsx core-logic

部署面板通用组件:修改 validateSelection 使 overlay 维度在 hash 选中的选项被隐藏或禁用时正确回落,修改 selSummary 拼接逻辑,影响所有 cookbook 的 URL 恢复行为。

// 将 URL hash 中解析出的选择(可能已过期)“吸附”到真实可用的单元格。
// 主维度逐级校验;overlay 维度不参与单元格匹配,但可能被 showWhen 隐藏
// 或被规则禁用,因此需要像用户手动重新选择一样做一次可用性过滤。
const validateSelection = (cells, parsed) => {
  const valid = {};
  // 先处理主维度:保持优先级顺序,逐维寻找与已确定维度一致的单元格。
  for (const dim of DIMENSIONS) {
    const want = parsed[dim];
    const works = cells.some(
      (c) =>
        c.match[dim] === want &&
        DIMENSIONS.slice(0, DIMENSIONS.indexOf(dim)).every((d) => c.match[d] === valid[d]),
    );
    if (works) {
      valid[dim] = want;
    } else {
      const fallback = cells.find((c) =>
        DIMENSIONS.slice(0, DIMENSIONS.indexOf(dim)).every((d) => c.match[d] === valid[d]),
      );
      valid[dim] = fallback ? fallback.match[dim] : want;
    }
  }
  // Overlay 维度跟随主选择,但 hash 可能给出一个被隐藏或禁用的选项;
  // 此时应该回退到当前组合下第一个可用选项,而不是保留非法值。
  for (const spec of overlayDimSpecs) {
    const want = parsed[spec.id];
    const opts = spec.options || [];
    const picked = opts.some((o) => o.id === want)
      ? want
      : spec.default ?? (opts[0] && opts[0].id) ?? "";
    const withPick = { ...valid, [spec.id]: picked };
    const usable = visibleOptions(spec, withPick).filter((o) => !optionDisabled(o, withPick));
    // 如果 picked 不可见或不可用,则取第一个可用的选项;
    // 若完全没有可用项,则保留 picked(防御性兜底)。
    valid[spec.id] = usable.some((o) => o.id === picked)
      ? picked
      : (usable[0] && usable[0].id) ?? picked;
  }
  return valid;
};// 基准命令弹窗中的摘要拼接:只输出非空字段,
// 避免缺少 variant 或 quant 维度时出现“ · · ”之类的空分隔符。
const selSummary = [
  sel.hw && sel.hw.toUpperCase(),
  sel.variant,
  sel.quant && sel.quant.toUpperCase(),
  sel.strategy,
  sel.nodes,
]
  .filter((part) => part !== undefined && part !== null && part !== "")
  .join(" · ");

评论区精华

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

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

风险与影响

风险分析

  • 回归风险_deployment.jsx 是多个 cookbook 共用的部署面板组件,validateSelection 的改动会影响所有 URL hash 恢复行为。虽然逻辑上更稳健(优先选择可见且未禁用的选项),但可能改变既有页面在特定 hash 下的默认回退结果,需要视觉回归验证。
  • 文档准确性风险:GLM-5.3-Flash 的基准数据来自特定 commit(f13cb6f6a7)与权重快照(c5b82b63e37b),若后续 SGLang 版本变动,数据可能过期;部分硬件(H100/H200/B200/B300/GB200)与 MI300X 的 benchmark 占位未填写,用户可能误以为已实测。
  • 配置一致性风险fp8-trtllm 在 Hopper 上禁用、HiCache L3 依赖 Mooncake 配置等约束通过提示文本传达,但缺少自动化校验,配置错误只能依赖用户阅读。

影响分析

  • 用户:获得 GLM-5.3-Flash 的完整部署入口,可在多硬件上选择策略并生成 docker 命令;部署面板的通用改进让所有 cookbook 的 URL 分享与回退行为更可靠。
  • 系统:仅影响文档站点,不涉及 SGLang 运行时或 API。
  • 团队:为后续新模型 cookbook 提供了标准模板,_deployment.jsx 的更改将统一提升部署面板的健壮性。
部署面板通用逻辑变更 文档基准数据可能过期 部分硬件实测数据缺失

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论