24年7月来自香港科技大学广州分校的论文“A Survey on Mixture of Experts”。
大语言模型 (LLM) 在从自然语言处理到计算机视觉等各个领域都取得了前所未有的进步。LLM 的强大之处在于其庞大的模型规模、广泛而多样的数据集以及训练过程中利用的巨大计算能力,所有这些都有助于 LLM 发挥小型模型所不具备的涌现能力(例如,上下文学习)。在这种背景下,专家混合 (MoE) 已成为一种有效的方法,可以以最小的计算开销大幅扩大模型容量,引起了学术界和工业界的极大关注。
尽管 MoE 越来越流行,但缺乏对 MoE 文献的系统全面的综述。首先简要介绍 MoE 层的结构,然后提出一种新的 MoE 分类法。接下来,概述各种 MoE 模型的核心设计,包括算法和系统方面,以及可用的开源实现、超参数配置和实证评估的集合。此外,描述 MoE 在实践中的多方面应用,并概述未来研究的一些潜在方向。
如图是这些年提出的MoE代表性模型的年历:NLP绿色,计算机视觉黄色,多模态粉色,推荐系统青色。
MoE基础
在基于 Transformer 的大语言模型 (LLM) 中,每个专家混合 (MoE) 层通常由一组 𝑁 “专家网络”{𝑓1,…,𝑓𝑁 } 和一个“门控网络”G 组成。门控网络通常采用具有 softmax 激活函数的线性网络形式,其作用是将输入引导至适当的专家网络 [49,135]。MoE 层的位置经过精心设计,选择每个 Transformer 块内的前馈网络 (FFN),通常位于自注意 (SA) 子层之后。这种定位至关重要,因为随着模型的扩大,FFN 的计算需求越来越大。例如,在参数数量为 540B 的 PaLM [24] 模型中,90% 的参数都在其 FFN 层内。
正式来说,每个专家网络 𝑓𝑖 (通常是线性 ReLU 线性网络)由 W𝑖 参数化,接受相同的输入 x 并生成输出 𝑓𝑖 (x; W𝑖 )。同时,门控网络 G (由 Θ 参数化,通常由线性 ReLU 线性 softmax 网络组成)产生输出 G(x; Θ)。
MOE分成致密和稀疏两种。如图所示基于 Transformer 模型中 MoE 层。对于每个输入 𝑋 ,线性 softmax 门控将选择所有专家,即 (a) 致密 MoE, 或 top-𝑘 专家,即 (b) 稀疏 MoE 来执行条件计算。专家层返回所选专家的输出乘以门值(门控函数输出的 softmax)。
密集混合专家层在每次迭代中激活所有专家网络 {𝑓1, . . . , 𝑓𝑁 }。这一策略已广泛应用于一系列早期研究,包括 [3, 28, 37, 46, 71, 78, 101, 125, 132, 153] 等方法。最近,密集 MoE 概念已被 EvoMoE[110]、MoLE [167]、LoRAMoE [43] 和 DS-MoE[117] 等研究重新重视。密集 MoE 层的结构如上图 (a) 所示。
虽然密集混合的专家通常会产生更高的预测准确率 [128],但计算开销也会显著增加。为了解决这个问题,Shazeer [135] 引入稀疏门控 MoE 层,旨在每次前向传递期间仅激活选定的专家子集。该策略通过计算top- 𝑘 专家的输出加权和(而不是汇总所有专家的输出)来实现稀疏性。稀疏 MoE 层的结构如上图 (b) 所示。
关于MoE的分类,本文给出自己的MoE类别划分:
尽管稀疏门控 G(x;Θ) 大幅扩展模型的参数空间,而计算成本却没有相应增加,但它还可能导致负载平衡问题。此类问题是指专家之间的工作量分配不均,一些专家经常使用,而另一些专家很少或从未使用。为了解决这个问题,每个 MoE 层都包含一个辅助损失函数,以促进每个批次内专家之间 token 的均匀分布,如许多研究 [30、44、49、74、86、94、154] 中所述。
MoE算法设计
门控函数(也称为路由函数或路由器)是所有 MoE 架构的基本组件,它负责协调专家计算的参与及其各自输出的组合。根据每个输入的处理方法,门控机制分为三种不同的类型:稀疏门控,其激活专家子集;密集门控,其激活所有专家;软门控,其包含完全可微分的方法,包括输入token合并和专家合并。
如图是MoE模型使用的各种门控函数示意图: (a) 带 top-1 门控的稀疏 MoE [49], (b) BASE 层 [87], © 分组域映射和随机门控的结合[127], (d) 专家-选择门控 [193], (e) 注意路由器[166], 和 (f) 专家合并的软 MoE [105]。
稀疏门控函数激活选定的专家子集来处理每个单独的输入tokens,这可以被视为一种条件计算 [4, 9, 35]。门控函数已被广泛研究,可以通过各种形式的强化学习和反向传播进行训练,做出二值或稀疏和连续、随机或确定性的门控决策 [8, 26, 46, 130, 131]。Shazeer [135] 率先提出一种具有辅助负载平衡损失的可微分启发式方法,其中专家计算的输出由选择概率加权。这为门控过程引入了可微分方面,从而有助于推导可以指导门控函数优化的梯度。该范式随后在 MoE 研究领域占据主导地位。由于它为每个输入token选择专家,因此该方法可以被视为具有token选择的门控函数。
密集 MoE激活每个输入过程的所有专家。这种密集范式继续为 MoE 训练和推理方法的创新提供信息。虽然与具有同等总参数量的密集激活 MoE [30, 117, 140] 相比,专家的稀疏激活作为一种权衡可能会以牺牲一些性能为代价来提高效率,但它代表了一种平衡计算需求和模型能力的战略调整。值得注意的是,密集激活在 LoRA-MoE 微调的背景下表现良好,其中 LoRA 专家的计算开销相对较低。这种方法能够有效灵活地集成多个 LoRA 以完成各种下游任务。它保留了原始预训练模型的生成能力,并保持了每个任务中各个 LoRA 的独特特征 [43, 167]。
确定为每个输入token分配合适的专家,是稀疏 MoE 的基本离散优化挑战。这通常需要启发式辅助损失来确保平衡专家参与度并尽量减少未分配的tokens。这些问题在涉及分布外(OOD)数据的场景中变得更加明显,例如小的推理批次、新输入或在迁移学习期间。与密集 MoE 类似,软 MoE 方法利用所有专家来处理每个输入来保持完全可微分性,从而避免了离散专家选择固有的问题。将软 MoE 与密集 MoE 区分开来,可突出输入tokens或专家的门控加权合并,减轻计算需求的特征。
自从 MoE 首次集成到 Transformer 架构 [49, 86, 197] 以来,MoE 就一直充当这些模型中前馈网络 (FFN) 模块的替代品。通常,MoE 层中的每个专家都会复制其所取代的 FFN 架构。
如图是混合注意头(Mixture of Attention Heads) [182] (a) 和共享专家 (Shared Expert) [121] (b) 的架构图。
稀疏 MoE 模型的规模由几个关键超参控制,这些超参超出了密集 Transformer 模型。这些包括 (1) 每个 MoE 层的专家数量、(2) 每个专家的大小,以及 (3) 整个模型中 MoE 层的放置频率。这些超参数的选择至关重要,因为它会深刻影响模型在各种任务中的性能和计算效率。因此,最佳超参选择,取决于特定的应用要求和计算基础设施的约束。
下表是各种辅助损失函数及其典型系数配置的概述。引入每个辅助损失的原创,以粗体参考文献突出显示,后面是采用相同方法的参考文献。修改原始公式的研究,以下划线参考文献来表示。
下表是选定的模型中带FFN 专家 MoE 之间配置比较。每个参考文献中的模型差别是通过模型大小来实现的,模型大小由总的参数量或激活/总的参数量表示。激活专家计数和总专家计数在使用时都包含共享专家的数量。𝑑𝑚𝑜𝑑𝑒𝑙 是隐层大小,𝑑𝑓𝑓𝑛 是 FFN 的中间层大小,𝑑𝑒𝑥𝑝𝑒𝑟𝑡 是 FFN 专家的中间层大小,#L 是层数,#H 和 𝑑h𝑒𝑎𝑑 是注意头数量和注意头大小。
在密集 Transformer 架构的基础上,稀疏 MoE 模型采用一系列与领先的密集大语言模型(包括 BERT [38]、T5 [120]、GPT [11]、LLAMA [155] 等)类似的激活函数。激活函数的发展已从 ReLU [52] 转变为更高级的选项,例如 GeLU [63]、GeGLU [133] 和 SwiGLU [133]。这种趋势延伸到 MoE 模型的其他组件,其经常包含均方根的层归一化 (RMSNorm) [180]、分组查询注意 (GQA) [2] 和旋转位置嵌入 (RoPE) [144]。
下表是一组最近开源模型,包括详细的激活和总参数量,以及性能基准如 MMLU [61] (5-样本), GSM8K [27] (5-样本), MATH [62] (4-样本), and HumanEval [14] (0-样本)。
DeepSpeed-MoE [121] 创新性地引入 Residual-MoE 架构,其中每个 token 由一个固定专家和另一个通过门控选择的专家处理,从而实现每层两个专家的参与,而不会增加超过 top-1 门控的通信成本。这种方法将门控-选择 MoE 专家视为一种固定密集 FFN 的纠错辅助。NLLB [29] 采用概念类似的方法,即条件 MoE 路由 (CMR),它组合密集 FFN 和 MoE 层的输出。这种将固定 FFN 与稀疏 MoE 相结合的范式通常称为共享专家,在最近的语言模型(如 DeepSeekMoE [30]、OpenMoE [172]、Qwen1.5-MoE [151] 和 MoCLE [53])中获得了关注,表明其已上升为主流配置。 DeepSeekMoE [30] 和 Qwen1.5-MoE [151] 不使用单个共享专家,而是使用多个共享专家,因为它们具有细粒度的专家分段设计。
但是,共享专家配置虽然在 NLP 任务中有效,但在视觉任务中却没有表现出同等程度的增强。ScMoE [12] 的经验证据表明,将一个共享专家与一个门控选择专家配对,只能产生与 SwinV2-MoE 模型中的标准 top-1 MoE 相当的性能。此外,基于共享专家的设计,ScMoE 将 MoE 过程解耦,分别处理来自前几层的表示,并与当前层共享专家处理的输出集成,从而促进通信和计算的重叠,提高效率。如 Snowflake Arctic [152] 中所述,Dense-MoE 混合Transformer架构中采用了类似的方法来增强重叠,这与 Lora MoE 框架相似。
在通用海量数据集上预训练的 LLM 已展现出令人印象深刻的能力,使其能够部署到各种任务中 [51]。然而,要为特定的下游任务定制预训练的 LLM,微调是必不可少的。传统的全微调会更新基础模型的所有参数,计算量非常大,尤其是在模型大小不断增长的情况下 [40]。为了解决这个问题,出现了参数高效微调 (PEFT) 的研究,旨在减少通用预训练模型适应特定任务时的计算需求 [57]。PEFT 方法只更新一小部分参数,同时保持基础模型的其余部分不变 [93]。这些技术在众多 NLP 任务中取得了最先进的性能 [66, 96]。
尽管取得了这些成功,但由于可训练参数范围有限以及可能发生灾难性遗忘,PEFT 方法通常难以在多个任务中推广 [88]。为了缓解这些限制,出现了一系列参数高效专家混合模型 (MoPE) 研究,重点是将 MoE 框架与 PEFT 集成 [88, 97]。MoPE 结合 MoE 的门控机制和多专家架构,但每个专家都使用 PEFT 技术构建 [114]。这种巧妙的组合提升了 PEFT 在多任务场景下的性能 [196]。此外,利用 PEFT 构建专家,使MoPE 可以以更少的参数运行,与传统 MoE 模型相比,实现了更高的资源效率 [178]。
MoPE 充分利用了这两个领域的优点:MoE 的任务灵活度和 PEFT 的资源高效 [88],被定为一个有前途的研究领域,突破了这两个领域的界限。根据 MoPE 在 Transformer 模型架构中的位置对其进行分类,如图所示:(a) 在注意机制中K-V模块和MoPE的集成; (b) MoPE 在 FFN的应用;© 指 MoPE 在 Transformer 块级的集成, 其中两个不同的专家组应用于注意和 FFN, 不同专家组一起分派给注意和 FFN, 每个由门控机制调节; (d) 显示一个逐层 MoPE 集成, 其中每个 Transformer 层看作是一个在专家之间带一个编排操作的门控统一个体。
混合专家 (MoE) 模型的架构进步,与训练和推理方案方面的广泛研究相得益彰,其目标是优化计算效率和模型质量。
如开创性工作 [49、86、128、135、197] 中所述,最初的训练方法构建 MoE 模型并从头开始训练,推理直接遵循训练的模型配置。
MoE 模型的出现为训练和推理引入了新的范式,从而实现了一种灵活的方法,可以协同密集和稀疏模型的优势,同时减轻它们各自的弱点。如图所示,将涌现的方案分为三个不同类:从密集-到-稀疏,这需要从密集模型训练开始,逐步过渡到稀疏的 MoE 配置 [17, 45, 82, 95, 110, 117, 154, 165];从稀疏-到-密集,这涉及将稀疏的 MoE 模型降级为密集形式,以更有利于硬件实现推理 [16, 68, 170];专家模型合并,将多个预训练的密集专家模型集成为一个统一MoE 模型的过程 [89, 145, 158]。
基于前面强调的算法设计原则,许多研究从混合专家(MoE)框架中汲取灵感,提出了一系列 MoE 变体。这些创新模型归类为 MoE 的衍生版。例如,Xue [171] 提出 WideNet,这种方法用 MoE 层替换前馈网络(FFN)来增加模型宽度,同时在 Transformer 各层(归一化层除外)之间保持共享的可训练参数。随后,Tan [146] 提出了稀疏通用 Transformer(SUT),这是通用 Transformer 的有效增强版,其特点是各层之间共享参数。SUT 结合了稀疏专家混合和一种动态暂停机制,从而降低了计算复杂度,同时不影响参数效率或泛化能力。此外,传统的 MoE 模型通常采用专家和 token 之间的离散匹配 [6, 44, 49, 86, 135, 193, 197],这种做法与训练不稳定和专家利用不均衡有关。为了应对这些挑战,Antoniak [5] 创新地提出混合 token (MoT),它将来自不同示例的 token 混合在一起,然后将它们呈现给专家。因此,MoT 使模型能够从更广泛的 “token-专家”组中受益。
最近,MoE 将专业知识分配给个别专家的原则已适应参数高效微调 (PEFT)。Choi [23] 提出了稀疏混合提示 (SMoP),这种方法利用门控机制来训练多个长度短的软提示,每个提示都擅长处理不同的数据子集。这解决了提示调整过程中遇到的较长软提示效率低下的问题。 MoE 框架也已融入终身学习 (LLL),旨在促进从持续的数据流中持续学习。Lifelong-MoE 模型 [19] 添加经过正则化预训练的专家来动态扩展模型容量,从而有效缓解通常与直接微调相关的灾难性遗忘 [81] 问题。在最近的发展中,MoE 条件计算概念得到了进一步完善,优化基于 Transformer 语言模型 (LM) 中的资源分配。深度混合 (MoD) [124] 采用二元门控网络来决定某个 token 是否应由给定的 Transformer 层处理。因此,MoD Transformer 可以动态地将计算资源 (FLOPs) 分配给特定的序列位置,与原始或基于 MoE 的 Transformer 相比,实现了更低的整体 FLOP占用空间。
综上所述,MoE 衍生版的演进揭示了这样一种趋势:模型要么集成门控机制的条件计算方面,要么将 MoE 结构与专业知识分配给个别专家而实现的各种任务相融合,比如用 MoE 的提示调优 [23] 和终身学习 [19],这展示了 MoE 架构在不同领域的灵活性和适应性。
MoE系统设计
虽然混合专家 (MoE) 越来越多地被用来增强大语言模型的能力,但由于其计算工作量本身具有稀疏性和动态性,因此给现有的训练和推理系统带来了新的挑战。自 GShard[86] 引入专家并行以来,这种范式已成为促进 MoE 模型高效扩展的基本策略,GShard[86]调度分区的局部 token 实现并行门控和专家计算,负载平衡限制在专家容量范围内。这种方法可以看作是数据并行性的增强 [122, 123, 126],其中 MoE 层中的每个专家都被分配到不同的设备,而所有非专家层则在设备之间复制。
如表是开源 MoE 系统框架的比较概述,按参考发布日期从最新到最旧按时间顺序排列,其中给出截至 2024 年 6 月的 GitHub 星数。
专家并行的流程由以下序贯操作组成:门路由、输入编码、all-to-all调度、专家计算、all-to-all组合和输出解码。一般来说,GEMM 的输入大小需要足够大,以实现计算设备所需的最佳利用率和吞吐量。因此,使用输入编码将同一专家的输入tokens聚合到一个连续的内存空间中,这由门路由中的token-专家映射确定。随后,使用all-to-all调度将输入token发送到跨分布式设备的相应专家。在专家进行本地计算之后,逆过程 – all-to-all组合和输出解码,根据门控索引恢复原始数据布局。
如图所示MoE各种并行策略的流程描述:其中忽略那些并行中的 All-to-All, All-Reduce和 Point-to-Point 通信, 以及归一化、编码、解码和门等。
此外,专家并行 [49, 69, 102, 142, 186] 与其他现有并行策略(张量并行 [108, 141, 143]、流水线并行 [67, 107, 119]、序列并行 [72, 83, 90])的协同作用已做研究,增强 MoE 模型在大规模分布式环境中的可扩展性和效率。如上图所示,几个混合并行的例子,包括 (b) 数据 + 专家 + 张量并行 [49, 69, 121, 142, 179]、© 数据 + 专家 + 流水线并行 [60, 69, 179]、(d) 专家 + 张量并行 [154]。必须认识到,分布式并行策略的选择会影响计算效率、通信开销、内存占用之间的复杂相互作用,并可能受到各种硬件配置的影响。因此,实际应用的部署策略需要细致的权衡和针对特定用例场景的定制设计。
在当前以基于 Transformer 的大语言模型 (LLM) 为主导的环境中,专家混合 (MoE) 范式提供了一种引人注目的方法,可以显著扩展模型容量,同时避免训练和推理阶段计算需求的相应激增。这些模型在提高 LLM 在一系列下游任务中的性能方面发挥了重要作用,一些应用程序取得的结果甚至超越了人类的表现 [30, 48, 74]。有传言称,强大的 GPT-4 可能采用 MoE 架构,该架构由 8 × 220B 专家组成,在不同的数据集和任务上进行训练,并使用 16 次迭代推理过程。
应用
鉴于这些,MoE 已在各个领域得到广泛采用。这些应用的本质在于利用条件计算来显著增加模型参数的数量,从而以固定的计算成本增强模型容量,或者通过门控机制实现动态专家选择,以实现高效的多任务学习。以下是一些应用的领域:
· 自然语言处理
· 计算机视觉
· 推荐系统
· 多模态应用
挑战和方向
专家混合 (MoE) 模型提供了一种引人注目的方法,可以在计算成本不变的情况下显著提高模型容量。尽管这种方法前景光明,但仍存在一些内在挑战。
未来研究的关键挑战和有希望的方向:
· 训练稳定性和负载均衡
· 规模化和通信负载
· 专家特长和协作
· 稀疏激活和计算效率
· 泛化和鲁棒性
· 可解释性和透明度
· 最优专家架构
· 现有系统的集成
版权归原作者 硅谷秋水 所有, 如有侵权,请联系我们删除。