文章目录

一、前言

仅供参考,未经实验验证。

二、DeepSeek-R1:通过强化学习激发大语言模型的推理能力

项目 内容
论文标题 DeepSeek-R1: Incentivizing Reasoning Capability in LLMs via Reinforcement Learning
作者 DeepSeek-AI 团队(共100+位作者),主要作者包括 Daya Guo、Dejian Yang、Haowei Zhang、Junxiao Song、Peiyi Wang、Qihao Zhu、Runxin Xu 等
机构 DeepSeek-AI(深度求索)
发表时间 arXiv v1: 2025年1月22日;v2: 2026年1月4日
论文地址 https://arxiv.org/pdf/2501.12948
官方仓库 https://github.com/deepseek-ai/DeepSeek-R1
社区复现 github.com/huggingface/open-r1

一、研究背景与动机

在大型语言模型(LLM)快速发展的背景下,推理能力一直是通往通用人工智能(AGI)的核心挑战。OpenAI 的 o1 系列首次通过延长思维链(Chain-of-Thought, CoT)实现了推理时的缩放(test-time scaling),在数学、编程和科学推理等任务上取得了显著突破。

然而,现有方法严重依赖大量人工标注的监督数据来训练模型,这不仅成本高昂,而且难以覆盖复杂的推理场景。DeepSeek 团队提出了一个根本性问题:

LLM 的推理能力能否仅通过纯强化学习(RL)来激发,而完全不需要监督微调(SFT)作为前置步骤?

这篇论文给出了肯定的答案,并由此展开了一个关于"模型自我进化"的完整故事。


二、核心方法:一个完整的故事

整个研究围绕三个主角展开:DeepSeek-R1-Zero(纯 RL 的探路者)、DeepSeek-R1(成熟的实用模型)、以及蒸馏小模型(知识的传承者)。

第一幕:DeepSeek-R1-Zero —— 纯 RL 的"荒野求生"

起点:DeepSeek-V3-Base 基座模型,没有任何监督微调数据。

训练框架:采用 GRPO(Group Relative Policy Optimization) 强化学习算法。GRPO 的巧妙之处在于它不需要与策略模型同等大小的 Critic 模型,而是通过采样一组输出的相对得分来估计基线,从而大幅节省训练成本。

奖励设计:完全基于规则的奖励系统,包含两类:

  • 准确率奖励:对数学、编程等有确定性答案的任务,通过规则验证答案正确性
  • 格式奖励:强制模型将思考过程放在 <think></think> 标签之间,最终答案放在 <answer> 标签中

惊人的自我进化

在数千步 RL 训练过程中,DeepSeek-R1-Zero 展现出了令人震撼的自发进化

  1. 性能跃升:AIME 2024 的 pass@1 从初始的 15.6% 飙升至 71.0%,使用多数投票后更是达到 86.7%,媲美 OpenAI-o1-0912。

  2. 思维链自然延长:模型自发学会了用更长的思考时间来解决更复杂的问题,平均输出长度从几百 token 增长到近万 token(见图3)。

  3. “啊哈时刻”(Aha Moment):这是论文中最迷人的发现。在训练中期,模型突然学会了反思——它会用拟人化的语气说:“等等,我需要重新思考……”、“嗯,我意识到之前的思路有问题……”。这种自我验证和反思能力并非人为编程,而是纯 RL 激励下自发涌现的

“这是模型的’啊哈时刻’,也是研究人员的’啊哈时刻’——它让我们见证了强化学习的强大与美妙。”

Zero 的局限:尽管推理能力强大,但存在可读性差(输出混乱、缺乏格式)和语言混合(中英文混杂)的问题。


第二幕:DeepSeek-R1 —— 冷启动与多阶段训练

为了解决 Zero 的缺陷并进一步提升性能,团队设计了一个四阶段训练流水线

阶段1:冷启动(Cold Start)

收集数千条高质量的长思维链数据(带反思、验证的详细推理过程),对 DeepSeek-V3-Base 进行初步微调。这些数据的设计特点:

  • 输出格式统一为:|special_token|<reasoning_process>|special_token|<summary>
  • 过滤掉语言混合、难以阅读的内容
  • 在推理过程末尾加入总结,提升可读性
阶段2:面向推理的 RL

在冷启动模型上,像 Zero 一样进行大规模 RL 训练,但新增了一个语言一致性奖励——计算思维链中目标语言词汇的比例,以此抑制语言混合问题。最终奖励 = 推理准确率奖励 + 语言一致性奖励。

