论文笔记:DAPO——改进的开源GRPO强化学习系统

468 阅读7分钟

导语

GRPO是当前LLM强化学习的核心算法,本文作者在实验中发现了原始GRPO的一些不足,进行了几点改进,有效提升了评测性能表现。

摘要

强化学习被证明是激发LLM复杂推理能力的核心技术,但o1、R1等领先模型的关键技术细节仍未公开,导致研究社区仍然难以复现。为此,本文提出 解耦裁剪与动态采样策略优化(DAPO) 算法,并完全开源(代码、模型、数据集),模型在AIME 2024中达到了50分的成绩。

image.png

1 引言

测试时扩展(Test-time scaling)技术使得模型能够进行更长的思维链推理,并诱导出更复杂的推理行为,使得这些模型在数学和编程任务中表现卓越。推动这一变革的核心技术是大规模强化学习(RL),它能够激发复杂的推理行为,如自我验证和迭代优化。然而,可扩展强化学习训练的实际算法和关键实现细节并未完全公开。本文首先揭示了大规模强化学习训练中的重要挑战,并开源了一个可扩展的强化学习系统,其中包括完整开源的算法、训练代码和数据集,以提供可复现、具备工业级强化学习性能的解决方案。

本文选择 Qwen2.5-32B 作为强化学习的预训练模型。在初步运行 GRPO算法时,仅在 AIME 任务上取得 30 分,远低于 DeepSeek 的强化学习模型(47 分)。深入分析发现:基础 GRPO 训练存在几个关键问题,例如熵塌陷(entropy collapse)、奖励噪声(reward noise)以及训练不稳定性(training instability) 。更广泛的研究社区在尝试复现 DeepSeek 结果时也遇到了类似的挑战,这表明 R1 论文可能遗漏了一些关键的训练细节。

为弥补这一差距,本文开源了一个最先进的大规模 LLM 强化学习系统,该系统基于 Qwen2.5-32B 模型,在 AIME 2024 任务上达到了50分,超越了 DeepSeek-R1-Zero-Qwen-32B(47 分),并且仅使用了其一半的训练步骤(如图 1 所示)。本文提出了解耦裁剪与动态采样策略优化(DAPO, Decoupled Clip and Dynamic sAmpling Policy Optimization)算法,并引入了4 项关键技术:

  1. Clip-Higher:促进系统多样性,防止熵塌陷;
  2. 动态采样(Dynamic Sampling) :提高训练效率和稳定性;
  3. 基于 Token 级的策略梯度损失(Token-Level Policy Gradient Loss) :在长思维链强化学习场景下至关重要;
  4. 超长奖励塑形(Overlong Reward Shaping) :减少奖励噪声,提高训练稳定性。

2 预备知识

2.1 近端策略优化(Proximal Policy Optimization, PPO)

PPO通过引入裁剪替代目标来进行策略优化,将策略更新约束在先前策略的邻域内,从而稳定训练并提高样本效率。具体而言,PPO 通过最大化以下目标函数来更新策略:

JPPO(θ)=E(q,a)D,otπθold(q)[min(πθ(otq,o<t)πθold(otq,o<t)A^t,clip(πθ(otq,o<t)πθold(otq,o<t),1ϵ,1+ϵ)A^t)],J_{PPO}(\theta) = \mathbb{E}_{(q,a) \sim D, o \leq t \sim \pi_{\theta_{\text{old}}} (·|q)} \left[ \min \left( \frac{\pi_{\theta}(o_t | q, o_{<t})}{\pi_{\theta_{\text{old}}} (o_t | q, o_{<t})} \hat{A}_t, \text{clip} \left( \frac{\pi_{\theta}(o_t | q, o_{<t})}{\pi_{\theta_{\text{old}}} (o_t | q, o_{<t})}, 1 - \epsilon, 1 + \epsilon \right) \hat{A}_t \right) \right],

