Prhub

#39213 [Docs] GLM-5.3-Flash cookbook: fixed MTP 5/1/6, EP1 + flashinfer_trtllm on Blackwell

原始 PR 作者 JustinTong0323 合并时间 2026-09-13 03:56 文件变更 3 提交数 1 评论 1 代码增减 +111 / -73

执行摘要

GLM-5.3-Flash 配方翻新:固定 MTP 5/1/6,Blackwell 切 trtllm MoE

PR body 明确指出 adaptive 投机策略在高并发低延迟场景的短板:"The adaptive policy caps draft steps to 3 at batch 8-16 and disables drafting at batch >=64; fixed MTP 5/1/6 recovers most of the gap (chat C80 4293 -> 8976 tok/s on stock source)"。即 adaptive MTP 在 batch 8-16 时把 draft steps 压到 3、batch >= 64 时完全关闭 drafting,导致吞吐明显劣化;固定深度 MTP 5/1/6 能恢复大部分差距。同时 trtllm-gen MoE kernels 是 SM100-only,所以 Blackwell 上改用 flashinfer_trtllm,Hopper 必须保留 deep_gemm。

值得快速通读,重点关注两个可迁移的设计结论:adaptive MTP 在高并发 batch 下 draft steps 被压制、收益反转的实测证据,以及 SM100-only kernel 对后端选择的硬件约束。若你负责 GLM-5.3-Flash 或同类 MoE + 投机解码模型的部署文档,可直接复用该 PR 的 verificationStatus 三态标记与 TODO 注释模式。无需精读实现细节,但建议留意后续补齐复测的 follow-up PR。

讨论亮点

本 PR 没有任何 review 评论或讨论线程:reviewer zijiexia 直接 APPROVED(空评论体),唯一的自动化反馈是 mintlify[bot] 的 preview deployment 提示。属于纯文档类 PR,无设计争点;关键的性能结论(adaptive 在 batch 场景失败、SM100-only kernel 约束)都以 PR body 与代码注释形式沉淀,未产生技术交锋。

实现拆解

本 PR 围绕 docs/src/snippets/configs/zai-org/glm-5.3-flash.jsx(配置面板)、glm-5.3-flash-benchmarks.jsx(基准数据)与 GLM-5.3-Flash.mdx(说明文档)三个文件展开,按以下 4 步推进:

  1. 投机策略收敛为固定深度 MTP 5/1/6:在 glm-5.3-flash.jsx 中,Low Latency 各单元格与 EAGLE preset 统一删除 --speculative-adaptive,保留 --speculative-algorithm EAGLE、--speculative-num-steps 5、--speculative-eagle-topk 1、--speculative-num-draft-tokens 6,实现固定深度 + 自然接受;Strategy 维度的 subtitle 从 "Adaptive MTP 5/1/6" 改为 "MTP 5/1/6",DP-Attention 的禁用文案也同步去掉 adaptive 表述。这是本次性能结论的核心承载变更。

  2. Blackwell 通道切换 MoE 后端与 EP 默认值:对 gb300/gb200/b200/b300 单元格删除显式 --ep-size 4(EP1 是 sglang 默认,见 python/sglang/srt/arg_groups/fields/parallel.py),并将 --moe-runner-backend 从 deep_gemm 改为 flashinfer_trtllm;PR body 说明已校验可整除性:moe_intermediate_size 2048 在 TP4/TP8 下每分区为 512/256,均是 128 的倍数。h100/h200 单元格保留 EP8 + deep_gemm,并新增注释解释 trtllm-gen MoE kernel 仅 SM100 可用。

  3. gb300 基准行数据替换与状态标记:glm-5.3-flash-benchmarks.jsx 中仅 fp8-trtllm Low Latency 一行替换为 campaign 实测(sglang b3dc0388ed、FlashInfer 0.6.18、chat 1000/1000 与 summarization 8000/1000、并发 1/16/80、自然接受),其余旧命令数据全部保留但加上 TODO 注释;verificationStatus 逻辑重写为三分支:仅新的 fp8-trtllm + dcp off 组合为 verified,其余按组合标记 in-progress 或 unverified。

  4. 文档文案同步:GLM-5.3-Flash.mdx 更新策略描述(固定 5 steps、top-k 1、6 draft tokens、自然接受)、DCP 段落与 encoder disaggregation 段落;语言服务进程示例同步改为 flashinfer_trtllm 后端,并在 encoder 段加 TODO 注明该组合(238,080 visual tokens 场景)尚未用新命令复验。

