deepseek(1)——deepseek 整体架构

deepseek 最新的主要是两个模型:

  • 通用多模态大模型 deepseek-v3,671B,通用模型,用于常见日常问题
  • 推理模型 deepseek-r1,671B,推理模型,擅长处理复杂、需要多步思考的问题,适合做深度研究、解决代码/数学问题

DeepSeek-R1 是首个验证了仅通过 RL(强化学习)无需 SFT (监督微调) 就能得到大幅推理能力增强和涌现的模型。这种训练方式大幅降低了数据标注成本,简化了训练流程,整体训练成本也得到了降低。

deepseek 的特点:

  • 在DeepSeek-R1 之前,模型较为普遍训练路线是 SFT 结合 RL(监督微调结合强化学习),而 DeepSeek 在本次发布中首次在实验里验证了仅通过 RL 也能带来能力提升。
  • 多头潜在注意力机制(Multi-Head Latent Attention),这能够显著降低推理阶段的成本、提高效率。

1 deepseek MOE 架构

deepseek(1)——deepseek 整体架构_第1张图片

上图展示了 deepseek 从传统的 MoE 模型架构(a)的基础上,做的两部分改进(b)与(c):

  • 传统的 MOE 模块(a):MOE 模块包含 N N N 个前馈神经网络(FFN)专家,根据输入数据的特征动态选择最合适的 K K K 个专家进行处理,而不是激活所有专家。所有专家的参数总和构成了整个 MoE 模块的参数量,在前向计算过程中,只激活了部分专家,实际参与计算的参数量被称为激活参数量。激活参数量小于 MOE 模块参数量。例如,Mixtral 8*7B 模型包含8个专家,每次选择其中的2个专家进行计算,模型的总参数量为46.7B,而激活参数量为12.9B。
  • 细粒度专家划分(b):deepseek 把传统 MOE 的 N N N 个专家做更细粒度的划分,降低每一个专家的参数量,增大专家数量。将 N N N 个专家拆分成 m N mN mN 个专家,每一个专家的隐层维度变成原来的 1 m \frac{1}{m} m1 相应的每次会激活 m K mK mK 专家。这样一来,MOE 模块的参数量和激活参数量保持不变,但是对于专家的组合可以更加灵活。
  • 共享专家分离(c):把激活专家分为共享专家(Shared Experts)和路由专家(Routed Experts),共享专家和路由专家在数据处理流程上有显著的区别。对于共享专家,输入数据无需经过路由模块的计算,所有数据都会直接通过共享专家进行处理;对于路由专家,输入数据会先经过路由模块,该模块根据输入数据的特征选择最合适的专家进行计算。路由模块通过计算输入数据与各个专家的匹配概率,选择概率最高的专家进行处理。最终,将路由专家和共享专家的计算结果相加,形成 MoE 模块的最终输出。这种方式,能够在处理不同的输入数据时,既能捕捉到输入数据的共性,又能关注到输入数据的差异性。这种设计能够提高模型的泛化能力和适应性。

此外,deepseek-v3 针对 MoE 中常见的负载不均衡问题,提出了一种新的负载均衡策略。在用于选择专家的 Gate 模块中引入了一个可学习的偏置项。在计算路由得分时,这个偏置项会被动态地加到每个路由专家的得分上:

  • 动态调整路由倾向: 通过学习偏置项,模型可以动态地调整对不同路由专家的偏好。如果某个专家的负载过重,其对应的偏置项可能会被学习为负值,从而降低其被选择的概率。反之,对于负载较轻的专家,其偏置项可能会被学习为正值,提高其被选择的概率。
  • 无额外损耗: 该偏置项是直接通过模型的训练目标进行优化的,而不是通过一个独立的负载均衡损失函数。这意味着,模型在努力提高主要任务性能的同时,也会自然而然地学习到一种更均衡的路由策略,而不会因为额外的负载均衡损失而影响性能。

deepseek-v3 参数:

  • 共享专家 1 个,路由专家 256 个(总共 257 个专家),激活专家 8 个(每 token 专家数为 9 个(1 个共享 + 8 个激活))
  • 总参数量:671B;激活参数量 37B(5.5%)

2 群体相对策略优化(Group Relative Policy Optimization,GRPO)