阶段3:拒绝采样与监督微调(SFT)

当 RL 接近收敛时,用当前模型进行拒绝采样(生成多个答案,只保留正确的),并结合 DeepSeek-V3 在写作、事实问答、自我认知等领域的非推理数据,共构建约 80万条训练样本(60万推理 + 20万非推理),对基座模型进行第二轮 SFT。

阶段4:全场景 RL

最后一轮 RL 同时考虑两类信号:

  • 推理数据:继续使用规则奖励(数学、代码、逻辑)
  • 通用数据:使用奖励模型捕捉人类偏好(有用性、无害性)

对于有用性,只评估最终摘要;对于无害性,则评估整个回答(包括推理过程)。


第三幕:蒸馏 —— 让小模型也能"思考"

团队发现,DeepSeek-R1 学到的推理模式可以蒸馏到更小的密集模型中,效果甚至优于直接在小模型上运行 RL。

使用 DeepSeek-R1 生成的 80 万条数据,对 Qwen2.5 和 Llama3 系列进行微调,开源了 1.5B 到 70B 的六个蒸馏模型。结果令人振奋:

  • DeepSeek-R1-Distill-Qwen-7B 在 AIME 2024 上达到 55.5%,超越 QwQ-32B-Preview
  • DeepSeek-R1-Distill-Qwen-32B 达到 72.6%(AIME)、94.3%(MATH-500),媲美 o1-mini

三、推理过程

在推理时,DeepSeek-R1 遵循以下流程:

  1. 用户输入问题(如数学竞赛题、编程题)
  2. 模型生成思维链:在 <think> 标签内,模型自发进行多步推理、尝试不同策略、自我验证、发现错误后反思并修正
  3. 输出最终答案:在 <answer> 标签内给出简洁结论

例如,面对一道复杂数学题,模型可能会:

  • 先尝试一种解法,写到一半发现矛盾
  • 用"等等"打断自己,重新审视条件
  • 换一种思路,逐步验证每一步
  • 最终确认答案正确后输出

四、实验结果

基准测试 DeepSeek-R1 OpenAI-o1-1217 DeepSeek-V3
AIME 2024 (Pass@1) 79.8% 79.2% 39.2%
MATH-500 97.3% 96.4% 90.2%
Codeforces (Percentile) 96.3% 96.6% 58.7%
GPQA Diamond 71.5% 75.7% 60.0%
MMLU 90.8% 91.8% 88.5%
SWE-bench Verified 49.2% 48.9% 42.0%

关键结论

  • 在数学(AIME、MATH-500)和编程竞赛上,DeepSeek-R1 达到或超越 OpenAI-o1-1217
  • 在知识类任务(MMLU、GPQA)上略低于 o1,但显著优于 DeepSeek-V3
  • 在创意写作、通用问答等非考试类任务上,AlpacaEval 2.0 胜率达 87.6%,ArenaHard 胜率达 92.3%

五、论文的核心贡献

  1. 首次验证纯 RL 可激发推理能力:DeepSeek-R1-Zero 证明,无需任何监督数据,仅通过 RL 就能让 LLM 自发发展出反思、验证等高级推理行为。

  2. 提出有效的多阶段训练流水线:冷启动 → RL → 拒绝采样 SFT → 全场景 RL,兼顾推理性能与可读性。

  3. 开源强大的推理模型:不仅开源了 DeepSeek-R1 和 DeepSeek-R1-Zero,还开源了 6 个蒸馏小模型,极大推动了开源社区的推理能力研究。

  4. 揭示蒸馏优于小模型直接 RL:证明了大模型发现的推理模式对小模型具有极高的迁移价值。


六、局限性与未来工作

  • 通用能力仍有提升空间:在函数调用、多轮对话、复杂角色扮演等任务上,DeepSeek-R1 不如 DeepSeek-V3
  • 语言混合问题未完全解决:尽管加入了语言一致性奖励,但在某些多语言提示下仍可能出现混合
  • 提示词敏感: few-shot 提示会降低性能,建议直接输入问题(zero-shot)
  • 软件工程任务仍有差距:SWE-bench 等任务上需要更长的上下文和更复杂的工具使用能力

八、总结