配套验证:mint validate、mint broken-links、pre-commit 与 jsx module 检查全部通过;campaign 的 GSM8K 自然停止门禁在 11 条 lane 上给出 90.75-92.72%,均自然停止。

文件 模块 状态 重要度
docs/src/snippets/configs/zai-org/glm-5.3-flash.jsx 部署配置 modified 6.45
docs/src/snippets/configs/zai-org/glm-5.3-flash-benchmarks.jsx 基准数据 modified 6.06
docs/cookbook/autoregressive/GLM/GLM-5.3-Flash.mdx 使用文档 modified 3.17

关键符号

verificationStatus isRecommendedSelection

关键源码片段

docs/src/snippets/configs/zai-org/glm-5.3-flash.jsx configuration

配置面板源码,承载本次核心变更:删除 --speculative-adaptive 与显式 --ep-size,Blackwell 切换 --moe-runner-backend flashinfer_trtllm,重写 verificationStatus 三态逻辑,直接影响用户生成的部署命令。

// ----- Speculative 卡片:Low Latency 从 adaptive MTP 改为固定深度 MTP 5/1/6 -----
// 2026-09 对拍 campaign 实测:adaptive 策略在 batch 8-16 会把 draft steps 压到 3,
// batch >= 64 时直接关闭 drafting,导致低延迟高并发吞吐明显落后;
// 固定 5 steps / top-k 1 / 6 draft tokens + 自然接受可恢复大部分差距
// (chat c80 从 4293 tok/s 提升到 8976 tok/s,见 gb300 基准行)。
speculative: {
  options: [
    { id: "current", label: "Inherited from base" },
    { id: "off", label: "Off (greedy)" },
    {
      id: "eagle",
      label: "EAGLE / MTP 5-1-6",
      flags: [
        "--speculative-algorithm EAGLE", // NEXTN 老拼写已并入 EAGLE
        "--speculative-num-steps 5", // 固定深度,不再随 batch 自适应
        "--speculative-eagle-topk 1",
        "--speculative-num-draft-tokens 6",
        // --speculative-adaptive 已移除:接受长度不再被 SGLANG_SIMULATE_ACC_LEN 模拟钉住
      ],
      disable: [
        {
          when: { dpAttnOn: [true] },
          reason: "MTP speculative decoding with DP-Attention is not validated on this model.",
        },
      ],
    },
  ],
},
​
// ----- Blackwell Low Latency 单元格(以 gb300 为例)-----
// 删除显式 --ep-size:EP1 是 sglang 默认(见 parallel.py),
// 并切换 --moe-runner-backend flashinfer_trtllm;
// trtllm-gen MoE kernel 仅 SM100 可用,因此 Hopper 保留 EP8 + deep_gemm。
{
  match: { hw: "gb300", strategy: "low-latency", quant: "fp8" },
  nnodes: 1,
  verified: true,
  verificationStatus: (s) =>
    s.bcg !== "off" || s.mmTransport !== "auto" || s.hicache !== "off" ? "unverified" :
    s.kvDsaPair === "fp8-trtllm" && s.dcp === "off" ? "verified" :
    ["bf16-tilelang", "fp8-trtllm"].includes(s.kvDsaPair) && ["off", "4"].includes(s.dcp)
      ? "in-progress" : "unverified",
  flags: [
    "--model-path {{MODEL_NAME}}",
    "--tp-size 4",
    "--dsa-prefill-backend trtllm",
    "--dsa-decode-backend trtllm",
    "--kv-cache-dtype fp8_e4m3",
    "--moe-runner-backend flashinfer_trtllm",
    "--speculative-algorithm EAGLE",
    "--speculative-num-steps 5",
    "--speculative-eagle-topk 1",
    "--speculative-num-draft-tokens 6",
    "--reasoning-parser glm45",
    "--tool-call-parser glm47",
  ],
}
docs/src/snippets/configs/zai-org/glm-5.3-flash-benchmarks.jsx data-contract

