Prhub

#34247 [Docs] Standardize diffusion cookbook model pages

原始 PR 作者 mickqian 合并时间 2026-08-21 10:25 文件变更 32 提交数 39 评论 2 代码增减 +2707 / -597

执行摘要

标准化 diffusion cookbook 页面,新增响应式命令构建器

Diffusion cookbook 页面开头风格不一致,且注意力、量化、缓存、编码器调度等正交运行时特性混在部署矩阵里,让读者难以判断模型能力边界。PR body 明确目标:"This keeps base recipes small while making feature quality contracts and verified scope explicit." 即保持基础食谱精简,同时显式化 feature 质量契约与已验证范围,让读者更快识别模型优势与约束,并正确选择 checkpoint 与请求模式。

值得精读,尤其是文档工程化与数据契约设计。建议关注三个决策:capability 边界与验证覆盖分离(disabled vs soft)、由数据契约驱动的文档生成器(config → CI 校验 → 渲染),以及用「模板 + 校验脚本」代替人工 review 的文档质量保障模式。适合文档平台维护者作为新增记忆,也适合 diffussion 模型作者在编写新 cookbook 页面前阅读 diffusion-authoring.md

讨论亮点

PR 没有正式 review 评论,但 39 个 commit 的演进揭示了来自 review 反馈的设计迭代:

  • commit cce957f 提到 "Three fixes from review":原 "Recommended for B300" 横幅是误导信息——8-GPU 只是验证轮恰好运行的形态,并非容量建议(B300 288GB 不需要比 H200 141GB 更多 GPU),横幅改为陈述验证事实,拓扑折叠进 Resources。
  • commit 3413f47 把 H3 配置中每个 disabled 谓词按语义分类:能力边界保留硬阻止;仅验证覆盖不足的改为 soft 档,选项保持可选并标注 unverified,而不是看起来像死按钮。
  • commit 0d4d499a 将 BCG(Breakable CUDA graph)从硬阻止移到 soft 档,因为该标志在其他 recipe 上也能运行,之前的硬阻止只是编码了验证覆盖而非能力边界。
  • commit f282a08 修正 encoder DP 的跨节点阻止:cookbook 原本阻止多节点 encoder DP,但运行时 gate 只要求 tp_size=1dp_size=1,DP group 跨节点合法。

实现拆解

  1. 定义作者契约与模板:新增 .claude/skills/cookbook-add-model/references/diffusion-authoring.md,规定 diffusion 页面必须包含能力标签、能力/选型/边界说明,并把命令矩阵交给共享 Deployment 组件;新增 diffusion-page.mdx.tmpl(五节固定结构:Quick start、Model capabilities、Deployment details、Request examples、Feature details)与 diffusion-config.jsx.tmpl(含 base/serve/request 三类 overlay 维度与 commandBuilder 骨架),作为新增模型的默认起点。
  2. 扩展共享引擎 docs/src/snippets/_deployment.jsx:在原有 matchDims/overlayDims 机制上新增 commandBuilder 数据契约——config 可声明 defaultSelectionresource(limits、verifiedRecipes、autoTopology、validateTopology)与 resolveDeployment,引擎统一负责渲染与命令合成;同时引入软禁用档位 soft/softReason,把「验证覆盖不足」与「能力边界」区分开,并让被硬禁用的选项在触屏设备上点击时闪烁显示 disableReason
  3. 重构 MiniMax-H3 配置为首个用户:删除原来 4 维的 profile matchDims(resident/fsdp/offload/cross_node),改为 matchDims: [],把拓扑选择交给 commandBuilder 的 resource 组件;overlay 维度按生命周期重组为 base(Checkpoint Weights、Request Mode)、serve(Placement、Attention、Precision、Encoder、Execution)、request(Quality、Outputs),并补齐 docsHref/learnMore/quality/soft 字段。同时修正了 encoder DP 的跨节点错误限制(运行时的 _text_encode_dp_group 只要求 tp_size=1dp_size=1,DP group 是 world group,可跨节点)。
  4. 配套样式与校验docs/custom.css 新增 .sgd-command-builder 玻璃质感视觉系统、container query 响应式适配、hover/active/focus-visible 与 prefers-reduced-motion 行为;docs/scripts/check_cookbook_configs.mjs 增加 commandBuilder 结构校验(scope 枚举、defaultSelection 必填、autoTopology/validateTopology/resolveDeployment 必须为函数、数字维度 bounds 检查)并遍历 cookbook/diffusion 下所有页面。
  5. 页面标准化落地与分支整合:把 docs/cookbook/diffusion/README.mdx、MiniMax-H3、Cosmos3、FLUX、SANA-WM、Krea-2 等页面统一改为新结构;与 main 分支两次合并,解决 lint.yml 与 MiniMax-H3.mdx 的冲突,保留双方新增内容。
