Prhub

#2583 docs(diffusion): latest doc ported from miles diffusion 20260818-01:00

原始 PR 作者 Rockdu 合并时间 2026-08-18 16:44 文件变更 32 提交数 10 评论 0 代码增减 +3311 / -0

执行摘要

主站新增 Diffusion 文档分区,同步 miles_diffusion 全套指南

PR body 明确了这是一次周期性文档移植:从 radixark/miles_diffusion 的 docs/ 目录 diff 到 Miles 的 docs/diffusion/,并重写所有跨页链接为 Mintlify /diffusion/... 形式。提交 794977c 进一步说明动机是让主仓库内嵌的 Diffusion 文档与源仓库保持一致。此前 PR#2599 只是把用户指向独立仓库,本次则直接在主文档站内建立完整分区,降低用户跨仓库获取信息的成本。

值得快速浏览而非精读:这是一次高质量的文档体系扩展,单页内容密度高。建议重点阅读 customization.md(了解 miles-diffusion 的 --*-path 扩展架构,对要定制 diffusion 训练的用户是必读入口)和 launch-script.md(理解批量大小算术与各 flag 分组)。对文档维护者而言,commit c346dee 揭示的 docs.json 格式所有权冲突是本次最值得记住的工程细节——编辑该文件前先确认 sync-example-docs hook 的约定。

讨论亮点

本 PR 无实质 review 讨论:claude[bot] 因 fork 来源自动跳过审查,Zhichenzzz 直接批准。最有价值的工程信息来自提交历史而非评论——commit c346dee 详细记录了 sync-example-docs hook 与 docs.json 格式所有权的冲突:该 hook 拥有 docs.json 的格式所有权(缩进固定为 1 空格),分支手工重排为 2 空格导致 hook 每次运行都报 diff,最终以重跑 hook 本身作为修复方式,并强调导航内容本就正确、只是缩进恢复。这为后续编辑 docs.json 的开发者提供了明确的工具约定。

实现拆解

实现过程按同步管道、内容落地、导航接入、格式修复、措辞收敛五步展开:

  1. 同步管道与触发方式:PR body 描述了半自动移植流程——从 radixark/miles 的 main 创建分支,diff miles_diffusion 的 docs/ 与 Miles 的 docs/diffusion/,应用 diff 后把每个跨页链接改写为 Mintlify 的 /diffusion/... 形式并逐一验证,最后以 draft PR 提交。此次为流程的第二次运行(commit 4cacdf6 即 20260817-00:36 的移植,最终 PR 标题为 20260818-01:00 版本)。

  2. 内容落地(docs/diffusion/ 下 30 个新页面):按五组组织——Getting Started(installation、quick-start)、User Guide(cli-reference、concepts、customization、launch-script、recipe-verification、rewards)、Models(cosmos3、h3、ltx2、qwen-image、sd3、wan2-2)、Advanced(deterministic、dtype-control、lora、sde-backend、single-prompt-multi-gen、streaming-reward)、Developer(contributor-guide)。其中 customization.md(326 行)系统性列出所有 --*-path 扩展钩子,launch-script.md(264 行)拆解 ScriptArgs 机制和批量大小算术,cli-reference.md(388 行)按子系统覆盖全部 flag,sd3.md(259 行)给出首个已验证 recipe 的完整配置。

  3. 导航接入(docs/docs.json):在 Developer Guide 与 Resources 两个 Tab 之间插入 Diffusion Tab,pages 按五组 grouping 引用上述页面,新增 52 行。这是本次唯一的结构性 config 变更。

  4. 格式所有权修复(commit c346dee):分支最初将 docs.json 重排为 2 空格缩进,导致 sync-example-docs hook 每次运行都会重写该文件并报出 modification。维护者 Zhichenzzz 重新运行 hook 恢复 main 的 1 空格缩进,使 docs.json 相对 main 的 diff 从 439 增 / 387 删 缩小到 52 增 / 0 删,且导航内容结构不变。

  5. 措辞收敛(后续 7 个 commit):配合 Cursor agent 对 overview 页做简化与澄清——恢复 rollout determinism 归属、调整 LoRA 能力定位、保持与源仓库逐字节对齐。纯文档改动,无测试、无 schema、无部署配套。

文件 模块 状态 重要度
docs/diffusion/user-guide/customization.md 扩展架构 added 6.8
docs/diffusion/user-guide/launch-script.md 启动脚本 added 6.52
docs/diffusion/user-guide/cli-reference.md CLI 参考 added 5.04
docs/docs.json 文档导航 modified 4.87
docs/diffusion/models/sd3/sd3.md 模型指南 added 5.47
docs/diffusion/developer/contributor-guide.md 贡献指南 added 4.76
docs/diffusion/getting-started/installation.md 安装指南 added 4.68

关键符号

generate_rollout CustomDataSource custom_generate ScriptArgs prepare execute main SD3TrainPipelineConfig resolve_diffusion_model_family execute_train

关键源码片段

docs/diffusion/user-guide/customization.md documentation

系统性列出 miles-diffusion 的全部 --*-path 扩展钩子(rollout、reward、filtering、training、logging、model family 六大类),是理解其可扩展架构的核心文档,信号强度最高。

# miles-diffusion 的扩展点:几乎所有行为都能用 --*-path 钩子替换,
# 通过 miles.utils.misc.load_function 按点分路径加载。
# 下面是 Rollout 阶段最核心的数据源接口,替代默认的 RolloutDataSourceWithBuffer。class CustomDataSource:
    def __init__(self, args):
        # 接收解析后的完整 args,可在此读取 --data-dir 等路径类配置
        ...
