前言
没想到,在25年1.20日,DeepSeek-V3刚发布不到一个月「详见《一文通透让Meta恐慌的DeepSeek-V3:在MoE、GRPO、MLA基础上提出Multi-Token预测(含FP8训练详解)》」,DeepSeek-R1又来了,而且几乎同一时期,Kimi K1.5也来了。
关于o1
本博客内之前做过探讨和解读「详见《一文总览OpenAI o1相关的技术:从CoT、Quiet-STaR、Self-Correct、Self-play RL、MCTS等到类o1模型rStar-Math》」,虽然还没完全写完「实在是待写的东西太多了,加之现在公司各种项目,且具身智能领域又发展迅猛」
但毕竟o1没有对外开放、开源,所以有的解读是做了一定程度的推测,虽说推测是合理且有严格事实依据的,但哪怕推测的准确度能达到99.99%,那也还是有0.01%的可能性 不对
而DeepSeek-R1和Kimi K1.5的意义在于,即便它两和OpenAI o1的实现不一致(当然,也可能很大程度上一致) 也不是很重要的事情了
因为从结果的角度出发,它两的效果比肩o1——甚至有的指标完成超越,单这一点 就足够了
特别是R1完全开源,普通用户聊天对话免费,开发者调用API的费用也很低「输入上是1-4元/百万token,输出上是16元/百万token,是OpenAI o1 API费用的不到5%」 更何况还允许开发者使用R1去训练其他模型
因此,本文重点解读一下它两的技术报告「至于更多,本课程《DeepSeek原理与项目实战营 [从DeepSeek V3、R1到其应用AI Researcher]》里见」,更何况
目前在我司「七月在线」内部,大模型应用开发,和机器人开发 是两个不同的独立团队 对于大模型应用开发,我们在内部产品上,一直在不断开发新的系统,比如过年前即将上线论文方面的第五个系统:idea提炼——该提炼系统用的其中一个模型便是deepseek v3对外服务上,一直在给各个公司、集团做各种项目,以让AI大模型赋能百业
即便是具身智能,大模型也能很好的赋能之,且大模型的发展路线对具身模型的发展也有着超高的借鉴与启发意义「详见此文《GRAPE——RLAIF微调VLA模型:通过偏好对齐提升机器人策略的泛化能力(含24年具身模型汇总)》开头」 故保持对大模型前沿进展的高效快速跟进,对我司做具身也是极其有用的
而本文发布之后的一周内,见证了deepseek在国内国外、圈内圈外的火爆,比如
不但让Meta内部感到恐慌「详见此文《一文通透让Meta恐慌的DeepSeek-V3:在MoE、GRPO、MLA基础上提出Multi-Token预测(含FP8训练详解)》」
而且于25年1.27日,deepseek登顶AppStore美区榜一,包括本文发布一周之后即阅读量破万 更让股价世界第一的英伟达股价下跌17%,且当天美股科技板块市值蒸发1万亿美元
1.31日,在微软Azure之后,英伟达NIM、亚马逊AWS也加急上线DeepSeek R1模型托管服务 且英伟达表示,DeepSeek-R1是具有最先进推理能力的开源模型。DeepSeek-R1这样的推理模型不直接给出回答,而是在查询上执行推理,通过思维链、共识和搜索方法,生成最佳答案
DeepSeek-R1是测试时Scaling Law的一个完美例子,证明了为什么加速计算对于代理AI的推理需求至关重要
1.1 提出背景与相关工作
1.1.1 R1-Zero的提出背景:无需人类数据,从零实现自我迭代
自从OpenAI o1发布之后,国内外便有更多大厂开始探究如何通过CoT等各种方式增加模型的推理能力,有基于过程奖励模型的
有基于纯RL的 「关于什么是RL,详见此文《强化学习极简入门:通俗理解MDP、DP MC TC和Q学习、策略梯度、PPO》,可能你翻阅过不少RL资料了,但此文一定会让你眼前一亮,与众不同」
也有基于搜索算法比如蒙特卡洛树搜索和束搜索的详见《一文总览OpenAI o1相关的技术:从CoT、Quiet-STaR、Self-Correct、Self-play RL、MCTS等到类o1模型rStar-Math》
然而,基于这些方法实现的效果,都未能与o1的推理性能想媲美
幻方旗下的深度求索公司探索了通过纯RL来提升大模型推理能力,他们期望在没有任何监督数据的情况下,强化大模型的推理能力,特别是关注纯RL过程的自我进化
具体而言,他们通过使用DeepSeek-V3-Base作为基础模型,并采用GRPO作为RL框架来提高模型在推理方面的性能 算是首次公开研究验证LLM的推理能力可以纯粹通过RL激励,而无需SFTit is the first open research to validate that reasoning capabilities of LLMs can be incentivized purely through RL, without the need for SFT
可能有的同学 还没体会到这个「舍弃SFT直接RL训练范式」的含金量,故咱们再对比下之前22年11月底发布的ChatGPT初版的训练模式,如下图所示
是不是先SFT、然后训练一个AI奖励模型、最后PPO迭代策略「如果不熟悉的,详看此文《ChatGPT技术原理解析:从RL之PPO算法、RLHF到GPT4、instructGPT》,你一定会有收获的」
而R1-Zero直接摒弃掉最开始的SFT,直接RL训练——规则奖励建模 然后没有critic的GRPO迭代 是不是类似当年的AlphaGo Zero——摒弃人类棋谱 直接让AI左右手互博 自我迭代进化
最终,在经过数千个RL 步骤后,DeepSeek-R1-Zero 在推理基准测试中表现出超强性能。例如,AIME 2024 的pass@1 得分从15.6 % 提高到71.0 %,通过多数投票,得分进一步提高到86.7 %,与OpenAI-o1-0912 的性能相匹配
1.1.2 R1的提出背景:解决Zero可读性差等问题
其训练流程,简言之 是微调 → RL → 微调 → RL,具体而言是
首先收集了数千个冷启动数据来微调DeepSeek-V3-Base 模型
随后,进行类似 DeepSeek-R1-Zero 的面向推理的强化学习
当强化学习过程接近收敛时,通过对 RL 检查点进行拒绝采样,结合 DeepSeek-V3 在写作、事实问答和自我认知等领域的监督数据,创建新的 SFT 数据,然后重新训练DeepSeek-V3-Base 模型
在用新数据微调后,检查点会经历额外的 RL 过程——且会考虑到所有场景的提示 经过这些步骤后,最终一个称为 DeepSeek-R1 的checkpoint,其性能可以与 OpenAI-o1-1217 相媲美
可以很明显的看到,R1就是在V3基础上训练的,故R1的大部分训练成本就是V3的训练成本(注意我的用词,只是:大部分),而V3的训练成本是多少呢?
如此文《一文通透让Meta恐慌的DeepSeek-V3:在MoE、GRPO、MLA基础上提出Multi-Token预测(含FP8训练详解)》1.1.1节所述:V3训练成本:所用的GPU训练资源仅为Llama 3.1 405B的差不多1/14 所示
具体而言,如下表1-来自DeepSeek-V3技术报告所示
Training costs of DeepSeek-V3, assuming the rental price of H800 is $2 per GPU hour,完整训练仅耗费2.788M GPU小时
相当于278.8万 H800 GPU Hours,总训练成本仅为$5.576M——相当于仅 558 万美元
1.2 DeepSeek-R1-Zero:直接规则驱动的大规模RL训练,去掉SFT
DeepSeek-R1-Zero 通过纯RL训练,无冷启动、无SFT,这是很有魄力的举动,而其主要有三点独特的设计:RL算法GRPO、格式奖励、训练模板
1.2.1 RL算法GRPO:不需要critic
为了节省强化学习的训练成本,作者采用组相对策略优化GRPO,该方法放弃了通常与策略模型大小相同的critic模型「关于actor critic训练大模型策略那一套,详见上面提到过的此文《ChatGPT技术原理解析:从RL之PPO算法、RLHF到GPT4、instructGPT》,尽管很多文章都声称自己写的最棒,但都不如此文」,而是从组得分中估计baseline
如果你对上面的GRPO没有看明白,很正常,没关系,我在此文《一文通透DeepSeek V2:详解MoE、Math版提出的GRPO、V2版提出的MLA(改造Transformer注意力)》的「1.3.2节详解GRPO:与PPO的对比及其如何做RL训练」中,对GRPO做了详细的解释与充分的解读,可以参看——以下的内容便引用自该文
“ DeepSeek提出了群体相对策略优化GRPO——Group Relative Policy Optimization
它避免了像 PPO 那样需要额外的价值函数近似——说白了 就是不要PPO当中的value model或value function去做价值评估we propose Group Relative Policy Optimization (GRPO), which obviates the need for additional value function approximation as in PPO 就是丢掉critic,也就没有了value(不需要基于value做估计),也就不需要GAE
而是使用对同一问题的多个采样输出的平均奖励作为基线(说白了,直接暴力采样 N 次求均值)and instead uses the average reward of multiple sampled outputs, produced in response to the same question, as the baseline 毕竟优势函数不就重点考察那些超出预期、超出基线baseline的表现么,所以问题的关键就是基线baseline的定义,因为一旦定义好了baseline,目标就明确了——越发鼓励可以超过baseline的行为(而每个行为是由背后的策略所决定的,故优化行为的同时就是策略的不断迭代与优化),而这就是优势函数所追求的
... ”
1.2.2 规则奖励建模(准确率奖励 + 格式奖励):不用训练专门的AI奖励模型
奖励是训练信号的来源,它决定了强化学习的优化方向
为了训练DeepSeek-R1-Zero,作者采用了一个基于规则的奖励系统(rule-based reward),主要由两种类型的奖励组成:
准确率奖励:准确率奖励模型评估响应是否正确
例如,对于具有确定性结果的数学问题,模型需要以指定格式(例如,框内)提供最终答案,从而实现基于规则的正确性验证——毕竟数学问题的答案具有明确的结果确定性与唯一性,对就是对,错就是错 同样,对于LeetCode问题,可以使用编译器根据预定义的测试用例生成反馈为了方便大家更好的理解,引用此文的一个例子来进行详细说明
比如写一段 Python 代码,接收数字列表并返回排序后的结果,但是需要在列表开头添加数字 42
像这样的问题适合通过多种方式进行自动验证。假设将这个问题提供给正在训练中的模型,它会生成一个答案:
最终,通过自动检查(无需人工干预),可以发现:
第一个答案根本不是代码
第二个是代码,但不是 Python 代码
第三个是一个看似可行的解决方案,但没有通过单元测试
第四个才是正确的解决方案
如此,这些自动化生成的训练信号都能直接用于模型优化。这一过程自然需要在小批量样本中处理大量案例,并通过连续训练迭代,逐步优化
格式奖励
除了精度奖励模型外,作者还采用了格式奖励模型,该模型要求在' '和' '标签之间放置CoT思考过程
而他们在开发DeepSeek-R1-Zero时并没有应用结果或过程神经奖励模型,因为他们发现神经奖励模型在大规模强化学习过程中可能会遭受奖励欺骗「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 in the large-scalereinforcement learning process」,而重新训练奖励模型需要额外的训练资源,并且会使整个训练流程变得复杂
1.2.3 训练模板:通过prompt让Zero启动深度思考的推理模式
为了训练 DeepSeek-R1-Zero,他们首先设计了一个简单的模板,以指导基础模型遵循作者指定的指令
如下表表 1 -DeepSeek-R1-Zero的模板所示
prompt 在训练期间将被替换为特定的推理问题
该模板要求 DeepSeek-R1-Zero 先生成推理过程,然后再给出最终答案——相当于prompt, 推理轨迹COT ,answer/response
作者故意设置这种结构格式,避免对任何内容有特定的偏见,例如要求反思性推理或促进特定的问题解决策略,以确保在RL过程中,他们能够准确观察模型的自然进展
1.2.4 Zero的性能、自我进化过程和顿悟时刻
从上图可以看到,AIME 2024 上的平均pass@1 得分显著提高,从最初的15.6 % 跃升至令人印象深刻的71.0 %,达到与OpenAI-o1-0912 相当的性能水平。这一显著改进突显了Zero的RL 算法在优化模型性能方面的有效性
尽管 DeepSeek-R1-Zero 展现出强大的推理能力,并能自主开发出意想不到且强大的推理行为,但它也面临一些问题。例如,DeepSeek-R1-Zero在可读性差,且在语言混合等挑战中不尽如人意
为了使推理过程更具可读性,深度求索公司又探索了DeepSeek-R1
1.3 DeepSeek-R1:先冷启动数据SFT 再RL,之后再SFT 再RL
作者在受到DeepSeek-R1-Zero令人鼓舞的结果的启发后,自然的出现了两个问题:
通过结合少量高质量数据作为冷启动,是否可以进一步提高推理性能或加速收敛?
如何训练一个用户友好的模型,该模型不仅能产生清晰连贯的思维链CoT,还展示出强大的通用能力?
为了解决这些问题,作者设计了一个训练DeepSeek-R1的流程,该流程包括以下4个阶段(有的个别文章会描述为两个大阶段,但我认为,这两个大阶段里的细节不少,故分为4个小阶段 可以更好的指代想强调的细节,故我和大多数文章一样,分为4个阶段):
SFT (数千条cold start data)
RL/GRPO
SFT (结合rejection sampling,80w的推理和非推理数据)
RL/GRPO
1.3.1 阶段一 冷启动(主要关注推理):通过R1-Zero生成数千条长CoT数据
与DeepSeek-R1-Zero不同,为了防止RL训练在初期出现不稳定的冷启动阶段,对于DeepSeek-R1,作者构建并收集了一小部分长CoT数据,以微调模型作为初始RL执行者
为了收集这些数据,他们探索了几种方法:
使用长CoT作为示例进行少样本提示
直接提示模型生成带有反思和验证的详细答案
以可读格式收集DeepSeek-R1-Zero的输出——注意,此举相当于冷启动的数据来源于R1-Zero的生成
通过人工注释者的后处理来优化结果
总之,他们收集了R1-Zero生成的数千个冷启动数据来微调DeepSeek-V3-Base作为RL的起点。与DeepSeek-R1-Zero相比,冷启动数据的优势包括
可读性:DeepSeek-R1-Zero 的一个主要限制是其内容通常不适合阅读。其response可能会混合多种语言或缺乏markdown格式来为用户显示答案
相比之下,在为 DeepSeek-R1创建冷启动数据时,设计了一种可读的模式,包括在每个response的末尾添加摘要,并筛选掉可读性比较差的response 比如,他们将输出格式定义为
|special_token|
|special_token|
其中reasoning_process是查询的 CoT,summary用于总结推理结果
潜力:通过精心设计带有人类先验知识的冷启动数据模式,可以观察到相较于DeepSeek-R1-Zero有更好的表现
故,作者认为迭代训练是推理模型的一种更好的方法
1.3.2 阶段二 面向推理的GRPO RL:类似Zero的规则奖励,但增加语言一致性奖励
在对DeepSeek-V3-Base进行冷启动数据微调后,作者应用与DeepSeek-R1-Zero相同的大规模RL训练过程(背后的RL算法自然也是GRPO了)
具体而言
此阶段重点在于增强模型的推理能力,特别是在编码、数学、科学和逻辑推理等推理密集型任务中,这些任务涉及定义明确的问题和清晰的解决方案 但面对的问题是,在训练过程中,作者观察到当RL提示涉及多种语言时,CoT经常表现出语言混合现象
然后,作者在阶段一通过冷启动数据的微调模型上应用强化学习RL训练,直到其在推理任务上收敛
阶段一 冷启动SFT
阶段二 规则奖励下的RL
R1-Zero模型生成的冷启动数据:微调V3
面向推理的RL:结合三个规则奖励——准确率奖励、格式奖励、语言一致性奖励
阶段三 增强SFT
阶段四
1.3.3 阶段三 V3上的的两轮SFT(结合rejection sampling):涉及80w通用层面的推理和非推理数据
当阶段二 面向推理的强化学习RL收敛时,作者利用所得的checkpoint来收集用于下一轮(对应着阶段三)的SFT(监督微调)数据——你是不想问 合着阶段一 阶段二就是为了方便阶段三来收集推理层面的SFT数据?直白点说 不为模型 为推理数据
与最初冷启动数据主要关注推理不同,此阶段结合了来自其他领域的数据,以增强模型在写作、角色扮演和其他通用任务方面的能力
具体来说,作者生成数据并按如下所述微调模型
推理SFT数据:来自阶段二模型 作者通过执行拒绝采样从上述阶段二 RL训练的checkpoint中整理推理提示并生成推理轨迹We curate reasoning prompts and generate reasoning trajectories by perform-ing rejection sampling from the checkpoint from the above RL training在之前的DeepSeek-R1-Zero阶段,作者只包括可以使用基于规则的奖励(准确率奖励 + 格式奖励)进行评估的数据然而,在这一阶段,作者通过加入额外的数据来扩展数据集,其中一些使用生成奖励模型,通过将“真实值和模型预测”输入DeepSeek-V3进行判断 即we expand the dataset by incorporating additional data, some of which use a generative reward model by feeding the ground-truth and model predictions into DeepSeek-V3 for judgment 此外,由于模型输出有时混乱且难以阅读,作者已过滤掉混合语言、长段落和代码块的思维链。对于每个prompt,采样多个response并仅保留正确的响应 总共,作者收集了约60万条与推理相关的训练样本
非推理SFT数据:来自DeepSeek-V3 对于非推理数据,例如写作、事实问答、自我认知,和翻译,作者采用DeepSeek-V3管道并重用DeepSeek-V3的SFT数据集的部分内容 对于某些非推理任务,作者调用DeepSeek-V3在回答问题之前通过prompt生成潜在的思维链 然而,对于更简单的查询,例如“你好”,不会提供思维链作为响应——因为此时不存在推理的必要性 最终,作者总共收集了大约20万个与推理无关的训练样本
然后使用上述大约80万样本的精心整理数据集对DeepSeek-V3-Base进行两轮微调
两轮微调相当于两个epoch的sft(当然,具体 如何精心整理、如何具体编排的,在技术报告中暂未透露)
此外,不知读者注意到了没有,本阶段三微调的仍然是V3-Base,而非上面阶段一 SFT之后的模型或阶段二 RL训练的模型,即We fine-tune DeepSeek-V3-Base for two epochs using the above curated dataset of about 800k samples」
阶段一 冷启动SFT
阶段二 规则奖励下的RL
R1-Zero模型生成的冷启动数据:微调V3
面向推理的RL:结合三个规则奖励——准确率奖励、格式奖励、语言一致性奖励
阶段三 增强SFT
阶段四
来自阶段二模型的60w推理数据
和V3模型的20w非推理数据:微调V3
1.3.4 阶段四 所有场景的RL:提高有用性和无害性,且混合规则奖励和偏好奖励
为了进一步使模型符合人类偏好,作者实施了一个辅助的强化学习阶段,旨在提升模型的有用性和无害性,同时优化其推理能力
具体来说,作者使用奖励信号和多样的提示分布组合来训练模型
对于推理数据
作者遵循DeepSeek-R1-Zero中概述的方法,该方法利用基于规则的奖励(rule-based reward)来指导数学、代码和逻辑推理领域的学习过
For reasoning data, we adhere to themethodology outlined in DeepSeek-R1-Zero, which utilizes rule-based rewards to guide thelearning process in math, code, and logical reasoning domains
对于一般数据
作者使用奖励模型来捕捉复杂和微妙场景中的人类偏好——preference reward
For general data, we resort to reward models to capture human preferences in complex and nuanced scenarios.
比如基于 DeepSeek-V3 管道进行构建,并采用类似的偏好对分布和训练提示
We build upon the DeepSeek-V3 pipeline and adopt a similar distribution of preference pairs and training prompts
类似的,有个DPO的工作,详见此文《RLHF的替代之DPO原理解析:从RLHF、Claude的RAILF到DPO、Zephyr》
对于有用性
作者专注于最终总结,确保评估强调响应对用户的实用性和相关性,同时尽量减少对基础推理过程的干扰
对于无害性
作者评估模型的整个response,包括推理过程和总结,以识别和减轻生成过程中可能出现的任何潜在风险、偏见或有害内容
最终,奖励信号和多样数据分布的整合使作者能够训练出一个在推理上表现出色,同时优先考虑有用性和无害性的模型
最后,我再把上面4个阶段 用下述表格汇总一下
阶段一 冷启动SFT
阶段二 规则奖励下的RL
R1-Zero模型生成的冷启动数据:微调V3
面向推理的RL:结合三个规则奖励——准确率奖励、格式奖励、语言一致性奖励
阶段三 增强SFT
阶段四 规则+偏好奖励下的RL
来自阶段二模型的60w推理数据
和V3模型的20w非推理数据:微调V3
全场景RL
规则奖励、偏好奖励
此外,在经过我上面4个阶段的解读之后,你再看本1.3节开头Sebastian Raschka画的那个图 是不是完全清晰、一目了然了?
1.4 蒸馏:赋予小模型推理能力
1.4.1 对R1报告中蒸馏一词的准确理解
最后,作者还实验了蒸馏——赋予小模型推理能力,方法是直接使用 DeepSeek-R1 阶段三中精心挑选的 80 万个样本对开源模型如 Qwen(Qwen, 2024b)和 Llama(AI@Meta,2024)进行了微调
对此,值得强调的两点是
1. 网上 有些看法是错的
实际上R1蒸馏版模型,是R1的数据集 去微调其他家的模型
不是其他家的模型 来教R1
而关于R1的数据集
R1报告中的第4页,说的是
Using the reasoning data generated by DeepSeek-R1, we fine-tuned several dense models that are widely used in the research community
言外之意是,使用DeepSeek-R1 生成的推理数据——如果只是推理数据,则当于来自阶段二模型的60w推理数据,微调了几个在研究界广泛使用的稠密模型
但报告的第11页却又说
To equip more efficient smaller models with reasoning capabilities like DeekSeek-R1, we directlyfine-tuned open-source models like Qwen (Qwen, 2024b) and Llama (AI@Meta, 2024) using the 800k samples curated with DeepSeek-R1
相当于是用了R1 第3阶段训练中的80w数据——来自阶段二模型的60w推理数据和V3模型的20w非推理数据
一个60w,一个80w,到底是哪个,便出现争议了
个人觉得无论是哪个 又都说得通..
若一定让我选择一个,我选80w,因为我推测报告的第4页 大概率上省略掉了来自V3的20w非推理数据,毕竟R1的报告里 推理是主流 不小心在第一处即第4页那里 漏写非推理数据,也确实有可能
2. 进一步而言,R1报告里的蒸馏 我个人 觉得不算蒸馏,他就是一个简单的SFT而已 一般的蒸馏是
大模型教小模型各个层面,与纯粹的大模型的训练数据去微调一个小模型,还是有差别的 当然了,如朋友Elma说的,虽然不是技术侧的模型蒸馏,但是现在蒸馏这个概念很广了
1.4.2 R1数据集蒸馏出来的6个模型:32B/70B便可超越o1-mini
研究结果表明,这种简单的蒸馏方法显著增强了小模型的推理能力
1. 他们使用的基础模型是
Qwen2.5-Math-1.5B、Qwen2.5-Math-7B、Qwen2.5-14B、Qwen2.5-32B
Llama-3.1-8B 和 Llama-3.3-70B-Instruct
注意
1) Llama-3.1之外,还选择了 Llama-3.3 是因为其推理能力略优于 Llama-3.1
2) 这几个被蒸馏的模型都不是MoE架构,llama 目前没有出MoE架构的模型 Qwen系列里,Qwen2.5-Max 倒是MoE架构了——其对标DeepSeek V3
3. 对于蒸馏模型,作者仅应用SFT,而不包括RL阶段 尽管结合RL可以显著提升模型性能,但作者对此的主要目标是展示蒸馏技术的有效性,故他们考虑将RL阶段的探索留给更广泛的研究社区
至于本地部署,详见此文《一文速览DeepSeek-R1的本地部署:含671B满血版和各个蒸馏版(基于Ollama和vLLM)》
“ 第一部分 本地部署之前的准备工作:各个版本、推理框架、硬件资源
1.1 DeepSeek-R1的多个版本:加上2个原装671B的,总计8个参数版本
在huggingface上总共有以下几种参数的deepseek R1
DeepSeek-R1 671B
DeepSeek-R1-Zero 671B
DeepSeek-R1-Distill-Llama-70B
DeepSeek-R1-Distill-Qwen-32B
DeepSeek-R1-Distill-Qwen-14B
DeepSeek-R1-Distill-Llama-8B
DeepSeek-R1-Distill-Qwen-7B
DeepSeek-R1-Distill-Qwen-1.5B
1.5 一些经验总结:他们不成功的尝试
在开发DeepSeek-R1的早期阶段,作者表示也遇到了失败和挫折
他们在技术报告里分享了他们的失败经验以提供一些见解,但注意:这并不意味着这些方法无法开发出有效的推理模型
1.5.1 关于过程奖励模型PRM
然而,在实践中,PRM有三个主要的限制可能会阻碍其最终成功
首先,在一般推理中明确定义一个细粒度步骤是具有挑战性的
其次,确定当前中间步骤是否正确是一项挑战。使用模型进行自动注释可能不会产生令人满意的结果,而手动注释不利于规模化
第三,一旦引入基于模型的PRM,就不可避免地导致奖励黑客行为(Gao等,2022),重新训练奖励模型需要额外的训练资源,并且复杂化了整个训练流程
总之,虽然PRM在重新排序模型生成的前N个响应或辅助引导搜索(Snell等,2024)方面表现出良好的能力,但与其在他们实验中引入的大规模强化学习过程中的额外计算开销相比,其优势是有限的
1.5.2 关于蒙特卡罗树搜索MCTS
受AlphaGo和AlphaZero的启发,作者探索了使用蒙特卡罗树搜索MCTS 来增强测试时计算的可扩展性。这种方法涉及将答案分解成更小的部分,以便模型能够系统地探索解决方案空间
为此,他们提示模型生成多个标签,这些标签对应于搜索所需的具体推理步骤 在训练中,首先使用收集的提示通过预训练的价值模型引导的MCTS来寻找答案
随后,使用生成的问题-答案对来训练actor模型和critic模型,迭代地完善这一过程
然而,当扩大训练规模时,这种方法会遇到几个挑战
首先,与棋类游戏不同,棋类游戏的搜索空间相对明确,而token生成则呈现出指数级增长的搜索空间 为了解决这个问题,他们为每个节点设置了最大扩展限制,但这可能导致模型陷入局部最优
其次,critic模型直接影响生成的质量,因为它指导搜索过程的每一步。而训练一个细粒度的价值模型本质上是困难的,这使得模型难以迭代改进 虽然AlphaGo的核心成功依赖于训练一个critic模型来逐步提升其性能,但由于token生成的复杂性,这一原则在他们的设置中很难复制 总之,虽然MCTS可以在与预训练的critic模型配对时提高推理性能,但通过自我搜索迭代提升模型性能仍然是一个重大挑战
最后,再说一下DeepSeek-R1的不足与未来计划
通用能力:目前,DeepSeek-R1在函数调用、多轮对话、复杂角色扮演和json输出等任务中的能力不如DeepSeek-V3 未来,他们计划探索如何利用长CoT来增强这些领域的任务
语言混合:DeepSeek-R1目前针对中文和英文进行了优化,这可能会在处理其他语言的查询时导致语言混合问题。例如,即使查询是用非英语或中文的语言进行的,DeepSeek-R1可能仍会使用英语进行推理和响应 故他们计划在未来的更新中解决这一限制
提示工程:在评估 DeepSeek-R1 时,作者观察到它对提示非常敏感。少样本提示会持续降低其性能。因此,作者建议用户直接描述问题,并使用零样本设置指定输出格式,以获得最佳结果
软件工程任务:由于长时间的评估影响了强化学习过程的效率,大规模的强化学习在软件工程任务中尚未被广泛应用 因此,在软件工程基准测试中,DeepSeek-R1未能显示出比DeepSeek-V3更大的改进 未来的版本将通过在软件工程数据上实施拒绝采样或在强化学习过程中引入异步评估来提高效率
1.6 对OpenAI o1及DeepSeek R1的简单复现
1.6.1 R1之外的另一条推理模型训练路径:微软rStar-Math的PRM + MCTS
注意,为负责任起见,我还是再强调一下,以上,只代表他们一家的尝试,不代表其他路径不行
毕竟在推理模型上,目前尚未有“哪个路线就一定最好”的定论,而是各有千秋 各有所长
进一步,目前比肩或者超越OpenAI o1有两种路径:
2. 另一种便是本文所介绍的deepseek R1、Kimi K1.5
1.6.2 DeepSeek R1对外开源的具体内容
颇感遗憾的是,R1和V3一样,也没有直接开源模型的训练代码
具体而言,根据R1的GitHub可知
类别
开源内容
未开源内容
模型权重
R1、R1-Zero 及蒸馏模型权重(MIT 协议)
原始训练数据
未公开冷启动数据、RL 训练数据集或合成数据的具体内容,仅提供依赖的公开数据集名称(如 AI-MO、NuminaMath-TIR)
技术文档
GRPO 算法、奖励系统设计、冷启动流程等技术报告
训练代码,比如分布式训练代码细节
训练工具
合成数据生成脚本、评估基准代码
完整 RL 训练框架
推理支持
API 接口、本地部署方案、框架适配指南
生产级优化内核
即动态显存管理、生产级批处理等企业级部署工具未开源
不过,有意思的是,有个开源项目——Open R1倒是复现了R1正式版完整训练流程的前两个阶段「以Qwen2.5-1.5B为基础,以deepseek-R1的训练过程打造」,并把代码开源了,详见此文《从零复现DeepSeek R1:从V3中对MoE、MLA、MTP的实现,到Open R1对R1中SFT、GRPO的实现》的第二部分
我司也会在这个课程《DeepSeek原理与项目实战营》里讲一下这个Open R1的复现思路,及深入解读其源码,以帮助更多人可以更好的用好该Open R1
除了以上,更多DeepSeek相关见七月在线的《DeepSeek原理与项目实战营》
↓↓↓扫码了解课程↓↓↓
课程咨询可找苏苏老师VX:julyedukefu008或七月其他老师
热门跟贴