大模型训练大体可以分为3种模式,预训练(Pretraining),有监督精调(Supervised Fine-Tuning, SFT),基于人类反馈的强化学习(Reinforcement Learning from Human Feedback, RLHF)。其中,SFT 让模型通过学习训练数据数据分布的方式来提高模型在特定任务或指令上的表现,RLHF使用人类反馈来定义奖励函数,然后通过强化学习算法优化模型。让模型能生成符合人类喜好的回复。

主流的 RLHF 算法有 PPO(Proximal Policy Optimization)、DPO(Direct Preference Optimization)以及 GRPO 等。

GRPO可以算作是PPO的计算效率优化版本,在保持效果的同时,降低计算资源消耗。

在强化学习领域,PPO 算法被广泛认为是强化学习中的基准算法之一。PPO 采用了 Actor-Critic 架构,这一架构可以形象地理解为:有一个演员(actor)在舞台上表演,而一个评论家(critic)在台下观看。演员的目标是通过不断调整自己的表演行为来获得观众的认可,并从观众那里获得及时反馈。而评论家的任务则是评估演员的表演,并提供全面的建议。

在自然语言处理(NLP)生成模型的场景中,被训练的模型相当于演员,其表演即为生成的回复。相应地,会有评论家和观众模型来评价回复的质量。具体来说,PPO使用了四个模型:

  • Policy 模型(又称 Actor):输入一段上文,输出下一个 token 的概率分布。该模型需要训练,是我们最终得到的模型。输出下一个 token 即为 Policy 模型的行为

  • Value 模型(又称 Critic):用于预估当前模型回复的总收益。该总收益不仅局限于当前 token 的质量,还需要衡量当前 token 对后续文本生成的影响。该模型需要训练

  • Reward 模型:事先用偏好数据进行训练,用于对 Policy 模型的预测进行打分,评估模型对于当前输出的即时收益。

  • Reference 模型:与 Policy 模型相同,但在训练过程中不进行优化更新,用于维持模型在训练中的表现,防止在更新过程中出现过大偏差。

Value 模型由于考虑的是整体的总收益,会考虑当前 token 对于后续 token 生成的影响,因此会更加偏向对未来收益的青睐;reward 模型考虑的是当前的即时收益,因此更偏向于仅仅考虑当前的收益。

PPO 在大模型的 RLHF 阶段被成功应用,不断提升模型回复表现的上限。PPO 在计算成本和训练稳定性方面仍然存在一定的挑战。GRPO 算法对此进行了优化,其核心目标是去除 Value 模型,以此来减少训练的计算资源

deepseek(1)——deepseek 整体架构_第2张图片

上图展示了 GRPO 相对于 PPO 的改进。

传统的 PPO 使用 Value 模型来估计模型回复的总收益,这实际上是对未来模型回复各种可能性的一个平均分值估计;GRPO 的方法通过大模型根据当前的上文输入进行多次采样,生成多个预测结果 o i o_{i} oi,并分别使用 Reward 模型对这些预测结果进行评分得到 r i r_{i} ri,最后取这些评分的平均值来替代 Value 模型的预期总收益估计。

通过这种方式,GRPO 在训练过程中可以减少一个模型的前向和反向传播计算,从而降低计算资源的消耗

2.1 SFT 以及主流的一些强化学习方法
  • 监督微调(STF):在标注的SFT数据上对预训练模型进行微调。
  • 直接偏好优化(DPO):DPO依赖于理论上的偏好模型,如Bradley-Terry模型,来测量奖励函数与经验偏好数据的对齐程度。它直接根据策略定义偏好损失,无需在训练过程中明确学习 Reward 模型。
  • 近端策略优化(PPO):PPO算法采用Actor-Critic架构,需要 Policy 模型、Value 模型、 Reward 模型、 Reference 模型。使用 Value 模型评估模型的预期总收益(模型回复的好坏)。
  • 群体相对策略优化(GRPO):GRPO算法采用Actor-Critic架构,需要 Reward 模型、Reference 模型,但是删掉了 Value 模型。不使用 Value 模型,而是使用一组 LLM 生成的针对同一上文输入的多次采样结果来做预期总收益的估计。

3 多头隐式注意力(Multi-Head Latent Attention,MLA)