文件 模块 状态 重要度
docs/src/snippets/_deployment.jsx 命令引擎 modified 8.84
docs/src/snippets/configs/MiniMaxAI/minimax-h3.jsx 模型配置 modified 7.57
docs/scripts/check_cookbook_configs.mjs 校验脚本 modified 6.95
.claude/skills/cookbook-add-model/templates/diffusion-config.jsx.tmpl 模型模板 added 5.94
.claude/skills/cookbook-add-model/templates/diffusion-page.mdx.tmpl 模型模板 added 5.24
docs/custom.css 页面样式 modified 5.22
docs/cookbook/diffusion/README.mdx 模型文档 modified 5.12
docs/cookbook/diffusion/MiniMax/MiniMax-H3.mdx 模型文档 modified 4.92

关键符号

optionSoft normalizeBuilderSelection flashBlockedNote builderMeta recommendedBuilderRecipe commitBuilderNumber renderBuilderNumberInput selectionOf validateResolved checkH3 walkMdx

关键源码片段

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

共享部署命令生成引擎的核心文件,新增 commandBuilder 渲染路径与 soft 软禁用机制,是所有 cookbook 部署矩阵的公共底座。

// 部署命令生成器的共享引擎组件,被所有 cookbook 模型页复用。它只读取传入的
// config,不包含任何模型专属逻辑;字段语义与解析规则统一收口在
// .claude/skills/cookbook-add-model/references/authoring-reference.md 中。
//
// 两种选择维度:
// matchDims 参与 cell 查找,选中值决定命中哪条已验证命令;
// overlayDims 不参与查找,选中项把 flags/env/hints 叠加到命中的 cell 上,
// 因此正交旋钮(如编码器并行)不会让部署矩阵成倍膨胀。
// 新增的 commandBuilder 字段把 config 切换到响应式 diffusion 构建器:它复用
// 本引擎的 overlay 组合与命令渲染,但由 config 自己提供 defaultSelection、
// resource(verifiedRecipes + 拓扑自动推导 / 校验)以及 resolveDeployment,
// 后者返回 cell 外加 builder 元数据(topologySummary、errors、warnings、
// verification、resolvedSettings)。UI 独有的 scope/expand 与本地
// head-address/rank 状态不会进入 URL hash。export const Deployment = ({ config, benchmarks }) => {
  // 有 commandBuilder 时启用新的响应式渲染路径,旧 config 始终保持原渲染器
  const commandBuilder = config.commandBuilder || null;  // DIMENSIONS 按优先级排序:高下标维度适配低下标维度的已选值,反之不行。
  // 该顺序驱动选项的置灰 / 吸附逻辑。
  const DIMENSIONS = ["hw", ...matchDimSpecs.map((d) => d.id)];  // `soft` 标记“可能可行但处于已验证矩阵之外”的选项:它保持可选,验证状态
  // 由徽章单独表达;`disabled` 只留给真正无法工作的组合。触屏设备无法悬浮
  // 查看 title 提示,所以被阻止的选项在被点击时会在行下方闪烁显示
  // disableReason。
  const optionSoft = (opt, sel) =>
    typeof opt.soft === "function" ? opt.soft(sel) : !!opt.soft;  // 其余辅助逻辑(normalizeBuilderSelection、flashBlockedNote、builderMeta
  // 等)与既有 cells/benchmark 渲染共用同一个 selection 对象。
};

