部署DeepSeek模型,进群交流最in玩法!
立即加群
发布
社区首页 >专栏 >PPT汇总:DeepSeek核心技术前世今生

PPT汇总:DeepSeek核心技术前世今生

作者头像
腾讯云开发者
发布2025-03-06 21:33:00
发布2025-03-06 21:33:00
10
举报

01

DeepSeek 系列汇总

笔者梳理了 DeepSeek 系列比较核心的几篇论文和相关技术创新如上图。

  • DeepSeek LLM:初代模型,基本参考 LLaMA 架构。微设计上,采用 Pre-Norm 结构和 RMSNorm 函数,使用 SwiGLU 作为前馈网络的激活函数。宏设计上,DeepSeek LLM 7B 有30层,而 67B 有95层,以优化训练和推理。其中 67B 模型使用 Grouped-Query Attention(GQA)以优化推理成本。核心创新总结:提出了超参数的扩展定律;使用多步学习率调度器替换余弦学习率调度器。
  • DeepSeekMoE:提出 DeepSeekMOE 关键架构。在总参数和激活参数数量相同的情况下,DeepSeekMoE 表现出优于 GShard 的压倒性优势,实现了与 GShard×1.5 相当的性能。核心创新总结:在 MOE 架构中,将专家模块划分更细(V3用了256个),同时设置共享专家(通常很少就够(V3用了1个))来学习公共的知识。
  • DeepSeek-Math:提出关键的组相对策略优化(GRPO)算法,使强化学习(RL)训练更变得稳定!核心创新总结:在 PPO 算法的基础上,通过组分数基线简化价值函数。
    • 论文翻译版本见:待分享
  • DeepSeek-V2:提出多头潜在注意力机制,大幅减少推理时的 KV 缓存,将每次查询所需的 KV 缓存减少了约 93.3%。核心创新总结:通过低秩键值联合压缩,将键值对压缩为潜在向量,大幅减少推理时的 KV 缓存,同时采用解耦旋转位置嵌入(RoPE)策略解决与低秩 KV 压缩的兼容性问题,在保证性能的同时提升推理效率。
  • DeepSeek-V3:MLA+DeepSeekMOE+GRPO+无辅助损失负载平衡+MTP 等,用极低资源创造极高效能。1/10 llama-70B 的训练成本,1/30 openai 的推理价格核心创新总结:1)使用多 token 预测机制(Multi-Token Prediction, MTP):创新性地采用了 MTP 目标,将预测范围扩展到每个位置的多个后续 token。2)训练优化创新:FP8 混合精度训练框架+高效训练框架设计( DualPipe 算法+高效的跨节点全对全通信内核)
    • 论文翻译版本见:待分享
  • DeepSeek-R1:在 RL 激发推理能力赛道中开源的顶流,使用更少资源超越了01性能。核心创新总结:1)开创纯强化学习训练:使用 GRPO 进行低成本训练,采用基于规则的奖励系统,包括准确性奖励和格式奖励,引导模型提升推理能力;2)RL 前增加少样本 SFT 效果更加。

02

DeepSeek 核心技术

因为本文是小白方式,尽可能讲解思路为主,所以技术上涉及到的公式部分不会细讲哦。公式部分如有时间会单开文章细细讲解。

DeepSeekMoE 架构,有效降低训练成本

传统的大语言模型结构中,处理序列的 token 的时候,需要经过模型层里面的所有参数(神经元),每个神经元都持续在工作。这导致模型规模越大的时候,计算耗费更大,也更慢。既想提升模型能力,又得控制住那 “烧钱” 的计算成本。混合专家模型的稀疏化策略就诞生了:每个 token 会经过某 n 个小专家(由路由决定,如一共 m 个 FFN 那么有 m-n 处于空闲)。

传统的混合专家模型(MoE)将传统 Transformer 模型中的每个前馈网络 (FFN) 层替换为 MoE 层(稀疏),其中 MoE 层由两个核心部分组成: 一个门控网络和若干数量的专家(如下图所示)。

  • 门控网络(也叫路由):决定 token 分发到哪个(或多个)专家模块中。
  • MoE 层(稀疏):包含了多个专家,每个专家通常是一个 FFN 层,也可以是 MoE 等更复杂的网络结构。

前馈神经网络到混合专家的公式对比如右图所示,传统的 Transformer 模型是堆叠层来构建的,每个块的计算如图右上角所示。

