首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

【DeepSeek论文精读】3. DeepSeekMoE:迈向混合专家语言模型的终极专业化

  • 25-02-16 05:21
  • 2436
  • 13809
blog.csdn.net

欢迎关注[【AIGC论文精读】](https://blog.csdn.net/youcans/category_12321605.html)原创作品
【DeepSeek论文精读】1. 从 DeepSeek LLM 到 DeepSeek R1
【DeepSeek论文精读】2. DeepSeek LLM:以长期主义扩展开源语言模型
【DeepSeek论文精读】3. DeepSeekMoE:迈向混合专家语言模型的终极专业化
【DeepSeek论文精读】4. DeepSeek-V2:强大、经济且高效的混合专家语言模型
【DeepSeek论文精读】5. DeepSeek-V3 技术报告
【DeepSeek论文精读】6. DeepSeek R1:通过强化学习激发大语言模型的推理能力

【DeepSeek论文精读】3. DeepSeekMoE:迈向混合专家语言模型的终极专业化

    • 0. 论文概况
      • 0.1 简介
      • 0.1 摘要
      • 0.2 结论
    • 1. 介绍
    • 2. 前置知识:Transformers 架构下的MoE
    • 3. DeepSeekMoE 架构
      • 3.1 细粒度专家分割
      • 3.2 共享专家隔离
      • 3.3 负载均衡考虑
    • 4. 实验验证
      • 4.1 实验设置
      • 4.2 评价
      • 4.3 DeepSeekMoE 与 MoE模型的上限紧密对齐
      • 4.4 消融研究
      • 4.5 专家专业化分析
    • 5. 放大到 DeepSeekMoE 16B
      • 5.1 实验设置
      • 5.2 评价
    • 6. DeepSeekMoE 16B 对齐
      • 6.1 实验设置
      • 6.2 评价
    • 7. DeepSeekMoE 145B
      • 7.1 实验设置
      • 7.2 评估结果
    • 8. 相关工作
    • 9. 结论


0. 论文概况

0.1 简介

2024 年 1 月,DeepSeek 发表论文「 DeepSeekMoE:迈向混合专家语言模型的终极专业化 」(DeepSeekMoE: Towards Ultimate Expert Specialization in Mixture-of-Experts Language Models) 。

论文提出了MoE语言模型的DeepSeekMoE架构,目的是实现终极的专家专业化(expert specialization)。通过细粒度的专家分割和共享专家隔离,DeepSeekMoE相比主流的MoE架构实现了显著更高的专家专业化和性能。

  • 论文标题:DeepSeekMoE: Towards Ultimate Expert Specialization in Mixture-of-Experts Language Models
  • 发布时间:2024 年 1 月
  • 论文地址:https://arxiv.org/pdf/2401.06066
  • Github地址:https://github.com/deepseek-ai/DeepSeek-MoE
  • 主要内容:
    • 提出细粒度专家分割(Fine-Grained Expert Segmentation)和共享专家隔离(Shared Expert Isolation)策略。
    • 通过更灵活的专家组合提升模型性能,同时保持计算成本不变。。
  • 数据集规模:16B。

在这里插入图片描述


0.1 摘要

在大型语言模型时代,混合专家(Mixture-of-Experts, MoE)架构是一种有前途的架构,用于在扩展模型参数时管理计算成本。然而,传统的MoE架构如GShard,激活前?个专家中的?个,面临着确保专家专业化的问题,即每个专家获得非重叠且专注的知识。

为此,我们提出了DeepSeekMoE架构,旨在实现最终的专家专业化。DeepSeekMoE 涉及两个主要策略:
(1)将专家精细划分为 m N mN mN 个,并从中激活 m K mK mK 个,从而实现更灵活的激活专家组合;
(2)隔离 K s Ks Ks 个专家作为共享专家,旨在捕捉共同知识并减少路由专家的冗余。

本文的贡献总结如下:

  • 架构创新。我们引入了DeepSeekMoE,这是一种旨在实现最终专家专业化的创新MoE架构,采用了细粒度专家分割和共享专家隔离两个主要策略。
  • 实证验证。我们进行了广泛的实验,以实证验证DeepSeekMoE架构的有效性。实验结果验证了DeepSeekMoE 2B中高水平专家专业化的有效性,并表明DeepSeekMoE 2B几乎接近MoE模型的性能上限。
  • 可扩展性。我们将DeepSeekMoE扩展到训练16B模型,并显示仅使用约40%的计算量,DeepSeekMoE 16B的性能与DeepSeek 7B和LLaMA2 7B相当。我们还进行了将DeepSeekMoE扩展到145B的初步努力,突显了其相对于GShard架构的持续优势,并显示其性能与DeepSeek 67B相当。
  • 对齐MoE。我们成功地对DeepSeekMoE 16B进行了有监督微调,创建了一个对齐的聊天模型,展示了DeepSeekMoE 16B的适应性和多功能性。
  • 公开发布。本着开放研究的精神,我们将DeepSeekMoE 16B的模型检查点公开发布。值得注意的是,该模型可以在单个40GB内存的GPU上部署,无需量化。

在这里插入图片描述

Figure 1 :DeepSeekMoE 16B与开源模型在Open LLM Leaderboard上的比较。红色虚线是从除DeepSeekMoE 16B之外的所有模型的数据点线性拟合得到的。DeepSeekMoE 16B始终以很大的优势胜过具有类似激活参数数量的模型,并在性能上与LLaMA2 7B相媲美,后者的激活参数数量大约是其2.5倍


0.2 结论

我们介绍了用于MoE语言模型的DeepSeekMoE架构,旨在实现最终的专家专业化。
通过细粒度专家分割和共享专家隔离,DeepSeekMoE在专家专业化和性能方面显著优于现有的MoE架构。
从较小的2B参数规模开始,论文验证了DeepSeekMoE的优势,展示了其接近MoE模型上限性能的能力。此外,论文证明DeepSeekMoE具有比GShard更高水平的专家特化。
扩展到16B总参数的更大规模,我们在2T token上训练DeepSeekMoE 16B,并展示了其与DeepSeek 7B和LLaMA2 7B相当的卓越性能,仅使用了约40%的计算量。
此外,我们进行了有监督微调以实现对齐,构建了基于DeepSeekMoE 16B的MoE聊天模型,进一步展示了其适应性和多功能性。
进一步,我们进行了将DeepSeekMoE扩展到145B参数的初步探索。我们发现DeepSeekMoE 145B仍然保持相对于GShard架构的显著优势,并展示了与DeepSeek 67B相当的性能,仅使用了28.5%(甚至可能18.2%)的计算量。
为了研究目的,我们将DeepSeekMoE 16B的模型检查点公开发布,该模型可以在单个40GB内存的GPU上部署。我们希望这项工作能为学术界和工业界提供有价值的见解,并促进大规模语言模型的加速发展。


1. 介绍

最近的研究和实践经验表明,在有足够的训练数据的情况下,用增加的参数和计算预算来缩放语言模型可以产生非常强大的模型(Brown等人,2020;Hoffmann等人,2022;OpenAI,2023;Touvron等人,2023a)。然而,必须承认,将模型扩展到超大规模的努力也与极高的计算成本有关。考虑到巨大的成本,混合专家(MoE)架构(Jacobs等人,1991;Jordan和Jacobs,1994;Shazeer等人,2017)已成为一种流行的解决方案。它可以实现参数缩放,同时将计算成本保持在适度的水平。最近,MoE架构在Transformers中的应用(Vaswani等人,2017)成功地将语言模型扩展到了相当大的规模(Du等人,2022;Fedus等人,2021;Lepikhin等人,2021,Zoph,2022),并取得了显著的性能。这些成就突显了MoE语言模型的巨大潜力和前景。

尽管MoE架构具有巨大的潜力,但现有的MoE架构可能存在知识混合(knowledge hybridity )和知识冗余(knowledge redundancy)的问题,这限制了专家的专业化,即每个专家都获得了不重叠和集中的知识。传统的MoE架构用MoE层代替 Transformer 中的前馈网络(FFN)。每个MoE层由多个专家组成,每个专家的结构都与标准FFN相同,每个令牌(token)都分配给一个(Fedus等人,2021)或两个(Lepikhin等人,2021年)专家。这种架构体现了两个潜在的问题:
(1)知识混合:现有的 MoE 实践通常雇佣有限数量的专家(例如8或16名),分配给特定专家的标记可能会涵盖不同的知识。因此,指定的专家将打算在其参数中收集截然不同类型的知识,这些知识很难同时使用。
(2) 知识冗余:分配给不同专家的令牌可能需要共同知识。因此,多个专家在获取各自参数的共享知识时可能会趋同,从而导致专家参数中的冗余。这些问题共同阻碍了现有 MoE 实践中的专家专业化,使其无法达到 MoE 模型的理论上限性能。

针对上述问题,我们介绍了DeepSeekMoE,这是一种专门为最终专家专业化而设计的创新MoE架构。我们的架构涉及两个主要策略:

  1. 细粒度专家分割:
    在保持参数数量不变的同时,我们通过分割FFN中间隐藏维度将专家分割成更细粒度。相应地,在保持恒定计算成本的情况下,我们还激活了更细粒度的专家,以实现更灵活、适应性更强的激活专家组合。细粒度的专家细分允许将不同的知识更精细地分解,并更精确地学习到不同的专家中,每个专家都将保持更高的专业水平。此外,组合活跃专家的灵活性增加也有助于更准确、更有针对性地获取知识。
  2. 共享专家隔离:
    我们隔离某些专家,作为始终处于活动状态的共享专家,旨在在不同的环境中捕获和巩固共同知识。通过将共同知识压缩到这些共享专家中,将减少其他路由专家之间的冗余。这可以提高参数效率,并确保每个路由专家通过专注于独特的方面来保持专业性。DeepSeekMoE中的这些架构创新为训练一个参数高效的MoE语言模型提供了机会,在这个模型中,每个专家都是高度专业化的。

从2B参数的适度规模开始,我们验证了DeepSeek MoE架构的优势。我们对跨越不同任务的12个零样本或少样本基准进行评估。实证结果表明,DeepSeekMoE 2B远远超过了GShard 2B(Lepikhin等人,2021),甚至与GShard 2.9B相匹配,后者是一个具有1.5×专家参数和计算的更大MoE模型。值得注意的是,我们发现DeepSeekMoE 2B在参数数量相等的情况下几乎接近其密集对应物的性能,这设定了MoE语言模型的严格上限。为了寻求更深入的见解,我们对DeepSeekMoE的专家专业进行了详细的消融研究和分析。这些研究验证了细粒度专家分割和共享专家隔离的有效性,并提供了实证证据支持DeepSeekMoE可以实现高水平的专家专业化。

利用我们的架构,我们随后将模型参数扩展到16B,并在具有2T令牌的大规模语料库上训练DeepSeekMoE 16B。评估结果显示,DeepSeekMoE 16B的计算量仅为40%左右,其性能与DeepSeek 7B(DeepSeek AI,2024)相当,DeepSeek是一个在相同2T语料库上训练的密集模型。我们还将DeepSeekMoE与开源模型进行了比较,评估结果表明,DeepSeekMoE 16B在激活参数数量相似的情况下始终表现出色,并与LLaMA2 7B(Touvron等人,2023b)达到了相当的性能,后者大约是激活参数的2.5倍。图1显示了Open LLM排行榜上的评估结果1。此外,我们进行监督微调(SFT)以进行对齐,将模型转换为聊天模型。评估结果显示,DeepSeekMoE Chat 16B在聊天设置中也实现了与DeepSeek Chat7B和LLaMA2 SFT 7B相当的性能。受到这些结果的鼓舞,我们进一步开展了将De epSeekMoE规模扩大到145B的初步努力。实验结果仍然一致地证明了其相对于GShard架构的实质性优势。此外,它的性能与DeepSeek 67B相当,只使用了28.5%(甚至18.2%)的计算。

我们的贡献总结如下:

  • 架构创新。我们介绍了DeepSeekMoE,这是一种旨在实现最终专家专业化的创新MoE架构,它采用了细粒度专家分割和共享专家隔离两种主要策略。
  • 实验验证。我们进行了广泛的实验,以实证验证DeepSeekMoE架构的有效性。实验结果验证了DeepSeekMoE 2B的高水平专家专业化,并表明DeepSeekMoE 2B几乎可以接近MoE模型的上限性能。
  • 可扩展性。我们扩大了DeepSeekMoE的规模来训练16B模型,并表明仅需约40%的计算,DeepSeekMoE 16B的性能与DeepSeek 7B和LLaMA2 7B相当。我们还初步尝试将DeepSeekMoE扩展到145B,突出其相对于GShard架构的持续优势,并显示出与DeepSeek 67B相当的性能。
  • MOE 的校准。我们成功地对 DeepSeekMoE 16B进行了监督微调,创建了一个对齐的聊天模型,展示了DeepSeekMoE 16B的适应性和多功能性。
  • 公开发布。本着开放研究的精神,我们向公众发布了DeepSeekMoE 16B的模型检查点。值得注意的是,该模型可以部署在具有40GB内存的单个GPU上,而不需要量化。

2. 前置知识:Transformers 架构下的MoE

首先,我们介绍一种在Transformer语言模型中常用的通用MoE(Mixture of Experts,混合专家)架构。一个标准的 Transformer语言模型是通过堆叠 L L L 层标准的Transformer块构建的,每个块可以表示如下:

在这里插入图片描述

其中, T T T 表示序列长度,Self-Att(·) 表示自注意力模块,FFN(·) 表示前馈神经网络 (Feed-Forward Network)。 u 1 : T l ∈ R T ∗ d u^l_{1:T} \in R^{T*d} u1:Tl​∈RT∗d 表示经过 第 l l l 层注意力模块后的所有token的隐藏状态,而 h t l ∈ R d h^l_t \in R^d htl​∈Rd 则是第 l l l 层Transformer块中第 t t t
个token的输出隐藏状态。为简洁起见,我们在上述公式中省略了层归一化。

一种构建MoE语言模型的典型方法,是在Transformer中按照指定的间隔,用MoE层替换 FFN 层。一个 MoE 层由多个专家组成,每个专家的结构与标准的 FFN 层相同。然后,每个token将被分配到一个或两个专家。若将第 l l l 层的FFN替换为MoE层,则其输出隐藏状态的计算表示如下:

在这里插入图片描述

其中, N N N 表示专家的总数, F F N i ( ⋅ ) FFNi(·) FFNi(⋅) 是第 i i i 个专家的 FFN, g i , t g_{i,t} gi,t​ 表示第 i i i 个专家的门控值, s i , t s_{i,t} si,t​ 表示token到专家的亲和度, T o p k ( ⋅ , K ) Topk(·,K) Topk(⋅,K) 表示在第 t t t 个token和所有 N N N 个专家中计算出的前 K K K 个最高亲和度分数的集合, e i l e^l_i eil​ 是第 l l l 层中第 i i i 个专家的质心。
注意, g i , t g_{i,t} gi,t​ 是稀疏的,这意味着只有 N N N 个门控值中的 K K K 个非零。此稀疏特性确保了在MoE层内的计算效率,即每个token仅分配到 K K K 个专家中进行计算。同样,我们在上述公式中为简洁起见省略了层归一化操作。


3. DeepSeekMoE 架构

在第2节概述的通用MoE架构基础上,我们引入了DeepSeekMoE,该架构专门设计用于充分利用专家专业化的潜力。如图2所示,我们的架构包含两个主要策略:细粒度专家分割和共享专家隔离。这两种策略旨在提升专家专业化的水平。

在这里插入图片描述
图2:DeepSeekMoE的插图。子图(a)展示了采用传统前2路由策略的MoE层。子图(b)说明了细粒度专家细分策略。随后,子图(c)展示了共享专家隔离策略的集成,构成了完整的DeepSeekMoE架构。值得注意的是,在这三种架构中,专家参数的数量和计算成本保持不变。


3.1 细粒度专家分割

在专家数量有限的情况下,被分配到某个特定专家的 tokens 更可能覆盖多样化的知识类型。因此,指定的专家会倾向于在其参数中学习大量不同类型的知识,而这些知识难以同时被有效利用。然而,如果每个 token 可以被路由到更多的专家,那么多样化的知识将有可能在不同的专家中被分别分解和学习。在这种情况下,每个专家仍然可以保持较高水平的专业化,从而实现更为集中的知识分布。

为了实现这一目标,同时保持专家参数和计算成本的一致性,我们对专家进行了更细粒度的分割。这种细粒度的专家分割使得激活专家的组合更具灵活性和适应性。具体来说,在典型的MoE架构的基础上(如图2(a)所示),我们将每个专家FFN分割成 m m m 个更小的专家,通过将 FFN 的中间隐藏维度减少到其原始大小的 1 m \frac{1}{m} m1​ 。由于每个专家变小,因此我们也相应地将激活专家的数量增加 m m m 倍,以保持相同的计算成本,如图2(b)所示。

通过这种细粒度的专家分割,MoE 层的输出可以表示为:

在这里插入图片描述

其中,专家参数的总数等于标准FFN中的参数数目乘以 N N N,而 m N m N mN 表示细粒度专家的总数。通过细粒度专家分割策略,非零门控的数量也增加到 m K mK mK。

从组合学的角度来看,细粒度的专家分割策略显著增强了激活专家的组合灵活性。举一个例子,考虑 N = 16 N = 16 N=16 的情况。典型的top-2 路由策略可以生成 ( 16 2 ) = 120 \binom{16}{2} = 120 (216​)=120 种可能的组合。相比之下,如果每个专家分割成 4个更小的专家,则细粒度路由策略可以生成 ( 64 8 ) = 4 , 426 , 165 , 368 \binom{64}{8} = 4,426,165,368 (864​)=4,426,165,368 种潜在的组合。组合灵活性的增加提升了获得更精确和有针对性知识获取的潜力。


3.2 共享专家隔离

在传统的路由策略中,被分配到不同专家的 tokens 可能需要一些公共的知识或信息。因此,多个专家可能会在各自的参数中学习共享知识,从而导致参数的冗余。然而,如果有专门的共享专家来捕获和整合不同上下文中的公共知识,其他路由专家之间的参数冗余将得到缓解。这种冗余的减少将有助于实现一个更高效的模型,使专家更具专业性。

为实现这一目标,除了细粒度专家分割策略外,我们还进一步隔离了 K s K_s Ks​ 个专家以充当共享专家。无论路由模块如何,每个token 都会被确定性地分配给这些共享专家。为了保持恒定的计算成本,其他路由专家中激活的专家数量将减少 K s K_s Ks​,如图2c所示。结合共享专家隔离策略,完整的DeepSeekMoE架构中的MoE层公式如下:

在这里插入图片描述

最终,在DeepSeekMoE中,共享专家的数量为 K s K_s Ks​,路由专家的总数为 m N − K s mN - K_s mN−Ks​ ,而非零门控的数量为 m K − K s mK - K_s mK−Ks​。

需要说明的是,共享专家隔离的原型可以归功于Rajbhandari等人(2022)。关键的区别在于,他们是从工程角度推导出了这一策略,而我们则是从算法的角度来进行处理。


3.3 负载均衡考虑

自动学习的路由策略可能会遇到负载不平衡的问题,这表现出两个明显的缺陷。首先,存在路由崩溃的风险(Shazeer等人,2017),即模型总是只选择少数专家,导致其他专家无法得到充分的培训。其次,如果专家分布在多个设备上,负载不平衡会加剧计算瓶颈。

  1. 专家级别的均衡损失
    为了降低路由崩溃的风险,我们引入了专家级别的均衡损失。均衡损失的计算如下:

在这里插入图片描述

其中, α 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 ( ⋅ ) 1(⋅) 1(⋅) 表示指示函数。

  1. 设备级别的均衡损失
    除了专家级别的均衡损失外,我们还引入了设备级别的均衡损失。在缓解计算瓶颈时,没有必要在专家级别施加严格的均衡约束,因为对负载均衡的过度约束会影响模型性能。相反,我们的主要目标是确保设备之间的计算均衡。如果我们将所有路由专家划分为 D D D 组 { E 1 , E 2 , . . . , E D } \{ \mathcal{E}_1, \mathcal{E}_2, ..., \mathcal{E}_D \} {E1​,E2​,...,ED​},并在每个设备上部署一组专家,则设备级别的均衡损失计算如下:

在这里插入图片描述

​其中,KaTeX parse error: Undefined control sequence: \alfa at position 1: \̲a̲l̲f̲a̲ ̲_2 是超参数,称为设备级别的均衡因子。在实际应用中,我们设置了一个较小的专家级平衡因子来降低路由崩溃的风险,同时设置了较大的设备级平衡因子以促进跨设备的平衡计算。


4. 实验验证

4.1 实验设置

4.1.1 训练数据和标记化

我们的训练数据是从DeepSeek AI创建的大规模多语言语料库中采样的。该语料库主要关注英语和汉语,但也包括其他语言。它来自不同的来源,包括网络文本、数学材料、编码脚本、已发表的文献和各种其他文本材料。为了进行验证实验,我们从语料库中抽取了一个包含100B个标记的子集来训练我们的模型。对于标记化,我们利用HuggingFace Tokenizer2工具在训练语料库的较小子集上训练字节对编码(BPE)(Sennrich等人,2016)标记器。在验证实验中,我们准备了一个词汇量为8K的标记器,当训练更大的模型时,词汇量会扩大。

4.1.2 基础设施

我们基于HAI-LLM(High Flyer,2023)进行实验,这是一种高效且轻量级的训练框架,集成了多种并行策略,包括张量并行性(Korthikanti等人,2023;Narayanan等人,2021;Shoeybi等人,2019)、ZeRO数据并行性(Rajbhandari等人,2020)、PipeDream流水线并行性(Harlap等人,2018),更具体地说,是通过结合数据和张量并行性来实现专家并行性(Lepikhin等人,2021)。为了优化性能,我们使用CUDA和Triton(Tillet等人,2019)开发了GPU内核,用于不同专家的门控算法和跨线性层的融合计算。所有实验均在配备NVIDIA A100或H800 GPU的集群上进行。A100集群中的每个节点都包含8个通过NVLink网桥成对连接的GPU。H800集群每个节点还具有8个GPU,在节点内使用NVLink和NVSwitch互连。对于A100和H800集群,InfiniBand互连用于促进节点之间的通信。

4.1.3 超参数

  1. 模型设置。
    在验证实验中,我们将Transformer层数设置为9,隐藏维度设置为1280。我们采用多头注意力机制,共有10个注意力头,每个头的尺寸为128。对于初始化,所有可学习参数都以0.006的标准偏差随机初始化。我们用MoE层替换所有FFN,并确保专家参数的总数等于标准FFN的16倍。此外,我们将激活的专家参数(包括共享专家参数和激活的路由专家参数)保持为标准FFN的2倍。在这种配置下,每个MoE模型的总参数约为2B,激活的参数数量约为0.3B。

  2. 训练设置。
    我们使用 AdamW优化器(Loshchilov和Hutter,2019),将超参数设置为 β 1 = 0.9 \beta_1=0.9 β1​=0.9, β 2 = 0.95 \beta_2=0.95 β2​=0.95,weight_decay=0.1。使用预热和逐步衰减策略来安排学习率。最初,在前2K个步骤中,学习率从0线性增加到最大值。随后,在80%的训练步骤中将学习率乘以0.316,在90%的训练步骤中再次乘以0.316。验证实验的最大学习率设置为1.08×10−3,梯度裁剪范数设置为1.0。批大小设置为2K,最大序列长度为2K,每个训练批包含4M个令牌。相应地,训练步骤的总数被设置为25000,以实现100B个训练令牌。由于训练数据丰富,我们在训练过程中不使用dropout。鉴于模型尺寸相对较小,所有参数(包括专家参数)都部署在单个GPU设备上,以避免计算不平衡。相应地,我们在训练过程中不会丢弃任何令牌,也不会使用设备级余额损失。为了防止路由崩溃,我们将专家级平衡因子设置为0.01。
    为了可读性,我们还在附录A中提供了DeepSeekMoE不同尺寸的超参数概览表。

4.1.4 评估基准

我们对涵盖各种类型任务的广泛基准进行评估。我们列出了以下基准。

  • 语言建模。对于语言建模,我们在Pile的测试集上评估模型(Gao等人,2020),评估指标是交叉熵损失。
  • 语言理解和推理。对于语言理解和推理,我们考虑了HellaSwag(Zellers等人,2019)、PIQA(Bisk等人,2020)、ARC挑战和AREasy(Clark等人,2018)。这些任务的评估指标是准确性。
  • 阅读理解。对于阅读理解,我们使用RACE high和RACE middleLai等人(2017),评估指标是准确性。
  • 代码生成。对于代码生成,我们评估了HumanEval(Chen等人,2021)和MBPP(Austin等人,2021年)上的模型。评估指标为Pass@1,其表示仅一代尝试的通过率。
  • 封闭式问答。对于封闭式问答,我们考虑TriviaQA(Joshi等人,2017)和NaturalQuestions(Kwiatkowski等人,2019)。评估指标是精确匹配(EM)率。

4.2 评价

  1. 基线。
    包括DeepSeekMoE在内,我们比较了五个模型进行验证实验。Dense表示总参数为0.2B的标准密集Transformer语言模型。哈希层(Roller等人,2021)是一种基于前1哈希路由的MoE架构,总参数为2.0B,激活参数为0.2B,与密集基线对齐。Switch Transformer(Fedus等人,2021)是另一种基于top-1可学习路由的著名MoE架构,其总参数和激活参数与哈希层相同。GShard(Lepikhin等人,2021)采用了前2名可学习路由策略,与前1名路由方法相比,总共有2.0B个参数和0.3B个激活参数,因为多了一个专家被激活。DeepSeekMoE有1个共享专家和63个路由专家,每个专家的大小是标准FFN的0.25倍。包括DeepSeekMoE在内,所有比较模型共享相同的训练语料库和训练超参数。所有比较的MoE模型具有相同数量的总参数,GShard具有与DeepSeekMoE相同数量的激活参数。

  2. 结果。
    我们将评估结果列于表1中。对于所有演示的模型,我们报告了在100B令牌上训练后的最终评估结果。从表中,我们得出以下观察结果:(1)在稀疏架构和更多总参数的情况下,哈希层和开关变换器的性能明显强于具有相同激活参数数量的密集基线。(2) 与哈希层和开关变换器相比,GShard具有更多的激活参数,性能略优于开关变换器。(3) 在总参数和激活参数数量相同的情况下,DeepSeekMoE比GShard具有压倒性的优势。这些结果展示了我们的DeepSeekMoE架构在现有MoE架构中的优势

在这里插入图片描述


4.3 DeepSeekMoE 与 MoE模型的上限紧密对齐

我们已经证明,DeepSeekMoE的性能优于密集基线和其他MoE架构。

为了更精确地了解DeepSeekMoE的性能,我们将其与具有更多总参数或激活参数的较大基线进行了比较。这些比较使我们能够估计GShard或密集基线所需的模型大小,以实现与DeepSeekMoE相当的性能。

与 GShard×1.5 的比较。

表2显示了DeepSeekMoE和一个更大的GShard模型之间的比较,GShard的专家规模是其1.5倍,这导致专家参数和专家计算都是1.5倍。总体而言,我们观察到DeepSeekMoE的性能与GShard×1.5相当,突显了DeepSeekMoE架构固有的显著优势。除了与GShard×1.5的比较外,我们还在附录B中展示了与GShards×1.2的比较。

此外,我们将DeepSeekMoE的总参数数量增加到13.3B,并将其分别与GShard×1.2和GShard x 1.5的15.9B和19.8B的总参数进行比较。我们发现,在更大的尺度上,DeepSeekMoE甚至可以明显优于GShard×1.5。这些结果也在附录B中提供。

在这里插入图片描述

与 Dense×16 的比较。
表2还显示了DeepSeekMoE和更大密度模型之间的比较。为了进行公平的比较,我们没有使用注意力和FFN参数之间广泛使用的比率(1:2)。相反,我们配置了16个共享专家,其中每个专家的参数数量与标准FFN相同。该架构模拟了一个具有16倍标准FFN参数的密集模型。从表中可以看出,DeepSeekMoE的性能几乎接近Dense×16,这为MoE模型的模型容量设定了严格的上限。这些结果表明,至少在约2B参数和100B训练令牌的尺度上,DeepSeekMoE的性能与MoE模型的理论上限非常接近。此外,我们在附录B中提供了与Dense×4的额外比较。


4.4 消融研究

为了证实细粒度专家分割和共享专家隔离策略的有效性,我们对DeepSeekMoE进行了消融研究,结果如图3所示。为了进行公平的比较,我们确保比较中包含的所有模型具有相同数量的总参数和激活参数。

在这里插入图片描述

共享专家隔离。
为了评估共享专家隔离策略的影响,我们基于GShard将一名专家隔离为共享专家。从图3中,我们观察到,与GShard相比,有意隔离共享专家在大多数基准测试中都能提高性能。这些结果支持了共享专家隔离策略有助于提高模型性能的命题。

细粒度专家细分。
为了评估细粒度专家分割策略的有效性,我们通过将专家进一步分割成更细粒度来进行更详细的比较。具体来说,我们将每位专家分成2或4名较小的专家,总共有32名(1名共享+31名路由)或64名(1位共享+63名路由)专家。图3显示了一个一致的趋势,即专家分割粒度的不断细化对应于整体模型性能的不断提高。这些发现为细粒度专家分割策略的有效性提供了实证支持。

共享和路由专家之间的比率。
此外,我们还研究了共享专家和路由专家的最佳比例。基于64位专家的最精细粒度,并保持专家总数和激活专家的数量不变,我们试图将1、2和4位专家分离为共享专家。我们发现,共享专家和路由专家的不同比例对性能没有显著影响,1、2和4个共享专家的桩损失分别为1.808、1.806和1.811。考虑到1:3的比例会产生略好的桩损失,在扩大DeepSeekMoE时,我们将共享专家和激活的路由专家之间的比例保持为1:3。


4.5 专家专业化分析

在本节中,我们对DeepSeekMoE 2B的专家专业化进行了实证分析。本节中的DeepSeekMoE 2B是指表1中报告的模型,即包括2.0B的总参数,其中1个共享专家和63个路由专家中的7个被激活。

DeepSeekMoE在路由专家中表现出较低的冗余度。
为了评估路由专家之间的冗余,我们禁用了不同比例的顶级路由专家,并评估了桩损失。具体来说,对于每个令牌,我们屏蔽一定比例的具有最高路由概率的专家,然后从剩余的路由专家中选择前K名专家。为了公平起见,我们将DeepSeekMoE与GShard×1.5进行了比较,因为当没有专家被禁用时,它们具有相同的桩损失。如图4所示,与GShard×1.5相比,DeepSeekMoE对顶级路由专家的禁用更敏感。这种敏感性表明DeepSeekMoE中的参数冗余程度较低,因为每个路由专家都是不可替代的。相比之下,GShard×1.5在其专家参数中表现出更大的冗余,因此当顶级路由专家被禁用时,它可以缓冲性能下降。

在这里插入图片描述

共享专家不可被路由专家所取代。
为了调查共享专家在DeepSeekMoE中的作用,我们禁用它并激活另一个路由专家。对桩的评估显示,桩损失显著增加,从1.808上升到2.414,尽管我们保持了相同的计算成本。这一结果突出了共享专家的关键作用,并表明共享专家捕获了与路由专家不共享的基础和基本知识,使其成为路由专家不可替代的知识。

DeepSeekMoE更准确地获取知识。
为了验证我们的说法,即结合激活专家的更高灵活性有助于更准确、更有针对性地获取知识,我们研究了DeepSeekMoE是否可以用更少的激活专家获取必要的知识。具体来说,我们将激活的路由专家的数量从3人增加到7人,并评估由此产生的桩损失。如图5所示,即使只有4名路由专家被激活,DeepSeekMoE的桩损失也与GShard相当。这一观察结果支持了DeepSeekMoE可以更准确、更有效地获取必要知识的观点。

受到这些发现的鼓舞,为了更严格地验证DeepSeekMoE的专家专业化和准确的知识获取,我们从头开始训练了一个新模型。该模型包括1个共享专家和63个路由专家,其中只有3个路由专家被激活。图6所示的评估结果表明,即使使用相同的总专家参数和只有一半的激活专家参数,DeepSeekMoE仍然优于GShard。这突显了DeepSeekMoE更有效地利用专家参数的能力,即激活专家中有效参数的比例远高于GShard。

在这里插入图片描述

在这里插入图片描述


5. 放大到 DeepSeekMoE 16B

通过DeepSeekMoE架构,我们将MoE模型扩展到更大的规模,总参数为16B,并在2T令牌上进行训练。我们的结果表明,与LLaMA2 7B相比,DeepSeekMoE 16B仅需约40%的计算即可实现卓越的性能。


5.1 实验设置

5.1.1 训练数据和标记化

我们从第4.1.1节所述的同一语料库中采样训练数据。与验证实验不同,我们使用2T令牌对大量数据进行采样,与LLaMA2 7B的训练令牌数量一致。我们还使用HuggingFace Tokenizer工具来训练BPE标记器,但DeepSeekMoE 16B的词汇量设置为100K。

5.1.2 超参数

模型设置
训练设置

5.1.3 评估基准

除了验证实验中使用的基准外,我们还纳入了其他基准,以进行更全面的评估。我们介绍了与验证实验中使用的基准的区别如下。


5.2 评价

5.2.1 与DeepSeek 7B的内部比较

我们首先对DeepSeekMoE 16B和DeepSeek 7B(DeepSeek AI,2024)进行了内部比较,DeepSeek是一个具有6.9B参数的密集语言模型。为了确保公平性,这两个模型都是在同一个语料库上用2T令牌训练的。这使得我们能够准确评估MoE架构的有效性,而不受训练数据的影响。

5.2.2 与开源模型的比较

与LLaMA2 7B的内部比较
OpenAI LLM 排行榜评价


6. DeepSeekMoE 16B 对齐

先前的研究表明,MoE模型通常不会从微调中获得显著收益(Artetxe等人,2022;Fedus等人,2021)。然而,Shen等人(2023)的研究结果表明,MoE模型确实可以从指令调优中受益。为了评估DeepSeekMoE 16B是否可以从微调中受益,我们进行了监督微调,以构建基于DeepSeekMoE 16B的聊天模型。实验结果表明,DeepSeekMoE Chat 16B的性能也与LLaMA2 SFT 7B和DeepSeek Chat 7B相当。


6.1 实验设置

  1. 训练数据
    为了训练聊天模型,我们对内部策划的数据进行监督微调(SFT),包括140万个训练示例。该数据集涵盖了广泛的类别,包括数学、代码、写作、问答、推理、总结等。我们的大多数SFT训练数据都是英文和中文的,这使得聊天模型功能多样,适用于双语场景。

  2. 超参数
    在监督微调过程中,我们将批大小设置为1024个示例,并使用AdamW优化器进行8个迭代的训练(Loshchilov和Hutter,2019)。我们采用4K的最大序列长度,并尽可能密集地打包训练示例,直到达到序列长度限制。我们不使用dropout进行监督微调,只需将学习率设置为10-5,而不采用任何学习率调度策略。

  3. 评估基准
    为了评估聊天模型,我们采用了类似于第5.1.3节中使用的基准,但有以下调整:(1)我们排除了Pile(Gao等人,2020),因为聊天模型很少用于纯语言建模。(2) 我们排除了CHID(Zheng等人,2019),因为观察到的结果不稳定,阻碍了可靠结论的推导。(3) 我们还包括BBH(Suzgun等人,2022),以对聊天模型的推理能力进行更全面的评估。


6.2 评价

评估结果如表5所示。我们的主要观察结果包括:

  1. DeepSeekMoE Chat 16B虽然消耗了近40%的计算量,但在语言理解和推理(PIQA、ARC、BBH)、机器阅读理解(RACE)、数学(GSM8K、MATH)和知识密集型任务(TriviaQA、NaturalQuestions)方面,其性能与7B密集型模型相当。
  2. 在代码生成任务上,DeepSeekMoE Chat 16B的表现明显优于LLaMA2 SFT 7B,表明在HumanEval和MBPP上有了显著改进。此外,它还超越了DeepSeek Chat 7B。
  3. 在包括MMLU、CEval和CMMLU在内的多项选择题回答基准测试中,DeepSeekMoE Chat 16B仍然落后于DeepSeek Chat 7B,这与基础模型的观察结果一致(第5.2.1节)。然而,值得注意的是,经过监督微调后,DeepSeekMoE 16B和DeepSeek 7B之间的性能差距缩小了。
  4. 得益于双语语料库的预训练,DeepSeekMoE Chat 16B在所有中文基准测试中都明显优于LLaMA2 SFT 7B。这些结果证明了DeepSeekMoE 16B在中英文中的平衡能力,增强了其在各种场景中的通用性和适用性。

总之,对聊天模型的评估突出了DeepSeekMoE 16B从对齐中受益的潜力,并验证了其在仅使用约40%的计算量的情况下,在实现与密集模型相当的性能方面的一致优势。

在这里插入图片描述


7. DeepSeekMoE 145B

在DeepSeekMoE 16B出色表现的鼓舞下,我们进一步努力将DeepSeekMoE规模扩大到145B。在这项初步研究中,DeepSeekMoE 145B使用245B令牌进行训练,但它已经证明了优于GShard架构的持续优势,并有望达到或超过DeepSeek 67B(密集型)的性能。此外,在DeepSeekMoE 145B的最终版本和全面培训完成后,我们还计划将其公之于众。


7.1 实验设置

7.1.1 训练数据和标记化

对于DeepSeekMoE 145B,我们使用了与DeepSeekMoE 16B完全相同的训练语料库和标记器,唯一的区别是DeepSeek MoE 145B在初始研究中使用了245B标记进行训练。
模型设置。对于DeepSeekMoE 145B,我们将Transformer层数设置为62,隐藏维度设置为4096。我们采用多头注意力机制,共有32个注意力头,每个头的尺寸为128。至于初始化,所有可学习的参数都是随机初始化的,标准偏差为0.006。与DeepSeekMoE 16B一样,我们也用MoE层替换除第一层之外的所有FFN。每个MoE层由4个共享专家和128个路由专家组成,其中每个专家的大小是标准FFN的0.125倍。每个令牌将被路由到这4个共享专家和128个路由专家中的12个。在这种配置下,DeepSeekMoE 145的总参数约为144.6B,激活的参数数量约为22.2B。

7.1.2 超参数

我们使用AdamW优化器(Loshchilov和Hutter,2019),将超参数设置为?1=0.9,?2=0.95,并且weight_decay=0.1。为了对DeepSeekMoE 145B进行初步研究,我们采用了一种预热和恒定学习率调度器。最初,在前2K个步骤中,学习率从0线性增加到最大值。
随后,在剩余的训练过程中,学习率保持不变。DeepSeekMoE 145B的最大学习率设置为3.0×10−4,梯度裁剪范数设置为1.0。批大小设置为4.5K,最大序列长度为4K,每个训练批包含18M个令牌。我们对DeepSeekMoE 145B进行了13000步的训练,获得了245B的训练令牌。此外,我们在训练期间不使用dropout。我们利用流水线并行性将模型的不同层部署在不同的设备上,对于每一层,所有路由的专家将统一部署在4个设备上(即专家并行性与数据并行性相结合)。由于我们为DeepSeekMoE 145B采用了专家并行性,因此应考虑设备级负载平衡以减少计算瓶颈。作为回应,我们将设备级平衡因子设置为0.05,以鼓励跨设备的平衡计算。此外,我们仍然设置了0.003的小专家级平衡因子来防止路由崩溃。

7.1.3 评估基准

评估基准。我们在与DeepSeekMoE 16B完全相同的内部基准上评估DeepSeekMoE 145B(见第5.1.3节)。


7.2 评估结果

从表6中的评估结果来看,我们有以下观察结果:

  1. DeepSeekMoE架构的优势。
  2. 总体而言,DeepSeekMoE 145B的计算量仅为28.5%,其性能与DeepSeek 67B(密集型)相当。与DeepSeekMoE 16B的研究结果一致,DeepSeekMoE 145B在语言建模和知识密集型任务中表现出显著的优势,但在多项选择任务中存在局限性。
  3. 在更大的范围内,DeepSeekMoE 142B(半激活)的性能与DeepSeekMoE 145B并没有太大差距。此外,尽管只有一半的激活专家参数,DeepSeekMoE 142B(半激活)的性能仍然与DeepSeek 67B(密集)相匹配,计算量仅为18.2%。它也优于GShard 137B,这与第4.5节的结论一致。

在这里插入图片描述


8. 相关工作

Jacobs等人(1991)首次提出了专家混合(MoE)技术;Jordan和Jacobs(1994)用独立专家模块处理不同的样本。Shazeer等人(2017)将MoE引入语言模型训练,并构建了一个基于LSTM的大规模MoE模型(Hochreiter和Schmidhuber,1997)。随着Transformer成为NLP中最流行的架构,任何将Transformer中的FFN扩展为MoE层以构建MoE语言模型的尝试。GShard(Lepikhin等人,2021)和Switch Transformer(Fedus等人,2021年)是采用可学习的top-2或top-1路由策略将MoE语言模型大规模扩展的先驱。哈希层(Roller等人,2021)和StableMoE(Dai等人,2022b)使用固定路由策略进行更稳定的路由和训练。Zhou等人(2022)提出了一种专家选择路由策略,其中每个令牌可以分配给不同数量的专家。

Zoph(2022)重点研究了MoE模型中训练不稳定和微调困难的问题,并提出了ST MoE来克服这些挑战。除了对MoE架构和训练策略的研究外,近年来还出现了许多基于现有MoE架构的大规模语言或多模态模型(Du等人,2022;Lin等人,2021;Ren等人,2023;Xue等人,2023)。总的来说,之前的大多数MoE模型都是基于传统的前1或前2路由策略,为提高专家专业化留下了很大的空间。作为回应,我们的DeepSeekMoE架构旨在最大限度地提高专家专业化水平。

在这里插入图片描述


9. 结论

本文介绍了用于MoE语言模型的DeepSeekMoE架构,旨在实现最终的专家专业化。
通过细粒度的专家分割和共享专家隔离,DeepSeekMoE与主流的MoE架构相比,实现了更高的专家专业化和性能。
从2B参数的适度规模开始,我们验证了DeepSeekMoE的优势,证明了其接近MoE模型上限性能的能力。此外,我们提供的实证证据表明,DeepSeekMoE的专家专业化水平高于GShard。扩展到16B总参数的更大范围,我们在2T令牌上训练DeepSeekMoE 16B,并展示了其与DeepSeek 7B和LLaMA2 7B相当的出色性能,仅需约40%的计算。此外,还对对齐进行了监督微调,以构建基于DeepSeekMoE 16B的MoE聊天模型,进一步展示了其适应性和通用性。此外,我们进行了初步探索,将DeepSeek MoE扩展到145B参数。我们发现,DeepSeekMoE 145B仍然比GShard架构具有实质性的优势,并且与DeepSeek 67B的性能相当,只使用了28.5%(甚至18.2%)的计算量。

我们向公众发布了DeepSeekMoE 16B的模型检查点,该检查点可以部署在具有40GB内存的单个GPU上。我们希望这项工作能为学术界和工业界提供有价值的见解,并为大规模语言模型的加速发展做出贡献。


版权声明:
本文由 youcans@xidian 对论文 DeepSeekMoE: Towards Ultimate Expert Specialization in Mixture-of-Experts Language Models 进行摘编和翻译。该论文版权属于原文作者,本译文只供研究学习使用。

youcans@xidian 作品,转载必须标注原文链接:
【DeepSeek论文精读】3. DeepSeekMoE:迈向混合专家语言模型的终极专业化
Copyright 2024 youcans, XIDIAN
Crated:2025-02

注:本文转载自blog.csdn.net的youcans_的文章"https://blog.csdn.net/youcans/article/details/145485468"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top