Prhub

#2349 docs: expand LoRA training and serving guide

原始 PR 作者 yushengsu-thu 合并时间 2026-08-12 11:23 文件变更 3 提交数 8 评论 14 代码增减 +382 / -73

执行摘要

重写 LoRA 训练与托管指南,划分 Bridge/native 边界

PR body 明确指出旧文档已与实现漂移:"it described LoRA as colocate-only, treated low-precision training support too broadly, omitted multi-node broadcast and multi-LoRA, and did not distinguish the Bridge, native, agentic, and Tinker roadmap boundaries"。因此本次更新将指南对齐到当前代码、测试、launcher 与 roadmap 提案,并显式标注状态边界(如 Bridge 覆盖范围、原生 LoRA 仅在 Inkling、multi-LoRA 仅支持 Bridge 等)。

该 PR 值得精读,尤其是作为"功能文档如何跟随实现演进"的范例。关注其如何清晰划分 Bridge/Native 两条路径、如何用验证矩阵避免过度承诺,以及如何在 review 中收敛图表与篇幅。对于 LoRA 相关开发与文档维护人员,建议以本文档为基线,在相关 roadmap PR(#1792、#2141、#2273、#2346)合并时同步更新。

讨论亮点

核心讨论集中在文档结构与准确性上:

  • Shi-Dong 对 "Mental model" 作为章节标题提出质疑,作者将其改名为 "Training and rollout lifecycle"。
  • Shi-Dong 建议用 Mermaid 图替代 ASCII 流程,作者先改为 Mermaid;随后 Zhichenzzz 建议删除 AI 生成的图表,作者最终移除并用简洁文字描述生命周期。
  • Shi-Dong 指出已合并的 PR 引用应删除,作者移除了历史 #2122 引用并直接描述当前行为。
  • Zhichenzzz 质疑 "colocate? what about multi-lora",作者澄清:单 LoRA 支持 colocated 与 disaggregated,multi-LoRA 仅支持 disaggregated 且拒绝 --colocate,并按需广播。
  • 审阅意见认为原生 LoRA 部分应仅做简要介绍,作者删除了 PR 分支的详细模型矩阵与投影注意事项,只保留 Inkling 支持和 #1792 指向。

实现拆解

  1. 重写生命周期描述:在 docs/advanced/lora.md 中新增 "Training and rollout lifecycle" 章节,说明 miles 在 Megatron 中训练 adapter、在权重更新边界导出并通过本地 tensor/IPC 或远端 NCCL 广播同步到 SGLang,默认每个 rollout/train iteration 同步一次,无需 merge 或转换。
  2. 区分实现路径:新增 "LoRA training implementations" 表格,对比 Megatron-Bridge PEFT(--megatron-to-hf-mode bridge,覆盖 Qwen2.5/Qwen3/GPT-OSS/Kimi K2.5/GLM-5.x/Qwen3.5/3.6)与 Native/raw 模式(仅 Inkling/Inkling-Small),并说明 native-first 的维护方向。
  3. 增补验证矩阵与证据:新增 "Validated models and recipes" 表格,按 Bridge/Native 列出模型家族、架构类型、证据链接与注意事项;补入两张 GLM-5.2 FP8 实验曲线图(logprob/reward)作为历史全规模实验证据,同时明确 CI 覆盖的是缩减层数 checkpoint。
  4. 明确多 LoRA 与限制:说明当前 multi-LoRA 仅支持 disaggregated 且拒绝 --colocate,SGLang 引擎常驻 base checkpoint,miles 选择性导出并通过 NCCL 广播新加载或 optimizer 步进的 adapter;同时列出当前已知限制(如原生多 LoRA 未发布、Tinker 后端为 roadmap)。
  5. 按 review 迭代精简:根据审阅意见删除已合并 PR 引用(如 #2122)、将 ASCII 流程图先后改为 Mermaid 图后最终移除、精简 Native LoRA 介绍(移除 PR 分支模型矩阵和投影细节),并将章节标题从 "Mental model" 改为 "Training and rollout lifecycle"。
文件 模块 状态 重要度
docs/advanced/lora.md 高级文档 modified 4.96
docs/assets/images/lora-glm5-2-fp8-logprob.png 静态资源 added 1.77
docs/assets/images/lora-glm5-2-fp8-reward.png 静态资源 added 1.77

分析完成后,这里会展示 LLM 生成的相对完整源码片段和详细注释。

评论区精华

章节标题 "Mental model" 是否合适 style

Shi-Dong 评论:"Not sure whether 'Mental model' is a good section title in docs lol."

结论:作者将章节重命名为 "Training and rollout lifecycle"。 · 已解决

流程图形式:ASCII 替换为 Mermaid 后最终删除 style

Shi-Dong 建议 "Replace with Mermaid diagram? Would be more visually appealing than text.";作者改为 Mermaid;随后 Zhichenzzz 评论 "maybe we could delete those ai gen chart?",作者最终移除图表并用简洁文字描述。

结论:移除 Mermaid 图,保留简洁生命周期文字。 · 已解决

删除已合并 PR 的引用 documentation

Shi-Dong 两次指出 "This PR is merged so I think we can drop this line?" 和 "This PR is also merged.",针对已合并的 PR 引用。

结论:作者删除历史 #2122 引用,改为直接描述当前行为。 · 已解决

多 LoRA 与 colocate 拓扑澄清 正确性

Zhichenzzz 质疑 "colocate? what about multi-lora",要求明确多 LoRA 的拓扑支持。

结论:作者在生命周期章节澄清:单 LoRA 支持 colocated tensor/IPC 与 disaggregated NCCL;multi-LoRA 仅支持 disaggregated 且拒绝 `--colocate`,只广播新加载或 optimizer 步进的 adapter。 · 已解决

原生 LoRA 介绍应简化 设计

审阅意见(作者回复 "Just introduce native lora")认为原生 LoRA 部分过于详细,应聚焦差异与当前支持。

结论:作者精简为简短介绍,仅保留 Inkling/Inkling-Small 支持、Bridge 差异及 #1792 指向,删除详细模型矩阵和投影注意事项。 · 已解决

风险与影响

作为纯文档变更,无代码回归风险。主要风险在于:

  • 文档中的验证矩阵和路线图引用(#1792、#2141、#2273、#2346)会随这些 PR 的合并或关闭而过期,需要持续维护。
  • 文档明确区分了 Bridge 与 Native 路径及各自覆盖范围,若后续代码变更(如原生 LoRA 泛化)落地而未同步更新,容易重新造成文档与实现漂移。
  • 新增的 GLM-5.2 FP8 图片为历史实验证据,配置特定结果可能被误读为通用能力,文档中虽已声明范围,仍需读者注意。

影响范围主要面向使用 LoRA 的用户与团队内部文档维护者:

  • 用户可获得更准确的 LoRA 配置指引,明确哪些模型走 Bridge、哪些走 Native,以及 multi-LoRA 的部署约束(仅 disaggregated)。
  • 文档中列出的验证矩阵和限制能帮助用户避免盲目尝试未验证的组合,减少工单与排查成本。
  • 对团队而言,文档明确了 native-first 的维护方向,为后续 #1792 等实现提供了参照基准;同时需要维护文档与 roadmap PR 的同步。
docs 与代码漂移风险 roadmap 引用随 PR 合并过期 历史实验证据可能被误读

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论