Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >LLM界的AlphaGo:DeepSeek R1范式复现笔记来了!

LLM界的AlphaGo:DeepSeek R1范式复现笔记来了!

作者头像
小腾资讯君
发布于 2025-02-24 11:27:34
发布于 2025-02-24 11:27:34
7780
举报

不久前,有人在GitHub上公开了Logic RL项目,完整开源了从base 模型到R1 的全流程代码,让每个人都能复现这个号称"LLM界AlphaGo"的神奇模型,各大开源社区引发了一波又一波的复现狂潮

这次,我们邀请腾讯优图实验室的研究员yuleiqin,整理了他在R1复现的一些经验和分享笔记,该笔记以多个开源项目的再复现以及交叉验证为目标,探索R1/R1-zero中强化学习步骤带来的模型效果提升,并尝试展望R1技术在未来模型训练与业务落地上的前景。

希望本文对AI模型训练、评估和数据生成感兴趣的开发者,能够有所获益

1

R1开源项目梳理

目前主流的R1系列复现工作如表1所示。综合考虑数据领域(数学题、逻辑题等)及框架,我们选取了SimpleRL、OpenR1、LogitRL、TinyZero这四个项目开展类R1训练范式的实验。

表1 主流开源R1复现工作

图片
图片

2

实验设置

2.1训练数据

数学题

  • SimpleRL
    • MATH8KsimpleRL-reason/train/data/math_level3to5_data_processed_with_qwen_prompt.json at main·hkust-nlp/simpleRL-reason·GitHub 跳转链接: https://github.com/hkust-nlp/simpleRL-reason/blob/main/train/data/math_level3to5_data_processed_with_qwen_prompt.json
      • 数据量:8.5K
      • 来源:MATH数据集中难度在3-5等级的题目
  • OpenR1
    • MATH-lightevalhttps://huggingface.co/datasets/DigitalLearningGmbH/MATH-lighteval 跳转链接 https://huggingface.co/datasets/DigitalLearningGmbH/MATH-lighteval
      • 数据量:7.5K
      • 来源:以lighteval形式重组的MATH数据集,包含分步骤的题解
    • MATH-numinahttps://huggingface.co/datasets/AI-MO/NuminaMath-TIR 跳转链接 https://huggingface.co/datasets/AI-MO/NuminaMath-TIR
      • 数据量:72.4K
      • 来源:NuminaMath-CoT中的题目,使用tool-integrated reasoning方式获得GPT4o的推理链路(包含python解法、代码执行过程等多轮交互)
  • TinyZero
    • Countdown(加减乘除至目标数字)https://huggingface.co/datasets/Jiayi-Pan/Countdown-Tasks-3to4 跳转链接 https://huggingface.co/datasets/Jiayi-Pan/Countdown-Tasks-3to4
      • 数据量:490K
      • 来源:经典游戏,使用运算符将给定的3位数字、4位数字计算得到目标值

逻辑题

  • LogicRL
    • Knights and Knaves(老实人与骗子)https://huggingface.co/datasets/K-and-K/knights-and-knaves 跳转链接 https://huggingface.co/datasets/K-and-K/knights-and-knaves
      • 数据量:3PPL(三人)1K;5PPL(五人)1K
      • 来源:逻辑题,老实人只说真话;骗子总说假话。找出所有的老实人与骗子。

2.2 基座模型选取

考虑到可复现性(对齐开源项目),我们采用了以下基座模型:

  • Qwen2.5-7B-Math(Base):SimpleRL、OpenR1   
  • Qwen2.5-1.5B-Instruct:OpenR1        
  • Deepseek-R1-Distill-Qwen-7B(Instruct):OpenR1
  • Qwen2.5-3B(Base):TinyZero
  • Qwen2.5-7B(Base):LogicRL、TinyZero
  • Qwen2.5-7B-Instruct:LogicRL

Qwen-Math系列的基座模型在RL前就已经具备了解决多种难度数学题的能力,这为后续激发模型慢思考的long CoT能力打下了坚实的基础。

受到计算资源的影响以及现在开源的各类RL框架的限制,大部分开源工作都将模型尺寸限制在了1.5B至7B的量级。一方面,小模型能够方便我们快速上手R1的复现工作;但另一方面,小模型本身的逻辑推理能力有限,这限制了更全面、实用级别(而非toy-study)类R1工作的复现。因此,在后续的工作中,针对RL框架的优化(多机多卡训练、减少训练中rollout等步骤导致的气泡等)是通往大规模训练类R1模型之路上必须要解决的问题。

2.3 RL基本设置

2.3.1 Reward函数定义
Format Reward

RL训练时设置严格的格式约束,通常以system prompt的形式出现在训练数据中。

  • SimpleRL
    • system prompt
图片
图片
  • reward函数定义(snippet) 跳转链接: https://github.com/hkust-nlp/simpleRL-reason/blob/main/train/openrlhf/trainer/ppo_utils/experience_maker.py#L617
图片
图片
  • OpenR1
    • system prompt
图片
图片
  • reward函数定义(snippet) 跳转链接: https://github.com/huggingface/open-r1/blob/main/src/open_r1/rewards.py#L52)
图片
图片
  • LogicRL
    • system prompt (Base)
图片
图片
  • system prompt (Instruct)
图片
图片
  • reward函数定义(snippet) 跳转链接: https://github.com/Unakar/Logic-RL/blob/086373176ac198c97277ff50f4b6e7e1bfe669d3/verl/utils/reward_score/kk.py#L23)
  • TinyZero
    • system prompt (snippet)
