同样采用图解的方式,让所有人都能理解什么叫做推理大模型。
DeepSeek-R1 、OpenAI o3-mini和Google Gemini 2.0 Flash Thinking是如何通过“推理”框架将 LLM 扩展到新高度的典型例子。
它们标志着从扩展训练时间计算到扩展测试时间计算的范式转变。
这篇文章中包含了 40 多个自定义视觉效果,您将探索推理 LLM、测试时间计算领域,并深入研究DeepSeek-R1。我们逐一探索概念,以对这种新的范式转变形成直觉。
1、什么是推理LLM?
与普通大模型相比,推理大模型倾向于在回答给定问题之前将问题分解为更小的步骤(通常称为推理步骤或思维过程)。
那么“思维过程”、“推理步骤”或“思路链”实际上是什么意思呢?
尽管我们可以思考LLM是否真的能够像人类一样思考,这些推理步骤将过程分解为更小的、结构化的推理。
2、什么是训练时间计算?Train-time compute
到 2024 年上半年,为了提高 LLM 在预训练过程中的性能,开发人员通常会增加以下大小:
- 模型(参数数量)
- 数据集(标记数量)
- 计算(FLOP数量)
综合起来,这被称为训练时计算,指的是预训练数据是“人工智能的化石燃料”。本质上,预训练预算越大,生成的模型就越好。
训练时计算可能包括训练期间和微调期间所需的计算。
他们共同致力于提高大模型的成绩。
Scaling Laws
通过各种Scaling Laws来研究模型的规模(通过计算、数据集大小和模型大小)与模型性能之间的关系。
它们就是所谓的“幂律”,其中一个变量(例如计算)的增加会导致另一个变量(例如性能)的比例变化。
这些通常以对数-对数刻度(结果为直线)显示,以展示计算量的大幅增加。
最著名的是“卡普兰”和“龙猫” Scaling Laws。这些定律或多或少表明,模型的性能将随着计算、标记和参数的增加而提高。
他们建议,必须同时扩大这三个因素才能实现最佳性能。
Kaplan的Scaling Laws指出,缩放模型大小通常比缩放数据更有效(给定固定计算)。相比之下,Chinchilla 缩放定律表明模型大小和数据同样重要。
然而,在整个 2024 年,计算、数据集大小和模型参数稳步增长,但收益却呈现递减趋势。
正如这些幂律一样,随着规模的扩大,收益会递减。
这就引出了一个问题
3、什么是测试时计算?Test-time Compute
增加训练时间计算的成本昂贵性导致人们对另一个焦点,即测试时间计算产生了兴趣。
测试时间计算不是不断增加预训练预算,而是允许模式在推理过程中“ 思考更长时间” 。
对于非推理模型,它通常只会输出答案并跳过任何“推理”步骤:
然而,推理模型会使用更多的标记,通过系统的“思考”过程来得出答案:
这个想法是,LLM 必须花费资源(如 VRAM 计算)来创建答案。但是,如果所有计算都用于生成答案,那么效率就有点低了!
相反,通过预先创建包含附加信息、关系和新想法的更多标记,模型花费更多的计算来生成最终答案。
与训练时计算相比,测试时计算的扩展规律相对较新。值得注意的是两个有趣的来源,它们将测试时计算扩展与训练时计算联系起来。
Scaling Laws
与训练时计算相比,测试时计算的扩展规律相对较新。值得注意的是两个有趣的来源,它们将测试时计算扩展与训练时计算联系起来。
首先, OpenAI 的一篇文章展示了测试时间计算实际上可能遵循与扩展训练时间计算相同的趋势。
因此,他们声称,由于这仍然是一个新领域,因此扩展测试时间计算可能会发生范式转变。
第二篇,一篇有趣的论文,名为“用棋盘游戏扩展缩放定律”,探索AlphaZero并训练它进行不同程度的计算来玩 Hex。
图示展示了他们如何构造不同程度的训练时计算和测试时计算。其研究结果表明,训练时计算与测试时计算之间存在紧密联系。每一条虚线都展示了达到特定 ELO 分数所需的最小计算量。
他们的结果表明,训练时间计算和测试时间计算紧密相关。每条虚线都展示了特定 ELO 分数所需的最低计算量。
图来自“使用棋盘游戏扩展缩放定律”。它展示了训练时间计算和测试时间计算之间的关系。
随着测试时计算扩展得像训练时计算一样,一个新的范式正逐步形成,即利用更多测试时计算来构建“推理”模型。通过这种范式转变,这些“推理”模型不再纯粹依赖训练时计算(预训练和微调),而是在训练和推理之间取得平衡。
测试时计算甚至可以在思考时间上实现扩展,如下图所示:
“长度扩展”也是我们在深入探讨DeepSeek-R1时将会探讨的一个内容。
4、测试时间计算的类别
如 DeepSeek R-1 和 OpenAI-o1 这样推理模型的巨大成功表明,测试时计算不仅仅是“多思考一会儿”这么简单。
测试时计算可以涵盖多种技术,包括思维链、修正答案、回溯、采样等等。
大致而言,这些技术可以分为两大类:
1. Search against Verifiers: 利用验证器进行搜索(采样生成多个答案并挑选最佳答案)
2. Modifying Proposal Distribution: 修改Proposal(个人不太喜欢提议这个翻译,总感觉较英文差点意思)分布(训练过的“思考”过程)
两种方法的侧重点不同,利用验证器进行搜索侧重于输出,而修改提议分布则侧重于输入。
接下来,将探讨两种类型的验证器:
• 结果奖励模型(Outcome Reward Models, ORM)
• 过程奖励模型(Process Reward Models, PRM)
正如其名称所暗示的,ORM 只判断结果,并不关心底层过程:
相比之下,PRM 还会判断导致结果的过程(“推理”):
为了使这些推理步骤更加明确:
可以看到:PRM 对步骤 2 打了一个最低分,说明步骤 2 是一个坏的推理步骤。
接下来探讨它们在各种验证技术中的应用。
5、Search against Verifiers
测试时计算的首个主要方法是利用验证器进行搜索。这个过程通常包括两个步骤:
-
生成多个推理过程及其对应的答案。
-
然后,利用验证器(即奖励模型)对生成的输出进行评分。
通常,验证器也是一个经过微调的 LLM,用于评判大模型的结果(ORM)或大模型的思考过程(PRM)。
使用验证器的一个主要优势在于,无需重新训练或微调用于回答问题的 LLM。
6、多数投票(Majority Voting)
最直接的方法其实是不使用任何奖励模型或验证器,而是采用多数投票。
具体做法是让模型生成多个答案,然后选取出现次数最多的那个作为最终答案。
这种方法也被称为 自洽性(self-consistency),以强调需要生成多个答案及其推理步骤。
7、最佳 N 样本(Best-of-N)
第一种真正使用到验证器的方法被称为 Best-of-N 样本。它的核心思路是:生成 N 个答案样本,然后使用验证器(一般是结果奖励模型,ORM)来对每个答案进行判断。
1. 生成多个答案
通常由一个大模型(也经常被称为“Proposer”)在较高或多种温度设定下生成多个答案样本。
2. 评分并选取最佳答案
每个答案都会经过输出奖励模型 (ORM),并根据答案的质量进行评分。得分最高的答案将被选中:
如果想评估的不只是答案,还包括推理过程,则可以使用 过程奖励模型(PRM)。它会判断每个推理步骤的质量,并选取具有最高总权重的候选答案。
基于这两类验证器,我们还可以让奖励模型(RM)分别对每个答案候选进行加权,然后选出综合得分最高的那一个,这种方法被称为 加权 Best-of-N 样本(Weighted Best-of-N samples)。
8、使用过程奖励模型的 Beam Search
在生成答案和中间推理步骤时,我们可以将上述过程进一步扩展到 Beam Search。
在 Beam Search 中,会对多个推理步骤进行采样,并由过程奖励模型(PRM)进行打分(类似于 Tree of Thought 的思路)。在此过程中,我们会追踪评分最高的若干条“beam”,例如前三名。
这种方法能让我们快速终止那些得分低、不太可能带来理想结果的推理路径,从而将计算资源集中在更有用的推理路线。
最终产生的答案,结合之前的 Best-of-N 方法进行加权或筛选,获得最高分答案。
9、蒙特卡洛树搜索(Monte Carlo Tree Search)
蒙特卡洛树搜索(MCTS 是在搜索树中高效寻找最优路径的一种方法,通常包括以下四个步骤:
-
Selection:根据特定公式(例如上置信界 UCB)选择当前树中的某个叶子节点。
-
Expand:在该叶子节点处创建额外的子节点(新的推理步骤)。
-
Rollouts:对新生成的节点进行若干次随机扩展,直到到达最终答案。
-
Backprop:将模拟中获得的分数或奖励向上更新到父节点。
这四个步骤的目标是不断扩大最优推理路径的同时,兼顾对其他潜在路径的探索,即在“探索”与“利用”之间取得平衡。
节点的选择和评分通常可参考下图所示的公式或方法来执行:
在选择要进一步探索的推理步骤时,不一定总是选择当前看起来最佳的路径,这样有助于避免过早收敛。
具体实现中,选中一个节点后,可以对其进行扩展(生成新的推理步骤),再使用适当的温度采样来生成多个变体。
随后,我们会对某一分支进行多次模拟(rollout),直到生成完整的答案。
这些 rollouts 可依据推理过程(PRM)、结果质量(ORM),或两者结合来进行评估并得到分数。
最后,将这些得分回溯更新到父节点,然后继续进行新的选择(selection),周而复始,持续改进搜索过程。
10、修改提议分布 (Modifying Proposal Distribution)
让大模型进行推理的第二大类方法称为“修改提议分布”。与利用验证器(着重输出)来搜索正确推理步骤不同,这种方法会训练模型主动生成更优质的推理步骤(着重输入)。换句话说,我们会对用于采样(Completion/Thought/Tokens)的分布进行修改。试想,我们有一个问题,以及一个用于从中采样的 tokens 的分布。常见的策略是选取得分最高的 token:
但注意在上方示意图中,有些 tokens 被标记成红色——这些 tokens 会更倾向于带来推理过程:
尽管“贪婪”地选择得分最高的 token 并不一定错误,但如果某些 token 指向了更详细的推理步骤,往往可以得到更高质量的答案。
当我们修改提议分布(即 token 的概率分布)时,实质上就是对模型的 token 排序进行重新评估,使得“推理” token 被选中的概率更大:
从概念上说,修改提议分布的方法可以分成两类:
1. 通过 Prompt Engineering 来更新提示
2. 训练模型更多地关注推理 token 或推理过程
11、Prompting
在 Prompt Engineering 中,我们通过更新提示来改善输出,同时也会引导模型显式或隐式地展示之前提到的“推理过程”。
要通过 Prompt 来改变提议分布,我们可以给模型提供示例(即“上下文学习”),从而诱导它生成更具推理倾向的回答:
如果不想提供完整示例,也可以通过简单的一句话来指示模型,例如“Let’s think step-by-step”,从而让模型在回答之前先做推理拆解:
不过需要注意:模型本身并不一定“真正学会”遵循这个过程。此外,这种方法是静态、线性的,缺少自我修正机制。一旦模型开始的推理过程出现错误,它往往会沿着这个错误的思路继续下去,而不进行修正。
12、STaR:Self-Taught Reasoner
除了提示工程,另一个思路是让模型通过“学习”来进行推理,即让模型因生成相应的推理步骤而获得奖励。此类方法通常需要大量的推理数据和强化学习,以在训练中鼓励某些行为。
一个颇具争议的方法是 STaR,即 Self-Taught Reasoner。STaR 会让 LLM 生成自身的推理数据,并将这些推理作为微调的训练输入。
模型先在步骤 (1)中生成推理步骤和答案。如果答案正确 (2a),则将该推理过程和最终答案一起加入到三元组数据集中 (3a),用于后续的监督微调 (5)。这个过程如下图所示:
如果模型给出的答案是错误的 (2b),则为模型提供一个“提示”(正确答案 3b),让它去推理为什么这个答案才是正确的 (4b)。模型最终的推理过程同样会被加入到相同的三元组数据集中,用于监督微调 (5)。这个过程如下图所示:
在这一过程中(以及许多其他修改提议分布的方法中),我们都会显式地教模型去“遵循”我们示范的推理步骤。
换句话说,我们可以通过监督微调来决定模型“应该怎样”进行推理。
STaR 的完整流程相当有趣,因为它会自动生成合成训练示例。正如我们会在后续讨论 DeepSeek R1 时看到的,使用合成训练示例是将推理过程蒸馏给其他模型的一种绝佳方式。
13、DeepSeek-R1
在推理模型领域,一项重大的发布是 DeepSeek-R1。这是一个开源模型,与 OpenAI 的 o1 推理模型直接竞争,并在业界产生了重大影响。
DeepSeek通过各种技术将推理优雅地提炼到其基础模型( DeepSeek-V3-Base ) 中,做得非常出色。
有趣的是,没有验证者参与,并且不是使用监督微调来提炼推理行为,而是重点关注强化学习。
让我们探索他们如何在模型中训练推理行为。
14、DeepSeek-R1 Zero 的推理机制
在通往 DeepSeek-R1 的道路上,有一个实验性模型作出了关键贡献,名为 DeepSeek-R1 Zero。
它基于 DeepSeek-V3-Base 而来,但并没有采用针对大量推理数据的监督微调,而是仅通过强化学习(RL)来激发模型的推理行为。
为此,他们设计了一个非常简单直观的提示(Prompt),类似于系统提示,贯穿于整个Pipeline:
请注意,他们明确提到推理过程应该在****标签之间进行,但没有具体说明推理过程应该是什么样子。
15、强化学习阶段
在强化学习过程中,创建了两个特定的基于规则的奖励:
- 准确度奖励——通过测试答案来奖励。
- 格式化奖励——使用和标签的奖励。
[GRPO]
此过程中使用的 RL 算法称为组相对策略优化 (GRPO)。该算法背后的直觉是,它使导致正确或错误答案的所有选择更有可能或更不可能。这些选择既可以是标记集,也可以是推理步骤。
有趣的是,没有给出 流程应该是什么样子的示例。它只是指出它应该使用 标签,仅此而已!
通过提供与思维链行为相关的间接奖励,模型自行学习到,推理过程越长、越复杂,答案就越有可能正确。
该图尤其重要,因为它强化了从训练时计算到测试时计算的范式转变。由于这些模型会生成更长的思维序列,因此它们会专注于测试时计算。
通过这个训练流程,他们发现模型可以自行发现最优的思维链式行为,包括自我反省和自我验证等高级推理能力。
然而,它仍然有一个明显的缺点。它的可读性很差,而且容易混合语言。相反,他们探索了一种替代方案,即现在众所周知的DeepSeek R1 。
16、DeepSeek-R1训练
DeepSeek-R1 的训练大体可以概括为以下五个阶段:
-
冷启动(Cold Start)
-
面向推理的强化学习(Reasoning-oriented Reinforcement Learning)
-
拒绝采样(Rejection Sampling)
-
监督微调(Supervised Fine-Tuning)
-
适用于所有场景的强化学习(Reinforcement Learning for all Scenarios)
以下是各个阶段的具体流程:
1. 冷启动(Cold Start)
在第一步中,研究人员使用一个小型的高质量推理数据集(约 5000 个tokens)对 DeepSeek-V3-Base 进行微调。这样做是为了避免“冷启动”问题导致的可读性不佳。
在第二步中,得到的模型采用与 DeepSeek-V3-Zero 类似的强化学习过程进行训练。但在奖励机制中增加了一项新指标,用来确保目标语言的输出保持一致性。
第三步,利用得到的强化学习模型生成合成推理数据,供后续监督微调使用。通过拒绝采样(基于规则的奖励)和奖励模型(DeepSeek-V3-Base),生成了 60 万个高质量推理样本。
另外,利用DeepSeek-V3和部分训练数据,创建了20万个非推理样本。
第四步,将得到的总计 800,000 条示例数据用于对 DeepSeek-V3-Base 的监督微调。
第五步,他们使用与 DeepSeek-R1-Zero 类似的方法,对微调后得到的模型再次进行 RL 训练。但为了更好地对齐人类偏好(Human Preferences),在奖励信号中额外加入了“有益性”与“无害性”的考量。同时,为了避免推理结果的可读性问题,模型会被要求对推理过程进行适当的总结和精简。
通过上述五个阶段,DeepSeek-R1 最终得以成型。可以说,DeepSeek-R1 是 DeepSeek-V3-Base 通过监督微调和强化学习得到的成果。其中,大量工作都集中在确保生成出高质量的训练示例上。
17、使用 DeepSeek-R1 进行推理“蒸馏”
DeepSeek-R1 规模庞大,拥有 6710 亿(671B)参数。这对于普通硬件来说,运行成本极高。
因此,DeepSeek的研究人员还探索了如何将 DeepSeek-R1 的推理能力“蒸馏”到其他模型中,例如可以在消费级硬件上运行的 Qwen-32B。
具体做法是,让 DeepSeek-R1 作为教师模型(Teacher),而体量较小的模型则作为学生模型(Student)。两者在面对相同的提示时,需要分别生成 token 的概率分布;学生模型会尝试在训练中逼近教师模型的分布:
使用之前提到的 80 万高质量数据样本(其中 60 万条推理示例 + 20 万条非推理示例)进行训练。
学生模型通过不断对比自己的输出分布和教师模型的输出分布,来学习 DeepSeek-R1 的推理方式。
这样“蒸馏”出来的小模型性能依旧出色,因为它不仅学到了 80 万条数据中的知识,还学到了 DeepSeek-R1 如何作答的思路。
18、DeepSeek不太成功的尝试
还记得我们之前提到的 过程奖励模型(PRMs) 和 蒙特卡洛树搜索(MCTS) 吗?DeepSeek 团队也曾试图用这些方法来培养模型的推理能力,但并未取得理想成果。
在 MCTS 中,由于搜索空间极其庞大,研究人员不得不大幅限制节点扩展。此外,训练一个能够细化评估推理过程的奖励模型本身就是一项困难的任务。
在结合 PRMs 的 Best-of-N 技术中,他们遇到的主要问题是计算开销过高,需要频繁地对奖励模型进行再训练,以防止出现所谓的 “reward-hacking”(对奖励函数的漏洞进行投机利用)。
这并不代表这些技术就完全不适用,但至少说明了它们在实际应用中面临着一些挑战。
结语
以上就是关于推理型大模型的概念与 DeepSeek-R1 的有关介绍。希望这篇内容能帮助你更好地理解 “测试时计算扩展” 的潜力所在。也再次感谢为大模型探索道路上做出贡献和努力的研究者们,像你们致敬!
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费
】
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。