DeepSeek-R1 的故事是一个关于**“自我进化”**的故事:从一个未经任何监督的基座模型出发,通过纯强化学习的激励,模型自发学会了思考、反思、验证;再通过人类的少量引导(冷启动数据)和多阶段打磨,最终成为一个既强大又实用的推理专家;最后,它将这份智慧传递给更小、更快的模型,让整个开源社区受益。

这篇论文不仅展示了技术成果,更向整个 AI 领域证明了一个深刻观点:有时候,我们不需要手把手教模型如何思考,只需要给它正确的激励,它就能自己找到通往智慧的道路。

三、架构

图2:DeepSeek-R1 论文中的核心训练流程图

在这里插入图片描述

一、图例与整体结构

这张图用三种颜色区分了不同性质的模块(右侧图例):

图例颜色 含义 图中出现的形式
🟣 紫色 Models(模型) 紫色矩形框
灰色 Prompts+Responses(数据:提示与回答) 灰色矩形框/区域
🔵 深蓝 Training Algorithms(训练算法) 深蓝圆角矩形(SFT / RL)
🩵 浅蓝 Prompts(输入提示) 浅蓝矩形
💙 更浅蓝 Rewards(奖励信号) 浅蓝偏白矩形
深灰 Post-Processing(后处理) 深灰圆角按钮

图中共三条并行路径,最终汇聚产出 DeepSeek R1


二、补充说明:DeepSeek V3 与 DeepSeek V3 Base 的区别

在理解这张图之前,必须先厘清这两个关键概念,它们是图中所有路径的共同起点:

DeepSeek V3 Base DeepSeek V3
定义 大规模预训练(Pre-training)刚结束的基座模型 在 Base 基础上完成了完整后训练(Post-training:SFT + RLHF)的成品模型
能力 仅具备基础的 next-token 预测能力,缺乏指令遵循、对话、安全对齐等能力 具备强大的通用对话、创意写作、代码生成、安全对齐等全面产品级能力
在图中的角色 被训练的起点:三条路径中的 SFT 阶段都是在 V3 Base 上进行的,目的是让模型从头学习新的推理模式 数据生成器:在右侧路径中,V3 被用来生成/复用非推理类的高质量训练数据

三、左侧路径:DeepSeek-R1-Zero(纯强化学习的"自我进化")

这是论文中最具突破性的部分——验证"无需监督数据,纯 RL 即可激发推理能力"

流程拆解

  1. 起点DeepSeek V3 Base(基座模型,未经任何后训练)

  2. RL 训练

    • 输入Reasoning Prompts(数学、代码、逻辑等可验证的推理问题)
    • 奖励Accuracy & Format(规则奖励)
      • Accuracy:答案正确性(如数学题答案是否匹配,代码是否能通过测试用例)
      • Format:输出格式合规性(要求将思考过程放在 `` 标签内,最终答案放在 <answer> 中)
    • 算法:GRPO(Group Relative Policy Optimization,无需 Critic 模型,节省训练成本)
  3. 产出DeepSeek R1 Zero

    • 这是纯 RL 的产物,论文中描述了其惊人的"自我进化":AIME 2024 准确率从 15.6% 提升到 71.0%,思维链长度自然增长,并自发涌现出反思(reflection)"啊哈时刻"(Aha Moment)
  4. 采样与后处理(左侧下方灰色框):

    • Sampling:从 R1-Zero 中采样输出
    • Filter:过滤掉低质量、语言混杂、格式混乱的输出
    • Refine:用 DeepSeek V3 + Human(模型辅助+人工)进行后处理,使其可读
    • 产出:成为中间路径的 Cold Start Long CoT(冷启动长思维链数据)

这里的 Filter 是"拒绝采样"吗?

本质上是。 这里的 Filter + Refine 是后处理(Post-Processing),目的是提升可读性(过滤语言混杂、整理格式、添加总结)。拒绝采样的核心机制是"生成多个候选→按正确性筛选保留",而Refine这一步更偏向于数据清洗与格式精炼


四、中间路径:DeepSeek-R1 的冷启动与推理强化

这条路径解决 R1-Zero 的可读性差语言混杂问题,并进一步提升推理能力。

