DeepSeekMoE 论文解读:混合专家架构的效能革新者
论文链接
:DeepSeekMoE: Towards Ultimate Expert Specialization in Mixture-of-Experts Language Models
目录
- 一、引言
- 二、背景知识
- (一)MoE架构概述
- (二)现有MoE架构的问题
- 三、DeepSeekMoE架构详解
- (一)总体架构
- (二)细粒度专家分割
- (三)共享专家隔离
- (四)负载平衡考虑
- 四、验证实验
- (一)实验设置
- (二)评估结果
- (三)深入分析
- 五、扩展到DeepSeekMoE 16B
- (一)实验设置
- (二)评估结果
- 六、DeepSeekMoE 16B的对齐
- (一)实验设置
- (二)评估结果
- 七、迈向DeepSeekMoE 145B
- (一)实验设置
- (二)评估结果
- 八、相关工作
- (一)MoE技术的发展历程
- (二)现有MoE架构的研究现状
- (三)DeepSeekMoE与其他架构的比较
- 九、结论
一、引言
在大语言模型蓬勃发展的时代,混合专家(MoE)架构作为一种在扩展模型参数时有效管理计算成本的解决方案,备受关注。传统的MoE架构,如GShard,在激活前K个专家时,面临着难以确保专家专业化的挑战,即每个专家难以获取非重叠且聚焦的知识。为了应对这一挑战,我们提出了DeepSeekMoE架构,旨在实现终极专家专业化,为大语言模型的发展提供了新的思路和方法。
二、背景知识
(一)MoE架构概述
MoE架构最早由Jacobs等人提出,用于处理不同样本的独立专家模块。Shazeer等人将其引入语言模型训练,构建了大规模基于LSTM的MoE模型。在Transformer架构成为自然语言处理的主流架构后,许多研究尝试将Transformer中的前馈网络(FFNs)替换为MoE层,以构建MoE语言模型。
(二)现有MoE架构的问题
现有MoE架构存在知识混合和知识冗余的问题,限制了专家的专业化。具体表现为:
- 知识混合
- 知识多样性:由于专家数量有限,分配给特定专家的令牌可能涵盖各种不同的知识,导致专家难以同时利用这些多样化的知识。
- 参数利用困难:不同类型的知识在专家参数中混合,使得参数的利用变得困难,影响了模型的性能。
- 知识冗余
- 共享知识获取:分配给不同专家的令牌可能需要共同的知识,导致多个专家在参数中获取共享知识,造成参数冗余。
- 计算资源浪费:知识冗余增加了模型的参数数量和计算量,浪费了计算资源。
三、DeepSeekMoE架构详解
(一)总体架构
DeepSeekMoE架构是在传统MoE架构的基础上进行改进和创新,主要包括两个策略:细粒度专家分割和共享专家隔离,以提高专家专业化程度和模型性能。
(二)细粒度专家分割
- 分割原理:在保持专家参数数量和计算成本不变的情况下,通过将FFN中间隐藏维度细分,将每个专家FFN分割为 m m m个更小的专家。相应地,为保持计算成本不变,激活的专家数量增加到 m m m倍。通过细粒度专家分割,一个 MoE 层的输出可以表示为:
h t l = ∑ i = 1 m N ( g i , t F F N i ( u t l ) ) + u t l h_{t}^{l}=\sum_{i = 1}^{mN}(g_{i,t}FFN_{i}(u_{t}^{l})) + u_{t}^{l} htl=i=1∑mN(gi,tFFNi(utl))+utl
g i , t = { s i , t , s i , t ∈ T o p k ( { s j , t ∣ 1 ≤ j ≤ m N } , m K ) 0 , 否则 g_{i,t}=\begin{cases}s_{i,t},&s_{i,t}\in Topk(\{s_{j,t}|1\leq j\leq mN\},mK)\\0,&\text{否则}\end{cases} gi,t={si,t,0,si,t∈Topk({sj,t∣1≤j≤mN},mK)否则
s i , t = S o f t m a x i ( u t l T e i l ) s_{i,t}=Softmax_{i}(u_{t}^{l^{T}}e_{i}^{l}) si,t=Softmaxi(utlTeil)
其中专家参数的总数等于 N N N乘以一个标准 FFN 的参数数量, m N mN mN表示细粒度专家的总数。采用细粒度专家分割策略后,非零门控的数量也会增加到 m K mK mK。 - 优势分析
- 知识分解与学习:细粒度专家分割使不同的知识能够更精细地分解,并在不同的专家中更精确地学习,每个专家可以保留更高的专业化水平。
- 组合灵活性增强:增加了激活专家的组合灵活性,使得模型能够更准确地获取和处理各种知识,提高了模型的适应性和泛化能力。
(三)共享专家隔离
- 隔离策略:除了细粒度专家分割策略外,DeepSeekMoE还隔离了 K s K_{s} Ks个专家作为共享专家,无论路由模块如何,每个令牌都会确定性地分配到这些共享专家。为了保持计算成本不变,其他路由专家中激活的专家数量将减少 K s K_{s} Ks。完整的 DeepSeekMoE 架构中的一个 MoE 层公式如下:
h t l = ∑ i = 1 K s F F N i ( u t l ) + ∑ i = K s + 1 m N ( g i , t F F N i ( u t l ) ) + u t l h_{t}^{l}=\sum_{i = 1}^{K_{s}}FFN_{i}(u_{t}^{l})+\sum_{i = K_{s}+1}^{mN}(g_{i,t}FFN_{i}(u_{t}^{l})) + u_{t}^{l} htl=i=1∑KsFFNi(utl)+i=Ks+1∑mN(gi,tFFNi(utl))+utl
g i , t = { s i , t , s i , t ∈ T o p k ( { s j , t ∣ K s + 1 ≤ j ≤ m N } , m K − K s ) 0 , 否则 g_{i,t}=\begin{cases}s_{i,t},&s_{i,t}\in Topk(\{s_{j,t}|K_{s}+1\leq j\leq mN\},mK - K_{s})\\0,&\text{否则}\end{cases} gi,t={si,t,0,si,t∈Topk({sj,t∣Ks+1≤j≤mN},mK−Ks)否则
s i , t = S o f t m a x i ( u t l T e i l ) s_{i,t}=Softmax_{i}(u_{t}^{l^{T}}e_{i}^{l}) si,t=Softmaxi(utlTeil)
在 DeepSeekMoE 中,共享专家的数量是 K s K_{s} Ks,路由专家的总数是 m N − K s mN - K_{s} mN−Ks,非零门控的数量是 m K − K s mK - K_{s} mK−Ks - 作用机制
- 知识捕获与整合:共享专家专门用于捕获和整合不同上下文中的共同知识,减少了其他路由专家之间的参数冗余。
- 模型效率提升:通过压缩共同知识到共享专家中,提高了模型的参数效率,确保每个路由专家能够专注于独特的方面,进一步增强了专家的专业化程度。
(四)负载平衡考虑
- 专家级平衡损失:为了缓解路由崩溃的风险,采用专家级平衡损失。通过计算专家级的平衡损失,可以调整专家的激活概率,确保每个专家都能得到充分的训练,避免部分专家被过度使用而其他专家未被充分利用的情况。专家级平衡损失。平衡损失的计算如下:
L E x p B a l = α 1 ∑ i = 1 N ′ f i P i \mathcal{L}_{ExpBal}=\alpha_{1}\sum_{i = 1}^{N'}f_{i}P_{i} LExpBal=α1i=1∑N′fiPi
f i = N ′ K ′ T ∑ t = 1 T 1 ( 令牌 t 选择专家 i ) f_{i}=\frac{N'}{K'T}\sum_{t = 1}^{T}\mathbb{1}(令牌 t 选择专家 i) fi=K′TN′t=1∑T1(令牌t选择专家i)
P i = 1 T ∑ t = 1 T s i , t P_{i}=\frac{1}{T}\sum_{t = 1}^{T}s_{i,t} Pi=T1t=1∑Tsi,t
其中 α 1 \alpha_{1} α1是一个称为专家级平衡因子的超参数,为了简洁起见, N ′ N' N′等于 ( m N − K s ) (mN - K_{s}) (mN−Ks), K ′ K' K′等于 ( m K − K s ) (mK - K_{s}) (mK−Ks)。 1 \mathbb{1} 1表示指示函数。 - 设备级平衡损失:除了专家级平衡损失外,还引入了设备级平衡损失。当旨在缓解计算瓶颈时,不需要在专家级别强制执行严格的平衡约束,因为过度的负载平衡约束会损害模型性能。通过将路由专家划分为多个组,并在设备级别上确保计算的平衡,可以提高模型的整体计算效率。设备级平衡损失的计算如下:
L D e v B a l = α 2 ∑ i = 1 D f i ′ P i ′ \mathcal{L}_{DevBal}=\alpha_{2}\sum_{i = 1}^{D}f_{i}'P_{i}' LDevBal=α2i=1∑Dfi′Pi′
f i ′ = 1 ∣ E i ∣ ∑ j ∈ E i f j f_{i}'=\frac{1}{\vert\mathcal{E}_{i}\vert}\sum_{j\in\mathcal{E}_{i}}f_{j} fi′=∣Ei∣1j∈Ei∑fj
P i ′ = ∑ j ∈ E i P j P_{i}'=\sum_{j\in\mathcal{E}_{i}}P_{j} Pi′=j∈Ei∑Pj
其中 α 2 \alpha_{2} α2是一个称为设备级平衡因子的超参数。在实践中,我们设置一个较小的专家级平衡因子来减轻路由崩溃的风险,同时设置一个较大的设备级平衡因子来促进跨设备的平衡计算。
四、验证实验
(一)实验设置
- 训练数据和标记化
- 数据来源:训练数据从DeepSeek-AI创建的大规模多语言语料库中采样,主要包括英语和中文,并涵盖其他语言。数据来源广泛,包括网络文本、数学材料、编码脚本、出版文献等。
- 标记化工具:使用HuggingFace Tokenizer工具在训练语料库的较小子集上训练字节对编码(BPE)标记器。在验证实验中,准备了词汇量为8K的标记器,当训练更大的模型时,词汇量将相应扩大。
- 基础设施
- 训练框架:基于HAI-LLM高效轻量级训练框架,该框架集成了多种并行策略,包括张量并行、ZeRO数据并行、PipeDream流水线并行以及专家并行(通过数据和张量并行组合)。
- 硬件设备:所有实验在配备NVIDIA A100或H800 GPU的集群上进行。A100集群和H800集群的每个节点都包含8个GPU,通过NVLink和NVSwitch在节点内连接,节点间通过InfiniBand互连进行通信。
- 超参数
- 模型设置:在验证实验中,设置Transformer层数为9,隐藏维度为1280,采用多头注意力机制,共有10个注意力头,每个头的维度为128。所有可学习参数都以标准差为0.006进行随机初始化。将所有FFNs替换为MoE层,确保专家参数总数等于标准FFN的16倍,激活的专家参数(包括共享专家参数和激活的路由专家参数)为标准FFN的2倍。在这种配置下,每个MoE模型大约有2B个总参数,激活参数约为0.3B。
- 训练设置:采用AdamW优化器,超参数设置为 β 1 = 0.9 \beta_{1}=0.9 β1=0.9, β 2 = 0.95 \beta_{2}=0.95 β2=0.95,权重衰减为0.1。学习率采用预热和逐步衰减策略,初始学习率线性增加到最大值,在训练的80%和90%时分别乘以0.316。验证实验的最大学习率设置为 1.08 × 1 0 − 3 1.08×10^{-3} 1.08×10−3,梯度裁剪范数为1.0。批次大小设置为2K,最大序列长度为2K,每个训练批次包含4M个令牌。总训练步数设置为25,000,以达到100B个训练令牌。由于训练数据丰富,训练过程中不使用Dropout。由于模型规模相对较小,所有参数(包括专家参数)都部署在单个GPU设备上,以避免计算不平衡。相应地,训练过程中不丢弃任何令牌,也不采用设备级平衡损失。为了防止路由崩溃,设置专家级平衡因子为0.01。
- 评估基准
- 语言建模:在Pile测试集上评估模型,评估指标为交叉熵损失。
- 语言理解和推理:考虑HellaSwag、PIQA、ARC - challenge和ARC - easy等任务,评估指标为准确性。
- 阅读理解:使用RACE - high和RACE - middle数据集,评估指标为准确性。
- 代码生成:在HumanEval和MBPP数据集上评估模型,评估指标为Pass@1,即一次生成尝试的通过率。
- 闭卷问答:考虑TriviaQA和NaturalQuestions等任务,评估指标为精确匹配(EM)率。
(二)评估结果
- 基线对比:与包括DeepSeekMoE在内的五个模型进行验证实验对比,包括密集型模型(Dense)、基于顶部-1哈希路由的MoE架构(Hash Layer)、基于顶部-1可学习路由的Switch Transformer、采用顶部-2可学习路由策略的GShard。所有对比模型共享相同的训练语料库和训练超参数。
- 性能优势
- 与其他MoE架构对比:DeepSeekMoE在各种任务上表现出显著的性能优势。与Hash Layer和Switch Transformer相比,DeepSeekMoE在具有相同激活参数数量的情况下,性能更强。与GShard相比,DeepSeekMoE在总参数和激活参数相同的情况下,具有压倒性的优势。
- 接近模型上限:DeepSeekMoE与更大规模的基线模型进行比较,结果表明DeepSeekMoE能够接近MoE模型的理论上限性能。例如,与GShard×1.5相比,DeepSeekMoE实现了相当的性能;与密集型模型Dense×16相比,DeepSeekMoE几乎达到了其性能水平,这表明在大约2B参数和100B训练令牌的规模上,DeepSeekMoE的性能与MoE模型的理论上限紧密吻合。
(三)深入分析
-
专家专业化分析
- 路由专家冗余度:通过禁用不同比例的顶级路由专家,评估DeepSeekMoE和GShard×1.5的Pile损失。结果表明,DeepSeekMoE对顶级路由专家的禁用更敏感,这意味着DeepSeekMoE的路由专家之间的参数冗余度更低,每个路由专家更具不可替代性。
- 共享专家不可替代性:禁用共享专家并激活一个更多的路由专家,Pile损失从1.808显著增加到2.414,这表明共享专家捕获了与路由专家不共享的基本和关键知识,是不可替代的。
- 知识获取准确性:通过改变激活的路由专家数量,评估DeepSeekMoE的Pile损失。结果表明,即使只有4个路由专家被激活,DeepSeekMoE也能达到与GShard相当的Pile损失,这说明DeepSeekMoE能够更准确和高效地获取必要的知识。
-
消融研究
-
共享专家隔离的影响:基于GShard隔离一个专家作为共享专家,结果表明这种隔离策略在大多数基准测试中提高了模型性能,支持了共享专家隔离策略有助于增强模型性能的观点。
-
细粒度专家分割的效果:进一步将专家细分,分割为2或4个更小的专家,结果表明专家分割粒度的不断细化对应着模型整体性能的不断增强,为细粒度专家分割策略的有效性提供了经验证据。
-
共享和路由专家的比例:研究了共享专家和路由专家的最佳比例,发现不同比例对性能影响不大,在扩展DeepSeekMoE时,将共享专家和激活的路由专家比例保持为1:3。
-
五、扩展到DeepSeekMoE 16B
(一)实验设置
- 训练数据和标记化:从与之前相同的语料库中采样训练数据,数据量为2T令牌,使用HuggingFace Tokenizer工具训练BPE标记器,DeepSeekMoE 16B的词汇量设置为100K。
- 超参数
- 模型设置:设置Transformer层数为28,隐藏维度为2048,采用多头注意力机制,共有16个注意力头,每个头的维度为128。所有可学习参数都以标准差为0.006进行随机初始化。除第一层外,所有FFNs都替换为MoE层,每个MoE层由2个共享专家和64个路由专家组成,每个专家是标准FFN的0.25倍。每个令牌将被路由到这些2个共享专家和6个路由专家。
- 训练设置:采用AdamW优化器,超参数设置为 β 1 = 0.9 \beta_{1}=0.9 β1=0.9, β 2 = 0.95 \beta_{2}=0.95 β2=0.95,权重衰减为0.1。学习率采用预热和逐步衰减策略,初始学习率线性增加到最大值,在训练的80%和90%时分别乘以0.316。DeepSeekMoE 16B的最大学习率设置为 4.2 × 1 0 − 4 4.2×10^{-4} 4.2×10−4,梯度裁剪范数为1.0。批次大小设置为4.5K,最大序列长度为4K,每个训练批次包含18M个令牌。总训练步数设置为106,449,以达到2T个训练令牌。由于数据丰富,训练过程中不使用Dropout。使用流水线并行策略部署模型的不同层,每个层的所有专家都部署在同一设备上。因此,训练过程中也不丢弃任何令牌,不采用设备级平衡损失。为了防止路由崩溃,设置专家级平衡因子为0.001。
- 评估基准
- 内部对比:与DeepSeek 7B进行内部对比,两者都在2T令牌的相同语料库上进行训练。
- 与开源模型对比:与LLaMA2 7B等开源模型进行对比,并在Open LLM Leaderboard上进行评估。
(二)评估结果
-
内部比较
- 性能优势:总体而言,DeepSeekMoE 16B在大约40%的计算量下实现了与DeepSeek 7B相当的性能。
- 性能特点:在语言建模和知识密集型任务(如Pile、HellaSwag、TriviaQA和NaturalQuestions)方面表现出显著优势,这与Transformer中的FFNs具有知识记忆能力的观点相符。
- 局限性:在多项选择任务中表现出一定的局限性,这是由于DeepSeekMoE 16B的注意力参数相对较少(只有约0.5B,而DeepSeek 7B有2.5B)。
-
与开源模型对比
- 整体优势:与LLaMA2 7B相比,DeepSeekMoE 16B在大多数基准测试中以仅39.6%的计算量表现更优。
- 性能特点
- 能力优势:在数学推理和代码生成能力方面更强,这得益于预训练语料库中丰富的数学和代码相关文本。
- 语言优势:在中文基准测试中具有显著的性能优势,尽管在英语文本上训练较少,但在英语理解或知识密集型基准测试中仍能达到相当或更好的性能。
六、DeepSeekMoE 16B的对齐
(一)实验设置
- 训练数据:使用内部策划的包含1.4M训练示例的数据进行监督微调(SFT),数据涵盖数学、代码、写作、问答、推理、总结等多个类别,主要为英语和中文。
- 超参数:设置批次大小为1024个示例,使用AdamW优化器进行8个时期的训练,最大序列长度为4K,不使用Dropout,设置恒定的学习率为 1 0 − 5 10^{-5} 10−5,不采用学习率调度策略。
- 评估基准:除了排除Pile和CHID基准外,还包括BBH基准,以更全面地评估聊天模型的推理能力。
(二)评估结果
- 基线对比:对LLaMA2 7B、DeepSeek 7B和DeepSeekMoE 16B进行监督微调,并构建了三个聊天模型进行比较。
- 性能优势
- 全面性能:DeepSeekMoE Chat 16B在语言理解和推理、机器阅读理解、数学和知识密集型任务等方面与7B密集型模型相当或更好,尽管计算量仅为40%。
- 代码生成:在代码生成任务上显著优于LLaMA2 SFT 7B,在HumanEval和MBPP上也有明显改进,同时超过了DeepSeek Chat 7B。
- 问答任务:在MMLU、CEval和CMMLU等多项选择问答基准测试中,DeepSeekMoE Chat 16B仍落后于DeepSeek Chat 7B,但与基础模型的观察结果一致,监督微调后,DeepSeekMoE 16B与DeepSeek 7B的性能差距有所缩小。
- 语言优势:受益于双语语料库的预训练,DeepSeekMoE Chat 16B在所有中文基准测试中显著优于LLaMA2 SFT 7B。
七、迈向DeepSeekMoE 145B
(一)实验设置
- 训练数据和标记化
- 数据来源与一致性:与DeepSeekMoE 16B采用完全相同的训练 corpus 和 tokenizer,以确保实验的连贯性和可比性。这样可以排除因数据和标记化方式不同而对模型性能产生的干扰,更准确地评估模型在不同规模下的性能表现。
- 数据量差异:DeepSeekMoE 145B是在245B tokens 的数据上进行训练,相较于16B版本的数据量更大,为模型提供了更丰富的信息和知识,有助于模型学习到更广泛的语言模式和语义理解能力。
- 模型设置
- 架构参数调整
- 层数与维度:增加了Transformer层数至62,隐藏维度提升至4096,这使得模型能够处理更长的序列和更复杂的语言结构,捕捉更丰富的语义信息。
- 注意力机制:采用多头注意力机制,共有32个注意力头,每个头的维度为128。这样的设计可以让模型从不同的角度关注文本的不同部分,提高对语言信息的捕捉和整合能力。
- 专家配置优化
- 共享专家与路由专家:每个MoE层由4个共享专家和128个路由专家组成,每个专家是标准FFN的0.125倍。这种配置在保证模型具有一定规模的同时,合理分配了共享专家和路由专家的比例,有助于发挥两者的优势,提高模型的性能。
- 令牌路由方式:每个令牌将被路由到4个共享专家和12个路由专家,这种路由方式旨在确保模型能够充分利用共享专家的共同知识和路由专家的专业知识,实现更高效的语言处理。
- 架构参数调整
- 训练设置
- 优化器和调度
- 优化器选择:继续采用AdamW优化器,其在优化过程中能够较好地平衡模型的训练速度和收敛性。
- 学习率策略:使用预热和恒定学习率调度器。初始学习率线性增加到最大值,然后在剩余训练过程中保持恒定。这种学习率策略有助于模型在训练初期快速适应数据,在后期稳定收敛,提高训练效率和模型性能。
- 其他参数
- 学习率参数:最大学习率设置为 3.0 × 1 0 − 4 3.0×10^{-4} 3.0×10−4,该学习率经过实验优化,能够在保证模型收敛的前提下,加快训练速度。
- 梯度裁剪:梯度裁剪范数设置为1.0,有效地防止了梯度爆炸或消失的问题,保证了训练的稳定性。
- 批次大小和序列长度:批次大小设置为4.5K,最大序列长度为4K,每个训练批次包含18M个令牌。这样的设置在保证训练效率的同时,也能充分利用数据的多样性,提高模型的泛化能力。
- 并行策略和负载平衡
- 并行策略:利用管道并行策略部署模型的不同层,将不同层的计算任务分配到不同的设备上进行并行处理,提高了训练效率。
- 负载平衡考虑:由于采用了专家并行,需要考虑设备级的负载平衡。设置设备级平衡因子为0.05,以鼓励设备之间的计算平衡,减少计算瓶颈的出现。同时,仍设置较小的专家级平衡因子0.003,以防止路由崩溃,确保每个专家都能参与训练。
- 优化器和调度
(二)评估结果
- 基线对比
- 多模型比较:除了DeepSeekMoE 145B本身,还考虑了DeepSeek 67B(Dense)、GShard 137B和DeepSeekMoE 142B(Half Activated)三个模型进行对比。
- 模型差异
- 架构差异:DeepSeek 67B是密集型模型,参数分布和架构特点与MoE模型有所不同;GShard 137B遵循GShard架构,与DeepSeekMoE在专家路由和共享机制上存在差异;DeepSeekMoE 142B(Half Activated)是与145B模型结构相似但激活专家参数较少的模型。
- 参数和计算量对比:这些模型在总参数和计算量上有所不同,DeepSeekMoE 145B在总参数和计算量上与其他模型进行比较,能够更清晰地展现DeepSeekMoE架构在大规模模型下的优势和特点。
- 性能表现
-
总体优势
- 性能超越:尽管与DeepSeek 67B具有可比的总参数和计算量,但DeepSeekMoE 145B在性能上显著优于GShard 137B,再次突出了DeepSeekMoE架构的优势。
- 接近DeepSeek 67B:总体而言,DeepSeekMoE 145B在仅使用28.5%的计算量情况下,实现了与DeepSeek 67B相当的性能。这表明DeepSeekMoE架构在大规模模型下能够有效地利用计算资源,同时保持较高的性能水平。
-
任务性能
- 通用任务:在各种通用任务,如语言建模、语言理解和推理、阅读理解、问答等方面,DeepSeekMoE 145B都表现出了较强的性能。它能够准确地理解文本的含义,回答各种问题,并生成连贯、合理的文本内容。
- 专业任务
- 知识密集型任务:在知识密集型任务中,如数学推理和代码生成,DeepSeekMoE 145B展现出了出色的能力。它能够理解复杂的数学问题和代码逻辑,并提供准确的回答和解决方案。
- 多项选择任务:尽管在多项选择任务中,DeepSeekMoE 145B与DeepSeek 67B相比可能存在一些局限性,但仍然能够取得较好的成绩,表明模型在知识掌握和应用方面具有一定的优势。
-
- 模型特点分析
- 规模效应:随着模型规模的增加,DeepSeekMoE 145B能够学习到更广泛的语言知识和模式,从而提高了模型的性能和泛化能力。
- 优势保持:与之前的实验结果一致,DeepSeekMoE 145B在保持了DeepSeekMoE架构的优势,即通过细粒度专家分割和共享专家隔离实现了更高的专家专业化程度,能够更好地处理各种语言任务。
- 资源利用效率:在大规模训练中,DeepSeekMoE 145B能够更有效地利用计算资源,通过合理的专家配置和负载平衡策略,提高了训练效率,同时降低了成本。
八、相关工作
(一)MoE技术的发展历程
- 起源与早期应用:MoE技术最早由Jacobs等人提出,用于处理不同样本的独立专家模块。最初主要应用于一些特定领域,如信号处理和模式识别等。
- 在语言模型中的引入:Shazeer等人将MoE引入语言模型训练,构建了大规模基于LSTM的MoE模型。这一举措为语言模型的发展提供了新的思路和方法,使得模型能够在大规模数据下进行训练,同时有效地管理计算成本。
- Transformer架构下的发展:随着Transformer架构成为自然语言处理的主流架构,许多研究尝试将MoE与Transformer相结合,构建MoE语言模型。通过将Transformer中的FFNs替换为MoE层,实现了模型的扩展和性能的提升。
(二)现有MoE架构的研究现状
- 常见架构介绍
- GShard:GShard是早期的MoE架构之一,采用顶部-2可学习路由策略,能够将模型扩展到较大规模。然而,它在专家专业化方面存在一定的局限性,容易导致知识混合和冗余。
- Switch Transformer:Switch Transformer基于顶部-1可学习路由,在模型扩展和稀疏性方面具有一定的优势。它通过灵活的路由策略,能够更好地利用计算资源,提高模型的性能。
- Hash Layer:Hash Layer使用固定路由策略,通过哈希函数将令牌分配到不同的专家,实现了更稳定的路由和训练。但它在处理动态变化的数据时,可能会出现一些问题。
- 存在的问题
- 专家专业化不足:大多数现有MoE模型采用传统的顶部-1或顶部-2路由策略,这种策略在一定程度上限制了专家的专业化程度,导致模型难以充分发挥每个专家的优势。
- 训练和微调困难:MoE模型在训练过程中面临着一些挑战,如训练不稳定、微调困难等问题。这些问题影响了模型的训练效率和性能提升。
- 模型性能瓶颈:尽管现有MoE模型在大规模数据下能够取得较好的性能,但在处理一些复杂的语言任务时,仍然存在性能瓶颈,需要进一步改进和优化。
(三)DeepSeekMoE与其他架构的比较
- 优势体现
- 专家专业化程度:DeepSeekMoE通过细粒度专家分割和共享专家隔离策略,实现了更高的专家专业化程度。与现有MoE架构相比,DeepSeekMoE能够更好地将不同的知识分配到不同的专家中,使每个专家能够专注于特定的领域,从而提高了模型的性能和准确性。
- 性能优势:在各种实验和评估中,DeepSeekMoE表现出了优越的性能。它在语言建模、语言理解、大规模数据和复杂任务上具有更强的处理能力,能够准确理解和生成自然语言,并且在计算资源利用效率方面也具有明显优势。
- 创新点突出
- 架构创新:DeepSeekMoE的架构设计是其最大的创新点之一。通过细粒度专家分割和共享专家隔离,DeepSeekMoE打破了传统MoE架构的限制,实现了专家专业化的最大化。这种创新架构为大语言模型的发展提供了新的方向和思路。
- 训练策略优化:在训练过程中,DeepSeekMoE采用了一系列优化策略,如预热和恒定学习率调度、合理的批次大小和序列长度设置等,这些策略有助于提高模型的训练效率和收敛性。
- 负载平衡考虑:DeepSeekMoE充分考虑了设备级的负载平衡问题,通过设置合适的平衡因子,确保了模型在分布式训练环境中的稳定运行,避免了计算瓶颈的出现。
九、结论
主要总结了 DeepSeekMoE 架构的主要贡献以及对未来的展望:
- 主要贡献:
- 架构创新:提出的 DeepSeekMoE 架构通过细粒度专家分割和共享专家隔离策略,有效提高了专家专业化程度,解决了传统 MoE 架构存在的知识混合和冗余问题,推动了 MoE 技术在大语言模型领域的发展。
- 实验验证:经过一系列验证实验,在不同规模和任务上均展现出优越性能,与现有 MoE 架构和其他先进模型相比,在计算资源利用效率和模型性能方面优势明显,且实验结果稳定可靠,为实际应用提供有力支撑。
- 应用价值:能够高效扩展模型规模,降低计算成本,在大规模自然语言处理任务中表现突出,并且适用于多种相关领域,具有广泛的应用前景。
- 未来展望:
- 技术改进与创新:持续探索更优的架构设计和训练算法,如进一步优化专家分割和共享策略,研发更高效的混合精度训练和自适应学习率算法等,以提升模型性能和训练效率。
- 应用拓展与深化:加强与其他领域的融合,如与知识图谱结合增强知识推理能力,与强化学习集成优化决策能力;同时针对不同行业需求进行定制化开发,拓展模型应用场景。
- 可解释性与可靠性提升:深入研究模型可解释性技术,开发有效方法呈现模型决策过程和内部机制;建立严格评估体系,增强模型对抗攻击、保持鲁棒性和避免偏差的能力,确保模型的可靠性和公正性。
相关文章:

DeepSeekMoE 论文解读:混合专家架构的效能革新者
论文链接:DeepSeekMoE: Towards Ultimate Expert Specialization in Mixture-of-Experts Language Models 目录 一、引言二、背景知识(一)MoE架构概述(二)现有MoE架构的问题 三、DeepSeekMoE架构详解(一&a…...

以下是基于巨控GRM241Q-4I4D4QHE模块的液位远程控制系统技术方案:
以下是基于巨控GRM241Q-4I4D4QHE模块的液位远程控制系统技术方案: 一、系统概述 本系统采用双巨控GRM241Q模块构建4G无线物联网络,实现山上液位数据实时传输至山下水泵站,通过预设逻辑自动控制水泵启停,同时支持APP远程监控及人工…...

【JVM详解五】JVM性能调优
示例: 配置JVM参数运行 #前台运行 java -XX:MetaspaceSize-128m -XX:MaxMetaspaceSize-128m -Xms1024m -Xmx1024m -Xmn256m -Xss256k -XX:SurvivorRatio8 - XX:UseConcMarkSweepGC -jar /jar包路径 #后台运行 nohup java -XX:MetaspaceSize-128m -XX:MaxMetaspaceS…...

2.10日学习总结
题目一: AC代码 #include <stdio.h>#define N 1000000typedef long long l;int main() {int n, m;l s 0;l a[N 1], b[N 1];int i 1, j 1;scanf("%d %d", &n, &m);for (int k 1; k < n; k) {scanf("%lld", &a[k]);…...

疯狂前端面试题(四)
一、Ajax、JSONP、JSON、Fetch 和 Axios 技术详解 1. Ajax(异步 JavaScript 和 XML) 什么是 Ajax? Ajax 是一种用于在不刷新页面的情况下与服务器进行数据交互的技术。它通过 XMLHttpRequest 对象实现。 优点 - 支持同步和异步请求。 - 能…...

YOLOv11-ultralytics-8.3.67部分代码阅读笔记-metrics.py
metrics.py ultralytics\utils\metrics.py 目录 metrics.py 1.所需的库和模块 2.def bbox_ioa(box1, box2, iouFalse, eps1e-7): 3.def box_iou(box1, box2, eps1e-7): 4.def bbox_iou(box1, box2, xywhTrue, GIoUFalse, DIoUFalse, CIoUFalse, eps1e-7): 5.def mas…...

SuperCopy解除网页禁用复制功能插件安装和使用
点击下载《SuperCopy解除网页禁用复制功能插件》 1. 前言 在当今数字化时代,网络已成为我们获取信息和知识的主要渠道。互联网如同一片浩瀚无垠的知识海洋,蕴藏着无数的资源,从学术论文到生活小窍门,从专业教程到娱乐资讯&#…...

UP-VLA:具身智体的统一理解与预测模型
25年1月来自清华大学和上海姚期智研究院的论文“UP-VLA: A Unified Understanding and Prediction Model for Embodied Agent”。 视觉-语言-动作 (VLA) 模型的最新进展,利用预训练的视觉语言模型 (VLM) 来提高泛化能力。VLM 通常经过视觉语言理解任务的预训练&…...

Unity 基于状态机的逻辑控制详解
状态机是游戏开发中常用的逻辑控制方法,它可以将复杂的逻辑分解成多个独立的状态,并通过状态转移来控制逻辑的执行流程。本文将详细介绍如何在 Unity 中基于状态机实现逻辑控制,并提供技术详解和代码实现。 一、状态机简介 1.1 基本概念 状…...

傅里叶单像素成像技术研究进展
摘要:计算光学成像,通过光学系统和信号处理的有机结合与联合优化实现特定成像特性的成像系统,摆脱了传统成像系统的限制,为光学成像技术添加了浓墨重彩的一笔,并逐步向简单化与智能化的方向发展。单像素成像(Single-Pi…...

IDEA接入DeepSeek
IDEA 目前有多个途径可以接入deepseek,比如CodeGPT或者Continue,这里借助CodeGPT插件接入,CodeGPT目前用的人最多,相对更稳定 一、安装 1.安装CodeGPT idea插件市场找到CodeGPT并安装 2.创建API Key 进入deepseek官网…...

前端如何判断浏览器 AdBlock/AdBlock Plus(最新版)广告屏蔽插件已开启拦截
2个月前AdBlock/AdBlock Plus疑似升级了一次 因为自己主要负责面对海外的用户项目,发现以前的检测AdBlock/AdBlock Plus开启状态方法已失效了,于是专门研究了一下。并尝试了很多方法。 已失效的老方法 // 定义一个检测 AdBlock 的函数 function chec…...

macOS 上部署 RAGFlow
在 macOS 上从源码部署 RAGFlow-0.14.1:详细指南 一、引言 RAGFlow 作为一款强大的工具,在人工智能领域应用广泛。本文将详细介绍如何在 macOS 系统上从源码部署 RAGFlow 0.14.1 版本,无论是开发人员进行项目实践,还是技术爱好者…...

如何在Kickstart自动化安装完成后ISO内拷贝文件到新系统或者执行命令
如何在Kickstart自动化安装完成后ISO内拷贝文件到新系统或者执行命令 需求 在自动化安装操作系统完成后,需要对操作系统进行配置需要拷贝一些文件到新的操作系统中需要运行一些脚本 问题分析 Linux安装操作系统时,实际上是将ISO镜像文件中的操作系统…...

在服务器部署JVM后,如何评估JVM的工作能力,比如吞吐量
在服务器部署JVM后,评估其工作能力(如吞吐量)可以通过以下步骤进行: 1. 选择合适的基准测试工具 JMH (Java Microbenchmark Harness):适合微基准测试,测量特定代码片段的性能。Apache JMeter:…...

攻防世界32 very_easy_sql【SSRF/SQL时间盲注】
不太会,以后慢慢看 被骗了,看见very_easy就点进来了,结果所有sql能试的全试了一点用都没有 打开源代码发现有个use.php 好家伙,这是真的在考sql吗...... 制作gopher协议的脚本: import urllib.parsehost "12…...

STM32G474--Whetstone程序移植(双精度)笔记
1 获取Whetstone程序 Whetstone程序,我用github被墙了,所以用了KK的方式。 获取的程序目录如上所示。 2 新建STM32工程 配置如上,生成工程即可。 3 在生成的工程中添加并修改Whetstone程序 3.1 实现串口打印功能 在生成的usart.c文件中…...

【DeepSeek × Postman】请求回复
新建一个集合 在 Postman 中创建一个测试集合 DeepSeek API Test,并创建一个关联的测试环境 DeepSeek API Env,同时定义两个变量 base_url 和 api_key 的步骤如下: 1. 创建测试集合 DeepSeek API Test 打开 Postman。点击左侧导航栏中的 Co…...

开源身份和访问管理方案之keycloak(一)快速入门
文章目录 什么是IAM什么是keycloakKeycloak 的功能 核心概念client管理 OpenID Connect 客户端 Client Scoperealm roleAssigning role mappings分配角色映射Using default roles使用默认角色Role scope mappings角色范围映射 UsersGroupssessionsEventsKeycloak Policy创建策略…...

基于PaddleOCR的图像文字识别与程序打包方法
目录 一、基本介绍 二、程序实现 1)环境配置 2)代码实现 3)程序运行结果 三、程序打包 1)使用pyinstaller打包程序 2)添加依赖和模型数据 四、需要注意的问题 五、总结 一、基本介绍 本文主要介绍利用现有开源…...

单片机上SPI和IIC的区别
SPI(Serial Peripheral Interface)和IC(Inter-Integrated Circuit)是两种常用的嵌入式外设通信协议,它们各有优缺点,适用于不同的场景。以下是它们的详细对比: — 1. 基本概念 SPI࿰…...

Python 字典(一个简单的字典)
在本章中,你将学习能够将相关信息关联起来的Python字典。你将学习如何访问和修改字典中的信息。鉴于字典可存储的信息量几乎不受限制,因此我们会演示如何遍 历字典中的数据。另外,你还将学习存储字典的列表、存储列表的字典和存储字典的字典。…...

一个简单的Windows TCP服务器实现
初始化 WSADATA wsaData; SOCKET serverSocket, clientSocket; struct sockaddr_in serverAddr { 0x00 }; struct sockaddr_in clientAddr { 0x00 }; int clientAddrLen sizeof(clientAddr);if (WSAStartup(MAKEWORD(2, 2), &wsaData) ! 0) {printf("WSAStartup f…...

Node.js笔记入门篇
黑马程序员视频地址: Node.js与Webpack-01.Node.js入门 基本认识 概念 定义:Node.js 是一个免费、开源、跨平台的 JavaScript 运行时环境, 它让开发人员能够创建服务器 Web 应用、命令行工具和脚本 作用:使用Node.js 编写服务器端程序 ✓ …...

EX_25/2/10
epoll实现多路客户端之间的登录注册及消息和文件传输 服务器部分 #include <stdio.h> #include <string.h> #include <unistd.h> #include <stdlib.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include…...

python视频爬虫
文章目录 爬虫的基本步骤一些工具模拟浏览器并监听文件视频爬取易错点一个代码示例参考 爬虫的基本步骤 1.抓包分析,利用浏览器的开发者工具 2.发送请求 3.获取数据 4.解析数据 5.保存数据 一些工具 requests, 用于发送请求,可以通过get,p…...

RbFT:针对RAG中检索缺陷的鲁棒性微调
今天给大家分享一篇最新的RAG论文: 论文题目:Enhancing Retrieval-Augmented Generation: A Study of Best Practices 论文链接:https://arxiv.org/pdf/2501.18365 论文代码:https://github.com/StibiumT16/Robust-Fine-tuning 研…...

证明: 极限的局部有界性
在考研数学中,极限的局部有界性是一个非常重要的概念,尤其是在讨论函数的连续性、可积性和可微性等性质时。局部有界性可以帮助我们理解函数在某些区域内的行为。 定理: 如果 lim x → x 0 f ( x ) L \lim_{x \to x_0} f(x) L limx→x0…...

51单片机俄罗斯方块计分函数
/************************************************************************************************************** * 名称:scoring * 功能:计分 * 参数:NULL * 返回:NULL * 备注:采用非阻塞延时 ****************…...

new 以及 call、apply、bind 关键字解析
1.new关键字 自动创建对象:使用new调用构造函数时,会自动创建一个空对象,并将其赋值给this。你不需要显式地使用{}来创建对象。 绑定this到新对象:构造函数内部的this指向新创建的对象,因此可以在构造函数中为新对象添…...