MT-veRL 入门
1. MT-veRL 是什么
veRL(Volcano Engine Reinforcement Learning)是面向大语言模型的强化学习后训练框架,也是 HybridFlow 的开源实现。它通过 hybrid-controller 编程模型描述 PPO、GRPO 等复杂 RL 数据流,并把训练、rollout、reference、critic 和 reward 等角色映射到不同计算资源。
本项目中的 MT-veRL,指 veRL 在摩尔线程 MUSA 集群中的适配与实践,重点覆盖 Megatron/MCore 训练、SGLang rollout、Ray 多机编排、MCCL 网络,以及 Qwen3 Dense/MoE 模型的四机训练。
1.1 适用场景
- 使用 PPO、GRPO 等算法进行大模型 RL 后训练;
- 组合 actor、rollout、reference、critic 和 reward model;
- 灵活选择 FSDP/Megatron 训练后端和 vLLM/SGLang rollout 后端;
- 把不同角色共置或放置到不同 GPU/节点;
- 在多机集群上训练 Dense 或 MoE 模型;
- 自定义数据、reward function 和 RL 数据流。
1.2 设计特点
- HybridFlow 数据流:把单控制器的算法描述与多控制器的分布式执行结合起来;
- 角色化 worker:actor、rollout、reference、critic 和 reward 可以独立或组合;
- 可替换后端:训练与推理基础设施通过模块化 API 接入;
- 灵活资源放置:同一角色可独占资源,也可与其他角色形成 HybridEngine;
- 配置驱动:大量模型、数据、资源和算法参数通过 Hydra 配置及命令行覆盖。
2. 核心架构
2.1 主要角色
| 角色 | 作用 |
|---|---|
| Actor | 根据 RL loss 更新当前策略模型 |
| Rollout | 使用当前策略批量生成 response |
| Reference Policy | 提供参考 log probability,用于 KL 等约束 |
| Critic | 在 PPO 等算法中估计 value |
| Reward Model / Function | 为生成结果计算奖励 |
| Ray Resource Pool | 管理 worker、placement 和 GPU/CPU 资源 |
| Trainer Controller | 驱动 rollout、reward、advantage 和 update 流程 |
| MUSA / MCCL | 提供摩尔线程 GPU 计算和多卡通信能力 |
2.2 一个 GRPO/PPO step 如何运行
从 Parquet 数据读取 prompt
↓
Rollout engine 生成 response
↓
Reward function/model 计算奖励
↓
Reference/Critic 提供 KL 或 value 信息
↓
计算 advantage 和训练 batch
↓
Actor 更新策略参数
↓
将新权重同步到 rollout
不同算法不一定需要全部角色。例如 GRPO 通常不依赖独立 critic,而 PPO 通常需要 value/critic 路径。
3. 如何选择后端和资源放置
3.1 训练后端
直接使用 Hugging Face 权重、常规模型 → FSDP/FSDP2
大模型、MoE、复杂 TP/PP/EP 并行 → Megatron-LM/MCore
本项目四机示例采用 Megatron 后端,因此需 要把 Hugging Face 权重转换为 MCore checkpoint,并确保模型结构参数与转换配置一致。
3.2 Rollout 后端
veRL 可以接入 vLLM、SGLang 等推理基础设施。本项目使用 SGLang,并根据 MUSA 支持范围配置 attention backend、CUDA/MUSA Graph、radix cache 和 overlap schedule 等参数。
3.3 共置与分离
角色共置可以节省 GPU,但需要处理显存释放、offload 和调度;角色分离占用更多资源,但边界清晰、并发和稳定性通常更好。
首次验证、小规模排障 → 优先选择清晰的资源边界
资源有限 → 再评估 actor/rollout/ref 共置
长序列或高吞吐 rollout → 考虑独立 rollout 资源