流程拆解

  1. 起点DeepSeek V3 Base

  2. SFT(冷启动)

    • 数据Cold Start Long CoT(来自左侧路径精炼后的数据,约数千条)
    • 论文原文“we collect thousands of cold-start data to fine-tune the DeepSeek-V3-Base as the starting point for RL”
    • 数据特点:论文设计了可读格式 |special_token|<reasoning_process>|special_token|<summary>,过滤掉不友好的输出,并在末尾加入总结
  3. 产出DeepSeek R1 Dev-1(具备良好格式的初始推理模型)

  4. 第二轮 RL

    • 输入Reasoning Prompts(推理类提示)
    • 奖励Rule-based Reward & Lang. Consistency
      • Rule-based Reward:与 Zero 相同的准确率+格式奖励
      • Lang. Consistency新增的语言一致性奖励(计算目标语言词汇在思维链中的比例),用于抑制中英文混杂问题
  5. 产出DeepSeek R1 Dev-2(推理导向 RL 收敛后的检查点)


五、右侧路径:DeepSeek-R1 的最终成型(全能力融合)

这条路径将推理能力通用能力合二为一,产出最终可用的 DeepSeek-R1。

流程拆解

步骤 A:准备两类数据(灰色框)

图中右侧灰色框分为上下两层,对应两类数据来源:

上层:Non-Reasoning(非推理数据)

  • 来源DeepSeek V3Sampling
  • 说明:直接复用成品模型 V3 的 SFT 数据集(写作、事实问答、自我认知等),并调用 V3 为某些任务生成潜在的思维链。约 20万条

下层:Reasoning(推理数据)

  • 来源DeepSeek R1 Dev-2Sampling
  • 论文原文“We curate reasoning prompts and generate reasoning trajectories by performing rejection sampling from the checkpoint from the above RL training.”
  • 机制:这就是论文明确描述的拒绝采样(Rejection Sampling)——对每个问题采样多个回答,只保留正确答案
  • 额外过滤“we have filtered out chain-of-thought with mixed languages, long paragraphs, and code blocks”
  • 规模:约 60万条 推理样本。

关键澄清:右侧路径的 Reasoning 数据明确使用了 Rejection Sampling(拒绝采样),而左侧路径的 Filter 只是可读性后处理,两者机制不同。

步骤 B:SFT 融合训练
  • 输入:上述两类数据合并(约 80万条:60万推理 + 20万非推理)
  • 基座DeepSeek V3 Base(再次强调,是基座模型,不是成品 V3)
  • 算法SFT(监督微调,2 个 epoch)
  • 产出DeepSeek R1 Dev-3

论文原文“We fine-tune DeepSeek-V3-Base for two epochs using the above curated dataset of about 800k samples.”