图片
图片
  • reward函数定义(snippet) 跳转链接: https://github.com/Jiayi-Pan/TinyZero/blob/8a623926012ff785f2dc6f3639a821465eed07c4/verl/utils/reward_score/countdown.py#L18
图片
图片
Accuracy Reward

考虑到答案校验存在不同的类型(字符串通常使用exact_match,浮点数允许给定精度下的误差),不同开源项目也使用了适应于训练集的答案校验函数。

  • SimpleRL
    • accuracy reward定义(snippet) 跳转链接: https://github.com/hkust-nlp/simpleRL-reason/blob/main/train/openrlhf/trainer/ppo_utils/experience_maker.py#L551
图片
图片
  • OpenR1
    • accuracy reward定义(snippet) 跳转链接: https://github.com/huggingface/open-r1/blob/main/src/open_r1/rewards.py#L10
图片
图片
  • LogicRL
    • accuracy reward定义(snippet) 跳转链接: https://github.com/Unakar/Logic-RL/blob/086373176ac198c97277ff50f4b6e7e1bfe669d3/verl/utils/reward_score/kk.py#L141
图片
图片
  • TinyZero
    • accuracy reward定义(snippet) 跳转链接: https://github.com/Jiayi-Pan/TinyZero/blob/8a623926012ff785f2dc6f3639a821465eed07c4/verl/utils/reward_score/countdown.py#L59
图片
图片

小结:DeepSeek R1的format约束主要以"<think>{think process}</think>{answer}"的形式实现,而开源方案大多采用了"<think>{think process}</think><answer>{answer}</answer>"的形式。从优化角度而言两者的差异不大。在构建基于正则表达式来判断模型输出是否存在规范格式时,往往采用的是较为严格的r"^<think>.*?</think>\s*<answer>.*?</answer>$"来约束开头与结尾。针对部分数学类问题,format reward考虑答案是否出现了\box{}框。

至于accuracy reward,各个工作的实现方式基本沿用了过往强化学习算法中ORM里的代码。此处的难点有两个:1)需要编写大量的后处理代码,从模型的输出结果中能够成功解析出最终的结果;2)需要考虑判断相等的条件(数值、字符串等),并针对不同的领域数据设计不同的reward方式。对于前者而言,对于某些要求格式化输出类问题,需要正确匹配出目标kv对。对于后者而言,判断prediction和gt是否相等并返回reward的定义也有所讲究。最严格的完全一致匹配只会区分正确-错误两种情况,在某些任务上可能会影响训练收敛的速度。

2.3.2 Penalty函数定义 (Optional)

大多数开源项目中并没有强调penalty及其实现,但目前的最新<demystify long CoT>文章指出了重复penalty与长度penalty的重要性。施加基于repetition的penalty函数可以减少CoT中车轱辘话的内容。具体地,repetition penalty是基于n-gram实现的,维护一个已经访问过的n-gram集合,并以n为滑动窗口的大小。从前到后滑动判断是否多次出现了相同的n-gram,并以此为惩罚。实现参考(snippet):

跳转链接:

https://github.com/eddycmu/demystify-long-cot/blob/release/openrlhf/openrlhf/reward/repetition.py#L10)

图片
图片

针对两个正确的答案A与答案B,如果答案A的长度小于答案B的长度,那么通常会给予答案A更高的reward以精简思维链;而针对两个错误的答案A与答案B,如果A的长度小于B的长度,则会惩罚A,以鼓励模型进一步探索解法来提升思维链中的反思、分叉等。实际训练时,上述的penalty设计仍然可能存在意想不到的hacking情况。比如,鼓励长度更短的正确回答可能破坏了模型原本的branching思考(alternatively...)。实际复刻R1时,还需要考虑不同难度的数据混合比例,防止简单题目回答均正确情况下的思维链退化。

2.3.3 优化方式

开源项目大部分都支持PPO算法。目前TRL和VeRL库均已支持GRPO算法。

  • SimpleRL(OpenRLHF)-> PPO
  • OpenRL(TRL)-> GRPO
  • LogitRL(VeRL)-> GRPO
  • TinyZero(VeRL)-> PPO & GRPO
2.3.4 训练平台

复现工作均在TIONE平台上使用1台~4台GPUs进行。上述几个开源复现工作中,只有OpenRLHF支持多机多卡训练。其余的仅支持单机多卡训练,且往往存在GPU数目的限制。在训练TinyZero和LogitRL时,我们就遇到了扩展GPUs后训练卡在初始化的问题。

大部分项目使用4卡、8卡、32卡(SimpleRL)复现耗时在2~3天左右。相比于各个开源项目中使用的GPU来说,某些型号虽然显存大,但是计算效率较低,训练速度远不如各平台汇报的结果。

3

实验结果与分析

