verl 入门:连接大模型强化学习后训练与推理系统
verl 的核心作用,是把大模型“生成回答、评估奖励、更新参数、同步权重”的循环组织成可运行的分布式强化学习训练系统。
整理日期:2026-09-10。本文从“verl 是干什么的?”出发,结合官方资料梳理概念,并连接推理与训练系统知识。
1. verl 是什么?
verl 全名为 Volcano Engine Reinforcement Learning for LLMs,由字节跳动 Seed 团队发起、社区维护,是面向大模型强化学习后训练的开源框架,也是 HybridFlow 论文的开源实现。
它处于模型后训练的工具链中:用户提供起始模型、训练数据、奖励机制和训练配置,框架负责执行相应的强化学习流程。官方列出的能力包括 PPO、GRPO 等算法,以及与 FSDP、Megatron-LM、vLLM、SGLang 等基础设施的集成。来源:官方仓库
2. 从一道数学题理解训练闭环
假设我们希望提高模型的数学解题能力。下面是一个教学示例,奖励规则并非所有任务的通用配置。
- 准备问题:从训练数据中取出一批数学题。
- 生成回答:让当前模型为题目生成候选解答。这一步称为 rollout,即采样生成。
- 评估奖励:使用答案校验程序评分,例如答对得 1 分、答错得 0 分。
- 计算学习信号并更新参数:根据所选算法处理奖励,计算损失,再通过反向传播与优化器更新模型。
- 同步权重并继续迭代:让生成端使用更新后的参数,进入下一轮。
flowchart TD
A["题目与当前模型"] --> B["Rollout:生成回答"]
B --> C["奖励评估"]
C --> D["计算学习信号并更新参数"]
D --> E["同步生成端权重"]
E --> B
这是同步训练闭环的概念图,具体实现还可能采用异步执行。所谓“根据奖励学习”,是通过优化目标调整输出概率,并不是把高分答案简单存入模型。是否获得可泛化的能力提升,需要独立评测验证。
3. verl、vLLM 和 GRPO 分别负责什么?
理解它们的分工,比记住名称更有价值。
| 组件 | 所属层次 | 主要职责 |
|---|---|---|
| verl | 强化学习框架 | 组织采样、评分、模型更新和资源协作 |
| PPO / GRPO | 优化算法 | 规定如何利用奖励构造学习信号与优化目标 |
| vLLM / SGLang | 推理引擎 | 在 rollout 阶段高效生成回答 |
| FSDP / Megatron-LM | 分布式训练基础设施 | 支撑模型分片、并行计算与参数更新 |
| 奖励函数 / 奖励模型 | 评价机制 | 为生成结果提供任务相关的反馈 |
因此,“用 verl 训练模型”和“用 vLLM 生成回答”可以同时成立:同一个强化学习任务可以由 verl 组织,并在生成阶段调用 vLLM。实际可用组合取决于模型、后端版本和配置。来源:官方集成说明
4. 为什么有了训练框架和推理引擎,还需要 verl?
强化学习需要协调多种计算。生成阶段逐 token 解码;训练阶段计算损失、梯度并更新参数;评分阶段还可能运行另一套模型或外部校验程序。仅把这些组件分别启动,并不能自动形成正确、高效的训练闭环。
HybridFlow 将问题分为两层:
- 控制流:决定何时生成、何时评分、何时计算学习信号以及何时更新。
- 计算流:执行具体的神经网络前向、反向与优化器计算。
官方编程指南介绍了将控制流与计算后端解耦的设计:控制器组织流程,分布式 worker 执行计算。这有助于替换计算后端、调整资源放置,同时复用训练逻辑。来源:HybridFlow 编程指南
5. 从推理视角看,难点在哪里?
下面是结合训练闭环得到的系统分析,不代表所有任务都存在相同瓶颈。
第一,推理与训练对显存的需求不同。 生成时需要权重、KV Cache 和工作空间;训练还涉及激活、梯度及优化器状态。各项占用取决于训练方式、精度与分片策略,切换阶段时必须协调资源。
第二,训练端与生成端必须协调模型版本。 参数更新后,生成端需要取得相应权重。如果使用异步训练,还必须处理生成样本所用策略与当前训练策略之间的差异。
第三,单个引擎快,不等于整个训练任务快。 生成可能等待评分,训练可能等待样本,权重传输也可能占用时间。优化应观察整个迭代耗时及各阶段等待,而不能只看生成 tokens/s。
verl 官方特别强调了训练与生成切换中的模型重分片、显存冗余与通信开销优化。这说明它的价值不仅在算法接口,也在系统执行效率。来源:官方性能设计说明
6. 阅读实现时会遇到哪些角色?
以官方 PPO 指南为例,可见下列逻辑角色。它们不一定分别占用独立设备,也不是每种算法都需要全部角色。
| 角色 | 含义 |
|---|---|
| Actor / Policy | 正在被优化、学习如何回答的策略模型 |
| Rollout | 使用策略模型进行采样生成的执行部分 |
| Reference | 用于计算参考策略概率等信息,支持相应约束 |
| Critic | 估计价值,为相应算法的优势计算提供信息 |
| Reward | 提供奖励评分,可采用模型或规则 |
关键区别是:Actor 与 Rollout 可以对应同一个策略的不同执行用途;奖励模型负责评价,Critic 负责价值估计,两者承担不同任务。官方指南也展示了角色组合与资源池映射方式。来源:PPO worker 与主循环
7. 常见理解误区
“verl 就是 GRPO。”
GRPO 是算法;verl 是支持实现与运行算法的框架。
“用了 verl 就必须训练一个奖励模型。”
奖励可以来自规则,也可以来自模型,或组合使用。数学答案校验就是规则奖励的直观例子。
“强化学习属于训练,所以与推理优化无关。”
训练过程中的 rollout 本身就是推理工作负载。批处理、KV Cache、解码效率和分布式推理知识,都能用于理解这一阶段。
“框架跑通,模型就一定变强。”
跑通证明流程能够执行。奖励设计、数据质量与分布、优化设置,以及独立评测,决定效果是否可信。训练奖励上升,也需要检查是否只是利用了评分规则的漏洞。
8. 对后续学习的启发
从推理方向进入后训练,可以围绕一条具体数据路径学习:问题如何进入生成引擎,回答如何变成奖励,奖励如何进入损失,更新后的权重又如何回到生成端。
先理解这条路径,再研究优势估计、策略约束、并行方式与异步调度,更容易把算法公式与系统实现对应起来。
相关目录:02 模型原理与算法;03 推理系统与部署。
参考资料
2026-10-07 深化:Trajectory、权重同步与vLLM Sleep
来源:近期rollout、weight sync、sleep/wake追问及成长手册。补充机制核查与建议,未在你的RL环境执行。
Trajectory通常包含prompt/生成token、mask、相应策略logprob、reward及任务/环境状态;Agent轨迹还可能包括工具调用与观测。只保存回答字符串不足以保证训练可重现。policy_version要随样本记录;Reference概率、old policy概率与当前policy概率不能混用。
更新后生成端需拿到新权重。训练端与rollout端的TP/分片布局可能不同,因此weight sync还包括重分片、dtype/参数名映射及同步时序。发起传输不等于全rank切换完成;需定义切换边界,处理在途样本与旧KV,保证一个样本不会混用未受控的版本。
vLLM当前官方Sleep说明:level 1把权重备份到CPU并丢弃KV;level 2丢弃权重与KV,部分模型buffer保存在CPU。wake并不是恢复此前完整生成上下文;level 2更新场景尤其要安排权重重新装载/同步,不能直接用未初始化权重推理。CPU内存也进入资源账本。Sleep Mode(2026-10-07)
这是当前上游说明,不能自动承诺你的Ascend后端支持同一allocator/API;实际使用需核对锁定版本与后端。
共置的教学顺序:完成/处理在途rollout → 按接口约定释放生成资源 → update → 唤醒权重所需资源 → 同步并确认版本 → 恢复KV分配与生成。具体是否可按tag分段唤醒、缓存/图/通信资源如何处理由实现决定。sleep不是暂停容器,也不等于通用checkpoint。
同步迭代成本拆成生成、reward、update、权重同步、切换及等待;有重叠时看关键路径。异步化需同时测队列、样本年龄、丢弃率、验证质量和time-to-target-quality。单个阶段tokens/s提升不证明整个RL系统更好。
最小验收:固定小任务完成两轮,记录每条样本policy_version;同步后确认各rank权重一致、输出来自新策略;测试sleep/wake前后内存和资源恢复;插入失败检查重试边界。尚无实际日志,因此未写“已经释放多少显存/加速多少”。
预训练状态与CP基础见从 CP 到预训练系统:并行切分、状态账本与可恢复训练;ITL/TPOT的观测口径见TTFT、TPOT 与 ITL:为什么上下文变长不会让逐 token 延迟按 1/x 降低。