Prhub

#2366 docs: rewrite the fully async page around schedule, data path, eval, and metrics

原始 PR 作者 yueming-yuan 合并时间 2026-08-12 00:41 文件变更 5 提交数 3 评论 0 代码增减 +327 / -193

执行摘要

重写 Fully Async 文档,对齐代码并重构四章结构

PR body 明确指出页面已与代码脱节:"The fully async page had drifted from the code. The sequence diagram showed an enqueue step that no longer exists, 'Tuning knobs' listed --sglang-server-concurrency and --num-steps-per-rollout as fully-async knobs, and nothing shipped since — DataBuffer, the submission scheduler, --async-unused-samples-handler, --async-data-buffer-capacity-factor, --async-max-concurrent-samples — was covered at all." 重写的目标是把文档对齐到 upstream/main 的实际实现,并让 knob 紧挨其作用的机制,而不是堆在一个无差别的列表里。

值得精读。该页面现已成为理解 fully async 架构的最完整入口,文档的组织方式(机制 + flag 配对、把评测的两个正交轴拆开、reuse 与 export 分离)有很强的借鉴价值。对使用 fully async 模式的工程师,可直接把文中的 flag 与指标清单当作与代码对照的 checklist;对文档维护者,本 PR 展示了如何系统性地消除文档与代码的漂移。

讨论亮点

该 PR 没有产生任何 review 评论,Shi-Dong 直接 APPROVED。设计取舍主要体现在提交历史中:作者在第二个 commit 主动放弃品牌色段落的 .rx-lead CSS 类,改为 bold 强调,避免引入新的样式代码;第三个 commit 又补记了 metric logging hooks 章节。整体属于作者自查自收敛的文档迭代,无公开争议。

实现拆解

  1. 页面结构重写docs/user-guide/fully-async.md 从"Enable it / Queue model / Tuning knobs / Evaluation"改为四章——The fully async schedule(持续 worker、提交粒度、driver step 调度、staleness 来源)、Data path(DataBufferput / get / get_metrics 契约、DefaultDataBuffer 与 buffer/staleness 相关 flag)、Evaluation(三种后端按 Mode 1/2/3 组织,权重快照的 export 与 reuse 两种模式分节展示)、Metrics(async rollout 指标、async eval 指标与 dashboard 性能分析)。
  2. 事实纠错:删除不存在的 async/queue_depthasync/producer_throughput_qpsasync/consumer_drain_seconds 指标,改为 DefaultDataBuffer.get_metrics() 实际输出的内容;将 aborted_groups_recycled / stale_groups_recycled 修正为代码中的 *_filtered 命名;移除 --sglang-server-concurrency--num-steps-per-rollout 两个非 fully-async knob;补充 --eval-interval 及 reuse 模式要求的 eval_interval % save_interval == 0 硬性约束;注明 staging 目录大小仅适用于 export 模式,因为 EvalDispatcher._retire 会跳过 reuse 模式的快照。
  3. 序列图重建:mermaid 图重画,put() / get() 作为箭头跨越 subgraph 边界——接口在框外、DefaultDataBuffer 在框内,直观体现 --custom-async-data-buffer-path 的替换点。
  4. 导航与链接调整docs/docs.jsonuser-guide/fully-async 从页面列表末尾移到 argument-groups 之后;docs/index.mddocs/user-guide/index.mddocs/user-guide/usage.md 同步更新页面名称与描述。
  5. 迭代与验证:第二个 commit 放弃品牌色段落改用 bold(相应放弃 style.css.rx-lead 类改动),第三个 commit 补充 metric logging hooks 的文档;作者以 mint dev 本地渲染并逐一核对锚点与代码路径,pre-commit run --all-filesdocs.json 解析均通过。无自动化测试配套(纯文档变更)。
文件 模块 状态 重要度
docs/user-guide/fully-async.md 用户指南 modified 4.96
docs/docs.json 站点配置 modified 2.5
docs/user-guide/usage.md 用法文档 modified 1.5
docs/index.md 文档首页 modified 1.32
docs/user-guide/index.md 指南索引 modified 1.32

关键源码片段

docs/docs.json configuration

调整 User Guide 侧边栏页面顺序,将 fully-async 移到 argument-groups 之后,是站点导航结构变化的关键配置。

{
  "tab": "User Guide",
  "groups": [
    {
      "group": "User Guide",
      "root": "user-guide/index",
      "pages": [
        "user-guide/concepts",
        "user-guide/argument-groups",
        // fully-async 从列表末尾移到 argument-groups 之后,
        // 与“连续生成解耦训练”的主题定位保持一致。
        "user-guide/fully-async",
        "user-guide/usage",
        "user-guide/training-script-walkthrough",
        "user-guide/monitoring",
        "user-guide/dashboard"
      ]
    }
  ]
}

评论区精华

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

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

风险与影响

风险集中在文档与代码的一致性与链接稳定性:1)文档内容以 upstream/main 为基准核对,但 rollout 代码仍在演进(DataBuffer、submission scheduler 均为较新机制),后续若接口或 flag 变化,本页存在再次漂移风险,建议将文中 flag 与指标清单纳入定期核对流程;2)页面改名(Fully Async Rollout → Fully Async RL)与章节重排可能使仓库外链接失效,仓库内锚点虽已逐一验证,但外部引用无法控制;3)docs.json 顺序调整影响侧边栏,若存在依赖旧顺序的缓存或文档快照,可能出现展示偏差。无运行时回归、性能或安全风险。

对用户(工程团队)影响较大:fully async 是核心训练模式,重写后的页面首次系统覆盖 DataBuffer、提交调度、staleness 与评测模式等真实机制,修正了误导性 knob 与指标,学习与排障路径更清晰。对系统无运行时影响,仅文档站结构与侧边栏顺序变化。对团队的意义在于确立了一种文档范式:机制与配置配对、以代码为唯一事实源,同类页面(如 argument-groups、monitoring)可参照此结构。

文档与代码同步风险 页面改名影响外部链接 侧边栏顺序调整 无自动化文档校验

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论