DeepSeek 系列汇总
笔者梳理了 DeepSeek 系列比较核心的几篇论文和相关技术创新如上图。
DeepSeek 核心技术
因为本文是小白方式,尽可能讲解思路为主,所以技术上涉及到的公式部分不会细讲哦。公式部分如有时间会单开文章细细讲解。
DeepSeekMoE 架构,有效降低训练成本
传统的大语言模型结构中,处理序列的 token 的时候,需要经过模型层里面的所有参数(神经元),每个神经元都持续在工作。这导致模型规模越大的时候,计算耗费更大,也更慢。既想提升模型能力,又得控制住那 “烧钱” 的计算成本。混合专家模型的稀疏化策略就诞生了:每个 token 会经过某 n 个小专家(由路由决定,如一共 m 个 FFN 那么有 m-n 处于空闲)。
传统的混合专家模型(MoE)将传统 Transformer 模型中的每个前馈网络 (FFN) 层替换为 MoE 层(稀疏),其中 MoE 层由两个核心部分组成: 一个门控网络和若干数量的专家(如下图所示)。
前馈神经网络到混合专家的公式对比如右图所示,传统的 Transformer 模型是堆叠层来构建的,每个块的计算如图右上角所示。
混合专家是可以将其中某些层替换为 MoE 层,层中可以看到每个专家隐藏层计算通常还是 FFN,然后 g 是路由,负责选择激活哪些专家(1标识被激活)。
但传统的 MoE 架构也有自己的 “小烦恼”。就好比让一群专家干活,结果发现他们掌握的知识有好多重叠的地方(知识冗余),而且每个专家手里的活儿太杂,啥都得管,导致专业性大打折扣(知识混合) 。从仿生学的角度,人脑是一个稀疏的结果,不同区域负责不同的功能,是一种非常典型的分工系统。
浅显理解 DeepseekMoE
DeepSeekMoE 架构的改进点和改进动机如下:
动机:
实验结果:
组相对策略优化(GRPO),让模型训练稳定
目的是为了提升 RL 训练的稳定性和效率。
GRPO(Group Relative Policy Optimization,组相对策略优化)是一种强化学习中的策略优化方法,旨在通过分组相对比较改进策略更新的稳定性和效率。
核心思想:通过组内输出的相对奖励优化模型策略,而非依赖传统强化学习中的额外批评模型(Critic Model)的绝对奖励值,从而更鲁棒地指导策略更新,同时显著降低训练成本并提升效率。
要点1: 组内相对奖励机制:通过同一问题下生成的多个候选输出(组)之间的相对表现来优化模型。具体流程包括:
要点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 做计算,所以我们有如下两个结论:
所以可以避免计算重复的 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 作为训练目标,但显然会存在一些问题,例如:
有研究改进为同时预测多个未来的 token,这里可以类比人类在思考的时候可能也会考虑多个词之间的关系。
一个可能有用的结论是:multi-token prediction 在代码任务中的评测结果显著好于 next-token prediction。
DualPipe
问题:在 DeepSeek-V3 中,跨节点专家并行机制引入了显著的通信开销,导致计算与通信比例接近1:1,影响了训练效率。解决该效率问题。
解决思路:
有效融合前向和后向计算的通信阶段,同时减少流水线阻塞。训练过程有前向传递和反向传递。
优化方法:1)双流并行:指的是计算流和通信流,双流并行即在大模型训练的反向传递阶段,将原本存在先后顺序的更新当前层权重(即 MLP_B)和将梯度继续传递到前一层(即 MLP_W)这两个操作,拆分成两个独立且并行的流,同时通过细致的设计,让训练的 barrier 刚好停在两个流任务完成的时候,而不需要通信流或者是计算流进行等待,提高计算效率。2)双向流水线调度:从流水线两端同时输入微批次数据,使得大部分通信过程能够与计算过程完全重叠。
FP8 训练
问题:尽管低精度训练技术展现出巨大潜力,但其实际应用常受到激活值、权重和梯度中异常值的制约。虽然推理量化技术取得重要突破,但在大规模语言模型预训练中成功应用低精度技术的案例仍然有限。DeepSeek 探索细粒度混合精度框架。
解决思路:
上述两部分 PPT 可能不太专业,是摘录的论文内容,大家自行查阅或者去网上搜索更多解读哦。
DeepSeek-V3/R1 核心问题
DeepSeek-V3/R1 为什么这么便宜好用?
笔者重点总结一下算法侧的原因,工程侧的一些优化因能力有限仅做论文的总结(建议查看原文或者阅读更专业的解读)。
大概如右图所示。
DeepSeek-R1 的推理能力怎么通过训练诞生的?
论文整体叙述需要一点点耐心才能读懂整个流程(不然很容易对错模型)。边读边汇总最终绘制了如上图所示的内容。流程说起来可以分为横纵两个主干线,以及一条斜着的生产数据的分支线。
注意 R1 系列所有的模型都基于 Deepseek-V3-Base 训练。
横线(绿色)部分是 Deepseek-R1-Zero 的训练过程。准备了一些样本(未公布所以并不知道情况),然后经过 GRPO 算法能力,使用基于规则奖励(准确率和格式奖励)。训练模版:
斜着的部分(红色线)部分是 Deepseek-R1 的训练数据的产生过程:为了探索解决 Zero 口齿不清的问题
由此依据这个产生的 checkpoint2 中利用拒绝采样技术得到(部分数据采用 Deepseek-V3 做裁判)600K 的推理样本。
左边竖着的蓝色部分是 Deepseek-R1 的训练流程:
此外,有不少外部复现案例中增加了长度奖励,这个是由文章(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 的复现方案主要包括以下几个步骤:
其中 Open-R1 是目前较火热的复现项目,提供了 GRPO 等在内的核心算法,同时搭建了在数学领域的整套训练流程。
合成数据网址:https://huggingface.co/datasets/open-r1/OpenR1-Math-220k
OlaChat 数智助手产品介绍
OlaChat 是腾讯 PCG 大数据平台部利用大模型,在数据分析领域推出的全新智能数据分析产品,目前已集成至 DataTalk、OlaSQL 等腾讯内部主流数据平台。
OlaChat 已支持智能分析(智能生成拖拽分析查询、SQL 查询)、数据可视化,结果解读与归因等能力,覆盖数据分析全流程。并于混元微调模型基础上,新增支持 DeepSeek R1/V3 模型,助力数据分析更加简单高效!
-End-