Prhub

#34797 docs: link dots3.note checkpoints, add H100 cells

原始 PR 作者 yhyang201 合并时间 2026-08-14 10:42 文件变更 4 提交数 2 评论 0 代码增减 +128 / -21

执行摘要

补全 Dots3-Note checkpoint 链接并新增 H100 部署单元

Dots3-Note 权重已在 Hugging Face 公开发布(dots-studio/dots3-note-prevdots-studio/dots3-note-prev-fp8),原文档基于未发布状态编写,包含两处失效说明“the checkpoint is not yet released”以及 TODO 占位符 <dots-note-checkpoint>,用户无法直接复制部署命令。PR body 说明这是“Fills in the dots3.note checkpoint IDs on the cookbook page, now that the weights are public”(现在权重公开了,补全 cookbook 页面上的 checkpoint ID)。同时为 H100 用户补充部署指引,并明确 H100 显存 80 GiB/卡、在 --context-length 524288 下 BF16 权重占 537 GiB 导致无可用 KV pool 的约束,引导用户使用 FP8 单元。

作为纯文档 PR,不需要深入精读,但有两个点值得关注:一是 _deployment.jsx / _playground.jsxresolveModelName 的回退链设计,是文档站“配置驱动渲染”的一个典型模式,后续新增无 variant 维度的模型页可直接参考;二是文档配置与单元格行为的一致性处理——H100 BF16 的显存警告放在正文而非 cell 级 warn,如果文档站已有 warn/disable 机制,建议后续提交补上,避免用户直接复制不可用命令。整体重要度低,可按常规文档 PR 处理。

讨论亮点

该 PR 没有 review 评论或讨论线程(review_comments_count 为 0,comments_count 为 0),两位 reviewer zijiexiawisclmy0611 均直接 APPROVED,未留下任何文字意见。因此没有可提炼的争议点、设计权衡讨论或未解决疑虑。唯一可以观察到的隐含权衡来自 PR body 本身:作者明确说明 H100 BF16 单元因显存不足“no usable KV pool at --context-length 524288”,因此仅通过正文文字提示用户改用 FP8,而没有在单元格上增加 warn 横幅或禁用逻辑。

实现拆解