评论区精华

硬禁用与软禁用分层(capability vs verification coverage) 设计

commit d546351 与 3413f47 将 H3 配置中每个 disabled 谓词按语义分类:能力边界保留硬阻止;仅验证覆盖不足的选项改为 soft 档,保持可选并标注 unverified。BCG 也被从硬阻止移到 soft 档,因为该标志在其他 recipe 上也能运行。

结论:引入 soft/softReason 机制,`disabled` 只用于无法工作的组合,验证覆盖不足用 `soft` 表达,触屏用户点击被禁选项时会闪烁看到 disableReason。 · 已解决

encoder DP 跨节点限制的修正 正确性

commit f282a08 发现 cookbook 阻止多节点 encoder DP,但运行时 gate(`_text_encode_dp_group` 与 server_args 的 ValueError)只要求 `tp_size=1` 和 `dp_size=1`,DP group 是 world group,可跨节点。

结论:移除 encoder DP 的跨节点硬阻止,只保留 TP > 1 时的限制。 · 已解决

“Recommended for B300” 横幅误导性表述 设计

commit cce957f 指出 8-GPU 形态只是验证轮恰好运行的配置,并非容量建议(B300 288GB 不需要比 H200 141GB 更多 GPU),原横幅会误导用户。

结论:横幅改为陈述实际验证事实,拓扑选择折叠进 Resources 组件。 · 已解决

PR Test (Extra) CI 失败 other

PR 底部 CI 状态显示 Latest PR Test (Extra) 为失败,作者通过 /tag-and-rerun-ci 触发重跑;最终 PR 已合并。

结论:材料中未给出 Extra 任务失败的具体原因与最终结果,状态未知。 · unresolved

风险与影响

  1. 文档引擎核心路径回归风险_deployment.jsx 是所有 cookbook 部署矩阵的公共引擎,本次 +803/-16,新增 commandBuilder 路径的同时改动共享渲染逻辑;旧 config(无 commandBuilder)虽然保持原渲染器,但 DIMENSIONSoptionSoft 等公共逻辑变化仍可能影响既有模型页(如 Qwen 系列、Cosmos)。
  2. 全局样式影响docs/custom.css +666 行,虽选择器限定 .sgd-command-builder.sg-command-visualizer:not(...),但 .sgd-model-tags 的 margin 等旧规则被修改,可能影响其他用该组件的页面布局。
  3. CI 校验误报风险check_cookbook_configs.mjs 新增对 commandBuilder 的强制结构校验(函数类型、scope 枚举、数值边界),现有或未来的非标准配置可能触发校验失败,需要脚本与模板保持同步演化。
  4. 无直接测试覆盖:本次改动没有对应测试文件,仅靠 pre-commit 钩子与 CI 脚本兜底。
  5. 分支整合风险:39 个 commit、两次 merge main(含 lint.yml 与 MiniMax-H3.mdx 冲突),冲突解决可能引入内容遗漏。

读者侧:diffusion 模型页从风格混杂的矩阵变为统一契约结构,读者能更快识别模型能力边界、选择合适的 checkpoint 与请求模式,并将注意力/量化/编码器等性能特性作为独立叠加选项使用。维护者侧:新增模型的 docs 作者拿到模板与 authoring reference 后可按固定流程产出页面,CI 校验提前拦截结构错误,降低人工 review 成本。系统侧:文档站命令生成引擎新增一个长期维护的 commandBuilder 渲染路径,成为未来所有 diffusion 模型页的共享基础设施;对运行时无影响。整体影响范围集中在 docs 仓库与文档站组件,属于中高影响力、低运行时风险的文档工程化改造。

无直接测试覆盖 文档引擎核心路径变更 全局样式改动 CI 校验可能误报 多次 merge main 引入冲突风险

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论