论文地址:https://dapo-sia.github.io/static/pdf/dapo_paper.pdf
代码地址:https://github.com/volcengine/verl/tree/gm-tyx/puffin/main/recipe/dapo
数据:https://huggingface.co/datasets/BytedTsinghua-SIA/DAPO-Math-17k
1. 背景与动机
-
推理能力的提升:随着语言模型规模的扩大,推理能力得到了显著提升,尤其是通过强化学习(RL)技术,模型能够进行复杂的推理任务。
-
现有技术的封闭性:尽管像OpenAI和DeepSeek等公司在推理模型上取得了显著进展,但它们的技术细节并未公开,导致社区难以复现这些结果。
-
DAPO的目标:为了解决这一问题,作者提出了DAPO算法,并开源了一个大规模RL系统,旨在提升模型在复杂推理任务中的表现。
2. DAPO算法
DAPO(Decoupled Clip and Dynamic sAmpling Policy Optimization)算法是一个专门为大规模语言模型(LLM)强化学习设计的优化算法,旨在解决长链推理(long-CoT)场景中的训练挑战。DAPO通过四个关键技术提升了RL训练的效率和稳定性,具体介绍如下:
-
Clip-Higher:通过解耦上下剪裁范围,避免熵崩溃,提升系统的多样性。
-
Dynamic Sampling:动态采样策略,提升训练效率和稳定性。
-
Token-Level Policy Gradient Loss:在长链推理(long-CoT)场景中,使用基于token的策略梯度损失,避免长序列样本对梯度的负面影响。
-
Overlong Reward Shaping:通过软惩罚机制,减少过长样本的奖励噪声,稳定训练过程。
1. Clip-Higher:提升探索能力
-
问题背景:在传统的PPO(Proximal Policy Optimization)或GRPO(Group Relative Policy Optimization)算法中,使用固定的剪裁范围(clip range)来限制策略更新,避免策略更新过大导致训练不稳定。然而,这种剪裁机制会限制模型的探索能力,尤其是对低概率token的更新。
-
解决方案:DAPO提出了Clip-Higher策略,解耦了上下剪裁范围。具体来说,传统的PPO使用对称的剪裁范围(如
1-ε
和1+ε
),而DAPO将上下剪裁范围分别设置为ε_low
和ε_high
,其中ε_high
较大,允许低概率token有更大的更新空间。 -
效果:通过增加
ε_high
,DAPO显著提升了模型的探索能力,避免了熵崩溃(entropy collapse),生成了更多样化的样本。
2. Dynamic Sampling:动态采样策略
-
问题背景:在RL训练中,某些提示(prompt)的所有输出可能都是正确的(奖励为1)或错误的(奖励为-1),导致这些样本的梯度为零,无法有效更新模型。这种现象会降低训练效率,并增加梯度的方差。
-
解决方案:DAPO引入了动态采样策略,通过过采样并过滤掉奖励为1或-1的样本,确保每个批次中的样本都具有有效的梯度。具体来说,DAPO会不断采样,直到批次中所有样本的奖励既不为1也不为-1。
-
效果:动态采样显著提升了训练效率,减少了梯度方差,并加速了模型的收敛。
3. Token-Level Policy Gradient Loss:基于Token的策略梯度损失
-
问题背景:在长链推理(long-CoT)场景中,传统的GRPO算法使用样本级(sample-level)损失计算,即先对每个样本内的token损失求平均,再对所有样本的损失求平均。这种计算方式会导致长序列样本中的token对整体梯度的贡献较小,影响模型对长序列中高质量推理模式的学习。
-
解决方案:DAPO提出了Token-Level Policy Gradient Loss,直接对每个token的损失进行加权求和,而不是先对样本内的token损失求平均。这样,长序列样本中的token对梯度的贡献更大,模型能够更好地学习长序列中的推理模式。
-
效果:Token-Level Policy Gradient Loss提升了模型对长序列样本的学习能力,减少了低质量长序列样本(如重复或无意义内容)的影响。
4. Overlong Reward Shaping:过长样本的奖励调整
-
问题背景:在RL训练中,通常会设置一个最大生成长度,超过该长度的样本会被截断。传统的做法是对截断样本施加惩罚性奖励(如-1),但这种做法会引入奖励噪声,尤其是当模型生成了合理的推理过程但仅仅因为长度过长而被截断时。
-
解决方案:DAPO提出了Soft Overlong Punishment机制,对过长样本的惩罚进行平滑处理。具体来说,DAPO定义了一个惩罚区间,当样本长度超过最大长度时,惩罚会随着长度的增加而逐渐加重,而不是直接施加一个固定的惩罚。
-
效果:Soft Overlong Punishment减少了奖励噪声,稳定了训练过程,并避免了模型因过长样本而受到不合理的惩罚。
5. DAPO算法的整体流程
DAPO算法的整体流程如下:
-
采样:对每个提示(prompt)采样一组输出。
-
奖励计算:根据规则计算每个输出的奖励。
-
动态采样过滤:过滤掉奖励为1或-1的样本,确保批次中的样本具有有效梯度。
-
优势估计:使用组内奖励归一化计算每个token的优势值。
-
策略更新:通过DAPO的目标函数更新策略,目标函数结合了Clip-Higher、Token-Level Policy Gradient Loss和Soft Overlong Punishment。
DAPO的目标函数如下:
其中:
-
是重要性采样比率。
-
是基于组内奖励归一化的优势估计。
-
是解耦的剪裁范围。
6. DAPO的优势
-
提升探索能力:通过Clip-Higher策略,DAPO显著提升了模型的探索能力,避免了熵崩溃。
-
高效训练:动态采样策略减少了无效样本的影响,提升了训练效率。
-
长序列推理优化:Token-Level Policy Gradient Loss使模型能够更好地学习长序列中的推理模式。
-
稳定训练:Soft Overlong Punishment减少了奖励噪声,稳定了训练过程。
3. 实验与结果
-
数据集:使用了从AoPS网站和官方竞赛页面爬取并手动标注的数学数据集 DAPO-Math-17K,包含17K个问题和整数答案。
-
训练细节:基于 verl 框架,使用Qwen2.5-32B作为预训练模型进行RL训练。通过动态采样、Clip-Higher等策略,模型在AIME 2024竞赛中取得了50分的成绩,超过了DeepSeek的47分,且仅使用了50%的训练步数。
-
训练动态:文章详细分析了训练过程中的响应长度、奖励动态、熵和生成概率等指标,展示了RL训练的复杂性和系统性挑战。
4. 开源贡献
-
算法与代码:DAPO算法和训练代码完全开源,基于 verl 框架,社区可以复现和改进。
-
数据集:开源了经过精心处理和标注的数学数据集,支持未来的研究。
5. 结论
DAPO系统通过开源算法、代码和数据集,为大规模LLM的强化学习提供了一个可扩展的解决方案。文章提出的四个关键技术显著提升了模型在复杂推理任务中的表现,尤其是在长链推理场景中。