其中,(q,a)(q, a) 是来自数据分布 DD 的问题-答案对,ϵ\epsilon 是重要性采样比率的裁剪范围,A^t\hat{A}_t 是时间步 tt 处的优势估计值。

给定值函数 VV 和奖励函数 RRA^t\hat{A}_t 通过广义优势估计(Generalized Advantage Estimation, GAE)计算:

A^GAE(γ,λ)t=l=0(γλ)lδt+l,\hat{A}_{GAE}(\gamma, \lambda)_t = \sum_{l=0}^{\infty} (\gamma \lambda)^l \delta_{t+l},

其中δl=Rl+γV(sl+1)V(sl),0γ,λ1\delta_l = R_l + \gamma V(s_{l+1}) - V(s_l), \quad 0 \leq \gamma, \lambda \leq 1

2.2 组相对策略优化(Group Relative Policy Optimization, GRPO)

与 PPO 相比,GRPO 省略了值函数,并以组相对方式估计优势。对于特定的问题-答案对(q,a)(q, a),行为策略 πθold\pi_{\theta_{\text{old}}} 采样一组 GG 个独立的回答 {oi}i=1G\{o_i\}_{i=1}^{G}。然后,第 ii 个回答的优势估计值计算如下:

A^i,t=rimean({Ri}i=1G)std({Ri}i=1G)\hat{A}_{i,t} = \frac{r_i - \text{mean}(\{R_i\}_{i=1}^{G})}{\text{std}(\{R_i\}_{i=1}^{G})}

与 PPO 类似,GRPO 采用裁剪目标函数,并直接施加 KL 惩罚项:

JGRPO(θ)=E(q,a)D,{oi}i=1Gπθold(q)[1Gi=1G1oit=1oimin(ri,t(θ)A^i,t,clip(ri,t(θ),1ϵ,1+ϵ)A^i,t)βDKL(πθπref)]J_{GRPO}(\theta) = \mathbb{E}_{(q,a) \sim D, \{o_i\}_{i=1}^{G} \sim \pi_{\theta_{\text{old}}} (·|q)} \left[ \frac{1}{G} \sum_{i=1}^{G} \frac{1}{|o_i|} \sum_{t=1}^{|o_i|} \min \left( r_{i,t}(\theta) \hat{A}_{i,t},\text{clip} \left( r_{i,t}(\theta), 1 - \epsilon, 1 + \epsilon \right) \hat{A}_{i,t} \right) - \beta D_{KL} (\pi_{\theta} || \pi_{\text{ref}}) \right]

其中,

ri,t(θ)=πθ(oi,tq,oi,<t)πθold(oi,tq,oi,<t)r_{i,t}(\theta) = \frac{\pi_{\theta}(o_{i,t} | q, o_{i,<t})}{\pi_{\theta_{\text{old}}} (o_{i,t} | q, o_{i,<t})}

需要注意的是,GRPO 在样本级别(sample-level)计算目标函数。具体来说,GRPO 先计算每个生成序列内部的平均损失,然后再对不同样本的损失取均值。

2.3 去除 KL 散度

KL 惩罚项用于调节在线策略和冻结参考策略之间的散度。在人类反馈强化学习(RLHF)场景下,强化学习的目标是使模型行为与初始模型保持一致,而不过度偏离。然而,在训练长思维链推理模型时,模型分布可能会与初始模型显著偏离,因此这一限制并非必需,在提出的算法中去除了 KL 惩罚项。

2.4 基于规则的奖励建模(Rule-based Reward Modeling)

使用奖励模型通常会受到奖励欺骗(reward hacking)问题的影响。因此,直接使用可验证任务的最终准确率作为奖励,并采用以下规则计算:

