DeepSeek 为什么会火,大模型从训练到推理之路的转变


LLM
DeepSeek LLM AI

KingYen. 的碎碎念

年初的时间,DeepSeek 彻底走向爆火,爆火的背后还有着以 DeepSeek-R1 为代表的推理模型的涌上历史舞台,我曾经在和朋友聊天中提到过,接下来的这一年,一定是 AI 厂商发力 Agent 的一年,因为从 LLM 的角度出发,我们好像再也找不到什么创新点了,真正通过 LLM 大模型去提高效率,去将 AI 的能力融入到工具中,服务于人们生产生活的方方面面,打好服务才是赢下今年 AI 行业的终局之战。但是我也万万没想到,随着 DeepSeek-R1 的爆火,让我觉得各家厂商都在发力的 Agent 好像赢面也没有那么大了。去年年底的那段时间,在看mcp、关注 eino、看DeepResearch有如何火爆,说句实话,我接触 DeepSeek 应该算比较早的了,记得一开始的 DeepSeek 在界面上的推理模式,并没有标榜上 R1 的名字。但是,不得不承认 DeepSeek-R1 真的从不起眼中走出了一条属于自己的道路。

从扩展训练时算力到扩展推理时算力的转变

随着 DeepSeek-R1 的火爆出圈,到 openAI-o3-mini 的火速入局,再到 Google Gemini 2.0 Flash Thinking 等不断的补齐,年初的这段时光,好像真的带给了我们不一样的思考,也能看出 AI 厂商在新一年的军备竞赛中的崭新变革。从零个圈内人士的视角来讲,从推理模型的火爆出圈,象征着大模型领域的军备竞赛从扩展训练时算力转化为了扩展推理时算力。那么什么是推理型大语言模型、什么是训练时计算、什么是推理型计算,大模型行业当前的范式转变又该如何理解,今天就让我们一起来捋一捋。

“思维过程”、“推理过程”或者“思维链”到底是什么?

相比于传统的大语言模型,在推理模型中我们往往将一个问题拆分成若干的小单元(这通常被称为推理过程或者思维过程)

而所谓的推理过程就是将整个过程拆解成更小的、结构化的推理单元。将一个问题通过何种方式去拆解,这也就是我们常讲的思维链 CoT

因此,推理模型不再是去学习“应该回答什么”的 LLM Model,而是去学习“应该怎么去回答”的 LLM Model。

从注重训练到推理的范式转变引发了什么?

扩展训练时计算究竟遇到了什么瓶颈?