在标准的 Transformer 模型中,多头注意力(Multi-Head Attention, MHA)机制通过并行计算多个注意力头来捕捉输入序列中的不同特征。每个注意力头都有自己的查询(Query, Q)、键(Key, K)和值(Value, V)矩阵。对于序列中的每一个 token,都需要计算各自的 QKV,进而计算注意力。在推理过程中,大模型所采用的 token by token 递归生成方式,上文 token 的 KV 计算不会受到后续生成 token 的影响,因此可以缓存下来,避免重复计算,提高推理效率,这就是 KV cache 的由来。即,当生成第 t + 1 t+1 t+1 个 token 时,可以利用之前事先算好的上文 t t t 个 token 的 KV 值。同样地, t + 1 t+1 t+1 位置 token 的 KV 值计算出来后也将保存在 KV cache 中。

目前大模型对于注意力机制做的一些改进,包括 MQA (Multi-Query Attention)、GQA (Group Query Attention)都是为了想方设法减少 KV Cache。

DeepSeek 提出的 MLA 的出发点也是如此。减少 KV Cache 就可以实现在更少的设备上推理更长的 Context,或者在相同的 Context 长度下让推理的 batch size 更大,从而实现更快的推理速度或者更大的吞吐总量。从而达到降低推理成本的目的。

deepseek(1)——deepseek 整体架构_第3张图片

如上图所示,MQA 与 GQA 的办法是通过共享 K,V 的注意力头,降低 KV Cache的数据维度。

MLA 的办法本质上是对原本 MHA 的 KV Cache 作低秩分解,得到一个低维的隐向量(Latent Vector)。在推理阶段,MLA 只需要缓存该隐向量,由此大大降低需要缓存的数据量

对于某一层某一个 token 的表征 h t h_t ht , MLA 通过降维映射矩阵(down-projection matrix) W D K V W^{DKV} WDKV 得到对 K K K, V V V 压缩后的隐向量:

c t K V = W D K V h t c_t^{KV} = W^{DKV} h_t ctKV=WDKVht

在前向过程中,需要对此隐向量进行升维还原,即:

[ k t , 1 C ; k t , 2 C ; ⋯   ; k t , n h C ] = k t C = W U K c t K V [k_{t, 1} ^{C}; k_{t, 2} ^{C}; \cdots; k_{t, n_h} ^{C}] = k_t^C = W^{UK}c^{KV}_t [kt,1C;kt,2C;;kt,nhC]=ktC=WUKctKV

[ v t , 1 C ; v t , 2 C ; ⋯   ; v t , n h C ] = v t c = W U V c t K V [v_{t, 1} ^{C}; v_{t, 2} ^{C}; \cdots; v_{t, n_h} ^{C}] = v_t^c = W^{UV}c_t^{KV} [vt,1C;vt,2C;;vt,nhC]=vtc=WUVctKV

k t R = R o P E ( W K R h t ) k t , i = [ k t , i C ; k t R ] k_t^R = RoPE(W^{KR}h_t) \\ k_{t, i} = [k_{t, i}^C; k_t^R] ktR=RoPE(WKRht)kt,i=[kt,iC;ktR]

其中, W U K W^{UK} WUK W U V W^{UV} WUV 是对应的升维映射矩阵(up-projection matrix), 可以直接得到 h t h_t ht 对应的 K K K V V V 向量: k t C {k}^{C}_{t} ktC v t C {v}^{C}_{t} vtC

MLA 利用低秩分解的办法,通过增加少量的模型参数变量(降维映射矩阵与升维映射矩阵),引入低维隐向量 k t C {k}^{C}_{t} ktC 和 $ v t C {v}^{C}_{t} vtC 作为 KV Cache,降低 KV Cache 所带来的显存压力,降低推理成本。

此外,DeepSeek 还将 Query 也进行了低秩分解,能够在训练过程中降低显存占用,提高训练资源利用率。

上面的方案还会影响位置编码 RoPE(Rotary Position Embedding),因此需要针对 RoPE 进行处理。

如果在隐向量 h t h_{t} ht 中包含 RoPE,经过升降维操作后,会对位置信息造成破坏。为了解决这个问题,MLA(Multi-Head Linear Attention)提出了解耦RoPE的方法。

对于隐向量 c t K V {c}^{KV}_{t} ctKV,不将位置编码包含在其中,而是专门为注意力头的 Query 和 Key 新增向量维度,以添加 RoPE 的位置信息。

4 多令牌预测(Multi-Token Prediction,MTP)