R(y^,y)={1,if is_equivalent(y^,y)1,otherwiseR(\hat{y}, y) = \begin{cases} 1, & \text{if } \text{is\_equivalent}(\hat{y}, y) \\ -1, & \text{otherwise} \end{cases}

其中,yy 为真实答案,y^\hat{y} 为预测答案。

这一方法已被证明能够有效激发基础模型的推理能力,并已在多个领域得到应用,包括自动定理证明、计算机编程以及数学竞赛。

3 DAPO

本文提出了解耦裁剪与动态采样策略优化(Decoupled Clip and Dynamic sAmpling Policy Optimization, DAPO)算法。DAPO 通过对每个问题 qq 及其对应答案 aa 采样一组输出 {o_i\}_{i=1}^{G},并通过以下目标函数优化策略:

JDAPO(θ)=E(q,a)D,{oi}i=1Gπθold(q)[1i=1Goii=1Gt=1oimin(ri,t(θ)A^i,t,clip(ri,t(θ),1ϵlow,1+ϵhigh)A^i,t)]subject to 0<oiisequivalent(a,oi)<G,subject to 0<{oiis_equivalent(a,oi)}<G,J_{DAPO}(\theta) = \mathbb{E}_{(q,a) \sim D, \{o_i\}_{i=1}^{G} \sim \pi_{\theta_{\text{old}}} (·|q)} \left[ \frac{1}{\sum_{i=1}^{G} |o_i|} \sum_{i=1}^{G} \sum_{t=1}^{|o_i|} \min \left( r_{i,t}(\theta) \hat{A}_{i,t}, \text{clip} \left( r_{i,t}(\theta), 1 - \epsilon_{\text{low}}, 1 + \epsilon_{\text{high}} \right) \hat{A}_{i,t} \right) \right] subject to 0<∣{oi∣is_equivalent(a,oi)}∣<G,\text{subject to } 0 < |\{o_i | \text{is\_equivalent}(a, o_i)\}| < G,

其中,

ri,t(θ)=πθ(oi,tq,oi,<t)πθold(oi,tq,oi,<t),A^i,t=Rimean({Ri}i=1G)std({Ri}i=1G)r_{i,t}(\theta) = \frac{\pi_{\theta}(o_{i,t} | q, o_{i,<t})}{\pi_{\theta_{\text{old}}} (o_{i,t} | q, o_{i,<t})}, \quad \hat{A}_{i,t} = \frac{R_i - \text{mean}(\{R_i\}_{i=1}^{G})}{\text{std}(\{R_i\}_{i=1}^{G})}

完整的算法见算法 1

image.png

image.png

3.1 提高上限:Clip-Higher

在使用基础PPO或GRPO 进行初步实验时,观察到了熵塌陷(entropy collapse)现象:策略的熵在训练过程中迅速下降(图 2b),某些组的采样响应趋于完全相同。这表明探索能力有限,并且策略在训练早期就趋于确定性,这可能会阻碍扩展过程。

为此,本文提出了Clip-Higher策略。裁剪重要性采样比率以限制信任区域并增强 RL 的稳定性。发现上限裁剪会限制策略的探索能力。具体而言,当 ϵ=0.2\epsilon = 0.2(大多数算法的默认值)时,考虑两个动作的概率分别为 πθold(oiq)=0.01\pi_{\theta_{\text{old}}} (o_i | q) = 0.010.90.9,它们的最大更新后概率分别为 0.0120.0121.081.08。这表明高概率 token(如 0.9)受限制较小,而低概率 token 的概率增加则极为困难。实验表明,被裁剪的 token 最大概率通常低于 πθ(oiq)<0.2\pi_{\theta} (o_i | q) < 0.2(图 3a)。这一发现支持了本文分析,即上限裁剪确实限制了低概率 token 的概率提升,进而可能限制系统的多样性

遵循Clip-Higher策略,将下限和上限裁剪范围解耦为 ϵlow\epsilon_{\text{low}}ϵhigh\epsilon_{\text{high}},如公式(10)所示。增加ϵhigh\epsilon_{\text{high}} 的值,以留出更多空间提升低概率 token,同时保持 ϵlow\epsilon_{\text{low}} 较小,以避免过度抑制 token 的概率,从而防止采样空间的崩溃(图 2)。

image.png

3.2 多多益善:动态采样(Dynamic Sampling)

现有的 RL 算法在某些提示(prompt)准确率达到1时,会遇到梯度消失(gradient-decreasing)问题。例如,在 GRPO 中,如果某个 prompt 的所有输出{oi}i=1G\{o_i\}_{i=1}^{G} 都是正确的,并且奖励均为 1,那么该组的优势计算结果为 0,导致策略更新的梯度消失,进而降低样本效率。

实验表明,准确率为 1 的样本数量会不断增加(图 3b),这意味着每个 batch 中的有效 prompt 数量逐渐减少,可能会导致梯度方差增大,并削弱模型训练的梯度信号。

为了解决这一问题,提出了过采样并过滤准确率为 1 或 0 的 prompt(公式 11),以确保 batch 中所有 prompt 都具有有效梯度,并保持 batch 大小的一致性。在训练前,不断采样,直到 batch 充满准确率既非 0 也非 1的样本。

image.png

3.3 重新平衡:基于 Token 级的策略梯度损失

原始 GRPO 算法在样本级别(sample-level)计算损失,具体来说,它先在每个样本内部对 token 级损失取均值,然后再在所有样本间聚合损失。这种方法导致所有样本在最终损失计算中具有相同的权重。然而,在长思维链 RL 场景下,这种损失计算方式会带来两个问题:

  1. 高质量的长样本对训练的贡献降低。因为长样本包含更多 token,每个 token 对最终损失的贡献相对减少,阻碍模型学习其推理模式。
  2. 低质量的长样本无法有效被惩罚。过长的样本往往会生成无意义的内容(如乱码和重复词),但由于损失计算方式无法有效惩罚这些模式,导致熵值异常增长,并使生成长度失控(图 4a 和 4b)。

为了解决这些问题,引入基于 Token 级的策略梯度损失(Token-Level Policy Gradient Loss),如公式(12)所示。这种方法确保:

  • 长序列在梯度更新中的影响力增强,与短序列相比贡献更大;
  • 在 token 级别衡量生成模式的奖励影响,无论该 token 处于短样本还是长样本中,奖励都会被等效放大或抑制。

image.png

3.4 超长奖励塑形(Overlong Reward Shaping)

在 RL 训练中通常设定一个最大生成长度,超长样本会被截断。然而,如果对截断样本的奖励塑形不当,可能会引入奖励噪声,严重干扰训练过程。默认情况下对截断样本分配惩罚性奖励,这可能会错误地惩罚合理的推理过程,仅仅因为其生成过长。这种惩罚可能会使模型对自身推理能力产生误解。

为了降低奖励噪声的影响,本文首先采用超长样本过滤策略,屏蔽截断样本的损失。实验表明,这显著稳定了训练并提升了性能(图 5)。此外,提出超长惩罚(公式 13),它是一种基于长度的奖励塑形机制。当响应长度超过最大阈值时定义一个惩罚区间,长度越长,惩罚越大。

Rlength(y)={0,yLmaxLcache(LmaxLcache)yLcache,LmaxLcache<yLmax1,y>LmaxR_{\text{length}}(y) = \begin{cases} 0, & |y| \leq L_{\text{max}} - L_{\text{cache}} \\ \frac{(L_{\text{max}} - L_{\text{cache}}) - |y|}{L_{\text{cache}}}, & L_{\text{max}} - L_{\text{cache}} < |y| \leq L_{\text{max}} \\ -1, & |y| > L_{\text{max}} \end{cases}

3.5 数据集转换

本文的数据集来源于 AoPS1 网站和各大官方竞赛主页,通过网页爬取和人工标注构建。由于数学数据集的答案格式多样(如表达式、公式、数字等),将答案转换为易解析的整数,最终获得DAPO-Math-17K数据集,该数据集包含17K条 prompt,每条 prompt 对应一个整数答案。

4 实验

4.1 训练细节

采用verl 框架并使用基础 GRPO作为基准算法,同时利用组奖励归一化估计优势。在超参数设置上,使用AdamW优化器,学习率固定为1×1061 \times 10^{-6},并在 20 个训练步骤内进行线性预热。在 rollout 过程中,采用512个 prompt 作为 batch,并为每个 prompt 采样 16个响应。在训练过程中,mini-batch 大小为512,即每次 rollout 进行16轮梯度更新。

对于超长奖励塑形,将最大期望生成长度设置为16,384个 token,并额外分配4,096个 token 作为软惩罚缓存。因此,生成的最大 token 数量为20,480。对于Clip-Higher机制,设定裁剪参数 ϵlow\epsilon_{\text{low}} 为0.2,ϵhigh\epsilon_{\text{high}} 为0.28,以在探索与利用之间实现平衡。在应用动态采样时,虽然由于过滤了零梯度数据需要采样更多数据,但整体训练时间并未受到显著影响。如图 6 所示,尽管采样次数增加,但由于所需训练步数减少,模型的收敛时间反而缩短。

image.png

4.2 主要实验结果

图 1 可以观察到,AIME 2024的准确率从接近 0%提升到了50%。值得注意的是,DAPO仅使用了DeepSeek-R1-Zero-Qwen-32B 训练步数的 50% 即达到了这一提升。表1结果表明,提出的几个技术在 RL 训练中发挥了重要作用,每项技术都为 AIME 2024 任务带来了数个百分点的准确率提升。尤其是在基础 GRPO 设置下,从Qwen2.5-32B进行训练仅能达到30%的准确率。尽管基于 token 级的损失带来的性能提升相对较小,但本文发现它可以增强训练稳定性,并使生成长度增长更健康。

image.png

image.png

4.3 训练动态分析

实验过程中各个指标变化如下:

  • 生成响应的长度 :与训练稳定性和性能密切相关(如图 7a 所示)。较长的生成结果提供了更大的探索空间,使得模型能够采样到更复杂的推理行为,并通过训练逐步强化这些行为。然而,生成长度在训练过程中并不总是单调增长,在某些阶段可能会出现停滞甚至下降的趋势,这一现象在中也有所体现。通常,会结合长度和验证准确率来判断实验是否出现异常。
  • 奖励动态变化:训练中的奖励趋势始终是强化学习的关键监测指标(如图 7b 所示)。在大多数实验中,奖励的提升趋势较为稳定,且不会因实验设置的调整而出现大幅波动或下降。这表明,在可靠的奖励信号条件下,语言模型能够稳定地拟合训练集分布。然而,发现训练集上的最终奖励往往与验证集上的准确率相关性较低,这表明模型可能存在对训练集的过拟合。
  • Actor 模型的熵与生成概率:与模型的探索能力相关,是实验中密切关注的关键指标。从直觉上看,熵需要维持在适当范围内——如果熵过低,概率分布过于尖锐,导致探索能力下降;如果熵过高,则可能出现无意义的生成,如乱码和重复内容。与生成概率的关系正好相反。如3.1节所述,通过 Clip-Higher 策略,有效缓解了熵塌陷问题。后续实验表明,保持熵值缓慢上升有助于提升模型性能(见图 7c 和 7d)。

image.png

4.4 案例研究

随着训练的进行,模型逐渐展现出反思和回溯行为(如表 2 所示)。

5 结论

本文发布了一个完全开源的大规模 LLM 强化学习系统,包括算法、代码基础架构和数据集。该系统在大规模 LLM 强化学习任务中达到了最先进的性能(基于Qwen-32B 预训练模型,在 AIME 任务上取得 50 分)。提出了解耦裁剪与动态采样策略优化DAPO算法,并引入了四项关键技术,使强化学习在长思维链强化学习场景下更加高效且性能强大。此外,通过开源训练代码和数据集,为更广泛的研究社区和社会提供了一个可扩展的强化学习解决方案,使所有人都能够从这些技术进步中受益。