该 PR 是纯文档与文档渲染配置的变更,核心改动集中在四处文件:

  1. 填充 checkpoint ID 并补充 H100 单元(docs/src/snippets/configs/rednote/dots3-note.jsx:将 modelNames 从占位 default: "<dots-note-checkpoint>" 改为按精度分键的 bf16: "dots-studio/dots3-note-prev"fp8: "dots-studio/dots3-note-prev-fp8"supportedHardware["h200"] 扩展为 ["h200", "h100"]dockerImages 补充 h100: "lmsysorg/sglang:dev";新增两个 H100 cell(BF16/FP8),flag 完全复刻 H200 对应单元,但 verified: false;将两个 H200 cell 的 verifiedfalse 改为 true。FP8 cell 的 flag 中 --moe-runner-backend auto--deepep-dispatcher-output-dtype auto 与 BF16 的 deep_gemm/bf16 保持区分。

  2. 扩展模型名解析链(docs/src/snippets/_deployment.jsxdocs/src/snippets/_playground.jsx:两处 resolveModelName 原先按 hw|variant|quantvariant|quanthw/default 解析。因该配置 matchDims 只有 quant 维度,sel.variantundefined,前两级永远无法命中,因此新增 hw|quant 与裸 quant 两级,放在原有键之后,保证已有配置行为不变;同时在 _deployment.jsx 顶部注释中同步更新 modelNames 的键优先级说明。

  3. 清理 cookbook 正文(docs/cookbook/autoregressive/RedNote/Dots3-Note.mdx:删除两处“checkpoint 未发布”的 <Note> 提示及 TODO 注释,将 Resources 补上 Hugging Face 链接,并把硬件描述从“single 8-GPU H200 node”改为“single 8-GPU Hopper node”。

  4. 配套说明:无测试文件变更。由于这是文档配置,验证方式主要依赖文档站构建与手工核对;PR CI 状态显示 Extra 测试失败,但两个 reviewer 均已 APPROVED,失败与文档改动无直接关联。H100 的 BF16 单元未设 warn 字段,而是在 mdx 正文中以文字说明显存约束,这一点与实际单元格行为的一致性值得留意。

文件 模块 状态 重要度
docs/src/snippets/configs/rednote/dots3-note.jsx 文档配置 modified 6.7
docs/src/snippets/_deployment.jsx 部署面板 modified 5.1
docs/src/snippets/_playground.jsx 演示面板 modified 5.41
docs/cookbook/autoregressive/RedNote/Dots3-Note.mdx 文档正文 modified 3.1

关键符号

resolveModelName

关键源码片段

docs/src/snippets/_deployment.jsx core-logic

部署面板核心渲染逻辑所在文件,`resolveModelName` 用于将选择映射为 HF 模型名。本次新增 `hw|quant` 与裸 `quant` 两级回退,是无 variant 维度配置(如 Dots3-Note)能够正确渲染 `{{MODEL_NAME}}` 的关键,同时保持旧键顺序以兼容既有配置。

// 模型名解析:按最具体到最不具体的顺序查找 HF slug。
// 支持 matchDims 中没有 variant 维度的配置(此时 sel.variant 为 undefined,
// 前两级 key 永远无法命中),所以新增 hw|quant 与裸 quant 两级回退。
// 新键插在原有键之后,保证既有配置的解析结果不变。
const resolveModelName = (sel) => {
  const keys = [
    `${sel.hw}|${sel.variant}|${sel.quant}`, // 完整三元组:hw|variant|quant
    `${sel.variant}|${sel.quant}`, // 无 hw:variant|quant
    `${sel.hw}|${sel.quant}`, // 新增:无 variant 时按硬件 + 精度
    sel.quant, // 新增:仅按精度(如 bf16 / fp8)
    sel.hw, // 仅按硬件(兼容旧行为的回退)
    "default", // 最终兜底
  ];
  for (const k of keys) {
    const hit = config.modelNames[k];
    if (hit) return hit; // 命中即返回,避免 undefined 被当成有效值
  }
  return "";
};
docs/src/snippets/_playground.jsx core-logic

Playground 组件中维护了与 _deployment.jsx 独立的一份 `resolveModelName`,本次必须同步修改以保持一致,否则页面底部 Playground 的模型名替换会与部署面板产生行为分叉。

// hw|variant|quant → variant|quant → hw|quant → quant → ""。
// 与 _deployment.jsx 保持同步:matchDims 无 variant 维度时旧键无法命中。
const resolveModelName = (sel) => {
  const keys = [
    `${sel.hw}|${sel.variant}|${sel.quant}`,
    `${sel.variant}|${sel.quant}`,
    `${sel.hw}|${sel.quant}`, // 新增:hw + quant
    sel.quant, // 新增:裸 quant
  ];
  for (const k of keys) {
    const hit = config.modelNames[k];
    if (hit) return hit; // 找到真实值才返回,避免空值覆盖
  }
  return "";
};

评论区精华

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

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

风险与影响

风险整体较低,但存在几点值得注意:

  1. H100 内置单元与正文警告分离:H100 BF16 单元仍会完整渲染启动命令,正文虽说明“没有可用 KV pool”,但用户若直接复制命令,可能因显存不足导致启动失败。若文档站支持 cell 级 warndisable 机制(_deployment.jsx 头注释中明确存在 warndisableReason 能力),未在这些单元上使用属于错失的防御手段。

  2. 两处 resolveModelName 必须保持同步_deployment.jsx_playground.jsx 各自维护一份 resolveModelName,本次改动同步修改了两处,但未来若再扩展键规则,存在漏改一处导致 Deployment 与 Playground 行为不一致的风险。

  3. verified 状态标记:H200 两个单元被标为 verified: true,但 PR 未提供验证数据或复现记录;若实际吞吐/精度数据尚未正式留档,标记可能过早。

  4. H100 单元 flag 完全复刻 H200:H100 与 H200 显存、带宽不同,--mem-fraction-static 0.87 等参数是否在 H100 上仍然合理未被验证(作者也注明 unverified)。

  5. checkpoint 模型名直接依赖 Hugging Face 仓库dots-studio/dots3-note-prev 若是粗粒度命名(-prev 暗示生命周期),未来若仓库改名或下架,文档中的模型名会失效,且 modelNames 没有 fallback 到 default(该键已被删除),解析会直接回退为空字符串。

影响范围集中在文档站,不涉及 SGLang 运行时:

  1. 对用户:Dots3-Note cookbook 页面从“无法直接使用”变为“可直接复制可用的 checkpoint 命令”,并新增 H100 部署选择;H100 BF16 用户获得明确的显存不可行性提示,避免错误部署。

  2. 对文档系统_deployment.jsx_playground.jsxresolveModelName 解析规则发生向后兼容扩展,任何依赖旧键顺序 hw|variant|quant/variant|quant 的既有配置不受影响(新键插在旧键之后),但未来其他使用 matchDims 且无 variant 维度的配置(如 K3 之外的新模型页)都会受益于该通用回退。

  3. 对团队:属于低风险文档维护,合并速度快(2 个 commit),无需额外测试;CI Extra 运行失败未阻塞合并,说明评审认为与文档无关。

文档与单元格行为一致性 双处逻辑需同步 未验证硬件参数 外部依赖可用性

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论