【LLM】ROLL
什么是 ROLL?
ROLL(Reinforcement Learning On Large Language Models)是阿里巴巴/蚂蚁集团开源的分布式强化学习训练框架,专为大语言模型(LLM)后训练设计。它支持 PPO、GRPO 等主流 RL 算法,核心目标是高效、稳定地完成 RLHF(基于人类反馈的强化学习)流程。
其整体架构包含四个核心模型角色:Actor(策略模型)、Critic(价值模型)、Reference Model(冻结的参考策略)、Reward Model(奖励模型)。
核心架构与训练流程
以 PPO 为例,一个完整的训练循环如下:
Rollout 阶段 → Actor 根据 prompt 生成 response,Reward Model 打分,Reference Model 计算 token-level 的 log probability。
Advantage 计算阶段 → Critic 估计状态价值,结合 GAE(广义优势估计)计算每个 token 的优势函数 (A_t)。
Update 阶段 → 用 PPO-Clip 目标更新 Actor,用 MSE Loss 更新 Critic,同时施加 KL 惩罚防止策略偏离太远:
L=E[min(rt(θ)At, clip(rt(θ),1−ϵ,1+ϵ)At)]−β⋅DKL(πθ∥πref)\mathcal{L} = \mathbb{E}\left[\min\left(r_t(\theta) A_t,\ \text{clip}(r_t(\theta), 1-\epsilon, 1+\epsilon) A_t\right)\right] - \beta \cdot D_{KL}(\pi_\theta \| \pi_{\text{ref}})L=E[min(rt(θ)At, clip(rt(θ),1−ϵ,1+ϵ)At)]−β⋅DKL(πθ∥πref)
常用参数及其含义
训练超参数
| 参数 | 含义 | 典型值 |
|---|---|---|
actor_lr |
Actor 学习率 | 1e-6 ~ 5e-6 |
critic_lr |
Critic 学习率 | 5e-6 ~ 1e-5 |
kl_coef / beta |
KL 惩罚系数,控制策略偏移 | 0.01 ~ 0.1 |
clip_range (ε) |
PPO 裁剪范围 | 0.1 ~ 0.2 |
gamma |
折扣因子 | 0.99 或 1.0(episode 较短时) |
lam (λ) |
GAE 的平滑参数 | 0.95 ~ 1.0 |
生成/采样参数
| 参数 | 含义 |
|---|---|
max_new_tokens |
生成 response 的最大长度 |
temperature |
采样温度,越高越随机 |
top_p |
核采样阈值 |
rollout_batch_size |
每次 rollout 的 prompt 数量 |
分布式参数
| 参数 | 含义 |
|---|---|
num_rollout_workers |
Rollout 并行 worker 数 |
num_trainer_workers |
训练 worker 数 |
micro_batch_size |
单卡 micro batch 大小 |
gradient_accumulation_steps |
梯度累积步数 |
面试高频问题与回答思路
Q1:PPO 中 clip_range(ε)的作用是什么?设大了设小了分别有什么影响?
回答:clip_range 限制了新旧策略的概率比 (r_t = \frac{\pi_\theta(a|s)}{\pi_{\theta_{old}}(a|s)}) 的变化范围,防止单步更新幅度过大导致策略崩溃。设得太大(如 0.5),等于失去约束,训练不稳定;设得太小(如 0.01),策略更新太保守,学习效率低,可能陷入局部最优。通常取 0.1~0.2。
Q2:KL 惩罚的作用是什么?与 clip 是否重复?
回答:两者作用层面不同,不重复。Clip 是在 objective 层面做硬约束,防止梯度方向上的暴力更新。KL 惩罚是在 reward 层面做软约束,鼓励策略在语义行为上不偏离 Reference Model 太远,防止模型 reward hacking(比如生成高奖励但乱码的内容)。在 LLM 的 RLHF 中,KL 惩罚尤其重要,因为搜索空间极大,纯靠 clip 不够。
Q3:GAE(广义优势估计)是什么?λ 的作用?
回答:GAE 是对优势函数的加权估计,在高偏差的单步 TD 和高方差的 Monte Carlo 之间做权衡:
AtGAE=∑l=0∞(γλ)lδt+l,δt=rt+γV(st+1)−V(st)A_t^{GAE} = \sum_{l=0}^{\infty} (\gamma \lambda)^l \delta_{t+l}, \quad \delta_t = r_t + \gamma V(s_{t+1}) - V(s_t)AtGAE=l=0∑∞(γλ)lδt+l,δt=rt+γV(st+1)−V(st)
λ=0 退化为 TD(0),偏差大方差小;λ=1 退化为 Monte Carlo,偏差小方差大。实际通常取 0.95,平衡两者。
Q4:Rollout Worker 和 Trainer Worker 分离的意义是什么?
回答:这是 ROLL 等现代 LLM RL 框架的核心设计。Rollout 是推理过程(用 Actor 生成 response),Trainer 是反向传播过程。两者的计算模式不同——推理是 memory-bound、自回归的,训练是 compute-bound、并行的。分离后可以分别调度资源,比如 Rollout 用更多小卡做并行采样,Trainer 用更少大卡做梯度更新,大幅提升 GPU 利用率,避免互相等待造成的空泡(bubble)。
Q5:ROLL 与 OpenRLHF、veRL、TRL 等框架的区别?
回答:这类问题考察技术广度,可以从以下维度对比:
- TRL(HuggingFace):接入成本最低,适合小规模实验,但扩展性一般,大模型训练效率较弱。
- OpenRLHF:早期较流行的分布式 RLHF 框架,基于 Ray,架构清晰,社区活跃。
- veRL(字节):强调 hybrid engine,Actor 推理和训练共享权重,减少 GPU 显存浪费,特别适合超大模型。
- ROLL(阿里):同样面向分布式大规模训练,强调生产稳定性和 Rollout/Train 异步解耦,在阿里内部业务中有大量实践验证。
实际选型时需要结合模型规模、集群环境、算法需求综合判断。
Q6:训练时 reward 出现 collapse 怎么排查?
回答:Reward collapse(奖励崩塌)是 RLHF 常见问题,排查思路如下:首先检查 KL 值是否异常飙升,说明策略已偏离 Reference 太远,需要增大 kl_coef;其次看生成的 response 是否出现重复、截断或格式异常,属于 reward hacking;还需检查 Reward Model 本身的分数分布是否退化(所有输出接近同一分值);最后检查 clip_range 和 actor_lr 是否过大导致更新步子太大。解决方案通常包括降低学习率、增大 KL 惩罚、对 reward 做归一化(reward normalization)或裁剪(reward clipping)。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)