
4篇DeepSeek官方论文梳理: DeepSeekMoE、MLA、MTP、RL、Distillation
这篇按顺序梳理从DeepseekMoE到Deepseek V2,Deepseek V3和Deepseek R1的4篇论文,DeepSeek这几篇论文的含金量堪比OpenAI GPT系列论文了Deepseek的模型都是MoE架构的, 因此开始具体论文分析之前,先了解一下MoE架构(Sparse model稀疏型模型)和传统的Transformer架构(Dense model密集型模型 )区别:MoE
这篇按顺序梳理从DeepseekMoE到Deepseek V2,Deepseek V3和Deepseek R1的4篇论文,DeepSeek这几篇论文的含金量堪比OpenAI GPT系列论文了
Deepseek的模型都是MoE架构的, 因此开始具体论文分析之前,先了解一下MoE架构(Sparse model稀疏型模型)和传统的Transformer架构(Dense model密集型模型 )区别:
MoE 模型的核心思想是在模型内部设计多个“专家”(sub-networks),通过一个门控机制(gating network)在每个输入或每个token上仅激活其中一部分专家进行计算。这样做的目的在于:
大规模参数扩展:可以在参数规模上大幅增加模型容量,而实际参与计算的参数只有一小部分;因此你会看到Deepseek V2 236B总参数只有21B的参数参与了实际计算, Deepseek V3 671B总参数在实际执行时只有37B参数被激活
计算效率:在推理时只激活部分专家,因此在单位推理时间内实现更高的参数利用率,达到一定的“算力经济型”效果
dense model 输入输出共享所有参数, 全连接, 所有参数激活并参与计算, 比如 CNN 和 Transformer中的 full connected Layers; sparse model 比如 MoE, MoE 把 Transformer 中的全连接 FNN 前馈神经网络全部换成 MoE Layers, 判断哪些token需要哪些 expert, tokens to be uniformly distributed to the experts, 用符合的 expert 去计算
MoEs 混合专家模型mixtures of experts,算力经济型,主要解决算力有限情况下提升模型生成质量。
MoE 模型可以让不同的专家专注于不同领域或不同任务的细粒度知识,因此在特定领域内 In domain LM行业垂直大模型表现较好; 通用大模型和 zero shot priming 大模型需要处理更加广泛的语言现象和知识,专家间的分工可能不如在垂直领域内那么明显, MoE 模型相对于 dense 模型的优势可能会减弱
由于训练和微调时涉及的稀疏激活机制,MoE 模型在微调时往往不如 dense 模型那样直接有效,需要更复杂的调参和策略
上面观点都是Deepseek爆火之前的2022年到2024年的传统MoE观点。 DeepseekMoE架构创新使用shared Expert能对通用知识回答起到帮助。 并且常见的dense model,比如llama 70B, Qwen 72B和110B; 而Deepseek V2就能达到236b,Deepseek V3和R1则能达到671B, 通过倍数级别的大参数,即使实际也只有30B参数不分expert实际激活, 也能获得更多的参数内容
Deepseek V3采用Auxiliary-Loss-Free Strategy for Load Balancing动态路由与自适应容量,解决MoE的负载均衡难题,更方面模型进行训练微调。但整体这类Sparse Model相比全连接层的Dense Model更不稳定, 需要考虑稀疏激活、Route Collapse路由崩溃、专家平衡和门控网络优化等问题,
DeepseekMoE
expert specialization指的是专家专业化,即在混合专家(MoE,Mixture - of - Experts)架构中,每个专家能够获取不重叠且聚焦的知识。例如,在处理自然语言处理任务时,不同的专家可以分别专注于语法分析、语义理解、文本生成等不同方面的知识,且这些知识领域之间尽量少有重叠,这样可以提高模型处理复杂任务的效率和准确性。
传统方法如GShard使用门控机制选择K个专家,但可能这些专家之间仍然存在重叠,因为门控函数可能会选择相似的专家,导致它们学习到相似的事情
DeepSeekMoE的架构就是解决expert specialization的专家知识重叠问题,主要靠以下2个机制
第一: 细粒度专家分割(finely segmenting the experts into 𝑚𝑁 ones and activating 𝑚𝐾 from them)
细粒度分割后,不同知识可被更精确地分解到不同细化后的专家中学习,每个专家能保持更高专业化水平。从组合角度看,显著提升了激活专家的组合灵活性
在保持专家总参数数量不变的情况下,通过将FFN中间隐藏维度缩小为原来的(\frac{1}{m}) ,把每个专家FFN分割成(m)个更小的专家,即总共得到(mN)个细粒度专家。由于每个专家变小,为保持计算成本不变,激活的专家数量增加到(m)倍,变为(mK)个。
第二:共享专家隔离(isolating 𝐾𝑠 experts as shared ones)
在传统路由策略下,不同专家可能会学习相同的通用知识,造成参数冗余。共享专家专门用于捕捉和整合不同上下文的通用知识,这样能减轻其他路由专家在获取通用知识时的冗余,使路由专家可更专注于独特知识的学习,提高模型参数效率
从众多专家中隔离出(K_s)个专家作为共享专家,无论路由模块如何分配,每个token都会被确定性地分配到这些共享专家进行计算。为维持计算成本恒定,会相应减少其他路由专家中被激活的数量
DeepseekMoE额外地针对Routed Expert, 针对路由的选择进行优化, 避免传统MoE Routed Experts选择不平衡导致的两个问题
路由崩溃Route Collapse:模型可能总是只选择少数几个专家,导致其他专家无法得到充分训练,这会影响模型整体性能和专家专业化的实现。
计算瓶颈加剧:当专家分布在多个设备上时,负载不平衡会加剧计算瓶颈,降低计算资源的利用效率。
针对上面2个问题提出:
expert - level balance loss(专家级别平衡损失):控制对专家负载平衡的约束程度,尽量让每个专家都能得到足够的训练机会,避免路由崩溃route collapse;计算基于每个专家被选中的频率和每个专家的平均样本数,通过调整超参数(专家级别平衡因子),可以控制对专家负载平衡的约束程度
device - level Balance Loss(设备平衡损失):将所有路由专家划分为D个组,并将每个组部署在单个设备上。计算基于设备上所有专家的平均被选中频率和设备上所有专家处理的平均样本数的值。通过超参数(设备级别平衡因子)来控制设备间的负载平衡,以确保设备间的计算负载相对均衡,避免出现计算瓶颈。
这两个都属于传统MoE有辅助损失的专家平衡策略, 在Deepseek V3中会被无辅助损失的负载均衡策略替代。 因为这种额外损失项约束负载均衡需要超参数调优,需要额外计算梯度,增加训练开销
Deepseek V2
It is equipped with a total of 236B parameters, of which 21B are activated for each token, and supports a context length of 128K tokens.
Deepseek V2是基于DeepseekMoE和Multi-head Latent Attention (MLA)
Multi-head Latent Attention (MLA) 是一种改进的注意力机制,其核心思想是通过潜在向量(latent vector)对传统的Key-Value (KV) 缓存进行压缩,从而减少推理时的内存占用和计算开销。
MLA的核心原理
在标准Transformer中,多头注意力机制需要为每个注意力头单独存储历史生成的Key和Value向量(即KV缓存)。随着序列长度增加,KV缓存的存储需求呈线性增长,导致内存占用急剧上升,尤其是在长文本生成任务中。MLA通过将多个注意力头的Key和Value投影到一个低维的共享潜在向量空间中,取代了传统的逐头存储方式。
具体来说:将每个头的Key和Value通过线性变换映射到一个低维潜在向量。在需要计算注意力时,从潜在向量中恢复出每个头的Key和Value。这一过程类似于对KV信息进行“有损压缩”,但通过训练学习如何保留关键信息。
MLA的潜在向量并非静态,而是随着生成过程动态更新。每次生成新token时,仅需更新潜在向量,而非存储所有历史KV缓存
传统多头注意力机制方法每次生成新token时,需重新计算所有历史token的注意力分数。MLA通过潜在向量隐式编码历史信息,只需维护和更新潜向量,避免了重复计算。不同注意力头共享潜在空间,进一步减少参数数量
Deepseek V2对指令调整数据集进行了SFT,使其包含 150 万个实例,其中 120 万个用于提升模型回答的有用性,30 万个用于保障安全性
在实验中发现SFT的数据越多越好,不得少于10k示例。 可能语言模型需要一定数量的数据来培养特定技能。此外,SFT 数据的质量也至关重要,特别是对于涉及写作或开放式问题的任务。
RL强化学习训练策略。在初步实验中,发现针对推理数据(如代码和数学提示)进行的强化学习训练展现出与针对一般数据训练截然不同的独特特征。例如,模型的数学和编码能力在较长的训练步骤中能够持续提升。
Deepseek V2是2024.06发布的, 7月份也是RL强化学习训练的OpenAI o1出来
因此,采用两阶段强化学习训练策略,首先进行推理(如代码和数学提示)对齐,然后进行人类偏好对齐。实验发现,强化学习在进行人类偏好对齐后会导致某些性能的下降
在奖励模型训练方面,使用 DeepSeek-V2 Chat(SFT)对奖励模型进行初始化,并使用逐点损失或成对损失对其进行训练。在实验中观察到强化学习训练能够充分挖掘和激活模型的潜力,使其能够从可能的响应中选择正确且令人满意的答案
Deepseek V3
基于DeepseekV2的DeepseekMoE和MLA架构, 新的特色是DeepSeek V3的 Auxiliary-Loss-Free Load Balancing 和 Multi-Token Prediction前者通过动态路由与自适应容量,解决了MoE的负载均衡难题;后者通过同时预测后续多个位置的token,强制模型同时考虑多步依赖,提升对复杂语义结构的理解,也能加速推理
无辅助损失的负载均衡策略(Auxiliary-Loss-Free Strategy for Load Balancing)
在进行 top - k 路由决策之前,该策略首先会对每个专家的路由分数应用特定于专家的偏差。具体而言,会根据每个专家最近的负载动态更新其偏差值。举例来说,如果某个专家近期处理的负载较低,那么就会增加其路由分数的偏差,使其更有可能被选中处理后续的输入数据;反之,如果某个专家负载过高,就降低其偏差,减少被选中的概率。通过这种动态调整偏差的方式,能够始终保持专家负载的均衡分布。由于该策略在调整负载均衡时不产生任何干扰梯度,避免了因辅助损失带来的负面效应
DeepSeek-V3 主要依靠无辅助损失策略来实现负载均衡,但为防止单个序列内出现极端的不平衡情况,还采用了补充序列级平衡损失Complementary Sequence-Wise Auxiliary Loss(辅助损失策略)
关于load Balance的两个其他特点:
节点限制路由(Node-Limited Routing): DeepSeek-V3 和 DeepSeek-V2 一样,采用了受限的路由机制,目的是在训练过程中控制通信成本。具体来说,每个令牌最多只会被发送到 M 个节点,通过限制每个令牌的传输节点数量,能够避免令牌在过多节点间不必要的传输。在这种机制下,模型几乎可以在进行计算的同时可以进行通信操作,使得计算和通信这两个原本可能串行的过程大部分时间可以并行进行
无令牌丢弃(No Token-Dropping): 由于 DeepSeek-V3 采用了有效的负载均衡策略,在整个训练过程中都能保持良好的负载平衡状态,所以在训练期间不会丢弃任何令牌。此外,在推理阶段,通过实施特定的部署策略来确保推理负载均衡,这使得 DeepSeek-V3 在推理时也不会丢弃令牌,保证了模型在训练和推理过程中数据处理的完整性和稳定性
多令牌预测训练目标(Multi-Token Prediction Training Objective for Stronger Performance)
多令牌预测训练目标旨在通过扩展预测范围来提升模型性能和数据效率。在传统的语言模型训练中,通常一次只预测一个令牌。而多令牌预测则突破了这种限制,设置了同时预测多个令牌的训练目标。
在训练阶段,模型不再仅仅基于前一个时刻的隐藏状态来预测下一个单一令牌,而是学习根据当前的上下文信息一次性预测多个后续令牌。这使得模型能够捕捉到更长期的依赖关系和语言结构,因为它需要考虑多个令牌之间的语义连贯性和语法规则。例如,在处理一个句子时,模型可以根据前文同时预测出下一个短语甚至下一个小句中的多个关键令牌,而不是逐个预测每个单词。这种方式能更有效地利用训练数据,因为一次预测多个令牌相当于在相同的数据量下增加了训练的信息量,从而加速模型的收敛和性能提升。
在推理阶段,多令牌预测也能发挥作用,比如可用于推测解码以加速推理过程。当模型需要生成文本时,基于多令牌预测的能力,它可以更快地生成连贯的文本片段,减少推理时间,提高生成效率
MTP Module(MTP模块):是DeepSeek-V3中用于实现多令牌预测的组件。它由共享嵌入层、共享输出头、Transformer块和投影矩阵构成。通过结合当前输入令牌的表示和后续令牌的嵌入信息,MTP模块能预测多个后续令牌,增强模型对长序列的理解和处理能力,提升训练效果。
下图中间是MTP Module 1, 右边是MTP Module 2,两个Module多预测了t6和t7
MTP Training Objective(MTP训练目标):是训练DeepSeek-V3时的优化目标。它通过计算预测多个令牌的交叉熵损失,并对这些损失求平均再乘以权重因子,得到整体MTP损失。训练时,模型通过最小化该损失,来提高预测多个令牌的准确性,从而提升模型性能。
MTP inference(MTP推理):在推理阶段,MTP模块可直接丢弃,主模型能独立正常工作。此外,MTP模块还能用于推测解码,即提前预测部分结果,加快推理速度,减少生成内容的时间,提升模型在实际应用中的效率。
Deepseek的SFT训练数据有两种: 用DeepSeek-R1 模型来生成数学、代码、逻辑谜题的推理数据, 并针对该数据的内容冗长格式问题采用监督微调与强化学习相结合的方式训练了一个特定领域的专家模型来生成数据; 第二种是由DeepSeek V2.5 生成的写作、角色扮演等简单问题,再人工标注
Deepseek强化学习RL的奖励模型也分两种:
基于规则的奖励模型Rule-Based RM:对于可以用特定规则进行验证的问题,采用基于规则的奖励系统来给出反馈。例如,一些数学问题有确定的答案,我们要求模型按照指定格式(比如放在框内)给出最终答案,这样就能依据规则来检验答案的正确性。
基于模型的奖励模型Model-Based RM : 对于答案不固定,无固定标准答案的问题时,让特别训练的模型作为奖励模型,这里是以 DeepSeek-V3 经过监督微调(SFT)后的检查点为基础进行训练的。这使得奖励模型能够继承 DeepSeek-V3 在监督微调阶段所学到的知识和语言理解能力,从而更好地适应后续强化学习任务的需求,对模型的输出进行合理评估。
Deepseek R1
Deepseek R1-Zero的设计理念是跳过传统 SFT 步骤,直接通过大规模强化学习RL,基于规则的奖励模型对齐人类偏好。这是跟Deepseek V3的主要区别
上面刚写的Deepseek V3需要SFT对推理数据和非推理数据进行监督微调, 让模型具备基本的能力。 并且对微调数据需求量大。
严格来说, 是Deepseek R1-Zero是直接跳过SFT跳过监督数据,直接RL强化学习,在不断的学习中自我进化。发现通过强化学习能够更快学会CoT
“DeepSeek-R1-Zero, a model trained via large-scale reinforcement learning (RL) without supervised fine-tuning (SFT) as a preliminary step”
Deepseek R1-Zero的奖励模型也只有Rule Based RM没有基于模型的奖励模型, rule又细分两种,一种是准确性Accuracy rewards,另一个是格式Format rewards
Deepseek R1-Zero没有使用基于神经网络的RMoutcome or process neural reward model, 因为发现这种RM容易导致Reward hacking, 而且需要额外训练RM,增加算力负担和整个pipeline的复杂性
Deepseek R1-Zero已经具有自我验证、反思和生成长CoT的能力, 就是这个只通过RL就能涌现出良好的推理能力,这个是Deepseek除了算力成本低外,最引人注目的特点
不需要标注数据教模型怎么获得正确的答案, 直接把奖励模型设置好, 不断强化学习, 模型自己会不断达到奖励模型的目标,自己找到解决方法,自己学会多步推理、检查反思
“rather than explicitly teaching the model on how to solve a problem, we simply provide it with the right incentives, and it autonomously develops advanced problem-solving strategies”
并且随着RL次数增加,模型会自发地开始回过去检查自己的答案, 反思,探索其他解决问题的答案,于是推理能力也提升了
今天把同样的问题发给ChatGPT和DeepSeek, 虽然都有Reasoning, 但还是Deepseek的Reasoning更长,并且跟最终输出的答案相关。 而ChatGPT的Reasoning特别短, 还不如不用Reasoning
自从Deepseek R1出来, 我都不怎么用ChatGPT了, 真没想到有这么一天
但Deepseek R1-Zero会出现中英文混乱, 可读性低的问题, 新的Deepseek R1在RL之前则进行了少部分SFT和冷数据启动来解决Deepseek R1-Zero出现的问题
Deepseek R1的训练过程包括2次RL-分别用于推理和人类偏好对齐,2次SFT-分别用于模特推理能力的基础和非推理能力:
第一次SFT , 增加输出内容可读性和性能,为RL最初始准备
Deepseek R1 Cold Start 在强化学习初期用Deepseek R1-Zero生成可读性高的long CoT(包含反思、检查)的数据, 并经过人工标注, 作为RL冷启动的数据,做SFT监督微调, 让RL训练之前有些基础准备,相比没有Cold Start的Deepseek R1-Zero,有两个好处
①Cold Start会规定格式,比如文末要有Summary,规定Markdown文档格式, 这样就能解决Deepseek R1-Zero可读性的问题
②通过精心设计的Cold Start数据,实验表现性能也更佳
第一次RL, 主要Reasoning能力的训练
Cold Start之后就是按Deepseek R1 Cold Start的进行主要的RL训练,尤其是代码,数学, 科学,逻辑推理方面的强化学习任务。 在这个过程中观察到模型会出现语言混乱的问题, 因此专门针对中英语言混乱设置了一个RM
第二次SFT, 让模型能够更好地处理各种任务,包括推理和非推理任务
RL之后用写作,角色扮演等通用数据对模型SFT,来增加模型推理能力之外的综合能力:
这段话描述了如何通过拒绝采样(Rejection Sampling)和监督微调(Supervised Fine-Tuning,简称SFT)来增强模型的推理能力和执行一般任务的能力。以下是对这段话的详细中文解读:
当推理导向的强化学习(RL)阶段收敛时,开发团队会使用最终的模型检查点(checkpoint)来收集监督微调(SFT)的推理数据。
推理数据的处理方法:
拒绝采样(Rejection Sampling):在强化学习训练后,模型的输出结果可能会包含很多不合适的内容,因此开发者通过拒绝采样从训练好的模型中挑选出合格的数据。这些数据被用于模型的监督微调。
这一阶段,开发团队扩大了数据集,加入了其他领域的数据,其中一部分使用了Model Based RM(例如,使用DeepSeek-V3来判断模型输出的正确性)
由于模型的输出有时可能会比较混乱,难以理解,开发者进行了数据清理。例如,过滤掉了带有混合语言、过长段落以及代码块的思维链(chain-of-thought)。在每个推理任务中,他们会采样多个响应,并只保留正确的答案。最终,这一阶段收集了约60万个与推理相关的训练样本。
非推理数据的处理:
非推理数据包括写作、事实问答(factual QA)、自我认知(self-cognition)、翻译等任务。对于这些任务,开发团队使用了DeepSeek-V3的pipeline,并重新使用了DeepSeek-V3中部分已经收集的监督微调数据集。对于一些非推理任务,开发者会调用DeepSeek-V3生成潜在的思维链(chain-of-thought),以便在回答问题时能够提供更好的推理过程。但对于一些简单的查询,例如“hello”这种问候语,系统不会生成思维链。最终,收集了约 20万个与推理无关的训练样本。
开发团队利用上述收集的约 80万个样本(包括推理和非推理数据)对DeepSeek-V3-Base模型进行了两轮(epochs)微调
第二次RL, 对推理能力进行完善, 减少模型的有害性,增加模型输出内容质量
比如针对数理化等逻辑性强的数据用rule Based RM进行优化, 对通用数据用model based RM优化; 确保输出的结果跟问题是相关的,准确的, 同时减少潜在的Reasoning内容干扰 ; 评估整个模型,确保输出内容干净无害无偏见
研究发现大型模型在推理任务中学习到的思维方式(reasoning patterns)可以通过某种知识蒸馏(distillation)的方法,传输给较小的模型,使小模型具备类似的推理能力。这种蒸馏方式比起在小模型上直接用强化学习(RL)训练,小模型从大模型蒸馏来的推理能力更强
distillation就是通过MoE大模型生成(Deepseek V1)的高质量训练数据(包含CoT,多步推理,答案分布等复杂数据800k样本),直接用小模型(如Qwen/Llama)在这些生成数据上进行微调,学习MoE模型的输出模式,从而学习复杂的推理模式
输入-输出对齐:小模型学习模仿MoE模型的输入到输出的映射关系(例如问题→详细推理→答案)
论文中仅使用SFT而非RL,是为了降低训练复杂度,快速验证蒸馏的有效性。而如果采用RL来调试小模型, 需要巨大的计算能力,甚至可能无法达到提炼(知识)所带来的性能提升效果
这个distillation蒸馏思想也是Deepseek的重要发现
Epilogue
自己测试了Deepseek R1,再需要逻辑分析, 比如文学分析、八字分析以及专业AI,数学科学论文分析时,表现不错,就是速度太慢, 经常显示服务器超时。 而如果只是简单的文本翻译, 解读,豆包就可以
再有如果是最准确性要求高的内容, 豆包的网络搜索结果是准确的。 而Deepseek目前网络搜索能力不行, 一些小众领域的准确性要求高的内容回答错误, 会乱推理捏造信息
目前豆包的pdf阅读也做得不错
上文第二个是ollama本地运行的Deepseek R1 70B, 试过下载400G的671B,但每次下载到100%总显示超时。 R1 70B的回答还是要比官网的R1回答更简单些, 格式上也不一样。
如何系统学习掌握AI大模型?
AI大模型作为人工智能领域的重要技术突破,正成为推动各行各业创新和转型的关键力量。抓住AI大模型的风口,掌握AI大模型的知识和技能将变得越来越重要。
学习AI大模型是一个系统的过程,需要从基础开始,逐步深入到更高级的技术。
这里给大家精心整理了一份
全面的AI大模型学习资源
,包括:AI大模型全套学习路线图(从入门到实战)、精品AI大模型学习书籍手册、视频教程、实战学习、面试题等,资料免费分享
!
1. 成长路线图&学习规划
要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费。
这里,我们为新手和想要进一步提升的专业人士准备了一份详细的学习成长路线图和规划。可以说是最科学最系统的学习成长路线。
2. 大模型经典PDF书籍
书籍和学习文档资料是学习大模型过程中必不可少的,我们精选了一系列深入探讨大模型技术的书籍和学习文档,它们由领域内的顶尖专家撰写,内容全面、深入、详尽,为你学习大模型提供坚实的理论基础。(书籍含电子版PDF)
3. 大模型视频教程
对于很多自学或者没有基础的同学来说,书籍这些纯文字类的学习教材会觉得比较晦涩难以理解,因此,我们提供了丰富的大模型视频教程,以动态、形象的方式展示技术概念,帮助你更快、更轻松地掌握核心知识。
4. 2024行业报告
行业分析主要包括对不同行业的现状、趋势、问题、机会等进行系统地调研和评估,以了解哪些行业更适合引入大模型的技术和应用,以及在哪些方面可以发挥大模型的优势。
5. 大模型项目实战
学以致用 ,当你的理论知识积累到一定程度,就需要通过项目实战,在实际操作中检验和巩固你所学到的知识,同时为你找工作和职业发展打下坚实的基础。
6. 大模型面试题
面试不仅是技术的较量,更需要充分的准备。
在你已经掌握了大模型技术之后,就需要开始准备面试,我们将提供精心整理的大模型面试题库,涵盖当前面试中可能遇到的各种技术问题,让你在面试中游刃有余。
全套的AI大模型学习资源已经整理打包,有需要的小伙伴可以
微信扫描下方CSDN官方认证二维码
,免费领取【保证100%免费
】
更多推荐
所有评论(0)