0
0

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. 从一道数学题理解训练闭环

假设我们希望提高模型的数学解题能力。下面是一个教学示例,奖励规则并非所有任务的通用配置。

  1. 准备问题:从训练数据中取出一批数学题。
  2. 生成回答:让当前模型为题目生成候选解答。这一步称为 rollout,即采样生成。
  3. 评估奖励:使用答案校验程序评分,例如答对得 1 分、答错得 0 分。
  4. 计算学习信号并更新参数:根据所选算法处理奖励,计算损失,再通过反向传播与优化器更新模型。
  5. 同步权重并继续迭代:让生成端使用更新后的参数,进入下一轮。
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 降低。