在 2024 年上半年为止,在 LLM 开发中,为了提高 LLM 在预训练阶段的性能,通常在以下方面发力:

  • 模型(参数数量
  • 数据集(token 数量
  • 算力(FLOPs 数量

我们将这些要素统称为训练阶段计算,即预训练数据是“AI 的化石燃料”。也可以概括为,预训练预算与模型能力正相关

训练阶段的计算量囊括模型训练期间和模型微调期间所需的全部计算资源,在推理型 LLM 诞生之前,这也一直是提升 LLM 性能的主要研究方向。

业内也探索出了一些模型规模与模型性能之间的关联性“幂律”,即一个变量(e.g. 算力)的增加会导致另一个变量(e.g. 性能)产生相应的比例变化。

这些关系通常以 log-log 做表进行展示,其关系直观的呈现为一条直线,展示了性能提升带来的算力的巨大增长。

其中最广为人知的便是 Kaplan 和 Chinchilla 缩放定律,在这些定律中都表明了,模型性能会随着计算量、token 数量和参数量的增加而提升。

也有相关研究表明,要获取最佳性能,这三个因素必须协同扩展。在 Kaplan 缩放定律中,在计算资源固定的情况下,扩大模型规模通常比扩大数据规模更有效。相比之下,Chinchilla缩放定律则认为模型规模和数据规模同等重要。

然而,纵观2024年,尽管计算资源、数据集规模和模型参数持续增长,但收益增长却呈现边际递减趋势。

就像幂律一样,当规模不断扩大时,收益递减也终究是不可避免的问题。因此,我们也便于到了“我们是否已经触及天花板”的疑问。随着增加训练时计算带来的高昂成本,业内的研究人员也开始将注意力转向了另一个方向:推理时计算

推理时计算做出了怎样的改变?

与增加预训练预算不同的是,推理时计算允许模型在推理阶段进行“更长时间的思考”,对于传统的大模型,通常只会输出答案,跳过所有所谓的“推理步骤”,即我们所说的 LLM 就是一个巨大的黑盒,我们无法感知、也无法预测答案是从何而来。

而推理型模型则会使用更多的 token 来通过系统化的“思考过程”得出答案,这就相比于对于同一考场的学生,推理型模型有了更长的时间去作答,有了更广阔的画卷去描绘自己的理想。

我们想想在传统的 LLM 中,我们耗费了大量的资源用于生成答案,而这与人们的思维习惯明显是相悖的。有研究表明,人们在学习新鲜事物的时候,往往会将未知的知识体系迁移到自己已有的知识体系中,即我们常说的类比、推理与学习方法。人作为高级生物,最本质的区别就是擅长思考,去发掘事物之间的关联性。反观我们在教授知识时,也尝尝通过思维导图等方法将知识点串联,形成长长的、可供推理的思维链。因此显得将所有算力都应用在生成最终答案这件事情上,并没有那么高效。反而,让大模型像为了考试而考试,这不是妥妥的“应试教育”嘛?

相反,我们通过预先生成更多包涵额外信息、关联性和新思路的 token,模型便可以将更多的算力投入到最终答案的生成中去。细细想来,在 LLM 疯狂发展的这几年中,写好 prompt 不止一次被人们提到。我经常和学弟学妹将,要学会使用工具、要用正确的方式打开 LLM,我爸告诉我,其实提问也是一门学问,要学会提问。那在 prompt 流程中,我们最常见的方式也无非 CoT 与 ToT 两种方式,那如果我们将这些能力放给 LLM 会发生什么?也有俗语常讲,多反思自己,那如果我们让 LLM 学会去自我反思呢?这也是推理型模型为什么性能好最基本的原因吧。

那我们又如何评估推理时的计算量规模法则呢?OpenAI 的一篇文章中,展示了展示了推理时的计算量可能实际上遵循与训练计算量相同的发展趋势。

在这里,我们可以看作是学术上推动向扩展测试时计算范式转变的起点

其次,在“Scaling Scaling Laws with Board Games”探讨 AlphaZero 在不同计算资源下的学习表现中表明,训练时计算和测试时计算之间存在紧密关联。每条虚线都标示出达到特定 ELO 分数所需的最低计算量

测试时计算与训练时计算呈现相似的扩展特性,这标志着“推理“模型正在向更多测试时计算的方向发生范式转变。

在这一范式转变中,这些“推理型”模型不再仅仅关注训练时计算(预训练和微调),而是在训练和推理之间取得平衡。

推理型 LLM 是如何构建的?

而在推理型 LLM 的演进之中,并不是仅仅通过给 LLM 更长的思考时间这一单一的方式,测试时计算可以包含的形式相较于训练时计算,可以采取更丰富的形式进行,e.g. 思维链答案修正回溯采样

而这些技术可以大致被分为两类:

  • 验证器搜索(生成多个采样并选择 the best answer
  • 修改提议分布(经过训练的 Reason

而在这两大类技术中,对验证器的搜索是以输出为导向的,而修改提议分布则是以输入为导向的

以输出为导向的优化手段

首先我们来讨论两种验证器结果奖励模型(ORM)过程奖励模型(PRM)

  • ORM中只会关注最终结果,不回去考虑背后的过程

  • PRM 下,不仅会评判最终结果,还会考察达到结果的过程(即“推理过程”)

接下来我们来看一下验证器搜索的具体流程:

  • 首先,生成多个推理过程和结果样本
  • 其次,由验证器(奖励模型)对生成的结果进行评分

我们可以发现,在验证器搜索中,其核心逻辑便是_生成多个候选答案/推理路径,并通过验证器筛选最优结果_,而这样带来的优势体现在我们只需要微调一个 LLM 模型用于评判结果(ORM)或过程(PRM),而无需重新训练和微调用于回答问题的 LLM

而在业内,目前在当前领域的主要探索方向聚焦在自洽性最优 N 样本加权 N 选最优、和扩展搜索

  • 自洽性

除了验证器和奖励模型,我们还可以采用让模型生成多个答案,将最常生成的答案作为最终答案,即多数投票机制

这种方法也被称为自洽性,强调生成多个答案和推理步骤的必要性。

  • 最优 N 样本

通过生成 N 个样本,然后通过验证器来评判每个答案(结果奖励模型)或者推理过程(过程奖励模型)

最优 N 样本下,LLM 通常会设置一个较高的或者动态的 temperature来生成多个答案,然后每个答案通过结果奖励模型(ORM)来进行评分,衡量答案的质量或者通过过程奖励模型(PRM)苹果每个推理步骤的质量,最后选择总权重最高的答案

  • 结果奖励模型 ORM

  • 过程奖励模型 PRM

  • 加权 N 选最优

我们在最优 N 样本的基础上通过 RM 对每个候选答案进行加权,并选择总分最高的答案,我们便得到了加权 N选最优采样

  • 扩展搜索
    • 束搜索 Beam Search

在束搜索中,我们采用多个推理步骤,并由 PRM 对每一步进行评判,并在整个过程中持续跟踪得分最高的三条路径,从而达到快速终止那些不太有价值的推理路径(PRM 评分较低的路径),该方法类似于思维树(ToT)

- **<font style="color:rgba(0, 0, 0, 0.9);">蒙特卡洛树搜索(Monte Carlo Tree Search)</font>**
* <font style="color:rgba(0, 0, 0, 0.9);">选择(根据预设公式选择特定叶节点)</font>
* <font style="color:rgba(0, 0, 0, 0.9);">扩展(生成额外节点)</font>
* <font style="color:rgba(0, 0, 0, 0.9);">模拟(随机创建新节点直至达到终点)</font>
* <font style="color:rgba(0, 0, 0, 0.9);">反向传播(根据输出更新父节点得分)</font>

这些步骤的主要目标是在扩展最佳推理路径的同时,也要探索其他可能的方向。

这实际上是在探索利用之间寻找平衡。

因此,在选择新的推理步骤时,我们并不一定要选择当前表现最好的路径。

采用这种公式,我们首先选择一个节点(推理步骤),然后通过生成新的推理步骤来扩展它。和之前一样,这可以通过设置较高且多变的 temperature 来实现:

从扩展的推理步骤中选择一个,并多次展开直至得出多个答案。

这些展开结果可以基于推理步骤(PRM)、奖励值(ORM)或两者的组合来评判。

从而父节点的分数会被更新,即反向传播,然后我们可以从选择步骤重新开始这个过程,即回溯。

以输入为导向的优化手段

这类提高 LLM 推理能力的方法被形象地称为 “修改提议分布”,这种方法通过训练模型来生成更加优质的推理步骤,即将中心聚焦到 LLM 的输入上,通过补全内容、思考过程或者是词元的概率分布(修改候选分布)而优化 LLM 的表现。

而我们如何修改后选分布呢?

总体可以分为两大类:

  • 提示词工程
  • 微调

我们可以一起来看一下如何通过提示词工程与改善训练来优化 LLM 的候选分布

  1. 提示词工程

在提示词工程中,我们想要通过提示来优化后选分布,我们可以通过向 LLM 提供必需遵循的上下文,通过上下文学习以生成类似的推理行为,我们可以将这部分概括为引导 LLM 一步步思考,但通过提示词工程,我们并未让 LLM 从根本上学会遵循该流程。因为这是一个线性且静态的过程,限制了 LLM 的自我修正能力。如果 LLM 从一开始的推理便是错误的,那 LLM 也只会想这个方向越陷越深,而不会自行纠正。

  1. 微调

而通过监督式微调的本质是在生成合成训练样本,从而决定推理过程应该如何进行,这也是 DeepSeek-R1 将推理过程蒸馏到其他模型的常用方法。

DeepSeek 做了什么?

在推理模型领域,我们不得不承认 DeepSeek-R1 做出了重大突破。其中 DeepSeek 通过多种技巧,成功的将推理能力优雅地融入到了其基础模型中。同时值得引人深思的是,他并没有采用我们上文中讲到的,业内常见的做法。他们既没有使用验证器,也没有通过监督式微调来向 LLM 灌输推理的理念,而是转头选择了强化学习(RL)

他们在强化学习的流程中使用了一个非常直观的提示语(Ststem prompt)

DeepSeek 通过类似于 HTML 的方式,将推理过程放在了标签中,但他们并未规定推理过程方面的任何细节。

这个过程中使用的强化学习算法被称为群组相对策略优化(GRPO)11[17]。该算法的核心思想是调整导致正确或错误答案的所有选择的概率。这些选择既包括词组token的选择,也包括推理步骤。

有趣的是,关于过程应该是什么样子,并没有给出任何示例。它仅仅说明了应该使用****标签,仅此而已!

通过提供这些与思维链相关的间接奖励,模型自行学习到:推理过程越长、越复杂,答案就越可能正确。

在强化学习的流程中,强调了从训练期计算向推理期计算的范式转变。随着这些模型生成更长的思维序列,它们将重点放在了推理期计算上。

通过这个强化训练的流程,DeepSeek 发现了 LLM 自主探寻最佳思维链的方式,其中包括自我反思自我验证等更高级的推理能力。

但 DeepSeek 仅仅做了这么多的工作嘛,实则并不是,在采用当前流程训练出来的模型存在不稳定与可读性较差,并且答案混杂等问题,但有幸的是,DeepSeek 团队解决了这个问题。

DeepSeek 为了稳定推理过程做了什么?

DeepSeek 研究团队遵循了五个步骤:

  1. 冷启动
  2. 面向推理的强化学习
  3. 拒绝采样
  4. 有监督微调
  5. 全场景强化学习

第一步中,研究人员使用一个小规模的高质量推理数据集(约5,000个token)对 DeepSeek-V3-Base 进行微调。这样做是为了避免冷启动问题导致的可读性差的情况。

第二步中,采用了类似训练 DeepSeek-R1-Zero 的强化学习过程来训练模型。不过,为了确保目标语言保持一致性,还额外增加了一个奖励度量指标。

第3步中,研发团队利用经过RL训练的模型生成了用于后期监督微调的推理数据。通过拒绝采样(基于规则的奖励)和奖励模型(DeepSeek-V3-Base)的双重把关,最终筛选出60万条高质量的推理样本。

此外,他们还借助DeepSeek-V3及其部分训练数据,生成了20万条非推理样本。

第4步中,研发团队利用这80万条样本数据集对DeepSeek-V3-Base模型进行了有监督微调。

第5步中,团队采用了类似DeepSeek-R1-Zero的方法对模型进行强化学习训练。不过,为了更好地对齐人类偏好,他们额外引入了着重于助人性和无害性的奖励信号。

而这部分探索说明了 DeepSeek-R1 是通过监督式微调和强化学习的方式,基于 DeepSeek-V3-Base 训练而来,同时探索出了在推理模型的训练中最关键的工作就在于确保生成高质量的样本

DeepSeek-R1 是一个拥有 6710 亿参数的庞大模型。遗憾的是,这意味着在消费级硬件上运行如此规模的模型将会非常困难。

DeepSeek-R1 成长为一名合格的 LLM 教师经历了什么?

但是 DeepSeek-R1 是一个拥有 671B 参数的庞大模型,这意味着在消费级硬件上运行如此规模的模型会变得非常困难。

不过值得高兴的是,DeepSeek 团队成功探索出了将 DeepSeek-R1 的推理能力提炼到其他模型中的道路。

在 DeepSeek 团队在蒸馏 Qwen-32B 模型的过程中,他们将 DeepSeek-R1 作为教师模型,将较小的模型作为学生模型。两个模型都会接收相同的提示,并生成token概率分布。在训练过程中,学生模型会努力模仿教师模型的分布。

这个提炼过程使用了我们之前看到的全部80万个高质量样本:

这些经过蒸馏的模型表现相当出色,因为它们不仅从80万个样本中学习,还学习了老师模型(DeepSeek-R1)的回答方式!