3.1 开放训练过程

  • SimpleRL SimpleRL-复现结果 跳转链接: https://api.wandb.ai/links/yuleiqin-tencent/97xftizo
  • OpenR1OpenR1复现结果 跳转链接: https://api.wandb.ai/links/yuleiqin-tencent/h10ms0jr
  • LogitRL
    • Stage1 LogicRL-stage1(3ppl)复现结果 跳转链接 https://api.wandb.ai/links/yuleiqin-tencent/h2gp644r
    • Stage2 LogicRL-Stage2(5ppl)复现结果 跳转链接: https://api.wandb.ai/links/yuleiqin-tencent/svgtxoij
    • Stage3 LogicRL-Stage3(5ppl)复现结果 跳转链接: https://api.wandb.ai/links/yuleiqin-tencent/wl14j4f5
  • TinyZero
    • PPO TinyZero-R1复现结果 跳转链接 https://api.wandb.ai/links/yuleiqin-tencent/crea6kem
    • GRPOTinyZero-R1(GRPO)复现结果 跳转链接 https://api.wandb.ai/links/yuleiqin-tencent/3d2dk0bp

3.2 结果详述

3.2.1 SimpleRL

我们使用多机32卡跑完了训练过程(总步数为160步);同时使用单机8卡训练了一半作为对比。核心的训练过程示意图如下:

图片
图片

图3.2.1(1) SimpleRL训练过程中训练集reward(左)与回复长度(右)的变化

相比于SimpleRL博客中汇报的最终回复长度而言,我们最终收敛的长度偏短。SimpleRL汇报的最终长度大约在700左右,但我们在580左右。这里的可能原因有两个:1)训练的超参未完全对齐其设置,后续待进一步优化超参。2)需要改进目前的format约束,强制区分CoT思考链路部分与答案部分。

单机多卡(8 GPUs)与多机多卡(32 GPUs)训练的效果基本一致,多机训练速度是单机的3.2倍。RL训练时需消耗大量的时间(>80%)在对模型进行采样(make experience),vllm使用更多的GPU并行可以大幅减少训练时间。

表3.2.1(1) SimpleRL训练过程中测试集指标变化

图片
图片

模型在各大数学测试集上的表现大致是稳步提升的。尽管训练在前期(step=12)发生输出长度骤降的时候,模型在测试集上的表现也出现了波动。但随着训练的稳步推进,模型的输出长度稳步回升。

随着输出长度大致稳定,测试集的性能也基本不变。在step=60以后,输出长度基本稳定在一个平均值附近,而此时的各个测试集平均指标也维持在53左右。

仅基于format与accuracy的RL训练能够带来一定的泛化性。尽管训练集是从MATH500中选取的部分难度数据,但模型在多个数据集上均表现出一致提升的现象。

图片
图片

图3.2.1(2) SimpleRL训练过程中模型在测试集上的分步骤思考(左)与反思(右)变化

Math Base模型在起始阶段就展现出分步骤思考能力。我们统计分析了分步骤思考的关键词出现的频数,发现基础模型已展现出较强的目标分解,分步骤解题能力。随着训练的进行,模型首先经历了来自format奖励的优化(step12),在输出分布上出现了较大变化。继续训练后模型能够重新掌握分解步骤进行推理的能力。

图片
图片

Math Base反思能力变化较小,没有明显的多次自我反思;但可观察到微弱的aha moment。对模型在最后step=160的输出进行分析,模型仍然倾向于在输出中使用代码校验的方式进行check,而不是使用纯文本的反思方式。我们认为这是千问的Math Base模型本身倾向于使用代码来校验的预训练方式有关系(step=0)。考虑到最终模型输出长度没有特别明显的增长,这一点和自我反思能力的变化情况是吻合的。以MATH500测试集中的一个示例说明,如图3.2.1(3)所示,模型一开始就已经具备了基本的分步推理思维链。但受到预训练阶段数据偏好的影响,模型校验时使用的是PoT,并通过LLM模拟编译器输出了运行结果(output)。这样的校验方式有利于借助编译器等外部工具来验证,但不利于生成纯文本的思维链。这也解释了模型为什么一开始输出长度十分冗余(编写代码校验)。随着训练的进一步进行,模型在step=4和step=12的时候输出长度急剧下降,开始减少代码校验。但在step=100的时候,模型又倾向于输出代码校验。这说明了该数学基座模型对代码工具的执念很深。最终,模型在step=160展现出了aha moment中的反思步骤(re-evaluate)

图片
图片

图3.2.1(3) SimpleRL训练过程中模型在测试集上的输出变化

Math Base模型能同时针对文本推理结果或代码校验结果给出反思。如图图3.2.1(4)所示,尽管模型表现出使用代码校验的倾向,但是能够根据模拟编译结果来进行反思,进行打磨。

图片
图片

图3.2.1(4) SimpleRL测试集上展现出反思特点的回答示例

3.2.2 OpenR1

训练中的核心指标如下图3.2.2(1)所示。注:这里Qwen2.5-1.5B指的是Instruct模型。

图片
图片

图3.2.2(1) OpenR1训练过程中测试集格式奖励(左)与准确度奖励(右)的变化

DeepSeek官方蒸馏的Qwen7B模型指令遵循能力较差,始终无法很好输出指定的思维链与答案格式。这里图3.2.2(1)左边可以看到,除了Qwen2.5-7B只需要输出boxed框结果(无需<think></think>等约束),Qwen2.5-1.5B-Instruct与Deepseek-Distill-Qwen2.5-7B表现出了截然不同的曲线。Deepseek-Distill-Qwen2.5-7B几乎没有办法学到指定的格式。1.5B量级的模型受限于体量,虽然能够遵循格式指令,但未显著提升准确率。

Qwen2.5-Math-7B-Base的复现结果与SimpleRL基本一致。虽然训练数据是从MATH源选取的,但除MATH外的其余测试集(如GSM8K等)也有略微提升。DeepSeek-Distill-Qwen-7B的GRPO训练存在波动,我们认为当前超参设置并不是最优的,还需仔细微调。