混合专家是可以将其中某些层替换为 MoE 层,层中可以看到每个专家隐藏层计算通常还是 FFN,然后 g 是路由,负责选择激活哪些专家(1标识被激活)。

但传统的 MoE 架构也有自己的 “小烦恼”。就好比让一群专家干活,结果发现他们掌握的知识有好多重叠的地方(知识冗余),而且每个专家手里的活儿太杂,啥都得管,导致专业性大打折扣(知识混合) 。从仿生学的角度,人脑是一个稀疏的结果,不同区域负责不同的功能,是一种非常典型的分工系统。

浅显理解 DeepseekMoE

DeepSeekMoE 架构的改进点和改进动机如下:

动机:

  1. 细粒度专家细分:每个 token 若路由到更多的专家,可以利用更多专家的指示——在相同计算成本下把大专家继续划分为小专家(类比把职业划分更细,专精能力提升,而且工种划分细了互相协作交叉的可能性也更多。那么对模型来说,表达能力更强)。打个比方,以前是一个全科医生看所有病,现在变成了各个专科医生,分工明确,自然能提供更专业的诊断。
  2. 共享专家隔离:不同工种之间也存在一些共识的知识,让这种知识共享,腾出空间学习更多的其他知识,避免知识冗余。那么设置几个始终作为必须要使用的专家(这样它学习的就更多是共享的知识)。这就好比公司里有个资料共享库,大家需要什么通用资料直接去库里找,不用各自去收集,节省了时间和精力。
  3. 负载均衡考虑:模型可能会出现总是选择少数专家(它可能非常积极学习,但这样有问题!毕竟对于模型里面的模块而言,他们使用的资源应该是一样的,怎么能不让其他的有一样的产出呢),从而让其他专家缺少锻炼的机会;专家在不同设备的话,然后你又老是用其中几个,负载不平衡会加剧计算瓶颈(总是调度那几个专家在的设备,那其他设备就闲置了)怎么解决呢?设置 loss 狠狠惩罚这些情况就好了,所以文章提出了专家级和设备级平衡损失两个 loss。

实验结果:

  1. 从 2B 参数的模型开始,DeepSeekMoE 2B 就表现得超出色,性能远超同参数的 GShard 2B,甚至能和比它大不少的 GShard 2.9B 打个平手。
  2. DeepSeekMoE 16B 依旧表现亮眼。和同样厉害的 LLaMA2 7B 相比,它只用了大约 40% 的计算量,就能达到相当的性能。
  3. DeepSeekMoE 145B 和同规模的 GShard 相比,优势特别明显,用更少的计算量就能达到和 DeepSeek 67B 相当的性能。

组相对策略优化(GRPO),让模型训练稳定

目的是为了提升 RL 训练的稳定性和效率。

GRPO(Group Relative Policy Optimization,组相对策略优化)是一种强化学习中的策略优化方法,旨在通过分组相对比较改进策略更新的稳定性和效率。

核心思想:通过组内输出的相对奖励优化模型策略,而非依赖传统强化学习中的额外批评模型(Critic Model)的绝对奖励值,从而更鲁棒地指导策略更新,同时显著降低训练成本并提升效率。

要点1: 组内相对奖励机制:通过同一问题下生成的多个候选输出(组)之间的相对表现来优化模型。具体流程包括:

  • 采样输出组:针对每个输入问题,模型生成一组不同输出,视为对同一问题的多角度尝试。
  • 计算组内奖励:根据预设规则(如答案正确性、推理格式)对每个输出评分,再通过归一化处理得到相对优势值,反映输出在组内的优劣。
  • 优化策略:基于相对优势调整模型参数,使高奖励输出更易生成,同时通过KL散度约束防止策略偏离旧版本过远,保持训练稳定性。

要点2: 无需价值网络(Crtic Model):与传统 PPO 不同,GRPO 省去了价值网络(Critic Model)的训练,仅需维护策略网络(Actor Model),从而减少显存占用和计算成本。

多头潜在注意力(Multi-Head Latent Attention,MLA),减少推理的 KV 缓存

Multi-Head Latent Attention 简称 MLA,还是解决的性能问题。通过降低 KV 缓存来提升推理性能。