基准数据表:gb300 的 FP8 + TRT-LLM Low Latency 行替换为 2026-09 campaign 固定 MTP 实测(six workload rows、自然接受、accept length 5.98/4.7),其余旧命令数据加 TODO 并保留,是性能结论的量化证据。

// gb300 Low Latency FP8 KV + TRT-LLM DSA 行:2026-09 campaign 固定 MTP 实测
// 运行环境:sglang main b3dc0388ed + FlashInfer 0.6.18,TP4 / EP1,
// flashinfer_trtllm MoE,固定 MTP 5/1/6 自然接受(不再用模拟 accept length)。
// 协议:每行 80 个随机 token 请求,streaming /v1/completions,ignore_eos,
// 温度 0、seed 42、prefix cache 关闭;chat 为 1000/1000,summarization 为 8000/1000,
// --context-length 16384、--max-running-requests 80、--mem-fraction-static 0.90。
{
  match: { hw: "gb300", strategy: "low-latency", kvDsaPair: "fp8-trtllm", quant: "fp8" },
  sglang_version: "b3dc0388ed",
  latencyPercentile: "Mean",
  speed: [
    // 并发 1 为单次运行,c16/c80 为两次运行中位数
    { workload: { dataset: "random", isl: 1000, osl: 1000, max_concurrency: 1, num_prompts: 80 },
      ttft_ms: 204.79, tpot_ms: 2.0, tokens_per_sec_per_gpu: 227.06 },
    { workload: { dataset: "random", isl: 1000, osl: 1000, max_concurrency: 16, num_prompts: 80 },
      ttft_ms: 367.48, tpot_ms: 4.8, tokens_per_sec_per_gpu: 1492.93 },
    { workload: { dataset: "random", isl: 1000, osl: 1000, max_concurrency: 80, num_prompts: 80 },
      ttft_ms: 1243.26, tpot_ms: 6.28, tokens_per_sec_per_gpu: 4487.92 },
    // summarization(8000/1000)行:c1/c16/c80 的 tpot_ms 分别为 1.95/5.16/11.65
  ],
  notes: "chat c80 聚合输出 8975.84 tok/s、accept length 4.7;同 campaign 中固定深度 MTP 在旧命令上为 8490.07 tok/s,而 adaptive 仅 3664.53 tok/s,EP1 + flashinfer_trtllm 又在固定深度基础上提升 4.4-13.6%。",
}

评论区精华

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

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

风险与影响

  1. 数据新旧混排风险:glm-5.3-flash-benchmarks.jsx 中除 fp8-trtllm Low Latency 行外,其余行(含 DCP4、NVFP4 LL、H100 LL、B200/B300 LL)仍是旧命令(TP4/EP4 deep_gemm + adaptive MTP)数据,虽有 TODO/in-progress 标记,但用户若横向对比新旧数字容易误判,特别是把旧数据当成新配方的表现。
  2. 后端配置正确性无自动化保障:flashinfer_trtllm 属运行时后端配置,文档侧只有静态检查(mint validate 等),无法验证其在非 SM100 硬件或特定 EP 组合下的行为;若该后端存在未覆盖的退化路径,文档会带偏用户部署。
  3. encoder disaggregation 未复验:mdx 中语言服务进程已改用 flashinfer_trtllm,但明确标注该组合只跑过旧命令,且运营备注也说明该后端在 PD 场景下未测试。

影响范围集中在 cookbook 用户与 GLM-5.3-Flash 部署者:所有通过部署面板生成命令的用户会获得新默认(固定 MTP 5/1/6、Blackwell EP1 + flashinfer_trtllm),低延迟 chat c80 吞吐从 4293 提升到 8976 tok/s(约 2.1 倍,基准场景);Hopper 用户只移除 adaptive 标志,行为变化较小。对系统代码零影响,但为后续 runtime 行为(如 adaptive 策略定价、trtllm MoE 可用性)提供了文档级的决策基线。团队 benchmark 流程上,未复测单元格的 in-progress 状态意味着需要后续 campaign 补齐。

文档数据新旧混排 部分单元格未复测 SM100-only 后端约束 encoder 配置未复验

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论