表3.2.2(1) OpenR1训练过程中Qwen2.5-Math-7B-Base在测试集上的变化

图片
图片

表3.2.2(2) OpenR1训练过程中DeepSeek-Distill-Qwen-7B-Base在测试集上的变化

图片
图片

3.2.3 LogicRL

  • Stage1优化

该阶段使用PPL=3(即三个人的KK问题)对模型进行预热,仅训练1ep。考虑到GRPO训练时相比于PPO一般会比较不稳定,且受到rollout数量、batch size等影响较大,选择从简单的题目入手可以让模型先具备解决KK问题的初步推理方式。

指令对齐能力对于解决KK问题有明显收益。我们从图3.2.3(1)可知,经过对齐后的Qwen2.5-7B-Instruct模型一开始便取得了0.45左右的准确率。

一阶段RL训练略微提升了模型平均的回复长度。模型在初始阶段利用预训练的能力即可生成400字左右长度的合理思维链,尽管此时并没有出现明显的反思能力。

图片
图片

图3.2.3(1) LogicRL一阶段训练过程中测试集指标(左)与回复长度(右)的变化

图片
图片

图3.2.3(2) LogicRL一阶段训练过程中答案错误占比(左)与格式错误占比(右)的变化

格式错误占比下降速度很快,但答案错误占比仍居高不下。千问Base模型仅需迭代若干步即可将格式错误占比收敛到5%以下。而指令对齐后的Instruct版本起始阶段就具备良好的格式遵循能力,能够输出正确的格式。另一方面,由于此时模型并未展现出反思能力,答案错误的占比一直稳定在60%~70%左右。

  • Stage2优化

该阶段使用PPL=5对模型进行进一步的优化。我们加载来自一阶段末尾的ckpt来初始化actor模型。此阶段需要调整采样的温度超参,同时增加rollout的样本数量。通过增加采样结果的多样性来允许带有思维链解法的回答出现,进一步来鼓励模型生产这样的思维链答案。

二阶段训练中受到温度系数与采样rollout数量超参影响较大。官方项目中提及的温度系数temperature=1.2~1.5对于Qwen 7B量级的模型来说仍然有些大,比较容易训崩。参考图3.2.3(2),我们给出了一组超参设置(temperature=1.2,rollout.n=32)下训练崩溃的实验曲线。考虑到五个人的KK问题在难度上就会远高于三个人的KK问题,我们在优化第二阶段时需要确保模型是稳健而不是激进训练的。如果模型在训练过程中一直没有得到有效的奖励来鼓舞带有self-reflection答案的输出,训练一段时间后模型没有任何本质提升,极其容易导致坍塌。以图3.2.3(2)中回复长度的变化曲线来看,在step=140时,模型直接无法停止,instruct模型不吐出"<|im_end|>"、base模型不吐出"<|end_of_text|>",反复说没有意义的内容直到超出预设回答的长度上限。在step=140时,模型不仅出现了大量的错误答案,也出现了格式错误暴涨的问题。这些现象与其测试集指标暴跌相互佐证,说明了模型正在坍塌。

图片
图片

图3.2.3(2) LogicRL二阶段训练过程中不合适的超参设置导致的训练崩溃问题

GRPO训练过程中的抖动较大。即使通过合理调整超参能够避免了模型坍塌的问题,但整个训练过程中我们发现模型的输出长度变化、错误答案占比等变化较剧烈(如图3.2.3(3)所示)。这意味着模型解决PPL=5时的挑战较大,很难找到容易的解法套路,性能提升十分坎坷。

相比于Qwen-Instruct,Qwen-Base表现出更详细缜密的推理链过程。为了探究在训练结束时Qwen2.5-Base与Instruct在长度上的差异,我们随机选取了一个示例进行分析。如图3.2.3(4)所示,这两个模型都做对了这道题目,但Base模型展示出了更为缜密的思维链。具体地,Base模型从"Samuel"是knight还是knave进行分情况讨论,然后再在每个条件下依次分析剩下来的"Charelott, Mia, Daniel, Jackson"这几个人的话能否同时成立。通过交叉验证可以先排除"Samuel是knight"这一个前提情况;再继续分析第二种前提。相反地,Instruct模型倾向于优先把每个人的话进行总结性分析,并同时给出每个人是knight或者是knave时的声明成立情况,一步到位给出统筹性的分析结论。Instruct模型在推理链上倾向于省略小步骤,通过省略部分推导过程来压缩推理链,可解释性下降。这可能是因为Instruct模型经过了大量非long CoT表示的SFT数据、DPO优化等偏好对齐后,倾向于省略推理内容给出直接的、简明扼要的回答。Base模型更多地是激活预训练语料中内在的推论表达方式,通过缜密的一步步推导来逐渐导向最终结论。如果后续要基于SFT/Instruct模型进行继续类R1的训练时,需要保证SFT阶段已经存在了大量的long CoT形式的数据来引导模型给出带详细推理链的答案。

图片
图片

图3.2.3(3) LogicRL二阶段训练过程中合理的超参调整避免模型崩塌

图片
图片

图3.2.3(4) LogicRL二阶段结束时Qwen2.5-7B-Base与Instruct在训练集上的推理示例

  • Stage3优化