这个没有前序知识是有点难以理解的,粗略按自己知识理解是自回归模型生成时,是一个个 token 生成的,同时需要拿到前面所有 token 来计算下一个 token。通常为了性能考虑,肯定会采用增量解码策略,那这样就需要缓存前面 token 的过程。为了更深入的理解避免自己仅是猜想,也为为什么是 KV 存储,笔者去搜寻了下 KV 缓存的背景。

该小节以下内容参考借鉴:https://zhuanlan.zhihu.com/p/16730036197

LLM 推理过程分为 prefill 阶段和 decode 阶段:前者是对所有的 tokens 进行一次性并行计算得到一个第输出的 token;后者是每次生成一个 token,知道生成end-of-sequence(EOS)token 为止。

前面也有提到,大模型的结构是堆叠了很多的 transformer 层得到的,计算的主要小号就出现在 transformer 层中(Multi-Head Attention(MHA)——注意力计算,FFN 等操作)。MHA 是传统的注意力架构,有基础的朋友们应该知道要计算 Q,K,V 矩阵来进行多头注意力的计算。

MHA 左边的公式中,t 表示计算序列中第 t 个 token;q,k,v,o 中的两个下标,前一个表示 token 位置,后一个表示对应的 Head 下标。

从公式

中可以看到,在计算 Attention 时,t 位置的 q 只与 t 位置前的 k,v 做计算,所以我们有如下两个结论:

  1. 计算前面的 k,v 不受后面 token 的影响。
  2. 计算 t + 1, t + 2, … , t + n 位置的 Attention,要使用前序的 1 → t 位置的 k,v 的值是始终不变的。

所以可以避免计算重复的 K,V,可以把这部分计算好的内容缓存起来。

初步的解决方案是 MQA 和 GQA 类的让部分查询 Q 共享 KV。MQA 方法比较简单,每一层的所有 Head,共享同一个 k,v 来计算 Attention。相对于 MHA 的单个 Token 需要保存的 KV 数(2 * l * nh)减少到了(2 * l)个,即每一层共享使用一个 k 向量和一个 v 向量。

GQA 是平衡了 MQA 和 MHA 的折中方案,设置分组,每组头共享 K,V。对所有 Head 分组,比如分组数为 g,那么每组:nh / g 个 Head 共享一个 KV。当 g = 1 时,GQA 就等价于 MQA,当 g = nh 时,GQA 就等价于 MHA。

而 MLA 相比 MQA 和 GQA 共享 KV 来说,是另一种思路的解决方案,压缩 KV 向量。

其中只缓存蓝色部分;在推理的时候 MLA 经过压缩向量之后极大减少了计算。

多 token 预测机制(Multi-Token Prediction, MTP)

MTP 的提出背景是为了降低计算性能的同时提升模型推理能力。

主流的大模型训练的时候是使用 next-token prediction 作为训练目标,但显然会存在一些问题,例如:

  1. 训练效率低:需要大量数据才能达到较好效果。
  2. 局部模式学习:倾向捕捉局部模式,缺乏长依赖关系和全局语义学习。
  3. 推理速度低下:需要逐个生成 token,推理速度慢。

有研究改进为同时预测多个未来的 token,这里可以类比人类在思考的时候可能也会考虑多个词之间的关系。

  1. 数据效率和准确率提升:增加训练信号的密度可能提高数据利用效率;其次,它使模型能够提前规划表征,从而更准确地预测后续 token。
  2. 全局视角:相比单个 token 预测而言,能更好把握上下文关系。
  3. 并行预测:允许并行预测多 tokens。

一个可能有用的结论是:multi-token prediction 在代码任务中的评测结果显著好于 next-token prediction。

DualPipe

问题:在 DeepSeek-V3 中,跨节点专家并行机制引入了显著的通信开销,导致计算与通信比例接近1:1,影响了训练效率。解决该效率问题。

解决思路:

有效融合前向和后向计算的通信阶段,同时减少流水线阻塞。训练过程有前向传递和反向传递。

优化方法:1)双流并行:指的是计算流和通信流,双流并行即在大模型训练的反向传递阶段,将原本存在先后顺序的更新当前层权重(即 MLP_B)和将梯度继续传递到前一层(即 MLP_W)这两个操作,拆分成两个独立且并行的流,同时通过细致的设计,让训练的 barrier 刚好停在两个流任务完成的时候,而不需要通信流或者是计算流进行等待,提高计算效率。2)双向流水线调度:从流水线两端同时输入微批次数据,使得大部分通信过程能够与计算过程完全重叠。

FP8 训练