当前主流的自回归的大模型都是单 token 预测,根据当前上下文预测下一个最可能的 token。MTP 的核心思想是让模型一次性预测多个 token,以提升了模型的训练效率、生成质量和推理速度。

比如现在上文是“今年春节的天气”,传统的单 token 预测模式会逐 token 预测“真的”、“好”、“冷”、“。”;而 MTP 会并行地预测这几个 token 。因此,模型不仅要学习预测下一个 token 的能力,还需要同时具备预测下 n n n 个token的能力。

一次性生成多个 tokens,减少自回归生成的步数,达到推理加速效果。在训练过程中,MTP 的训练目标函数同时考虑了多个 token 的估计准确性,被认为可以捕捉 token 间的依赖关系,从而提升模型效果。

DeepSeek V3 的 MTP 模块,与 Meta 的 MTP 模块相比,DeepSeek 采用了级联式的结构,使用 k 个串行模块来预测 k 个 token,保留因果语言模型(Causal Language Model)的连接关系,有利于效果的提升:

deepseek(1)——deepseek 整体架构_第4张图片

模型用 D D D 个顺序的模块,预测 D D D 个 tokens。定义预测深度为 k k k 的含义为,预测后续第 k k k 个 token。

首先,在每一个预测深度模块中,都共享了一个嵌入层(embedding layer),这个共享的嵌入层在模型中除了最后负责最后预测部分的层之外,其他的所有用于得到 token 的 embedding 都是共享这个嵌入层。对于输入的第 i i i 个 token,在第 k k k 个预测深度处,模型将前一个深度的表示与第 i + k − 1 i+k-1 i+k1 的 embedding 拼接,作为新的输入表示。

然后通过一个预测深度 k k k 专用的 Transformer 模块,生成当前预测深度的输出表示,将用于下一个深度的表示计算,同时用共享的输出层获得 token 预测, 与训练样本中 i + k i+k i+k 计算损失。

DeepSeek V3 论文中报告了使用 MTP 模块的效果。他们在推理过程中,不使用 MTP 模块,只在训练过程中利用该模块约束模型的优化。实验结果表明,使用 MTP 模块训练,能够提升模型的回复质量,在 MMLU, GSM8K 等公开基准测试指标均有提升。

5 混合精度框架

DeepSeek-V3 模型使用了 FP8 训练,为了增强训练稳定性以及维持训练效果不至于下降太多,作者提出了一种精细的量化策略,另外为了进一步减少 MoE 训练中的内存和通信开销,使用 FP8 缓存和分发激活值,以 FP16 存储优化器状态。在实验中,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(1)——deepseek 整体架构_第5张图片

除了混合精度框架之外,DeepSeek 在 AI Infra 方面做了许多工作,例如还提出了 DualPipe 算法等,提升了模型训练效率。

6 CoT 与 Long CoT

GPT-4 是 ChatGPT-3.5 的迭代升级,在效果和性能上有了显著提升;GPT-4o 增加了多模态功能;o1 专注于深度推理能力。R1 跟 o1 类似,也是专注于深度推理能力的模型。

CoT 指的是一种推理过程,其中模型在生成最终答案之前,先逐步推导出一系列的中间步骤或子目标。这些中间步骤构成了一个思维链,最终引导模型得到正确的结果。它模仿人类的推理过程,即人们往往在解决问题时不是直接得出答案,而是通过一系列的思考、分析和推理步骤。

Long-CoT(长思考/慢思考)是 CoT 的一种扩展形式。传统的 CoT 方法通过将复杂问题分解为一系列中间推理步骤来引导模型进行逐步推理。Long-CoT 使得思考过程和输出的答案解耦,可以通过更长的上下文和更复杂的推理路径(在思考过程中通过加入问题复述、思考回顾、反思、知识回忆、公式化等思考节点)来增强模型的推理能力。

7 DeepSeek R1 和 R1 Zero

DeepSeek-R1-Zero 是第一个公开的研究,验证了 LLM 的推理能力可以完全通过强化学习(Reinforcement Learning,RL)来激励,而不需要 SFT。也表明了强化学习可以促进模型自我进化。

DeepSeek R1 和 R1 Zero 模型采用 Long CoT 方法,能够清晰地展示其推理过程,提高了模型的可解释性。

DeepSeek R1 和 R1 Zero 模型的主要差异在于训练方法。