第三阶段进行漫长的退火阶段来进一步提升模型思维链的质量。由于开源项目并没有具体给出每个阶段的具体参数设置,我们根据已有经验在这一阶段继续降低学习率,调低温度系数,让模型平稳地收敛。第三阶段使用的训练数据与第二阶段一致,学习率都遵循cosine衰减策略。

相同步长下Base模型与Instruct模型收敛的最终准确率接近,但Base稍好。观察到图3.2.3(5)左边的曲线,两个模型最终收敛的水平相当。第三阶段step=0时,Instruct模型起始的准确率更低,因此这一阶段Instruct模型的相对增益更大。图3.2.3(5)右边输出长度的变化情况也可以佐证Instruct模型经历了更为明显的长度递增阶段,输出长度快速地从700左右拉升到1200,形成了完整的长思维链。起步阶段Instruct模型慢一些,需要「先破后立」来摆脱既有的response倾向性。假以时日,Instruct模型能突然开窍,掌握思维链的输出范式。

Base和Instruct模型的错误率稳步下降,格式遵循错误率维持在低点。以图3.2.3(6)所示,通过第三阶段合理设置了退火的超参,我们能够实现平稳的训练过程。

图片
图片

图3.2.3(5) LogicRL三阶段训练过程中测试集指标(左)与回复长度(右)的变化

图片
图片

图3.2.3(6) LogicRL三阶段训练过程中答案错误占比(左)与格式错误占比(右)的变化

Base与Instruct模型均能见证aha moment,展现出带分步骤、branching推理、自我反思与校验的特性。训练结束时随机挑选了一个训练集中样本,如图3.2.3(7)所示,两个模型都出现了多个分情况讨论前提下,step-by-step推理的思维链,并在每种大前提讨论后进行"re-evaluate"/"re-check",总结性地给出最后的判断结果。

Base与Instruct模型输出的回答token数量基本不变,回复长度增长均来自于思考链的增加。我们选取代表性的ckpt来推理了训练集和测试集,进一步拆解了模型训练过程中的回复内容。如图3.2.3(8)所示,随着训练步数的增加,模型思考链的长度在不断增加,而回答的答案长度基本保持不变,这说明了该阶段的确是在显著提升思考链。

Base与Instruct模型在分步骤推理上的能力快速提升后进入平台期,自我反思能力先上升然后略有下降。如图3.2.3(9)所示,我们使用了正则表达式匹配关键词的方式来仔细地分析了模型思维链(即<think>...</think>之间的内容)。对于分步骤推理能力,由于模型的输出长度在不断边长,其long CoT内容中出现了越来越多的分步骤、分点解题的关键词。但对于自我反思能力而言,随着模型过拟合该数据集,自我反思的能力在抵达最高值后略有下降。这说明了模型倾向于在比较有自信的题目(拟合完备)上不反思。后续进行相关类R1实验时,需要充分保证训练集中有不同难度的数据,并利用困难数据来维持模型自我反思的模式不退化。

图片
图片

图3.2.3(7) LogicRL三阶段结束时Qwen2.5-7B-Base与Qwen2.5-7B-Instruct在训练集上的推理示例

图片
图片

图3.2.3(8) LogicRL三阶段过程中训练集(左)与测试集(右)上思考与回答长度的变化

图片
图片

图3.2.3(9) LogicRL三阶段过程中模型CoT分步推理与反思pattern变化

3.2.4 TinyZero

  • PPO优化

我们同时选用了千问2.5-3B-Base以及千问2.5-7B-Base作为基础,基本复现了该开源项目中的指标。核心的训练过程示意图如下。

图片
图片

图3.2.4(1) TinyZero训练过程中测试集指标(左)与回复长度(右)的变化

相同效果下,3B量级模型需要更长时间才能收敛。3B模型在起始阶段就比7B模型低了7%左右;在迭代了接近500步后,3B模型勉强与7B模型迭代200步的效果接近。

3B量级模型与7B量级初始回复长度基本接近,但3B模型最终达到的回复长度大于7B模型。训练足够长时间(step > 200)后,3B模型生成解题过程时需要依靠更多输出token。这也反映了尺寸更小的模型由于推理能力有限,往往需要更长的思维链过程表示中间过程。

图片
图片

图3.2.4(2) TinyZero训练过程中训练集(左)与测试集(右)上思考与回答长度的变化

为了分析在几个关键转折点上模型的具体输出内容,我们还选取了起始阶段(step=0,即Base模型)、长度骤降阶段(step=24)、长度回升阶段(step=72)、平台期阶段(step=120)、缓慢下降阶段(step=300)这几个步骤的模型checkpoints,并分别推理得到了对应训练集、测试集的模型输出。使用<think>、</think>、<answer>、</answer>关键token抽取了对应输出中的所有内容进行统计分析。

3B模型与7B模型在训练过程中的表现类似,但3B模型消耗了更多的思考token。这一点与上面整体回复长度变化的结果一致,小尺寸的模型往往需要更多CoT tokens。

模型的输出长度变化主要是由CoT的变化带来的。模型输出的答案tokens几乎不变(在8~16 tokens之间)。思维链的长短显著变化直接影响了最终输出的长度变化。