问题:尽管低精度训练技术展现出巨大潜力,但其实际应用常受到激活值、权重和梯度中异常值的制约。虽然推理量化技术取得重要突破,但在大规模语言模型预训练中成功应用低精度技术的案例仍然有限。DeepSeek 探索细粒度混合精度框架。

解决思路:

  1. 混合精度训练框架 大部分计算密集型操作采用 FP8 执行,而关键操作则保持原有数据格式,以实现训练效率和数值稳定性的最优平衡。
    1. 保持原有精度(BF16 或 FP32):向量层、输出层、MoE 门控模块、标准化运算和注意力运算模块。
    2. 采用 FP8 执行:线性运算相关的三个 GEMM 操作,包括 Fprop(前向传播)、Dgrad(激活值反向传播)和 Wgrad(权重反向传播)。
  2. 量化和乘法精度优化 提升低精度训练的准确性,主要从量化方法和乘法计算两个方面进行优化。
  3. 细粒度量化技术: FP8 格式的指数位较少导致其动态范围受限,经常出现数值溢出和下溢的问题。->如图2(a)所示,该方法采用两种不同的分组策略:
    1. 激活值采用 1x128 条状分组和缩放(每个 token 的每 128 个通道)
    2. 权重采用 128x128 块状分组和缩放(每 128 个输入通道对应 128 个输出通道)
  4. 累积精度优化:低精度 GEMM 运算常见的下溢问题主要通过高精度累积来解决,通常采用 FP32 精度。-> CUDA Cores 提升策略来获得更高的计算精度。如图2(b)所示,在 Tensor Cores 执行 MMA(矩阵乘法累加)时,中间结果先使用有限位宽累加。

上述两部分 PPT 可能不太专业,是摘录的论文内容,大家自行查阅或者去网上搜索更多解读哦。

03

DeepSeek-V3/R1 核心问题

DeepSeek-V3/R1 为什么这么便宜好用?

笔者重点总结一下算法侧的原因,工程侧的一些优化因能力有限仅做论文的总结(建议查看原文或者阅读更专业的解读)。

大概如右图所示。

  1. 基础模型架构-算法优化:
    1. 多头潜在注意力(Multi-Head Latent Attention,MLA) :不同于 GQA 的优化策略,MLA 从低秩分解入手:对 key 和 values 进行低秩分解,进行联合压缩,降低 KV 缓存。
    2. 混合专家 (Mixed Of Experts, MOE)结构:稀释激活机制;通过细粒度专家分割和共享专家隔离 降低模型训练成本的同时,保证模型的性能(在扩充参数的同时还能控制计算成本)。
    3. 多 token 预测(Multi-token Prediction, MTP) :在模型训练时候一次性预测多个未来的 token。
    4. 无辅助损失负载均衡机制&序列级辅助损失补充机制:解决专家使用不平衡导致的训练效率问题。引入了无辅助损失负载均衡技术,通过直接在路由机制中融入负载均衡逻辑,避免了引入辅助损失函数,实现了仅通过对路由决策动态调整就实现专家负载均衡的效果;同时训练过程辅以序列级负载均衡策略,确保了每个序列内的专家负载均衡。
  2. 训练优化框架-工程优化:
    1. 并行策略:16 路流水线并行(Pipeline Parallelism, PP)、跨 8 个节点的 64 路专家并行(Expert Parallelism, EP),以及 ZeRO-1 数据并行(Data Parallelism, DP)。
      1. DualPipe 流水线并行算法:解决跨节点专家并行带来的通信负载问题。相比现有 PP 方法,该算法显著减少了流水线停滞现象,实现了前向和后向过程中计算与通信阶段的重叠。
      2. 跨节点全对全通信内核:充分利用 IB 和 NVLink 带宽,同时减少了通信所需的流式多处理器(SMs)**资源占用。
      3. 内存管理优化:张量并行(Tensor Parallelism, TP)技术。
  3. FP8 训练:大多数计算密集型操作都在 FP8 中进行,而一些关键操作则战略性地保留其原始数据格式,以平衡训练效率和数值稳定性。

DeepSeek-R1 的推理能力怎么通过训练诞生的?

论文整体叙述需要一点点耐心才能读懂整个流程(不然很容易对错模型)。边读边汇总最终绘制了如上图所示的内容。流程说起来可以分为横纵两个主干线,以及一条斜着的生产数据的分支线。

