什么是 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_rangeactor_lr 是否过大导致更新步子太大。解决方案通常包括降低学习率、增大 KL 惩罚、对 reward 做归一化(reward normalization)或裁剪(reward clipping)。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