在相同难度类型的任务下持续训练时,随着模型性能的不断上升,模型解题CoT中犯错的步骤在减少,整体CoT的长度在缓慢下降。以7B模型上的训练为例,当抵达平台期(step=120)后,模型的输出长度不断在变短,一直缓慢下降(step=300)。我们认为这是因为在相同难度的任务(countdown)下,7B模型逐渐过拟合到该任务上(测试集性能不断上升)。因此,模型逐渐掌握了正确的思维链而提升了推理能力,相应地减少了错误的推理链token。如图3.2.4(3))为示意,当迭代步数从step=24开始递增时,推理链路开始边长,模型在Step=72展现出多种表达式计算的探索路径。同时,在每个表达式计算完毕后,模型会根据当前计算指标与目标值之间的差异反思是否满足要求,并在下一次探索中逐步调整。随着进一步训练(step=72至step300),模型试错的次数在减少,只需若干次尝试即获得了正确答案。

图片
图片

图3.2.4(3) TinyZero训练过程中模型推理链变化

Base模型本身即展现出了相当的推理能力,拥有思维链的基础结构。在Step=0时直接推理Qwen2.5-7B-Base模型,模型输出的思维链中已经包含了分步骤思考的几个标志性关键词(First, Next, Finally)。我们认为千问的预训练语料中应该也具备大量的含有branching、self-reflection等特点的数据。这意味着模型在预训练阶段已经掌握了long CoT的基本结构是激发反思能力的一个必要条件。一个可行的理解是,RL本身更多地是激发正确的思维链过程,惩罚肤浅的、错误的思维方式。

为了统计模型在RL训练过程中的推理链是否得到增强,需分析:1)推理链是否出现了结构化的分步解题,即Reasoning能力;2)推理链是否表现出了反思,即Self-Reflection能力。这里依旧采用正则表达式去统计思维链中相应关键词的频数。

对于前者(分步解题),我们考虑以下关键词:

图片
图片

对于后者(反思与探索),我们考虑以下关键词:

图片
图片
图片
图片

图3.2.4(4) TinyZero训练过程中模型CoT分步推理与反思pattern变化

如上述图3.2.4(4)所示,无论是3B还是7B的千问Base模型在step=0时就已经展现出了一定的分步思考以及反思能力。因此,类R1的RL训练方式并不是「凭空创造」了LLM的CoT能力,而是在一定程度上引导LLM偏好正确的、合适的推理链路。在这样的推理链路中,branching/self-reflection等特性是通过reward function来鼓励习得的。

相比于分步解题能力,模型的反思能力在训练过程中发生更显著的变化。在Step=0时,基座模型就已经展现出了比较强的分步骤解题的能力,能够对输入prompt中"think step by step"给出较好的响应。但此时模型并不具备较特别强的反思能力,做错的时候模型倾向于重复前序的解法而不去探索新的解法(可能受限于指令理解能力)。虽然使用了分步思考,但出现错误后的反思是无效的,陷入了重复输出的坍塌状态(如图3.2.5(5)所示)。而且,此时模型似乎忘记了最终的目标是利用这三个数字计算得到目标值(55),探索的解题步骤局限在凑满某个子目标值(19)上,无法跳出次优的路径

图片
图片

图3.2.4(5) TinyZero训练过程中Step=0时基座模型展现的无效反思

随着训练过程的继续,度过输出长度最短(step=24)时刻后,模型逐渐开始具备真正的反思能力。以step=72时刻为例(图3.2.4(6)),模型输出的推理链路中出现了「Wait, I made a mistake」这样的有效反思状态,针对之前的错误回答进行了有效批判,并继续探索可能的解法,该「高光时刻」预示着模型正经历aha moment。

图片
图片

图3.2.4(6) TinyZero训练过程递进时反思能力的进化

  • GRPO优化

TinyZero项目默认使用了PPO优化算法,我们同时也尝试了替换成GRPO进行训练。时间有限,我们对于GRPO的超参没有做过多的调优。在8GPUs的算力下设置了rollout数量为24,并减少train batch size至8来避免OOM问题。我们使用了默认的采样温度系数,训练了约5ep。核心的训练指标如下图3.2.4(7)所示。

相比于PPO训练来说,GRPO的训练更加不稳定。这一点在其他的开源项目复现时也遇到了。无论是千问3B模型还是7B Base模型,GRPO版本的优化呈现出极大的不稳定性,输出长度上的变化幅度比较大。后续优化方向:1)超参的设置得进一步调优;2)GRPO强依赖采样rollout的质量,这意味着我们必须尽可能提高rollout的数量来保证基于组(group)的优势(advantage)估计准确,但是这又会造成单机训练时OOM问题。后续依赖稳健的多机RL框架来对超参进行精调,减少训练不稳定的问题。

图片
图片

图3.2.4(7) TinyZero (GRPO)训练过程中测试集指标(左)与回复长度(右)的变化

4

总结

我们目前基于DeepSeek R1/R1-zero的大量开源工作从原理上大致还原了DeepSeek的训练过程,但是需要指出的是,这些尝试大多属于toy dataset验证性实验,离真正的R1复现仍有较大的差距。我们认为未来的工作需亟待解决:

  • 支持大规模RL训练(PPO、GRPO等)的开源基础框架
  • 用于稳定训练的GRPO训练超参的自动化调优
  • RL训练数据的配比(难度、领域、任务等)
  • 基于Instruct模型训练R1时,高质量long CoT的数据获取
  • 合适的惩罚函数设计以保证CoT思考链质量不退化

应用在业务落地时,我们需要考虑:

1)模型在给定的prompt下,结合预训练的基本知识能否正确给出正确的推理结果。任何业务中的「潜规则」都需要显式地定义在prompt中,并尽可能避免与预训练知识的冲突。

2)混合通用数据、业务数据与数学、代码类领域任务下的long CoT SFT数据来给模型先打下一个坚实的思维链范式基础,这有利于提升RL训练时的稳定性。

希望更多开源社区工作的发布能够促使长思考模型推理能力进一步提升。

参考资料

1.simpleRL-reason: GitHub - hkust-nlp/simpleRL-reason: This is a replicate of DeepSeek-R1-Zero and DeepSeek-R1 training on small models with limited data

跳转链接

https://github.com/hkust-nlp/simpleRL-reason/tree/main

2.open-r1: GitHub - huggingface/open-r1: Fully open reproduction of DeepSeek-R1

跳转链接

https://github.com/huggingface/open-r1/tree/main

3.logit-RL: GitHub - Unakar/Logic-RL: Reproduce R1 Zero on Logic Puzzle

跳转链接

https://github.com/Unakar/Logic-RL?tab=readme-ov-file

4.tinyzero: GitHub - Jiayi-Pan/TinyZero: Clean, minimal, accessible reproduction of DeepSeek R1-Zero

跳转链接

https://github.com/Jiayi-Pan/TinyZero

5.demystify long CoT: GitHub - eddycmu/demystify-long-cot

跳转链接

https://github.com/eddycmu/demystify-long-cot

6.deepscaleR: Notion – The all-in-one workspace for your notes, tasks, wikis, and databases.

跳转链接