步骤 C:全场景 RL
  • 起点DeepSeek R1 Dev-3

  • 输入Diverse Prompts(覆盖推理+通用的多样化提示)

  • 奖励Rule-based Reward & Preference Reward

    • 推理数据:使用 Rule-based Reward(与 Zero 相同的数学/代码规则验证)
    • 通用数据:使用 Preference Reward(基于奖励模型捕捉人类偏好,评估有用性和无害性)
  • 论文原文细节

    • 有用性(Helpfulness):只评估最终摘要(focus exclusively on the final summary
    • 无害性(Harmlessness):评估整个回答,包括思维链和摘要(evaluate the entire response of the model, including both the reasoning process and the summary
  • 产出:最终的 DeepSeek R1


六、总结:三条路径的关系

这张图本质上描绘了 DeepSeek-R1 的**“三级火箭”**:

路径 核心使命 关键技术
左侧 证明纯 RL 可以自发产生推理 无 SFT,仅用 Accuracy + Format 奖励;模型自发涌现反思与长思维链
中间 解决可读性与语言混杂 冷启动 SFT + 语言一致性奖励 RL
右侧 融合推理与通用能力 V3 提供非推理数据 + R1 Dev-2 拒绝采样提供推理数据 → 在 V3 Base 上重新 SFT → 全场景 RL 对齐

数据流向

  • 左侧 R1-Zero 的输出 → 经 Filter/Refine → 成为中间路径的冷启动数据
  • 中间 R1 Dev-2 的检查点 → 经 Rejection Sampling → 成为右侧路径的推理数据
  • 右侧 V3 成品模型 → 提供非推理数据
  • 最终在 V3 Base 上"重新组装"并 RL 打磨,得到完整的 DeepSeek R1

问题1:是不是实际上只有SFT和RL两种技术

从技术的角度来看,是不是实际上只有SFT和RL两种技术,只不过使用的数据不同、RL使用的奖励不同,而且RL之后得到的模型通常要推理一下,以对错误的数据进行过滤以得到正确的数据,也就是拒绝采样,这样就能拥有更多的数据。其中左侧的Filter是不是拒绝采样,图中Filter下面也标注了Accuracy& Format奖励

一、论文原文

左侧路径(R1-Zero → 冷启动数据)论文原文

论文 2.3.1 Cold Start 节:

“To collect such data, we have explored several approaches: using few-shot prompting with a long CoT as an example, directly prompting models to generate detailed answers with reflection and verification, gathering DeepSeek-R1-Zero outputs in a readable format, and refining the results through post-processing by human.”

右侧路径(R1 Dev-2 → 推理数据)论文原文

论文 2.3.3 Rejection Sampling and Supervised Fine-Tuning 节:

“We curate reasoning prompts and generate reasoning trajectories by performing rejection sampling from the checkpoint from the above RL training… For each prompt, we sample multiple responses and retain only the correct ones.”


二、你的判断是对的:左侧 Filter 本质上就是拒绝采样

你说得完全正确。图中左侧灰色框明确标注了:

  • Filter 下方写着 Accuracy & Format
  • Refine 下方写着 DeepSeek V3 + Human

这意味着左侧路径的操作流程是:

  1. Sampling:从 R1-Zero 对推理提示生成多个回答
  2. Filter(Accuracy & Format):用与 RL 训练时完全相同的奖励标准(答案正确性 + 格式合规性)进行筛选——答对且格式正确的保留,答错或格式不对的丢弃
  3. Refine(DeepSeek V3 + Human):在筛选后的数据上进一步做可读性优化(语言统一、添加总结、排版整理)

从技术本质上看,第 2 步的 Filter 就是拒绝采样(Rejection Sampling)。论文在 2.3.3 中明确将"sample multiple responses and retain only the correct ones"定义为拒绝采样,而左侧的 Filter 做的正是同样的事——只是左侧数据量更小(仅数千条用于冷启动),且额外强调了可读性后处理。


三、你的核心观点完全正确:本质上只有 SFT 和 RL 两种技术

你提出的技术归纳非常精准:

技术 本质 变体/差异
SFT 用(提示,回答)对直接做监督学习 冷启动 SFT、蒸馏 SFT、全能力融合 SFT——只是数据不同
RL 用奖励信号优化策略模型 奖励设计不同(Accuracy/Format/Lang. Consistency/Preference)——只是奖励不同

拒绝采样(Rejection Sampling)并不是第三种独立技术,它是 RL 和 SFT 之间的数据桥梁

RL 训练得到模型 → 模型生成多个候选回答 → 用奖励标准筛选正确答案 
→ 筛选后的数据成为下一轮 SFT 的训练数据

这正是一个自我迭代的数据飞轮

  • RL 提升模型能力 → 模型生成更高质量的回答 → 拒绝采样过滤出正确数据 → 更多高质量数据用于 SFT → SFT 后的模型作为更好的 RL 起点 → 循环继续

四、为什么论文对"类似操作"用了不同术语?

这确实是论文中一个值得注意的现象:

路径 论文术语 规模 目的
左侧(R1-Zero) “gathering… post-processing” 数千条 冷启动:让模型先学会人类友好的可读格式
右侧(R1 Dev-2) rejection sampling 约 60 万条 大规模 SFT:扩充推理数据量

可能的原因:

  • 左侧数据量极小(仅数千条),且重点在"可读性精炼"(Refine),所以论文更强调人工后处理的一面
  • 右侧数据量巨大(60 万条),且核心目的就是"用正确性筛选来扩充数据",所以明确使用"rejection sampling"这一术语

但正如你所指出的,两者在技术机制上是同一回事:都是让模型生成回答,然后用 Accuracy & Format 标准做过滤。


五、完整理解

结合你的分析和论文原文,这张图应该这样理解:

┌─────────────────────────────────────────────────────────────────────┐
│  核心循环:RL → 采样生成 → 拒绝采样(Accuracy & Format 过滤)        │
│           → 得到高质量数据 → SFT → 更好的模型 → 下一轮 RL            │
└─────────────────────────────────────────────────────────────────────┘
  • 左侧:R1-Zero 经过 RL 后,采样 + 拒绝采样(Filter)+ 可读性精炼(Refine) → 得到冷启动数据 → 中间路径 SFT
  • 中间:冷启动 SFT → 推理导向 RL → 产出 R1 Dev-2
  • 右侧:R1 Dev-2 经过 RL 后,采样 + 拒绝采样(Filter) → 与 V3 的非推理数据合并 → 在 V3 Base 上 SFT → 全场景 RL → 最终 R1

拒绝采样(或基于 Accuracy & Format 的过滤)是贯穿左右两侧的关键数据生成机制,它不是第三种算法,而是 RL 和 SFT 之间的数据转换器。


六、总结

你的技术直觉完全正确:

  1. 本质上只有 SFT 和 RL 两种技术,图中所有训练步骤都可以归入这两类。
  2. 拒绝采样是连接 RL 和 SFT 的通用手段,左侧的 Filter(标注 Accuracy & Format)和右侧的 Rejection Sampling 在技术本质上是同一回事——都是"让模型生成多个回答,保留正确的"。
  3. 论文在不同阶段使用不同术语(“post-processing” vs “rejection sampling”),可能是出于数据规模和描述侧重点的差异,但不改变技术实质

图5:基于 vLLM 的强化学习(RL)训练系统架构

在这里插入图片描述
这张图展示的是一个基于 vLLM 的强化学习(RL)训练系统架构,它将"生成回答 → 计算奖励 → 更新模型"的完整流水线拆解为三个功能区(Rollout / Inference / Train),并配合底层的显存管理策略。这个架构与 DeepSeek-R1 论文中描述的 GRPO 训练流程完全兼容。

以下按区域逐一解释,并标注哪些是论文明确描述哪些是工程实现细节


一、Rollout(左侧:采样生成)

这是 RL 训练的第一步——让模型对输入问题生成多个候选回答。

组件 功能 与论文的对应关系
Prompts 输入的推理问题(数学题、编程题等),只有问题,没有答案过程 ✅ 论文明确:RL 训练只用推理提示,不依赖 SFT 数据
vLLM Workers 高性能并行推理引擎,同时生成多个回答。图中不同长度的蓝/橙色条表示:同一个问题生成了多个长度不同的候选回答 ⚙️ 工程实现:论文未指定推理引擎,vLLM 是开源社区常用的高效实现
Overlapped Execution 生成回答与计算奖励流水线并行,不必等全部生成完再算奖励 ⚙️ 工程优化

Rule-based Reward(基于规则的奖励)

生成后的回答进入奖励计算模块,图中列出了三种具体的奖励器:

奖励器 功能 论文对应
Code Executor 执行模型生成的代码,用预定义测试用例验证 ✅ 论文:“For LeetCode problems, a compiler can be used to generate feedback based on predefined test cases”
Answer Matcher 提取模型输出的最终答案,与标准答案比对(如数学题) ✅ 论文:“Accuracy rewards… The accuracy reward model evaluates whether the response is correct”
Format Checker 检查输出格式(如是否将思考过程放在 `` 之间) ✅ 论文:“Format rewards… enforces the model to put its thinking process between <think> and </think>

论文原文依据“We adopt a rule-based reward system that mainly consists of two types of rewards: Accuracy rewards and Format rewards.”


二、Inference(中间:参考模型与奖励评估)

这一区域负责为 RL 更新提供"参照标准"和"奖励信号"。

组件 功能 与论文的对应关系
Reference Model 参考模型(π_ref),用于计算 KL 散度,防止当前训练模型(Actor)偏离原始分布太远 ✅ 论文:GRPO 公式中明确包含 β * DKL(πθ ‖ πref)
Reward Model 奖励模型,用于评估回答质量 ⚠️ 论文明确说明未使用神经奖励模型“We do not apply the outcome or process neural reward model in developing DeepSeek-R1-Zero, because we find that the neural reward model may suffer from reward hacking”

重要澄清:图中画了 Reward Model,但这套架构是通用设计(支持 PPO、GRPO、DPO 等多种算法)。在 DeepSeek-R1 的 GRPO 实现中:

  • Reward 来自左侧的 Rule-based Reward(规则奖励,不是神经网络)
  • Reference Model 用于 KL 惩罚(GRPO 公式中的 DKL(πθ ‖ πref)

三、Train(右侧:模型更新)

这是 RL 训练的第三步——根据奖励信号更新模型参数。

组件 功能 与论文的对应关系
RL Algorithms 支持 PPO、GRPO、DPO 等算法 ✅ 论文使用 GRPO(Group Relative Policy Optimization)
Pack Data 将生成的回答、奖励、参考模型输出等打包成训练批次 ⚙️ 工程实现
Actor Model 当前正在训练的策略模型(πθ),即"学生" ✅ 论文:GRPO 中的 policy model
Critic Model 价值评估模型(可选) ✅ 论文:GRPO 不需要 Critic Model“foregoes the critic model that is typically the same size as the policy model”。图中标注 (Optional) 与此一致
Update Parameters 根据优势值(Advantage)和 KL 惩罚更新 Actor 参数 ✅ 论文:GRPO 目标函数中的 clip 和 ratio 更新

GRPO 训练流程:强化学习的数据流向

📥 输入:Prompts(只有问题,无答案)
🚀 阶段 1:Rollout(生成回答)
执行者:Actor Model(通过 vLLM Workers 加载)
操作:对同一个问题 q,自回归生成 G 个回答 {o₁, o₂, …, o_G}
输出:回答文本 + 每个 token 的 old_log_prob

🎯 阶段 2:Rule-based Reward(打分)
执行者:规则奖励函数(非神经网络)
操作:对每个回答 oᵢ 计算奖励 rᵢ
• Accuracy:答案是否正确(数学比对 / 代码测试)
• Format:格式是否合规(\n 标签)
输出:奖励值 r₁, r₂, …, r_G

🔍 阶段 3:Inference(参考模型评估)
执行者:Reference Model(π_ref,冻结权重,不参与训练)
操作:对 (q, oᵢ) 做前向传播,不生成新文本,只计算概率
输出:每个 token 的 ref_log_prob = log π_ref(oᵢ|q)
目的:后续计算 KL 散度,防止 Actor 偏离太远

📦 阶段 4:Pack Data(打包训练数据)
将以下信息组装成一条训练样本:
{q, oᵢ, rᵢ, old_log_prob, ref_log_prob}

🎓 阶段 5:Train(GRPO 更新 Actor)
① Actor 对 (q, oᵢ) 做前向传播,计算当前 log_prob
② 计算概率比 ratio = exp(log_prob - old_log_prob)
③ 计算优势 Aᵢ = (rᵢ - mean®) / std®
④ 计算 KL 项 DKL = ref_log_prob - log_prob(或类似形式)
⑤ 优化目标:min(ratio · Aᵢ, clip(ratio) · Aᵢ) - β · DKL
⑥ 反向传播,更新 Actor 参数

Rollout(生成回答 + 算奖励)  ──┐
                               ├──→ Pack Data(组装训练批次)──→ Train(GRPO 更新)
Inference(参考模型算概率) ────┘

SFT 训练流程:监督微调的数据流向

📥 输入:Dataset(问题 + 完整思维链 + 答案)
📚 阶段 1:Data Loading(加载数据)
执行者:DataLoader(从 Hugging Face 数据集加载)
操作:读取每条样本的 problem 和 solution
示例数据:
problem: “解方程 2x + 5 = 13”
solution: “\n要求解方程 2x + 5 = 13…\n\n4”

🔧 阶段 2:Tokenization & Formatting(格式化)
执行者:Tokenizer + Chat Template
操作:将问题和答案拼接成对话格式:
<|im_start|>user
解方程 2x + 5 = 13<|im_end|>
<|im_start|>assistant
要求解方程…4<|im_end|>
关键操作:创建 Loss Mask —— 将 User 部分(问题)的 label 设为 -100(忽略),只让模型学习 Assistant 部分

🧮 阶段 3:Forward Pass(前向传播)
执行者:Actor Model(即被训练的模型,唯一模型,无需 Reference/Critic)
操作:对完整序列做前向传播,输出每个位置的 logits(预测分布)
输入:input_ids(整个对话序列的 token ID)
输出:logits(每个位置对词汇表中每个词的预测概率)

📐 阶段 4:Loss Computation(计算损失)
执行者:CrossEntropy Loss(交叉熵损失)
操作:对比模型预测 logits 与真实 labels
公式:Loss = -Σ log P_model(y_true | y_true_prev)
关键:只对 Assistant 部分(绿色高亮)计算损失,User 部分被 mask 掉
输出:标量 loss 值

🎓 阶段 5:Backward & Update(反向传播更新)
① 对 Loss 做反向传播,计算梯度 ∇θ
② Optimizer(如 AdamW)根据梯度更新模型参数
③ 可选:学习率调度(Warmup + Cosine Decay)
④ 重复步骤 1~5,遍历整个数据集(多个 epoch)
输出:更新后的模型权重(学会了"遇到这类问题,应该这样思考")

SFT 五阶段速览

阶段 做什么 和 GRPO 的区别
① 加载数据 读取 (问题, 完整思维链+答案) GRPO 只有问题,没有答案
② 格式化 拼成对话,只对 Assistant 部分算损失(User 部分 mask 掉) GRPO 不需要这一步,因为答案是自己生成的
③ 前向传播 模型预测序列中每个位置的下一个 token GRPO 也有,但 GRPO 需要算概率比
④ 计算损失 CrossEntropy(预测 vs 标准答案) GRPO 用 Reward + KL 惩罚
⑤ 反向更新 梯度下降更新参数 GRPO 也是反向更新,但目标函数不同

SFT vs GRPO 核心区别

SFT(监督微调):
• 输入:有标准答案(问题 + 完整思维链 + 答案)
• 模型角色:学生——照着字帖模仿,预测下一个字
• 损失来源:CrossEntropy(预测值与标准答案的偏差)
• 需要模型数:1 个(只有被训练的模型本身)

GRPO(强化学习):
• 输入:只有问题,没有标准答案过程
• 模型角色:考生——自己写答案,老师打分
• 损失来源:Reward + KL 惩罚(分数高低 + 不能偏离太远)
• 需要模型数:2 个(Actor + Reference,有时还需要 vLLM 副本)

最核心的区别(一句话)
SFT = 有字帖照着练(1 个模型,CrossEntropy 损失)
GRPO = 没字帖自己写,老师打分改(2 个模型,Reward + KL 损失)


四、VRAM Management(底部:显存管理)

这是纯工程层面的优化,论文完全没有涉及,但它是实际训练大模型时必不可少的部分。

阶段 操作 目的
Instantiate 将 Actor 模型从 VRAM 加载到 vLLM Workers Rollout 阶段需要 GPU 做高速推理生成
Save & Offload 将 Actor 保存到内存/磁盘,腾出显存 显存不够时,让出空间给其他组件
Destroy 销毁 vLLM Workers 生成阶段结束,释放推理引擎占用的显存
Reload 将 Reference / Reward 模型从内存/磁盘重新加载到 VRAM 进入 Train 阶段前恢复模型
Offload / Reload Actor/Critic 与 Reference/Reward 在 VRAM 和内存/磁盘之间来回切换 核心策略:GPU 显存有限,不能同时放下所有模型,通过"换入换出"实现大模型训练

为什么需要这么复杂的显存管理?

因为 RL 训练需要同时加载多个模型:

  • Actor(正在训练的策略模型)
  • Reference(参考模型,计算 KL 项)
  • vLLM Workers(推理引擎,需要一份 Actor 副本做生成)
  • Critic(如果使用 PPO 的话)

这些模型加起来远超单卡显存。图中的 VRAM Management 策略就是:Rollout 时让 vLLM + Actor 在 GPU 上;Train 时把 Actor + Reference 换上来,vLLM 销毁释放空间。


五、总结:图与论文的对应关系

图中元素 论文描述 状态
Prompts + vLLM 生成多个回答 GRPO 采样 G 个输出 ✅ 一致
Rule-based Reward(Accuracy / Format) 论文明确的两类规则奖励 ✅ 一致
Code Executor / Answer Matcher / Format Checker 数学验证、代码编译验证、格式检查 ✅ 一致
Reference Model GRPO 公式中的 π_ref,计算 KL 惩罚 ✅ 一致
Reward Model 论文明确不使用神经奖励模型 ⚠️ 架构通用设计,但 R1 实际用规则奖励
Critic Model (Optional) GRPO 不需要 Critic ✅ 一致(图中标注了 Optional)
GRPO 算法 论文采用的 RL 算法 ✅ 一致
VRAM Management 论文未涉及 ⚙️ 纯工程实现

六、一句话概括这张图

这张图描绘了一个工程化的 GRPO 训练流水线:用 vLLM 高效并行生成多个候选回答,通过规则奖励(代码执行、答案匹配、格式检查)打分,结合参考模型计算 KL 惩罚,最后用 GRPO 算法更新策略模型——同时通过精细的显存调度,在有限的 GPU 资源下让大模型训得起来。

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