DeepSeek R1 Zero 仅用强化学习就训练出了一个效果接近 OpenAI-o1-0912 的推理模型。发现了通过设定基于规则的 Reward 模型(要求保证答案和格式的准确性),能够在强化学习的训练过程中不断进化,出现了aha moment顿悟时刻以及最终取得了出色的模型效果。

R1 Zero的回复会出现可读性差或语言混杂的情况。DeepSeek 基于 R1 Zero 的成果,设计了一个多阶段的训练策略并且添加了许多高质量 SFT 数据。在这样的人工干预下,训练出了一个效果更优的模型 DeepSeek R1。

R1 系列模型的训练流程:

deepseek(1)——deepseek 整体架构_第6张图片

7.1 R1 ZERO

R1-Zero 的特别之处在于,它无需经过 SFT 训练集进行训练就能够在推理任务中表现出色。它的训练过程直接从一个预训练的基础模型(DeepSeek V3 Base)开始,通过强化学习训练完成。

  • 采用群体相对策略优化(GRPO),节省 RL 的训练成本。
  • 在 RL 训练过程中,采用 Rule-based 奖励,主要由两种奖励构成:
    • a) Accuracy rewards:评估模型的输出是否正确;
    • b) Format rewards:强制模型将其思考过程置于指定的 < t h i n k > <think> < / t h i n k > </think> 之间。
  • 设计训练模版,指导基模型在训练过程中遵守设定的指令

随着训练进行,模型在解答推理类问题时,花更多的时间去思考,以提高回答准确率。

在 DeepSeek-R1-Zero 的训练过程中出现了 Aha Moment(顿悟时刻),代表 RL 有可能在人工系统中解锁新的智能水平,为未来更加自主和自适应的模型铺平道路。

deepseek(1)——deepseek 整体架构_第7张图片

7.2 R1

训练过程分成四个阶段:

deepseek(1)——deepseek 整体架构_第8张图片

  • 冷启动:为了避免 RL 训练从基础模型开始的早期不稳定冷启动阶段,构建并收集少量长的 CoT 数据来微调 DeepSeek-V3-Base 作为 RL 的起点。

  • 推理导向的强化学习:在冷启动数据上微调 DeepSeek-V3-Base 后,应用与 DeepSeek-R1-Zero 中相同的 RL 方法训练。本阶段侧重于增强模型的推理能力,尤其是在编码、数学、科学和逻辑推理等推理密集型任务中,这些任务涉及具有明确解决方案的明确定义的问题。当 RL 提示涉及多种语言时,CoT 经常表现出语言混合现象。为了减轻语言混合问题,在 RL 训练过程中引入了一种语言一致性奖励

  • 拒绝抽样和监督微调:当 2 中的 RL 过程趋于收敛时,利用训练出的临时模型生产用于下一轮训练的 SFT 数据(600K推理数据)。与 1 中的冷启动数据区别在于,此阶段既包含用于推理能力提升的 600k 数据,也包含 200k 推理无关的数据。使用这 800k 样本的精选数据集对 DeepSeek-V3-Base 进行了两个 epoch 的微调。

  • 适用于全场景的强化学习:在 3 中微调模型的基础上,使用全场景的强化学习数据提升模型回复的有用性和无害性。对于推理数据,遵循 DeepSeek-R1-Zero 的方法,利用基于规则的奖励来指导数学、代码和逻辑推理领域的学习过程。对于一般数据,采用基于模型的奖励来捕捉复杂和细微场景中的人类偏好。

通过上述精细的多阶段训练,DeepSeek R1 最终得以呈现,达到了 OpenAI-o1-1217 的水平。

8 将 R1 推理能力蒸馏到小的稠密模型中

为了使参数规模较小的模型也能具备像 DeepSeek-R1 这样的推理能力,首先通过 DeepSeek-R1 推理得到的 800k 个样本。然后对 6 个不同参数量的开源模型进行直接有监督微调。这种方式也就是直接的数据蒸馏。R1 论文中表明了,通过这种方法就能够显著增强小参数规模模型的推理能力。同时也反映了 R1 模型的价值,它能够用于激发绝大多数模型的推理能力。

deepseek(1)——deepseek 整体架构_第9张图片

这相当于告诉了我们一个简单直接的模型效果优化手段,就是从 R1 模型构造数据,然后 SFT!

你可能感兴趣的:(学习笔记,深度学习,大模型,deepseek,LLM,大模型)