https://pretty-radio-b75.notion.site/DeepScaleR-Surpassing-O1-Preview-with-a-1-5B-Model-by-Scaling-RL-19681902c1468005bed8ca303013a4e2

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【论文速读 | 通俗理解】DeepSeek-R1: Incentivizing Reasoning Capability in LLMs via Reinforcement Learning
【本文主要通俗理解一下 DeepSeek-R1 的论文内容,具体细节还是要看论文里面描述的为准。】
Lokinli
2025/07/19
1220
图解DeepSeek R1训练流程
这篇论文介绍了一种新的第一代推理模型——DeepSeek-R1系列,旨在通过强化学习(Reinforcement Learning, RL)提升大型语言模型(Large Language Models, LLMs)的推理能力。具体来说,论文试图解决以下几个问题:
致Great
2025/02/08
3710
图解DeepSeek R1训练流程
万字长文详解DeepSeek核心技术
在今年的春节期间,DeepSeek 火出了圈。凭借 DeepSeek-V3 与 DeepSeek-R1 的创新技术和卓越表现,DeepSeek 迅速成为了行业内外的焦点。不管是技术专家还是普通用户,都对 DeepSeek 赞不绝口。我们特别准备了这篇技术科普文章,期望无论你是不是技术同学,都能够读懂 DeepSeek。
腾讯云开发者
2025/02/18
2.4K0
万字长文详解DeepSeek核心技术
全球掀DeepSeek复现狂潮!硅谷巨头神话崩塌,30刀见证啊哈时刻
种种这些观点和讨论,让人不禁怀疑:数百亿美元支出,对这个行业真的必要吗?甚至有人说,中国量化基金的一群天才,将导致纳斯达克崩盘。
新智元
2025/02/04
1560
全球掀DeepSeek复现狂潮!硅谷巨头神话崩塌,30刀见证啊哈时刻
DeepSeek-R1复现方案梳理
由huggingface组建,目前刚上线2周,发布了最新进展open-r1/update-1,在MATH-500任务上接近deepseek的指标,可以在open-r1/open-r1-eval-leaderboard查看指标的排行榜。
致Great
2025/02/13
4820
DeepSeek-R1复现方案梳理
​解密prompt系列48. DeepSeek R1 & Kimi 1.5长思维链 - RL Scaling
春节前DeepSeek R1和Kimi1.5炸翻天了,之前大家推测的O1的实现路径,多数都集中在MCTS推理优化,以及STaR等样本自优化方案等等,结果DeepSeek和Kiim直接出手揭示了reasoning的新路线不一定在SFT和Inference Scaling,也可以在RL。也算是Post Train阶段新的Scaling方向,几个核心Take Away包括
风雨中的小七
2025/02/07
1.2K0
​解密prompt系列48. DeepSeek R1 & Kimi 1.5长思维链 - RL Scaling
DeepSeek关键RL算法GRPO,有人从头跑通了,贡献完整代码
GRPO(Group Relative Policy Optimization)是 DeepSeek-R1 成功的基础技术之一,我们之前也多次报道过该技术,比如《DeepSeek 用的 GRPO 占用大量内存?有人给出了些破解方法》。
机器之心
2025/03/03
5280
DeepSeek关键RL算法GRPO,有人从头跑通了,贡献完整代码
业内首次! 全面复现DeepSeek-R1-Zero数学代码能力,训练步数仅需其1/10
OpenAI 的 o1 系列和 DeepSeek-R1 的成功充分证明,大规模强化学习已成为一种极为有效的方法,能够激发大型语言模型(LLM) 的复杂推理行为并显著提升其能力。
机器之心
2025/04/24
1850
业内首次! 全面复现DeepSeek-R1-Zero数学代码能力,训练步数仅需其1/10
DeepSeek R1架构和训练过程图解
因此,在介绍技术细节之前,快速概览一下:DeepSeek-R1 不是从头开始训练的,就像从无到有一样。相反,他们从一个非常聪明的 LLM 开始,他们已经有了 DeepSeek-V3,但他们想让它成为推理超级明星。
IT小马哥
2025/02/12
2.6K0
DeepSeek R1架构和训练过程图解
单卡复现 DeepSeek R1 Zero教程来了!
项目代码可见:unlock-deepseek/Datawhale-R1(https://github.com/datawhalechina/unlock-deepseek),欢迎关注和 star!
Datawhale
2025/02/19
6160
单卡复现 DeepSeek R1 Zero教程来了!
DeepSeek R1 Zero中文复现教程来了!
项目代码可见:unlock-deepseek/Datawhale-R1(https://github.com/datawhalechina/unlock-deepseek),欢迎关注和 star!
Datawhale
2025/02/07
3K1
DeepSeek R1 Zero中文复现教程来了!
【HuggingFace项目】:Open-R1 - DeepSeek-R1 大模型开源复现计划
Open-R1 是由 HuggingFace 发布的一个完全开放的项目,旨在通过三个主要步骤复现 DeepSeek-R1 的完整训练流程。这个项目的目标是让更多人能够理解和使用 DeepSeek-R1 的技术方案,从而推动大模型技术的发展和应用。
致Great
2025/01/27
6010
【HuggingFace项目】:Open-R1 - DeepSeek-R1 大模型开源复现计划
万字长文解构DeepSeek V1/V2/V3/R1进化史:从算法革命到推理涌现!
在今年的春节期间,DeepSeek 火出了圈。凭借 DeepSeek-V3 与 DeepSeek-R1 的创新技术和卓越表现,DeepSeek 迅速成为了行业内外的焦点。不管是技术专家还是普通用户,都对 DeepSeek 赞不绝口。我们特别准备了这篇技术科普文章,期望无论你是不是技术同学,都能够读懂 DeepSeek。
腾讯云开发者
2025/02/27
1.1K0
万字长文解构DeepSeek V1/V2/V3/R1进化史:从算法革命到推理涌现!
MM-Eureka:极少数据实现多模态推理的R1-Zero时刻
例如,R1-V 仅在简单计数任务上表现出进步,未能实现回答长度的增长和顿悟时刻;R1-Multimodal-Journey 则在训练过程中回答长度反而降低;LMM-R1 虽然有所进步,但尚未在大规模图文数据训练中得到验证。而 Kimi 1.5 尽管表现突出,但并未开源其模型或数据。
机器之心
2025/03/14
970
MM-Eureka:极少数据实现多模态推理的R1-Zero时刻
开源22万条DeepSeek R1的高质量数据!你也能复现DeepSeek了
当中国大模型撕开硅谷的防线之后,在预设中总是落后半拍的中国 AI 军团,这次竟完成了一次反向技术输出,引发了全球范围内复现 DeepSeek 的热潮。
机器之心
2025/02/15
3490
开源22万条DeepSeek R1的高质量数据!你也能复现DeepSeek了
DeepSeek R1 最新全面综述,近两个月的深度思考!
https://github.com/datawhalechina/hugging-llm/tree/main/resources
Datawhale
2025/02/20
1K0
DeepSeek R1 最新全面综述,近两个月的深度思考!
揭秘DeepSeek R1-Zero训练方式,GRPO还有极简改进方案
DeepSeek-V3-Base 在强化学习(RL)调优之前就已经展现出「顿悟时刻」?RL 调整中不断增加的输出长度可能是由于 GRPO 中的 BIAS 造成的?
机器之心
2025/03/24
1400
揭秘DeepSeek R1-Zero训练方式,GRPO还有极简改进方案
上财开源首个金融领域R1类推理大模型,7B模型媲美DeepSeek-R1 671B满血版性能
近日,上海财经大学统计与数据科学学院张立文教授与其领衔的金融大语言模型课题组(SUFE-AIFLM-Lab)联合数据科学和统计研究院、财跃星辰、滴水湖高级金融学院正式发布首款 DeepSeek-R1 类推理型人工智能金融大模型:Fin-R1,以仅 7B 的轻量化参数规模展现出卓越性能,全面超越参评的同规模模型并以 75 的平均得分位居第二,与参数量为 671B 的行业标杆 DeepSeek-R1 平均分差距仅为 3.0%。
机器之心
2025/03/27
1880
上财开源首个金融领域R1类推理大模型,7B模型媲美DeepSeek-R1 671B满血版性能
华人研究团队揭秘:DeepSeek-R1-Zero或许并不存在「顿悟时刻」
一项非常鼓舞人心的发现是:DeepSeek-R1-Zero 通过纯强化学习(RL)实现了「顿悟」。在那个瞬间,模型学会了自我反思等涌现技能,帮助它进行上下文搜索,从而解决复杂的推理问题。
机器之心
2025/02/07
2180
华人研究团队揭秘:DeepSeek-R1-Zero或许并不存在「顿悟时刻」
DeepSeek-R1:强化学习驱动的LLM推理能力提升
本文主要介绍一种新的训练策略,通过纯强化学习显著提升了LLM的推理能力,主要包括下面几点:
三掌柜
2025/02/06
4140
DeepSeek-R1:强化学习驱动的LLM推理能力提升
推荐阅读
相关推荐
【论文速读 | 通俗理解】DeepSeek-R1: Incentivizing Reasoning Capability in LLMs via Reinforcement Learning
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档