注意 R1 系列所有的模型都基于 Deepseek-V3-Base 训练。

横线(绿色)部分是 Deepseek-R1-Zero 的训练过程。准备了一些样本(未公布所以并不知道情况),然后经过 GRPO 算法能力,使用基于规则奖励(准确率和格式奖励)。训练模版:

斜着的部分(红色线)部分是 Deepseek-R1 的训练数据的产生过程:为了探索解决 Zero 口齿不清的问题

  1. SFT 的具体操作上基于 Deepseek- V3-Base 的模型进行 SFT 的训练,这部分的数据是千条的 COT 样本: 利用 Deepseek-R1-Zero+ 小样本提示生成长 COT,格式后处理,经过人工注释标记 。数据的组成以一种可读的模板进行组织: |special_token|<reasoning_process>|special_token|<summary>, 其中推理过程是查询的 CoT,摘要用于总结推理结果 。
  2. 利用强化学习的 GRPO 算法,基于规则奖励(准确性和语言一直性奖励)来激发模型的推理能力,目的是解决思路清晰的推理型任务:编码、科学和逻辑推理等以及缓解语言混杂的问题。【这里不少同学发现 o1 其实也会出现中文在思考内的情况,有一些解释是说可能中文的 token 数较少,有一些好玩的解释说可能厉害的同学出了国又回来了,就出现了中英双语混杂的习惯】

由此依据这个产生的 checkpoint2 中利用拒绝采样技术得到(部分数据采用 Deepseek-V3 做裁判)600K 的推理样本。

左边竖着的蓝色部分是 Deepseek-R1 的训练流程:

  1. SFT 为了解决 Zero 的口齿不清问题:利用前文提到的 checkpoint2 产出的 600K 推理数据以及 V3 生成的 200K 非推理样本数据进行微调(一定程度增加了通用任务的能力)
  2. 第二步进行 RL 训练,这里的训练不同的数据以不同的奖励信号进行处理。推理数据基于规则,通用数据则基于奖励模型来捕捉人类偏好。同时还关注了有用性和无害性的问题来消除不安全的风险。

此外,有不少外部复现案例中增加了长度奖励,这个是由文章(Demystifying Long Chain-of-Thought Reasoning in LLMs )提出的。

DeepSeek-R1 怎么做蒸馏的?

R1 数据蒸馏的方式比较容易复现,利用前面提到的 800K 的样本,然后经过 R1 生成 think 类的样本。基于这个样本和不同的基座模型进行 SFT 阶段的训练,得到对应的 R1 蒸馏的模型。从结果来看,R1-32B 和 R1-70B 在评测任务上显著超越了 o1-mini。

此外,使用数学、代码和 STEM 数据对 Qwen-32B-Base 进行大规模强化学习训练,训练超过10000步,得到了 DeepSeek-R1-Zero-Qwen-32B。其性能与 QwQ-32B-Preview 相当。尽管精炼策略既经济又有效,但要超越智能的界限可能仍需要更强大的基础模型和更大规模的强化学习。

DeepSeek-R1 如何复现?

DeepSeek-R1 的复现方案主要包括以下几个步骤:

  1. 模型蒸馏:从 DeepSeek-R1 中提取高质量的语料库,复现 R1-Distill 模型。
  2. 强化学习:复现用于创建 R1-Zero 的纯强化学习(RL)流程,这需要建立数学、推理和代码方面的大规模数据集。
  3. 多阶段训练:通过多阶段训练,将基础模型提升到 RL 调优的水平。

其中 Open-R1 是目前较火热的复现项目,提供了 GRPO 等在内的核心算法,同时搭建了在数学领域的整套训练流程。

合成数据网址:https://huggingface.co/datasets/open-r1/OpenR1-Math-220k

04

OlaChat 数智助手产品介绍

OlaChat 是腾讯 PCG 大数据平台部利用大模型,在数据分析领域推出的全新智能数据分析产品,目前已集成至 DataTalk、OlaSQL 等腾讯内部主流数据平台。

OlaChat 已支持智能分析(智能生成拖拽分析查询、SQL 查询)、数据可视化,结果解读与归因等能力,覆盖数据分析全流程。并于混元微调模型基础上,新增支持 DeepSeek R1/V3 模型,助力数据分析更加简单高效!

-End-

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-03-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 腾讯云开发者 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 01
  • 02
  • 03
  • 04
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档