已合并
docs(rl): 新增 TorchTitan-NPU 强化学习中阶课程 #789
docs(rl): 新增 TorchTitan-NPU 强化学习中阶课程 #789
已合并
zhoujian创建于 8月21日
zhoujian
zhoujian成员
8月21日

描述

新增 Qwen3-1.7B Wordle 强化学习中阶课程。在保持 GRPO、vLLM rollout、六轮 Agent Loop、奖励函数及训练数据语义不变的前提下,将 Actor 与 Reference Model 的训练后端由 FSDP 切换为 TorchTitan-NPU,并介绍可用于后续训练优化的核心能力。

课程包含:

  • 第 5 章:训练后端切换边界、配置映射、模块调用链及 Actor 到 vLLM 的权重同步;
  • 第 6 章:TorchTitan-NPU 的 FSDP2、可组合并行、offload、TND 变长注意力、NPU converter 和上下文并行;
  • 第 7 章:后端环境准备、配置确认及三步 Wordle RL 训练实践;
  • 第 8 章:后端切换总结、常见问题与综合练习;
  • 配套章节练习、参考答案及课程插图。

关联的 Issue

无。

测试

  • 15/15 个 Notebook 顺序执行通过;
  • 14/14 个代码 Cell 执行通过;
  • Notebook JSON、execution count 和预执行输出检查通过;
  • uv 隔离环境、TorchTitan-NPU 后端安装及配置检查通过;
  • 使用单机 2 张 Ascend NPU 连续完成 3 个 TorchTitan-NPU 正式训练 step;
  • 三步耗时分别为 660.13 秒、635.87 秒和 608.80 秒;
  • 三步均产出 rollout、old/ref log-prob、advantage、Actor 更新和权重同步指标;
  • 训练结束后无遗留 Ray、vLLM 或训练 worker 进程。

文档更新

新增 tutorials/rl_training_pipeline/ 中阶课程第 5~8 章,并同步课程 README、公共图片和 PPT。

类型标签

其他信息

  • 本 PR 依赖初阶课程 PR !788,请先合入 !788,再合入本 PR;
  • 中阶课程依赖 cann-recipes-train/llm_rl/qwen3_wordle/torchtitan_backend/ 配套训练代码,该部分将通过独立 PR 提交到 cann-recipes-train。
likedislike
Pull Request已成功合入, 合并人@CANN-robot
(感谢 zhoujian 的贡献)
zhoujianzhoujian成员
8月21日 创建了 pull request,commit a4dcf009
atomgit-bot
atomgit-bot
8月21日 评论:

变更摘要

本 PR 为 tutorials/rl_training_pipeline/ 新增 Qwen3-1.7B Wordle 强化学习中阶课程(第 5~8 章),核心内容是:在保持 GRPO、vLLM rollout、六轮 Agent Loop、奖励函数及训练数据语义不变的前提下,将 Actor 与 Reference Model 的训练后端从 FSDP 切换为 TorchTitan-NPU,并通过配套章节练习、参考答案、课程插图与 PPT 形成完整教学内容。课程以文档与 Notebook 形式呈现,无新增可执行代码逻辑,属于内容优化型变更。

主要改动

  • 新增第 5 章「训练后端切换」:在 05_training_backend/ 下新增章节介绍、切换原理与练习 Notebook,讲解切换边界(模型/GRPO/vLLM/AgentLoop/奖励保持不变,Actor/Ref 后端变化)、FSDP 配置到 actor.torchtitan.*、ref.torchtitan.* 的映射,并梳理从 Verl 到 TorchTitan Engine 的调用链,包括 get_per_tensor_param()、StateDictAdapter 参数名转换与 DTensor 物化、以及 update_weights() 将 Actor 权重同步给 vLLM 的流程。
  • 新增第 6 章「TorchTitan-NPU 核心特性」:在 06_torchtitan_npu_features/ 下新增四个 Notebook,介绍 DeviceMesh 上的两卡 FSDP2(data_parallel_shard_size=2、context_parallel_size=1)、param_offload/optimizer_offload、reshard_after_forward=always、TND 变长注意力(attn_type=varlen、sparse_mode=7、VarlenMetadata 边界元数据)、NPU converter 对 npu_rms_norm/npu_rope 的替换,以及上下文并行(CP/TP/PP/EP)在长序列场景的扩展条件。
  • 新增第 7 章「三步训练实践」:在 07_torchtitan_wordle_training/ 下新增环境准备(独立 uv 0.12.0 环境、setup_backend.sh 安装脚本、ATB --cxx_abi=1)、DRY_RUN 配置确认(核对 model_engine=torchtitan、FSDP2 拓扑、TND 与 GRPO/vLLM/Wordle 语义)、以及以 TOTAL_TRAINING_STEPS=3、SAVE_FREQ=-1、TEST_FREQ=-1 运行完整训练链路的实践 Notebook。
  • 新增第 8 章「总结与常见问题」:在 08_validation_and_troubleshooting/ 下新增切换过程六步总结、常见问题排查表,并给出初阶 FSDP、FSDP2+TND、TND+CP2 三条路径的对比测试数据(Actor 每 token 耗时与单步耗时),同时说明性能对比需固定单一变量并增加预热与重复次数。
  • 配套物料更新:新增 slides/01_rl_training_pipeline.pptx 课程插图(PPT),各章节均包含课后练习 Notebook 及 answer/ 参考答案文件,练习答案通过读取对应 *_answer.txt 文件的方式展示。
likedislike
不准确?
atomgit-bot
atomgit-bot
8月21日 评论:

代码审查

✅ 未发现问题

likedislike
不准确?
CANN-robotCANN-robot成员
8月21日 添加了label:cann-cla/yes
CANN-robot
CANN-robot成员
8月21日 评论:

CLA Signature Pass

qianbi1999, thanks for your pull request. All authors of the commits have signed the CLA. 👍

likedislike
此处折叠了72条消息 查看更多
meme成员
9月14日 评论:

/lgtm
/approve

likedislike
CANN-robotCANN-robot成员
9月14日 添加了label:approved
fuyangchenghu成员
9月14日 评论:

/lgtm

likedislike
CANN-robotCANN-robot成员
9月14日 添加了label:lgtm
CANN-robotCANN-robot成员
9月14日 合入了pull request