表1. DeepSeek 关键技术一览
技术创新 | 模型版本 | 发布时间 |
---|---|---|
Deepseek MoE 架构 | DeepSeek-MOE[1] | 2024年1月 |
Group Relative Policy Optimization(GRPO,群体相对策略优化) | DeepSeek-Math[2] | 2024年4月 |
Multi-Head Latent Attention(MLA,多头隐式注意力) | DeepSeek-V2[3] | 2024年6月 |
Multi-Token Prediction(MTP,多令牌预测) | DeepSeek-V3[4] | 2024年12月 |
AI Infra相关(以训练加速为主,如FP8混合精度训练、DualPipe等) | DeepSeek-V3[4] | 2024年12月 |
通过强化学习显著提升模型推理能力,R1-Zero在AIME 2024等推理基准测试中达到OpenAI-o1-0912的水平 | DeepSeek-R1-Zero[5] | 2025年1月 |
使用冷启动-强化学习(推理场景)-SFT-强化学习(全场景)四阶段训练,R1模型达到OpenAI-o1-1217的水平 | DeepSeek-R1[5] | 2025年1月 |
将R1推理能力蒸馏到小的稠密模型 | DeepSeek-R1-Distill[5] | 2025年1月 |
图1. DeepSeek MoE 框架示意图
图1选自DeepSeek-Moe报告[1],展示了 DeepSeek 从传统 MoE 模型架构(a)的基础上,做的两部分改进(b)与(c):
更进一步地,DeepSeek-V3 针对MoE 中常见的负载不均衡问题,提出了一种新的负载均衡策略。在用于选择专家的 Gate 模块中引入了一个可学习的偏置项。在计算路由得分时,这个偏置项会被动态地加到每个路由专家的得分上。该方式的主要特点在于:
DeepSeek 通过这些 Moe 架构上的创新,直接促进了 V3 模型的整体效果提升。
下表是部分开源 MoE 模型的对比情况:
表2. 部分开源模型 MoE 模块配置对比
模型 | 细粒度 | 专家分离 | 共享专家数 | 路由专家数 | 激活专家数 |
---|---|---|---|---|---|
Mixtral 8*7B | 否 | 否 | 0 | 8 | 2 |
Hunyuan-Large | 否 | 是 | 1 | 16 | 1 |
Qwen1.5-MoE-A2.7B | 是 | 是 | 4 | 60 | 4 |
DeepSeek-V3 | 是 | 是 | 1 | 256 | 8 |
表3. DeepSeek V3 架构核心参数
key | value |
---|---|
总参数量 | 671B |
激活参数 | 37B(占比5.5%) |
专家数量 | 1+256=257个 |
每token专家数 | 1+8=9个 |
大模型训练大体可以分为3种模式,预训练(Pretraining),有监督精调(Supervised Fine-Tuning, SFT),基于人类反馈的强化学习(Reinforcement Learning from Human Feedback, RLHF)。其中,SFT让模型通过学习训练数据数据分布的方式来提高模型在特定任务或指令上的表现,与其不同的是,RLHF使用人类反馈来定义奖励函数,然后通过强化学习算法优化模型。让模型能生成符合人类喜好的回复。
主流的RLHF算法有PPO(Proximal Policy Optimization)、DPO(Direct Preference Optimization)以及本节介绍的GRPO等。强化学习的基础理论具有较高的综合性以及深度,想要深入阅读的同学可以参考相关资料,KM上也有许多细节解读以及相关实践[6,7,8]。而本文仅作科普性的介绍。
在介绍GRPO之前,需要先了解PPO算法,因为GRPO可以算作是PPO的计算效率优化版本,在保持效果的同时,降低计算资源消耗。在强化学习领域,PPO 算法被广泛认为是强化学习中的基准算法之一。PPO 采用了 Actor-Critic 架构,这一架构可以形象地理解为:有一个演员(actor)在舞台上表演,而一个评论家(critic)在台下观看。演员的目标是通过不断调整自己的表演行为来获得观众的认可,并从观众那里获得及时反馈。而评论家的任务则是评估演员的表演,并提供全面的建议。
在自然语言处理(NLP)生成模型的场景中,被训练的模型相当于演员,其表演即为生成的回复。相应地,会有评论家和观众模型来评价回复的质量。具体来说,PPO使用了四个模型:
为了更直观地理解 Value 模型的总收益和 Reward 模型的即时收益,可以用“磨刀不误砍柴工”来举例说明。假设现在有一把钝刀,一分钟可以劈一根柴火;如果把刀磨锋利了,一分钟就可以劈两根柴火。现在你可以选择直接用钝刀劈柴,或者先把刀磨锋利。前者的当前收益比后者高,但未来的收益会低。也就是说,Value 模型会对后者“磨刀”这一行为更为推崇,而 Reward 模型会给前者“直接砍柴”一个更高的分数。
PPO 在大模型的 RLHF 阶段被成功应用,不断提升模型回复表现的上限。然而,PPO 在计算成本和训练稳定性方面仍然存在一定的挑战。GRPO 算法对此进行了优化,其核心目标是去除 Value 模型,以此来减少训练的计算资源。
图2. PPO vs. GRPO
图2选自 DeepSeekMath 报告,展示了 GRPO 相对于 PPO 的改进。传统的 PPO 使用 Value 模型来估计模型回复的总收益,这实际上是对未来模型回复各种可能性的一个平均分值估计。而 GRPO 的方法是通过,大模型根据当前的上文输入进行多次采样,生成多个预测结果,并分别使用 Reward 模型对这些预测结果进行评分得到,最后取这些评分的平均值来替代 Value 模型的预期总收益估计。通过这种方式,GRPO 在训练过程中可以减少一个模型的前向和反向传播计算,从而降低计算资源的消耗。
下表针对 SFT 以及主流的一些强化学习方法做了对比和总结:
表4. SFT 与 RLHF 算法特点
算法 | 特点 |
---|---|
监督微调(SFT) | ● 在标注的SFT数据上对预训练模型进行微调。 |
直接偏好优化(DPO) | ● DPO依赖于理论上的偏好模型,如 Bradley-Terry 模型,来测量奖励函数与经验偏好数据的对齐程度。它直接根据策略定义偏好损失,无需在训练过程中明确学习 Reward 模型。 |
近端策略优化(PPO) | ● PPO算法采用 Actor-Critic 架构,需要 Policy 模型、Value 模型、 Reward 模型、 Reference 模型。 ● 使用 Value 模型评估模型的预期总收益(模型回复的好坏) |
群体相对策略优化(GRPO) | ● GRPO算法采用 Actor-Critic 架构,需要 Reward 模型、Reference 模型,但是删掉了 Value 模型。 ● 不使用 Value 模型,而是使用一组 LLM 生成的针对同一上文输入的多次采样结果来做预期总收益的估计。 |
在标准的 Transformer 模型中,多头注意力(Multi-Head Attention, MHA)机制通过并行计算多个注意力头来捕捉输入序列中的不同特征。每个注意力头都有自己的查询(Query, Q)、键(Key, K)和值(Value, V)矩阵。对于序列中的每一个 token,都需要计算各自的 QKV,进而计算注意力。在推理过程中,当前大模型所采用的 token by token 递归生成方式,上文 token 的 KV 计算不会受到后续生成 token 的影响,因此可以缓存下来,避免重复计算,提高推理效率,这就是 KV cache 的由来。也就是说,当生成第个 token 时,可以利用之前事先算好的上文个 token 的 KV 值。同样地,位置 token 的 KV 值计算出来后也将保存在 KV cache 中。
目前大模型对于注意力机制做的一些改进,包括MQA (Multi-Query Attention)、GQA (Group Query Attention)都是为了想方设法减少 KV Cache。DeepSeek 提出的 MLA 的出发点也是如此。减少KV Cache就可以实现在更少的设备上推理更长的Context,或者在相同的Context长度下让推理的batch size更大,从而实现更快的推理速度或者更大的吞吐总量。最终目的都是为了实现更低的推理成本。
图3. MHA, MQA, GQA 与 MLA
如图3所示,MQA 与 GQA 的办法是通过共享 K,V 的注意力头,降低 KV Cache的数据维度。MLA 的办法本质上是对原本 MHA 的 KV Cache 作低秩分解,得到一个低维的隐向量(Latent Vector)。在推理阶段,MLA 只需要缓存该隐向量,由此大大降低需要缓存的数据量。
具体地,对于某一层某一个 token 的表征, MLA 通过降维映射矩阵 (down-projection matrix)得到对、压缩后的隐向量:
在前向过程中,需要对此隐向量进行升维还原,即:
其中,与为对应的升维映射矩阵(up-projection matrix),可得到对应的、向量、。可以这么理解,MLA利用低秩分解的办法,通过增加少量的模型参数变量(降维映射矩阵与升维映射矩阵),引入低维隐向量作为 KV Cache,降低 KV Cache 所带来的显存压力,以此降低推理成本。
此外,DeepSeek 还将 Query 也进行了低秩分解,能够在训练过程中降低显存占用,以此提高训练资源利用率。
上述方案还需要针对位置编码RoPE(Rotary Position Embedding)进行处理。因为如果在隐向量中包含RoPE,经过升降维操作后,会对位置信息造成破坏。为了解决这个问题,MLA(Multi-Head Linear Attention)提出了“解耦RoPE”的方法。具体来说,对于隐向量,不将位置编码包含在其中,而是专门为注意力头的 Query 和 Key 新增向量维度,以添加 RoPE 的位置信息。
使用了 MLA 的 DeepSeek V2 (总参数量236B,激活参数量21B),和 DeepSeek 67B 相比,模型效果上显著提升,同时节省了42.5%的训练成本,减少了93.3%的 KV Cache,并将最大生成吞吐量提高了5.76倍。
当前主流的采用自回归的大模型都是单 token 预测。即根据当前上文预测下一个最可能的 token。而 MTP 的核心思想是让模型一次性预测多个 token,以提升了模型的训练效率、生成质量和推理速度。
比如现在上文是“今年春节的天气”,传统的单 token 预测模式会逐 token 预测“真的”、“好”、“冷”、“。”;而 MTP 会并行地预测这几个 token 。因此,模型不仅要学习预测下一个 token 的能力,还需要同时具备预测下个token的能力。
这种方式在推理角度的好处显而易见,一次性生成多个 tokens,减少自回归生成的步数,达到推理加速效果。而在训练过程中,MTP 的训练目标函数同时考虑了多个 token 的估计准确性,因此被认为可以捕捉 token 间的依赖关系,从而提升模型效果。
这里将简单介绍 DeepSeek V3 的 MTP 模块,与 Meta 的 MTP 模块[9]相比,DeepSeek 采用了级联式的结构,使用k个串行模块来预测k个token,保留因果语言模型(Causal Language Model)的连接关系,有利于效果的提升,如图4所示:
图4. DeepSeek V3 MTP 模块结构示意图
图中展示了模型用个顺序的模块,预测个 tokens。定义预测深度为的含义为,预测后续第个 token。
首先,在每一个预测深度模块中,都共享了一个嵌入层(embedding layer),即模型除了最后负责最后预测部分的层之外,其他的所有层,用于得到 token 的 embedding。对于输入的第个token,在第个预测深度处,模型将前一个深度的表示与第 的 embedding 拼接,作为新的输入表示。
然后通过一个预测深度专用的 Transformer 模块,生成当前预测深度的输出表示,将用于下一个深度的表示计算,同时用共享的输出层获得 token 预测, 与训练样本中计算损失。
DeepSeek V3 论文中报告了使用 MTP 模块的效果。他们在推理过程中,不使用 MTP 模块,只在训练过程中利用该模块约束模型的优化。实验结果表明,使用 MTP 模块训练,能够提升模型的回复质量,在 MMLU, GSM8K 等公开基准测试指标均有提升。
DeepSeek-V3 模型使用了 FP8 训练,为了增强训练稳定性以及维持训练效果不至于下降太多,作者提出了一种精细的量化策略,另外为了进一步减少MoE训练中的内存和通信开销,作者在FP8中缓存和分发激活值,同时以BF16格式存储低精度优化器状态。在实验中,FP8训练模型与BF16基线相比,相对损失误差始终低于0.25%,在训练随机性范围内是可以接受的。
基于此,DeepSeek-V3 文中提出了一种 FP8 训练的混合精度框架。在这个框架中,大多数计算密集型操作在 FP8 中进行,而一些关键操作则保持其原始数据格式,以平衡训练效率和数值稳定性。为了加速模型训练,主要的核心计算内核(如General Matrix Multiplication,GEMM操作)在 FP8 精度下实现,这些操作接受 FP8 张量作为输入,并生成 BF16 或 FP32 格式的输出。所有与线性操作相关的三个 GEMM(前向传播、激活反向传播和权重反向传播)都在 FP8 中执行,这种设计理论上将计算速度提高了一倍。此外,FP8 权重反向传播 GEMM 允许激活值以 FP8 格式存储,以便在反向传播中使用,从而显著减少了内存消耗。
训练框架在以下组件中保持了原始精度(如BF16或FP32):Embedding 模块、输出头、MoE门控模块、归一化算子和注意力算子等。这些高精度的保留确保了DeepSeek-V3的稳定训练动态。为了进一步保证数值稳定性,作者将模型的主权重、权重梯度和优化器状态均存储在更高的精度中。该混合精度框架示意图可见图5。
图5. DeepSeek V3 混合精度框架(FP8训练)示意图
除了混合精度框架之外,DeepSeek 在 AI Infra 方面做了许多工作,例如还提出了 DualPipe 算法等,提升了模型训练效率。这方面的工作也期待 Infra 团队有更细致的分享。
DeepSeek-V3 是一个在2048 个 NVIDIA H800 GPU 的集群上进行训练得到的超大型MoE架构的大语言模型。它延续了Deepseek MoE、Deepseek V2等模型的一系列创新,进一步提出了MTP,并优化了训练的效率,取得比较好效果的同时,提高了训练的效率,节约了成本。
表5、表6展示了 DeepSeek V3 为人瞩目的训练成本以及开源基准评测效果。
表5. DeepSeek V3 训练成本
Training Costs | Pre-Training | Context Extension | Post-Training | Total |
---|---|---|---|---|
in H800 GPU Hours | 2664K | 119K | 5K | 2788K |
in USD | $5.328M | $0.238M | $0.01M | $5.576M |
表6. DeepSeek V3 与其他 Chat 模型开源基准评测效果
GPT-4是ChatGPT-3.5的迭代升级,在效果和性能上有了显著提升;GPT-4o增加了多模态功能;o1专注于深度推理能力。R1跟o1类似,也是专注于深度推理能力的模型。下表是不同模型的简单对比。
表7. DeepSeek 与 OpenAI 模型对比
模型 | 发布时间 | 特点 | 训练方法 |
---|---|---|---|
GPT-4 | 2024.3 | 通用型语言模型,能够处理多种类型的任务。 | SFT + RL |
GPT-4o | 2024.5 | 最大的特点是多模态能力,能够处理文本、图像、音频等多种输入,并生成相应的输出。能够快速处理请求,适合需要快速反馈的场景。 | SFT + RL |
o1-preview O1 | 2024.9 2024.12 | 优势在于深度推理能力,采用长思维链(Long Cot)方法,能够在处理复杂问题时像人类思考一样将任务分解为多个简单步骤,更高效准确地解决问题。 | SFT + RL |
R1-zero | 2025.1 | 同上 | RL为主 |
R1 | 2025.1 | 同上 | SFT + RL |
K1.5 | 2025.1 | 多模态思考模型,采用long CoT方法训练 | SFT + RL |
o3 | 2025.2 | o1的改进版本 | ? |
CoT指的是一种推理过程,其中模型在生成最终答案之前,先逐步推导出一系列的中间步骤或子目标。这些中间步骤构成了一个“思维链”,最终引导模型得到正确的结果。它模仿人类的推理过程,即人们往往在解决问题时不是直接得出答案,而是通过一系列的思考、分析和推理步骤。
Long-CoT(长思考/慢思考)是CoT的一种扩展形式。 传统的CoT方法通过将复杂问题分解为一系列中间推理步骤来引导模型进行逐步推理。 而Long-CoT则进一步扩展了这种思路,使得思考过程和输出的答案解耦,可以通过更长的上下文和更复杂的推理路径(在思考过程中通过加入问题复述、思考回顾、反思、知识回忆、公式化等思考节点)来增强模型的推理能力。
DeepSeek 公开了他们 R1 的技术细节[5],比如所采用的对话模版,如图6所示。DeepSeek 对社区的贡献还在于,他们提供的 API 展示了模型的思考过程,让从业人员以及使用者能够全方位地了解到 Long-CoT 的特点与作用。图7展示了我使用 DeepSeek 的深度思考以及联网搜索的一个示例,实实在在地感受到了模型的强大。
图6. DeepSeek-R1-Zero 对话模版
img
图7. DeepSeek 使用示例,开启了深度思考与联网搜索
R1与o1、o3的区别除了训练方法,还体现在效果、速度、价格几个方面。在Artificial Analysis给出了具体的评测结果。
在整体的评分上来看,o3-mini 和 DeepSeek R1评分一样,不相上下。
图8. 主流模型Artificial Analysis评测效果-模型回复质量评分
o3-mini模型应该更小,主打低延迟,在输出token推理速度上比DeepSeek R1快10倍,比o1快7倍。
图9. 主流模型Artificial Analysis评测效果-推理速度
从整体价格上,o3-mini的价格已经比DeepSeek-R1价格更低,比o1模型的价格便宜了13倍以上,优化了许多。
图10. 主流模型Artificial Analysis评测效果-价格
DeepSeek R1和R1 Zero模型的突破主要体现在以下几个方面。
DeepSeek R1 和 R1 Zero模型在多个推理基准测试中表现出色。 值得注意的是,DeepSeek-R1-Zero 是第一个公开的研究,验证了 LLM 的推理能力可以完全通过强化学习(Reinforcement Learning,RL)来激励,而不需要 SFT。也表明了强化学习可以促进模型自我进化。这一里程碑式的成就,不仅突显了该模型的创新基础,也为以 RL 为中心的推理 AI 进一步铺平了道路。
表8. DeepSeek-R1-Zero 与 OpenAI o1 模型在推理类开源基准测试中的效果对比
表8截取自 DeepSeek R1 报告,展示了DeepSeek-R1-Zero 与 OpenAI o1 相媲美的效果。
DeepSeek R1 和 R1 Zero 模型采用 Long CoT 方法,能够清晰地展示其推理过程(o1只能展示部分),提高了模型的可解释性。其中给出的思考过程也是一个非常有研究价值的内容,有助于大模型领域的发展。
DeepSeek R1 和 R1 Zero 模型是开源的,开发者和研究人员可以自由地探索、修改和部署它们。 此外,DeepSeek R1 的 API 定价也比 OpenAI o1模型更低,约为其1/10。
DeepSeek R1 和 R1 Zero 模型的主要差异在于训练方法。DeepSeek R1 Zero 仅用强化学习就训练出了一个效果接近OpenAI-o1-0912的推理模型。发现了通过设定基于规则的 Reward 模型(要求保证答案和格式的准确性),能够在强化学习的训练过程中不断进化,出现了“aha moment”顿悟时刻以及最终取得了出色的模型效果。
DeepSeek R1 Zero 的表现令人惊叹,我们也相信这套方案还有潜力可以挖掘。不过现阶段,R1 Zero的回复会出现可读性差或语言混杂的情况。因此,DeepSeek 基于R1 Zero的成果,设计了一个多阶段的训练策略并且添加了许多高质量 SFT 数据。在这样的“人工干预”下,训练出了一个效果更优的模型 DeepSeek R1。
R1系列模型的训练流程如图11所示:
图11. DeepSeek-R1-Zero,DeepSeek-R1 与 DeepSeek-R1-Distill 模型训练流程框图
R1-Zero 的特别之处在于,它无需经过 SFT 训练集进行训练就能够在推理任务中表现出色。它的训练过程直接从一个预训练的基础模型(DeepSeek V3 Base)开始,通过强化学习训练完成。具体地:
DeepSeek-R1-Zero 展示出了自我进化能力,随着强化学习训练进程的深入,模型的思考时间在增加,并自发出现了诸如反思,模型重新审视和重新评估其先前步骤以及探索解决问题的替代方法等更加复杂的行为。
图12. DeepSeek-R1-Zero平均回复长度随训练迭代步数的关系曲线
图12展示了 DeepSeek-R1-Zero 在训练过程中的平均回复长度,说明了随着训练进行,模型在解答推理类问题时,花了更多的时间去思考,以提高回答准确率。
在DeepSeek-R1-Zero的训练过程中出现了Aha Moment(顿悟时刻),代表RL有可能在人工系统中解锁新的智能水平,为未来更加自主和自适应的模型铺平道路。
本文系作者在时代Java发表,未经许可,不得转载。
如有侵权,请联系nowjava@qq.com删除。