​
    def get_samples(self, num_samples) -> list[list[Sample]]:
        # 每次 rollout 前取样本,返回按 prompt 分组的样本列表
        ...
​
    def add_samples(self, samples) -> None:
        # 训练产出后回填带 reward 的样本,供后续去重 / 过滤策略使用
        ...
​
    def save(self, rollout_id) -> None:
        # 按 rollout_id 持久化 buffer,断点续跑时可恢复现场
        ...
​
    def load(self, rollout_id=None) -> None:
        ...
​
​
# 替换单个 microgroup 的生成逻辑,默认实现是 generate_microgroup。
async def custom_generate(
    args, microgroup: list[Sample], sampling_params: dict, *, evaluation: bool = False
) -> list[Sample]:
    # evaluation 是可选关键字参数:若你的签名省略它,调用方会自动跳过该 kwarg,
    # 因此自定义函数不必强制接收这个参数。
    ...
docs/docs.json configuration

唯一的 config 变更文件,新增 Diffusion Tab 将 30 个页面接入 Mintlify 导航,并因 sync-example-docs 格式所有权产生一次修复提交。

// 新增的 Diffusion 导航 Tab:挂在 Developer Guide 与 Resources 之间。
// 该文件由 sync-example-docs hook 持有格式所有权(缩进固定为 1 空格),
// 手工编辑后应重跑 hook 避免格式噪音。
{
  "tab": "Diffusion",
  "pages": [
    "diffusion/index",
    {
      "group": "Getting Started",
      "pages": [
        "diffusion/getting-started/installation",
        "diffusion/getting-started/quick-start"
      ]
    },
    {
      "group": "User Guide",
      "pages": [
        "diffusion/user-guide/cli-reference",
        "diffusion/user-guide/concepts",
        "diffusion/user-guide/customization",
        "diffusion/user-guide/launch-script",
        "diffusion/user-guide/recipe-verification",
        "diffusion/user-guide/rewards"
      ]
    },
    {
      "group": "Models",
      "pages": [
        "diffusion/models/cosmos/cosmos3",
        "diffusion/models/h3/h3",
        "diffusion/models/ltx/ltx2",
        "diffusion/models/qwen-image/qwen-image",
        "diffusion/models/sd3/sd3",
        "diffusion/models/wan/wan2-2"
      ]
    },
    {
      "group": "Advanced",
      "pages": [
        "diffusion/advanced/deterministic",
        "diffusion/advanced/dtype-control",
        "diffusion/advanced/lora",
        "diffusion/advanced/sde-backend",
        "diffusion/advanced/single-prompt-multi-gen",
        "diffusion/advanced/streaming-reward"
      ]
    },
    {
      "group": "Developer",
      "pages": [
        "diffusion/developer/contributor-guide"
      ]
    }
  ]
}

评论区精华

sync-example-docs hook 与 docs.json 格式所有权 other

本 PR 无实质 review 评论(claude[bot] 因 fork 来源自动跳过,Zhichenzzz 直接批准)。提交历史显示:分支最初将 docs.json 重排为 2 空格缩进,导致 sync-example-docs hook 每次运行都会重写该文件并报出 modification。维护者 Zhichenzzz 通过重新运行 hook 恢复 main 的 1 空格缩进,使 docs.json 相对 main 的 diff 从 439 增 / 387 删 缩小到 52 增 / 0 删。

结论:docs.json 的格式由 sync-example-docs 工具持有所有权,人工编排该文件时应直接以 hook 输出为准,避免引入格式噪音。 · 已解决

风险与影响

纯文档变更,无运行时代码风险。主要风险集中在文档生命周期管理:

  1. 内容漂移风险(中):docs/diffusion/ 的内容来自独立仓库 miles_diffusion,若后续源仓库更新而主仓库未同步,会出现双源不一致。当前同步流程仍需人工触发,PR body 显示为周期性执行但未提及自动化调度。

  2. 死链风险(低):文档中大量链接被重写为 /diffusion/... 形式,且页面间存在交叉引用(如 quick-start 指向 sd3、launch-script 指向 cli-reference),PR body 虽声明逐一验证,但源仓库新增页面时若未纳入同步范围会出现悬空链接。

  3. docs.json 格式冲突复发风险(低):任何后续 PR 手工编辑 docs/docs.json 都可能再次触发 sync-example-docs hook 的格式改写,需以 hook 输出为准或直接由工具重写。

  4. 符号归属混淆风险(低):文档中出现的 generate_rollout、CustomDataSource、ScriptArgs 等符号均属于 miles_diffusion 仓库,主仓库并无对应代码,用户若在主仓库搜索这些符号会落空,文档应在显眼处标注来源仓库。

影响范围集中在文档体系与团队协作流程:

  • 对用户(高影响):docs.miles 主站首次提供完整的 Diffusion 后训练文档分区,图像 / 视频生成模型的 Flow-GRPO 与 DiffusionNFT 训练有了一站式入口,覆盖从安装、quick-start 到模型 recipe、CLI 全量参考与扩展开发。此前用户需跳转独立仓库,现在可直接在主站检索。
  • 对团队(中影响):建立了主仓库与 miles_diffusion 的文档同步管道,fork PR + 维护者修复格式的协作为后续定期移植沉淀了流程经验,sync-example-docs 的所有权约定成为团队共识。
  • 对系统(无影响):无任何 Python 源码、CI 或部署配置变更,验证门槛低。
内容双源漂移风险 docs.json 格式所有权冲突 链接重写依赖人工验证 API 符号指向独立仓库

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论