本文翻译整合转载于:
Deepseek R1 的发布震惊了整个行业。为什么?DeepSeek-R1 是一个开放模型,在复杂推理任务中可与 OpenAI 的 o1 相媲美,它使用组相对策略优化 (GRPO) 和以 RL 为中心的多阶段训练方法引入。他们不仅发布了该模型,还发布了一份关于他们如何做到这一点的研究论文。
在论文中,他们描述了使用纯 RL 训练模型时的 “顿悟时刻”。在此阶段,DeepSeek-R1-Zero(DeepSeek-R1 的第一个测试)通过重新评估其初始方法来学习为问题分配更多的思考时间,而无需任何人工反馈或描述如何执行的数据。他们将这描述为“顿悟时刻”:
这种行为不仅证明了模型不断增长的推理能力,也是强化学习如何导致意想不到的复杂结果的迷人例子。
在这篇博文中,我们想使用组相对策略优化 (GRPO) 和倒计时游戏重现 DeepSeek-R1 的小“顿悟时刻”。我们将使用强化学习训练一个开放模型,尝试自行教它自我验证和搜索能力,以解决倒计时游戏。Countdown 游戏是一个数字拼图游戏,玩家使用一组随机抽取的数字和基本的算术运算 (+、-、×、÷) 来达到或尽可能接近目标数字。
Target Number: 952
Available Numbers: 25, 50, 75, 100, 3, 6
(100 × (3 × 3)) + (50 + 6 / 3) = 952
文章包括一个交互式代码,您可以在 Jupyter Notebook 中运行该代码,了解如何使用 GRPO 和 Q-Lora 训练模型。这是学习如何使用 TRL 和 GRPO 的好方法,但它非常慢并且需要大量的计算。此外,我还添加了一个脚本和说明,用于在具有多个 GPU 或 SLURM 集群的 Node 上运行训练。
但在开始之前,让我们先看一下组相对策略优化 (GRPO) 并了解它是如何工作的。
组相对策略优化 (GRPO)
DeepSeek AI 发布了 DeepSeek-R1,这是一个开放模型,在复杂推理任务中可与 OpenAI 的 o1 相媲美,使用组相对策略优化 (GRPO) 和以 RL 为中心的多阶段训练方法引入。
了解组相对策略优化 (GRPO)
组相对策略优化 (GRPO) 是一种强化学习算法,用于提高 LLMs的推理能力。它是在 DeepSeekMath 论文的数学推理背景下引入的。GRPO 通过消除对价值函数模型的需求来修改传统的近端策略优化 (PPO)。相反,它根据组分数估计基线,从而减少内存使用和计算开销。GRPO 现在也被 Qwen 团队使用,可以与基于规则/二进制文件的奖励以及通用奖励模型一起使用,以改进有用性模型。
- 采样:使用当前策略为每个提示生成多个输出
- 奖励评分:每一代都使用奖励函数进行评分,可以是(基于规则或基于结果)
- Advantage Calculation:生成的产出的平均奖励用作基线。然后,相对于此基线计算组内每个解的优势。奖励在组内标准化。
- 策略优化:该策略试图最大化 GRPO 目标,其中包括计算的优势和 KL 背离项。这与 PPO 在奖励中实施 KL 期限的方式不同。
与近端策略优化 (PPO) 的主要区别是
- 无值函数:与 PPO 不同,GRPO 不依赖于单独的值函数模型,这简化了训练并减少了内存消耗。
- 基于组的优势: GRPO 使用一组产出的平均奖励作为基线。这种方法更符合奖励模型训练的性质,奖励模型训练通常针对一个输入检查多个输出。
- KL Divergence (吉隆坡发散):GRPO 直接将 KL 背离项合并到损失函数中,而 PPO 经常将其用作奖励信号的一部分。
纯强化学习 (R1-zero)
在构建 DeepSeek R1 的过程中,该团队通过对其基础模型进行强化学习实验,获得了深刻的见解。从 DeepSeek V3 开始,他们将 GRPO 应用于无监督推理文本补全、基于规则的奖励模型,这些模型侧重于格式、数学和编码等方面:
- 准确性奖励:评估响应是否正确、结果正确或编译的 LeetCode 问题。
- 格式奖励:评估强制模型将其思维过程置于 '' 和 '' 标签之间的格式。
这导致 AIME 2024 的 pass@1 分数从 15.6% 提高到 71.0%,达到与 OpenAI-o1-0912 相当的性能水平,同时每个问题的输出令牌长度增加,表明该模型自然而然地学会了解决具有更多思考时间/令牌生成的任务。
这缺点是导致可读性和语言混合不佳,但在 R1 中,使用交替 SFT → RL 步骤的多阶段方法解决了这个问题。
DeepSeek R1 的多阶段训练
为了防止基础模型出现强化训练 (RL) 训练的早期不稳定冷启动阶段,该团队从监督微调开始。
阶段 1/4 基础到监督微调 (SFT)
使用微调模型、R1-zero 和人工注释器收集了多达 10k 个代币长的思维链 (CoT)。这些数据用于微调 Deepseek V3 基础,以提高可读性和连贯性。
阶段 2/4 推理 RL
使用与 R1-Zero 相同的 RL 管道,使用相同的基于规则的奖励模型专注于推理密集型任务,例如编码和数学。这一次,对 “language consistency” 的额外奖励用于帮助模型坚持使用同一种语言。
Stage 3/4 抑制采样和 SFT
使用拒绝采样 (RS) 生成大型合成数据集,专注于写作、角色扮演和其他通用任务。第 2 阶段的模型与 Deepseek V3 一起用作裁判,以生成 600k 与推理相关的样本和 200k 用于写作、角色扮演和其他通用任务,使用 DeepSeek-V3 的 SFT 数据集的一部分或重新生成它们包括 CoT。
阶段 4/4 RL for Helpness
在最后阶段,GRPO 再次与基于规则的模型和结果奖励模型结合使用,以提高模型的有用性和无害性。引出 Deepseek R1 模型。
- DeepSeek 没有使用 Monte Carlo Tree Search (MCTS) 或流程奖励模型 (PRM)。
- 在应用 GRPO 之前进行微调实际上可以使训练过程更快、更稳定。
- 专注于准确性和格式的基于规则的奖励比复杂的奖励模型更有效。
1. 设置开发环境
我们的第一步是安装 Hugging Face Libraries 和 Pytorch、vllm 和 trl、transformer 和数据集