香港科技大学发表的混合专家系统(MoE)综述

一、结论写在前面

论文标题:A Survey on Mixture of Experts

论文链接:https://arxiv.org/pdf/2407.06204

论文项目:https://github.com/withinmiaov/A-Survey-on-Mixture-of-Experts

大型语言模型(LLMs)在从自然语言处理到计算机视觉及其他领域的多样化领域中取得了前所未有的进步。LLMs的强大能力源于其庞大的模型规模、广泛且多样化的数据集以及在训练过程中利用的巨大计算能力,这些都促成了LLMs(例如,情境学习)在小模型中不具备的涌现能力。在此背景下,混合专家系统(MoE)作为一种有效的方法,能够在最小计算开销的情况下大幅扩展模型容量,因此受到了学术界和工业界的广泛关注。尽管其应用日益广泛,但目前缺乏对MoE文献的系统性和全面性综述。

本调查旨在填补这一空白,为深入研究MoE复杂性的研究人员提供重要资源。论文提供了一个关于MoE模型文献的系统性和全面性的回顾,为探索MoE技术领域的研究人员提供了一份宝贵的参考资料。论文引入了一个新的MoE模型分类法,并从算法设计、系统设计和实际应用三个不同的视角进行了深入分析,辅以精选的开源实现、详细的超参数配置和全面的实证评估。此外,论文强调了该领域面临的重大挑战,并概述了未来研究最有希望的方向。

二、论文的简单介绍

2.1 论文的背景

基于基础的transformer架构,LLMs展示了非凡的能力,这些能力归因于它们庞大的规模、广泛的数据训练以及在开发过程中投入的巨大计算资源。认识到支撑其发展的规模定律,必须确定并实施有效的LLMs可持续扩展方法。

混合专家(Mixture of Experts,MoE)的概念最初在[71, 78]中引入,随后通过[3, 28, 37, 46, 125, 132, 153]等研究得到了广泛探索和进步。稀疏门控MoE 的出现,特别是在基于transformer的大型语言模型中的整合,为这项已有三十年历史的技术注入了新的活力。MoE框架基于一个简单而强大的理念:模型的不同部分,即专家,专门处理不同的任务或数据方面。在这种范式下,只有相关的专家被激活以处理给定输入,从而在保持计算成本可控的同时,仍能受益于大量专业知识。这种可扩展且灵活的创新提供了一种有效的方法来遵循缩放定律,允许在不相应增加计算需求的情况下提高模型容量。如图1所示,MoE保持了强劲的增长轨迹,特别是在2024年随着Mixtral-8x7B的出现以及随后一系列工业级LLM如Grok-1、DBRX 、Arctic、DeepSeek-V2等的涌现。

尽管MoE模型在各个领域的普及和应用日益增加,但文献中尚未见到一份全面审视和分类该领域进展的调查报告。论文能找到的最新的MoE综述发表于2022年9月,早于关键的“ChatGPT时刻”,因此忽略了近期随着学术界和工业界对该领域兴趣激增而出现的重要进展。文献中的这一空白不仅阻碍了MoE研究的进展,也限制了关于此主题知识向更广泛受众的传播。论文的调查旨在填补这一空缺,通过提供一个清晰且全面的MoE概述,并采用一种新颖的分类法,将近期进展划分为算法、系统和应用三个部分。

在这一分类框架下,论文首先深入探讨MoE算法的进步,特别是将基于Transformer的大型语言模型(LLMs)中的前馈网络(FFN)层普遍替换为MoE层。由于每个MoE层集成了多个FFN——每个FFN被指定为一个专家——并采用门控函数来激活这些专家的一个精选子集,论文探讨了门控函数和专家网络的设计选择,以及可用的开源实现集合、超参数配置和实证评估。此外,为了强调MoE的灵活性和多功能性,论文将分析扩展到标准地将MoE集成到模型主干之外,并讨论了一系列新颖的MoE相关设计,例如带有token或专家合并的软MoE,参数高效专家混合(MoPEs),以及在密集和稀疏模型之间转换的训练和推理方案,以及各种衍生变体。

随着模型架构设计在工业产品中的逐步趋同,系统设计已成为提升LLM服务质量的关键因素。鉴于MoE模型与机器学习系统设计的紧密关联,论文全面概述了MoE系统设计,包括针对其稀疏和动态计算特性所定制的计算、通信和存储增强措施,以应对其独特挑战。

图1. 近年来几个代表性的混合专家(MoE)模型的时序概览。时间线主要根据模型的发布日期构建。位于箭头之上的MoE模型是开源的,而位于箭头之下的则是专有且闭源的。来自不同领域的MoE模型用不同颜色标记:自然语言处理(NLP)为\operatornameg r e e n,计算机视觉为黄色,多模态为\bigstar,推荐系统(RecSys)为青色

2.2 混合专家背景

在基于Transformer的大型语言模型(LLMs)中,每个混合专家(MoE)层通常由一组N个“专家网络”1… ., fi和一个“门控网络”G组成。门控网络的角色,通常表现为带有softmax激活函数的线性网络,是引导输入到适当的专家网络。MoE层被战略性地放置以选择Transformer块内的前馈网络(FFN),通常紧随自注意力(SA)子层之后。这一位置至关重要,因为随着模型规模的扩大,FFN的计算需求日益增加。例如,在参数数量为540B的PaLM 模型中,这些参数的90%位于其FFN层内。

图2. 基于Transformer模型的MoE层示意图。对于每个输入X,线性-softmax门控将选择所有专家,即(a)密集型MoE或前k个专家,即(b)稀疏型MoE,以执行条件计算。专家层返回所选专家的输出乘以门控值(门控函数输出的softmax值)

形式上,每个专家网络f(通常是一个线性-ReLU-线性网络)由参数W参数化,接受相同的输入x并生成输出f_i(x; W_i)。同时,门控网络G由参数O参数化,通常由线性-ReLU-线性-softmax网络组成,产生输出。根据门控函数的设计,MoE层可以大致分为以下两类。

2.2.1 密集型MoE

密集型混合专家层在每次迭代中激活所有专家网络f_1…f_N。这一策略已被广泛应用于早期的一系列工作中。最近,密集型MoE概念被EvoMoE、MoLE、LoRAMoE和DS-MoE等研究重新审视。密集型MoE层的结构如图2(a)所示。因此,密集型MoE层的输出可以表示为:

其中g(x; O)表示softmax操作前的门控值。

2.2.2 稀疏型MoE

虽然密集型混合专家通常能获得更高的预测准确性[128],但也会导致计算开销显著增加。为了解决这一问题,Shazeer et al. [135]引入了稀疏门控MoE层,该层设计为在每次前向传递中仅激活选定的专家子集。这种策略通过仅计算前k个专家输出的加权和来实现稀疏性,而不是汇总所有专家的输出。稀疏型MoE层的结构如图2(b)所示。基于[135]建立的框架,稀疏门控机制可以修改方程(2.2)如下:

解释一下,TopK(·, K)函数仅保留向量中前k个元素的原始值,而将所有其他元素设置为-∞。经过softmax操作后,那些被赋值为-∞的元素接近于零。超参数k根据具体应用选择,常见的选择是k = 1或k = 2 。添加噪声项R_noise是训练稀疏门控MoE层的常见策略,有助于专家间的探索并增强MoE训练的稳定性[49, 135]。

尽管稀疏门控 在未相应增加计算成本的情况下显著扩展了模型的参数空间,但它可能导致负载均衡问题。此类问题指的是专家间工作负载的不均匀分布,其中一些专家频繁被利用,而其他专家则很少或从未被启用。为解决这一问题,每个MoE层都包含一个辅助损失函数,旨在促进每个批次内token在专家间的均匀分布,如众多研究中所述 [30, 44, 49, 74, 86, 94, 154]。为形式化这一概念,考虑一批查询 B = \X_1, …, X_r\,包含 T个token,以及从 (i = 1) 到 (N) 索引的 (N) 个专家。根据 [49, 86],该批次的辅助负载均衡损失定义为

2.3 专家混合模型的分类

为了有效扩展模型参数而不增加相应的计算需求,专家混合(MoE)架构已成为一种可行的解决方案。MoE利用一组专门的模型和一个门控机制,动态选择处理给定输入的适当“专家网络”。这使得模型能够按需分配计算资源,这一概念称为条件计算。将MoE架构融入大型语言模型(LLMs)已成为普遍做法,使这些模型能够实现显著的参数规模扩大并随之提升能力。

图3. 专家混合模型(MoE)的分类

例如,Mixtral AI 推出的 Mixtral 8x7B 与其早期的 Mistral 7B 共享基础架构,但有一个显著差异:每一层包含八个前馈网络(FFN)(即专家)。尽管仅使用了 130 亿活跃参数,Mixtral-8x7B 在各种基准测试中展现出与 Llama-2-70B 和 GPT-3.5 相当或更优的性能。同样,DeepSeek 开发的 DeepSeek LLM已扩展为一种 MoE 变体,称为 DeepSeekMoE。DeepSeekMoE 16B 虽然计算需求减少约 40%,但性能与 Llama 2 7B 相当。Qwen 团队也通过开发 Qwen1.5-MoE为这一创新领域做出了贡献,这是一个仅有 27 亿活跃参数的小型 MoE 模型,其性能可与 Mistral 7B和 Qwen1.5-7B等领先的 70 亿参数模型相媲美。

为了帮助研究人员在配备 MoE 架构的 LLM 快速发展的领域中导航,论文开发了一种分类法,从算法设计、系统设计和应用三个角度对这些模型进行分类。图 3 展示了论文的分类法以及几个代表性研究。

2.4 混合专家系统的算法设计

2.4.1 门控函数

门控函数(也称为路由函数或路由器)作为所有 MoE 架构的基本组件,负责协调专家计算的参与及其各自输出的组合。基于每种输入的处理方法,论文将门控机制分为三种不同类型:稀疏型,激活专家子集;密集型,激活所有专家;以及软型,涵盖完全可微分的方法,包括输入token合并和专家合并。

2.4.1.1稀疏性

稀疏门控函数为每个输入token激活选定的一组专家进行处理,这可以视为一种条件计算形式。门控函数已被广泛研究,可能通过各种形式的强化学习和反向传播进行训练,做出二元或稀疏且连续、随机或确定性的门控决策。Shazeer等人[135]开创了一种带有辅助负载均衡损失的可微分启发式方法,其中专家计算的输出根据其选择概率进行加权。这为门控过程引入了可微分性,从而便于推导出指导门控函数优化的梯度。这一范式随后在MoE研究领域占据了主导地位。由于为每个输入token选择专家,这种方法可被视为具有token选择的门控函数。

Token-Choice Gating。Shazeer等人[135]提出了对前k个专家(k > 1)输入进行门控的必要性,以增强MoE的效能。这一方法的背后逻辑是,通过同时咨询多个专家对给定输入的意见,网络能够有效地权衡并整合他们的贡献,从而提升性能。为了适应MoE层中数千专家的可扩展性,他们采用了两级层次化的MoE来减少在大规模专家数量情况下的分支因子。随后的研究大多证实了增加k值可以提升性能,这导致了k > 1的top-k策略的广泛采用。尽管如此,Switch Transformer模型表明,top-l门控策略(如图4 (a)所示)也能产生有竞争力的结果,这一发现已被后续研究26所证实和采纳。此外,M6-t[173]提出了一种名为“专家原型”的top-1门控变体,该变体将专家分成k组,并在每组中应用top-1门控。他们的实验结果显示,16层模型的训练和下游困惑度从最好到最差依次为:4个top-1门控的专家原型、1个top-4门控、1个top-16门控、1个top-1门控。

表1. 多样辅助损失函数及其典型系数配置概览。每个辅助损失的引入者以加粗引用标出,随后是采用相同方法的引用。对原始公式进行了修改的研究以带下划线的引用标出

辅助损失用于token选择门控。token选择门控算法在训练过程中经常引入辅助损失,以促进专家间的token公平分配。表1展示了该领域常用的辅助损失函数。

•Shazeer等人[135]通过专家门值的批量总和对专家的重要性进行量化。他们定义了一个额外的损失L_importance,添加到模型的整体损失函数中。该损失等于重要性值集合的变异系数平方,并乘以手动调整的缩放因子w_importance,鼓励所有专家具有相等的重要性。

•尽管L_importance促进了重要性的平衡,但它并不保证训练示例在专家间的均匀分布,这可能导致分布式计算环境中的执行效率低下。为此,他们引入了第二个损失L_load以确保负载均衡。基于此,GShard[86]定义了一个新的可微辅助损失L_aux,使用可微近似(每个专家的平均门值与平均门控决策的点积)。

•Switch Transformers[49]及后续多项研究[34, 44, 74, 94]采纳了这一L_aux设计,并针对不同需求进行了改进[30, 36, 154]。

•然而,ST-MoE[197]指出了L_aux在较大规模下的局限性,导致训练结果不可靠。为解决这一问题,它引入了路由器z损失L_z,通过惩罚进入门控网络的大logits来提高训练稳定性,且不降低质量。由于该损失鼓励值的绝对大小更小,减少了舍入误差,这对门控等指数函数影响显著。

•此外,Mod-Squad[21]认为在专家平衡损失下训练多任务模型存在困难,可能会无意中迫使专家在冲突任务上设置参数,或阻碍互补任务间参数共享的潜在协同效应。相反,它提出最大化专家与任务间的互信息(MI),以构建任务-专家对齐。

•与此不同,ModuleFormer[140]提出最大化专家与token间的互信息。此外,DS-MoE[117]扩展了L_MI的应用,在不同大小的模型中对混合注意力(MoA)和FFN MoE模块校准不同的权重w_MI。

专家容量与token选择门控。

•结合通过辅助损失实现的负载均衡,GShard [86] 引入了专家容量限制,定义了专家可以处理的token数量阈值。这可能导致token溢出,即超出指定专家处理能力的token未被处理。GShard 还提出了一种随机路由机制,根据权重概率选择次要专家,直觉上认为在输出是加权平均且次要权重通常较小的情况下,次要专家的贡献可以忽略不计。

•对于使用 Vision Transformer (ViT) 模型的图像分类任务,Riquelme 等人 [128] 通过批量优先路由 (BPR) 增强了 top-k 门控策略,该策略根据较高的门控分数而不是token的序列顺序分配优先级。

•Zoph 等人 [197] 展示了在 MoE 语言模型背景下 BP 的有效性。

•Kim 等人 [80] 建议在序列内随机化token优先级,以减轻对早期位置token的路由偏差。

•OpenMoE [172] 对门控机制进行了全面分析,强调了“向末端丢弃”现象,即序列中较晚的token由于专家达到最大容量限制而更有可能被丢弃,这在指令调优数据集中更为严重。此外,OpenMoE 发现 MoE 系统倾向于根据token级别的语义相似性进行token路由,导致“上下文无关的专门化”。

•此外,这种token ID 路由专门化在预训练早期就已建立,并基本保持固定,导致在整个训练过程中由相同的专家一致地处理token,这种现象被称为“早期路由学习”。

其他token选择门控的进展。尽管实施了旨在实现专家间平衡工作负载分布的门控启发式和辅助专家平衡损失函数,但负载不平衡仍然是 MoE 架构中的一个普遍挑战。

•为了解决这一问题,Lewis 等人 [87] 构想的平衡稀疏专家分配 (BASE) 层,如图 4 (b) 所示,通过将其视为线性分配问题,重新设想了token到专家的分配过程,旨在在每个专家分配等量token的约束下最大化token-专家亲和力。

•随后,Clark 等人 [26] 引入了 BASE 层的一个变体,称为 S-BASE,使用最优传输公式。此外,他们设计了一种基于强化学习的门控算法,采用 top-1 路由,奖励函数定义为预测token的负交叉熵。

•在解决门控函数的离散优化挑战时,Hazimeh 等人 [58] 引入了 DSelect-k,这是 top-k 门控算法的一个平滑版本,改进了标准 top-k 门控。这种方法是 top-k 门控算法的改进版本,具有增强的平滑特性,优于传统的 top-k 门控方法。

•Kudugunta 等人 [84] 偏离了流行的token级门控策略,引入了句子级门控机制。该方法通过平均序列内的token生成句子表示,并将其路由到专家。

•Chi 等人 [22] 观察到,现有的门控机制倾向于推动隐藏表示围绕专家质心聚集,这意味着表示崩溃的趋势,从而损害模型性能。为了对抗这一问题,他们在门控之前将隐藏向量投影到较低维空间,并对token表示和专家嵌入实施 L2 归一化,从而在低维超球内计算门控分数。

•Skywork-MoE [154] 提出了两种创新技术:门控对数归一化,提高专家多样化;以及自适应辅助损失系数,提供层特定的辅助损失系数调整。

•Yuan 2.0-M32 [166] 提出了一种新的路由器网络,注意力路由器(如图 4 (e) 所示),实现了更高效的选择专家,并在模型准确性上优于经典的线性路由器网络。

非训练型token选择门控。在MoE模型中动态训练门控函数是标准做法;然而,一些研究已涉足非训练型token选择门控机制领域。非训练型token选择门控的最大优势在于无需额外的门控网络参数,且通过特定的门控机制即可实现完全的负载均衡。

•哈希层[129]通过哈希输入token采用随机固定门控方法,无需训练门控网络即可获得有竞争力的结果。负载均衡通过在训练之前选择哈希函数来实现,这些方法能够公平地分配token批次。

•Zuo 等人 [198] 提出了 THOR 算法,该算法在训练和推理过程中随机分配两个专家给每个输入,并通过一致性正则化损失促进预测的一致性。

•Gururangan 等人 [56] 提出了 DEMix 模型,该模型明确地将不同的专家分配给离散的预训练域,使用域匹配来选择与训练输入相对应的专家。

•考虑到域分类可能的次优性和其在涵盖测试时域方面的有限范围,单一域专家选择可能会损害模型的泛化能力。为了解决这一问题,DEMix 采用了一种无参数的概率方法,在推理时动态估计域加权混合。Kudugunta 等人 [84] 探索了结合先验知识标签的任务级门控,

•同样地,M2M-100 模型 [47] 利用显式的语言特定子层,根据语言确定性地路由输入token。在上述非可训练门控策略——随机门控和域映射的基础上,

•PanGu-2 [127] 提出了随机路由专家(RRE)机制。如图 4(c)所示,该方法首先将token路由到特定域的专家组,然后在该组内进行随机选择。

图 4 展示了 MoE 模型中采用的各种门控函数,包括(a)稀疏 MoE 使用 top-1 门控 [49],(b)BASE 层 [87],(c)结合分组域映射和随机门控 [127],(d)专家选择门控 [193],(e)注意力路由器 [166],以及(i)软 MoE 与专家合并 [105]

•与显式的特定语言专家选择不同,NLLB [29] 利用可训练的门控机制来管理多语言机器翻译任务,其性能超越了 M2M-100 方法 [47]。

•针对通才模型中的任务干扰问题,Zhu 等人 [195] 引入了条件 MoE,通过在不同层次(如词级别、上下文级别、模态级别、任务级别和预定义词属性)集成条件信息,增强了 MoE 的可训练门控机制。

•Ye 等人 [175] 进一步研究了在任务级别 MoE 中加入可训练门控的策略。

•此外,STABLEMOE [31] 发现现有学习路由 MoE 方法的一个挑战:门控波动现象。为了应对这一问题,STABLEMOE 采用两阶段训练过程。第一阶段专注于获得平衡且一致的门控策略,随后将其提炼成一个与主干模型解耦的轻量级门函数。接着,第二阶段利用提炼出的门控进行词到专家的分配,并冻结它以确保在后续训练中门控策略的稳定性。

专家选择门控。

•Zhou等人[193]提出了一种传统token选择门控范式的反转,其中每个专家选择他们将处理的top-ktoken,如图4(d)所示。这种方法避免了训练期间辅助负载均衡损失的必要性,确保token在专家之间均匀分布。

•然而,这种方法可能导致token覆盖不均,某些token可能被多个专家处理或完全不被处理。尽管如此,该技术展示了强大的实证性能,并提供了一种自适应计算解释,模型可以隐式地对某些token应用更多计算。

•Zhou等人在随后的Brainformers研究[192]中进一步验证了专家选择门控的有效性。此外,Komatsuzaki等人[82]将专家选择门控策略集成到Vision Transformer中,并将其适应于T5模型的编码器,同时为T5解码器保留token选择门控。

2.4.1.2 密集型

前面论文讨论了密集型MoE的持久相关性,即每个输入过程激活所有专家。这种密集范式继续指导当前MoE训练和推理方法的创新。虽然与具有等效总参数的密集激活MoE相比,专家的稀疏激活作为一种权衡,可能会在牺牲一些性能的情况下获得效率提升,但它代表了平衡计算需求与模型能力的战略调整。值得注意的是,在LoRA-MoE微调的背景下,密集激活表现良好,其中LoRA专家的计算开销相对较低。这种方法使得能够在各种下游任务中有效且灵活地集成多个LoRAs。它保留了原始预训练模型的生成能力,并保持了每个任务中各个LoRA的独特特性。

2.4.1.3 软分配

为每个输入token分配适当的专家构成了稀疏MoE的基本离散优化挑战。这通常需要启发式辅助损失来确保专家参与的平衡并最小化未分配的token。在涉及分布外数据的场景中,如小批量推理、新颖输入或在迁移学习期间,这些问题变得更加突出。与密集MoE类似,软MoE方法通过利用所有专家处理每个输入来保持完全的可微性,从而避免了离散专家选择固有的问题。论文将软MoE与密集MoE区分开来,以突出其通过门控加权合并输入token或专家来缓解计算需求的特点。

token合并。Puigcerver等人[118]提出了软MoE,该方法摒弃了传统的稀疏和离散门控机制,转而采用一种软分配策略来合并token。该方法计算所有token的几个加权平均值,权重取决于token和专家,并使用各自的专家处理每个聚合。他们在图像分类的实验结果表明,软MoE增强了门控函数训练的稳定性并内在地保持了平衡。IHOMOE[33]遵循软MoE的设计,并结合Hopfield网络来解决组合零样本学习任务的挑战。然而,合并输入token使其在自回归解码器中的应用变得复杂,因为在推理期间无法访问用于平均的未来token。

专家合并。与输入token的合并相反

•Muqeeth等人[105]引入了具有自适应路由的专家软合并(SMEAR)框架,该框架通过加权平均合并所有专家的参数,如图4(f)所示。他们认为,传统的稀疏MoE模型往往无法与其参数匹配的密集模型或使用非学习启发式门控函数的模型相媲美,这可能是因为用于训练具有非可微、离散门控决策模块的梯度估计方法存在缺陷。通过使用单个合并的专家处理输入token,SMEAR不会导致计算成本显著增加,并支持标准的基于梯度的训练。

•在T5-GLUE和ResNet-DomainNet基准上的实证评估显示,配备SMEAR的模型超过了基于元数据[56, 84]或梯度估计学习门控策略的模型。在ResNet-DomainNet上,SMEAR的平均准确率比每个专家单个“槽”的软MoE[118]高出1.5%,但吞吐量减少了近10%。

•Zhong等人[189]后续的贡献表明,SMEAR展示的优势仅限于分类任务的下游微调。他们提出了Lory,一种将此类专家合并架构扩展到自回归语言模型预训练的创新方法。Lory[189]引入了因果段路由策略,在保持语言模型自回归特性的同时,在段级别进行专家合并。

•此外,它采用基于相似性的数据批处理来指导专家在特定领域或主题上的专业化。Lory在LLaMA模型上的实证验证显示,在困惑度(降低13.9%)和多样化的下游任务(提升1.5%-11.1%)方面,相较于参数匹配的密集模型有显著改进,突显了全可微MoE架构在语言模型预训练中的潜力,并鼓励在这一领域进一步研究。

•此外,专家合并方法在参数高效微调(PEFT)MoE环境中也显示出有效性。Zadouri等人[178]证实,在T5模型[120]的MoV-10设置下,专家的软合并显著优于稀疏门控机制(top-1, top-2)。Wu等人[164]提出了Omni-SMoLA,这是一种利用软方法混合多模态低秩专家的架构,提高了广泛生成视觉语言任务的通用性能。

2.4.2专家网络

论文将详细描述MoE框架内专家网络的架构,紧随论文在门控函数方面的讨论,该门控函数负责协调这些专家的激活。

2.4.2.1网络类型

自MoE首次集成到transformer架构中以来,MoE一直作为这些模型中前馈网络(FFN)模块的替代品。通常,MoE层中的每个专家都复制了其所替代的FFN的架构。这种以FFN作为专家的模式仍然占据主导地位,。

前馈网络。如现有工作[145]所述,倾向于在FFN背景下利用MoE的原因在于假设自注意力层比FFN层表现出更低的稀疏性和更少的领域特定性。

•Pan等人[117]通过使用其预训练的DS-MoE模型对下游Wikitext任务的分析,为这一观点提供了实证支持,揭示了FFN层相对于自注意力层的显著稀疏性。他们的结果显示,FFN层中仅有20%的专家被激活,而自注意力层中则有80%的专家被激活。在早期对FFN计算模式的调查中,

•Zhang等人[184]观察到大多数输入仅激活FFN中一小部分神经元,从而证实了FFN的固有稀疏性。

注意力机制。尽管MoE研究主要集中在Transformer架构中的FFN层,但Zhang等人[182]引入了混合注意力头(Mixture of Attention Heads, MoA),这是一种创新的架构,通过将多头注意力层与MoE结合,进一步提高性能并限制计算成本。如图5(a)所示,MoA采用两组专家,一组用于查询投影,另一组用于输出投影,它们通过一个共同的门控网络选择相同的专家索引。为了降低计算复杂度,MoA在注意力专家之间共享关键(W_k)和值(W_v)投影权重,专家仅通过各自的查询(q_t W_q)和输出(o_i, W_o)投影权重进行区分,从而允许预先计算关键(KW_k)和值(VW_v)序列。后续工作如DS-MoE[117]、JetMoE[139]和ModuleFormer[140]沿用了MoA的设计,并进一步优化了MoE与注意力层的结合。

其他类型。除了上述专家网络类型外,研究人员还探索了使用卷积神经网络(CNN)作为专家[20, 25, 54, 159, 183]。此外,最近将参数高效微调(PEFT)技术与MoE结合的努力,例如采用低秩适应(LoRA)[66]作为专家,已显示出有希望的结果,这些将在第4.3节中讨论。

2.4.2.2超参数

稀疏MoE模型的规模受几个关键超参数的控制,这些超参数超出了密集transformer模型的范围。这些包括(1)每个MoE层中专家的数量,(2)每个专家的大小,以及(3)MoE层在模型中的分布频率。这些超参数的选择至关重要,因为它们深刻影响模型在不同任务中的性能和计算效率。因此,最佳超参数选择取决于特定应用需求和计算基础设施的约束。基于表2中列出的示例模型,论文后续的分析深入探讨了这些超参数决策。同时,论文在表3中列举了一些最近的开源模型,详细说明了它们的参数数量和基准性能。

专家数量。最初的研究采用每层数千个专家,在预训练和翻译质量方面取得了显著的提升[49, 86, 135]。然而,在领域转移[6]或在多样任务分布上进行微调时,稀疏MoE模型的质量会不成比例地降低[49]。GLaM[44]采用64个专家的配置,基于他们的发现,即在零样本、单样本和少样本场景中,64专家设置与top-2门控实现了执行效率和性能之间的最佳平衡。反映这一趋势,更近期的稀疏MoE模型[34, 74, 94, 151, 154, 166, 172, 197]通常使用不超过64个专家。此外,DeepSpeed-MoE[121]采用金字塔MoE方法,将具有更多专家数量的MoE层置于网络的末端。

Table 2. 所选模型中MoE与FFN专家的比较配置。每个参考中的模型差异通过使用模型大小来实现,该大小由总参数数或激活/总参数数表示。激活和总专家数量均包含使用时的共享专家数量。d_model是隐藏层大小,d_ffn是FFN的中间层大小,d_expert是FFN专家的中间层大小,#L是层数,H和d_head分别是注意力头数和注意力头维度

专家规模。为了有效扩展模型,GLaM [44] 优先扩大每个专家的中间隐藏维度,同时将专家数量标准化为 64,这一策略通常需要跨多个加速器实施张量并行以保持计算效率 [44, 49, 121]。从这一时期开始,MoE 模型 [34, 74, 154, 197] 通常具有更大的专家维度。不同的是,DeepSeekMoE [30, 36] 引入了细粒度专家分割的概念,通过细分 FFN 专家的中间隐藏维度,同时保持总体参数数量。具体而言,DeepSeekMoE-145B 采用的中间隐藏维度是其密集 FFN 对应部分的八分之一,将专家数量(从 16 增加到 128)和活跃专家数量(从 top-2 增加到 top-16)提高了八倍。他们认为,这一策略不仅细化了专家间知识的分解,促进了更精确的学习,还增强了灵活性。

表3. 近期开源模型的集合,详细列出了激活和总参数数量,以及性能基准,如 MMLU [61](5-shot)、GSM8K [27](5-shot)、MATH [62](4-shot)和 HumanEval [14](O-shot),除非另有说明

通过专家激活组合的精细化调整,实现了更专业化和针对性的知识捕获。Qwen1.5-MoE [151] 和 DBRX [34] 采用了类似的细粒度专家分割策略。从LLAMA-MoE的结果来看,将FFN参数均匀分割成非重叠专家以构建具有相同参数数量的MoE模型时,激活16个专家中的4个(维度为 d_expert = 688)略优于激活8个专家中的2个(维度为 d_expert = 1376)。LLAMA-MoE [149] 将密集FFN参数分配给非重叠专家以保持一致的参数数量,结果表明激活16个专家中的4个(维度为 d_expert = 688)略优于激活8个专家中的2个(维度为d_expert = 1376)。

MoE层频率。稀疏MoE模型通常由密集架构演化而来,通过在密集FFN层的固定间隔处插入MoE层来实现。尽管增加MoE层的频率可以扩大模型规模,但也会引入更大的系统开销。在实践中,大多数MoE模型采用交替替换FFN(1/2)与MoE层的策略[6, 44, 86, 121]。然而,存在一些变体,例如某些模型每隔第四层(1/4)[172, 197]或每一层(1/1)[30, 49]加入MoE层。引入Mixtral 8x7B [74]后,趋势似乎转向在模型的每一层放置MoE层,常见的选择是仅使用8或16个专家,这与密集FFN的维度相匹配[30, 34, 151, 154]。

对MoE层的最佳配置研究已相当广泛。V-MoE [128]在最后几个偶数Transformer层中使用MoE,指出尽管使用的MoE层较少,但对性能的影响微乎其微,同时计算速度显著提升。DeepSeekMoE-16B/-145B [30]将所有FFN替换为MoE层,除了第一层,因为观察到第一层的负载平衡状态收敛较慢。最近流行的开放大型视觉-语言模型(LVLM)MoE-LLaVA [95]表明,与每层MoE放置或“前半部分”和“后半部分”配置相比,交替放置MoE在多模态任务上能产生更优的模型质量和执行效率。ST-MoE [197]发现,在每个MoE层附近添加一个密集FFN可以提高模型质量。Brainformers [192]引入了一种非均匀架构,该架构集成了MoE层、密集FFN、注意力机制以及多种层归一化和激活函数,不遵循严格的顺序分层,以牺牲架构规则性换取子层组合的灵活性。Jamba [94]通过采用注意力层与Mamba层1:7的比例,整合了Mamba [55]的架构。

2.4.2.3激活函数

在密集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]。

2.4.2.4共享专家

DeepSpeed-MoE [121]创新性地引入了残差MoE架构,其中每个token由一个固定专家和通过门控选择的另一个专家处理,实现了每层两个专家的参与,而通信成本不超过top-1门控。这种方法将门控选择的MoE专家视为固定密集FFN的纠错辅助。在概念上类似的条件MoE路由(CMR)方法在NLLB [29]中被采用,它也结合了密集FFN和MoE层的输出。这种将固定FFN与稀疏MoE集成的范式,通常被称为共享专家,如图5(b)所示,已在近期语言模型如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过程解耦,分别处理来自前一层的表示,并与当前层共享专家处理的输出进行整合,从而通过促进通信和计算的重叠来提高效率。增强重叠的类似方法在Dense-MoE混合变换器架构中被采用,如Snowflake Arctic [152]所述,该架构与第4.3.3节讨论的Lora MoE框架相似,并在图6 (d)中展示。

2.4.3 参数高效的专家混合模型

在大规模通用数据集上预训练的大型语言模型(LLMs)已展现出令人瞩目的能力,使其能够跨多种任务部署[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的任务多样性和HKFl的资源效率[88],使其成为一个有前景的研究领域,推动了这两个领域的边界。在下一个小节中,论文将根据对混合专家的调查,给出MoPE的分类,如图6所示。

图6展示了MoPE在Transformer模型架构中的分类集成示意图。(a)展示了MoPE与注意力机制中的键(Key)和值(Value)模块的集成。(b)表示MoPE应用于前馈网络(FFN)。©指的是在Transformer块级别集成MoPE,其中应用了两组不同的专家到注意力和FFN,每组专家由其自身的门控机制调控。(d)展示了MoPE在层级上的集成,其中每个Transformer层被视为一个统一实体,由门控机制协调专家间的互动

在Transformer模型架构中的集成位置。接下来,论文将回顾最近的MoPE研究,总结每项研究的方法论和贡献。

2.4.3.1 前馈网络

遵循传统的MoE结构,一系列研究将MoPE框架引入到每个Transformer块的FFN层。在训练过程中,重点优化参数高效专家和门控机制,保持预训练模型的其余部分不变。如图6(b)所示,在集成MoPE框架的FFN前向过程中可以表示为:

在这个领域的开创性工作之一,

•LoRAMoE [43] 有效地将MoPE结构应用于FFN。LoRAMoE在FFN层中集成了一些即插即用的LoRA专家,并采用门控机制来协调专家的贡献。意识到数据分布的多样性,LoRAMoE将专家分为两组:一组专注于学习各种下游任务,另一组致力于将预训练的世界知识与人类指令对齐。为了确保每组专家保持其专注,LoRAMoE定义了一个局部平衡约束损失,保留每组内每个专家的重要性,同时允许不同组专注于各自的任务。这种设计使LoRAMoE能够有效解决知识遗忘问题,并提高模型在下游任务上的性能。

•类似地,AdaMix [160] 在每个Transformer块的FFN层后注入一组Adapter [65] 专家。Adapter调优是一种PEFT方法,将一对前馈上和下投影矩阵集成到Transformer块中。在微调过程中,仅更新增量的Adapter块,模型的其余部分保持不变。AdaMix采用随机路由策略,在训练期间随机选择投影矩阵,保持与单个适配器相当的计算成本。为了在推理期间最小化服务成本,AdaMix平均所有专家的输出。

•采用不同的方法,MixDA[39]包含两个训练阶段,以利用领域特定知识同时保留已学习信息。在第一阶段,MixDA仅微调与FFN并行工作的领域适配器,以获取领域特定知识并同时保留世界知识。在第二阶段,MixDA在FFN层之上引入了一个门控网络和任务适配器,以便将模型定制为特定的下游任务。这种策略允许对当前任务进行更细致的适应。

•LLaVA-MoLE[15]将MoPE的应用扩展到多模态任务。它为FFN层创建了一组LoRA专家,以处理来自不同领域的输入,增强了模型的多功能性。LLaVA-MoLE采用top-1路由策略,根据路由器的输出分布激活最相关的专家,从而使计算成本接近于带有LoRA的标准FFN。该框架在解决数据冲突方面效果显著,并且在各种数据配置下始终超越普通的LoRA基线。

•与论文讨论的MoPE实现形成对比,MixLoRA[88]创建了一个与传统MoE模型紧密对齐的LoRA-MoE框架。不同于仅仅插入多个轻量级专家,MixLoRA将LoRA专家与共享的FFN层融合。通过利用基础模型中单个FFN的基础权重,MixLoRA简化了MoPE架构的创建。此外,MixLoRA实现了一个高吞吐量框架,显著减少了训练和推理过程中的token计算延迟和内存使用,优化了性能和效率。

2.4.3.2 注意力机制

研究领域的一个分支一直在探索将MoPE框架应用于注意力机制的应用。这些研究通常涉及通过引入门控网络和一组并行专家来增强注意力机制。MoPE框架可以单独或以各种组合方式应用于注意力机制中的查询(Query)、键(Key)、值(Value)和输出投影模块。在微调过程中,仅更新激活专家和门控网络的参数,而模型的其余参数保持冻结状态。例如,如图6(a)所示,将MoPE与注意力机制的键和值模块集成可以形式化为如下公式:

最近的研究已经证明了将MoPE扩展到注意力层的有效性。此外,还有一系列新的研究专注于将MoPE与注意力机制融合,以提高模型的效率和适应性。例如,MoELoRA[100]通过利用PEFT方法以资源高效的方式将MoE应用于注意力机制。MoELoRA采用LoRA[66]来构建专家。LoRA引入两个低秩矩阵来接收与任务特定微调相关的增量更新。在微调过程中,仅更新LoRA矩阵,而基础模型保持不变。具体而言,MoELoRA为注意力机制的查询和值矩阵设置多个LoRA专家,并利用门控网络在训练和推理阶段激活与特定任务相关的top k专家。为了缓解路由随机性,MoELoRA采用对比学习损失来控制专家的训练。对比学习损失旨在强调专家之间输出分布的差异,从而鼓励它们捕捉与下游任务相关的多样化特征。MoELoRA提供了一种灵活组合各种计算模块以适应下游任务的解决方案。

另一个框架MoCLE [53],旨在解决由于不同来源和格式的训练任务多样性而产生的任务冲突。MoCLE利用聚类模型对不同任务进行分类,然后利用路由器将聚类后的输入引导至插入到注意力机制的查询和值模块中的LoRA专家。这些LoRA专家包含一组多任务专家和一个通用专家。每个任务专家专注于特定任务以减少任务冲突,而通用专家则在所有任务上进行训练,有助于保持模型的泛化能力。SiRA[196]引入了几个轻量级的LoRA适配器作为专家,并配以top k门控机制。为了缓解负载不平衡和过拟合问题,SiRA加入了容量约束,限制每个专家可以处理的token数量。此外,它还采用辅助损失来促进负载均衡,并采用专家丢弃机制来均衡门控分布。SiRA提供了一种高效且细粒度的方法来提高LoRA的质量。

2.4.3.3 Transformer块

将MoPE与Transformer架构结合的研究近期受到广泛关注。这种方法涉及创建两组专家:一组用于注意力机制,另一组用于Transformer块内的FFN。每组都由其门控机制调控,以控制专家的激活。如图6©所示,在集成MoPE框架的Transformer块中的前向过程可以表示为:

•MoV [178]是将MoPE与Transformer块结合以追求参数效率的显著尝试之一。利用PEFT方法(IA)[96],MoV引入了可调向量,用于重新缩放注意力机制中的键和值模块以及FFN内的激活。通过用(IA)的向量替代传统专家,并在微调期间仅更新这些轻量级专家及其相应的门控,MoV显著减少了与梯度计算相关的计算负担,并减少了模型存储所需的内存占用。

•类似地,MoLORA [178]在注意力和FFN块中采用了多个LoRA专家,表现优于标准的LoRA方法。

•UniPELT [103]提出了一种混合框架,集成了三种代表性的PEFT方法作为专家,即Adapter [65]、Prefix-tuning [91]和LoRA [66]。

•Prefix-tuning是一种冻结基础模型并优化附加在注意力输入前的连续任务特定向量的方法。在UniPELT框架内,LoRA矩阵应用于注意力机制中查询和键的权重矩阵,前缀向量添加到键和值模块,适配器块插入在FFN层之后。UniPELT利用不同的门控机制动态激活专家,有效地找到最适合给定任务的方法。

•进一步扩展LoRA-MoE框架的应用范围,Omni-SMoLA[164]通过引入三组LoRA专家,分别针对文本token、视觉token和多模态token进行优化,扩展了MoPE的功能。这种专业化使得该架构能够在多种视觉与语言任务中提升性能。在MoPE研究领域,专家数量成为一个关键的超参数,对下游任务性能产生影响[168, 178]。

•此外,使用大量专家会导致冗余[18]。MoLA[51]是探索专家分配问题的开创性工作之一。它提出了一种带有逐层专家分配机制的LoRA-MoE框架,使得不同层能够灵活地采用不同数量的专家。MoLA提出的专家分配策略进一步提升了LoRA-MoE框架的有效性。

•在医疗应用这一专业领域,MOELoRA[97]解决了任务多样性和高适应成本的挑战。它将LoRA专家和任务驱动的门控函数集成到每一层的注意力和FFN中。门控机制利用任务标识来调节专家的贡献,为每个任务创建独特的参数集。MOELoRA的设计结合了MOE和LoRA的优势,增强了LLM在医疗领域的应用能力。

2.4.3.4 每一层

将MoPE融入基础组件如注意力、FFN和Transformer块中引起了相当大的兴趣。现有工作通常分别独立地处理注意力机制和FFN,采用不同的门控机制来分别调节它们。与其孤立地看待这些元素,一个新的方向是将Transformer层视为一个整体。这一视角的转变使得MoPE框架能够应用于整个Transformer层,以统一的方法捕捉注意力与FFN的联合动态。如图6(d)所示,在MoPE框架集成到每一层的前向过程中如下:

其中,门控函数分别应用于整个层。

在这种背景下,MoLE[168]提出的方法提供了创新的见解。MoLE识别到LoRA中的各个层具有独特的特征。针对这一发现,MoLE致力于通过根据期望目标动态调整层特定权重来增强已训练LoRA的组合效果。这是通过在每一层插入一组已训练的LoRA和一个门控函数实现的。MoLE将每一层已训练的LoRA视为一个独立的专家,并且仅训练门控以学习指定领域的最优组合权重。这种动态线性组合策略显著扩展了LoRA的多功能性,使其能够应用于更广泛的实际场景。

图 7. MoE 相关训练和推理方案的示意图。它提供了模型转换的抽象视图,不关注训练或推理过程中的特定模型状态。子图 (a) 描绘了没有架构转换的原始方案。子图 (b) 描绘了不同专家模型的合并,以 BTX [145] 为例。子图 © 描绘了从密集模型到稀疏模型的转换。子图 (d) 描绘了逆过程,即将稀疏模型转换为密集模型

2.4.4 训练与推理方案

混合专家(Mixture-of-Experts, MoE)模型的架构进步得到了对训练和推理方案广泛研究的补充,旨在优化计算效率和模型质量。

原始训练与推理方案。最初的训练方法,如在开创性工作 [49, 86, 128, 135, 197] 中确立的那样,涉及构建一个 MoE 模型并从头开始训练,推理直接遵循训练的模型配置。

MoE 模型的出现引入了新的训练和推理范式,实现了灵活的方法,结合了密集和稀疏模型的优势,同时缓解了各自的弱点。如图 7 所示,论文将新兴方案分为三类:

•密集到稀疏(Dense-to-Sparse),涉及从密集模型训练开始,逐步过渡到稀疏 MoE 配置 [17, 45, 82, 95, 110, 117, 154, 165];

•稀疏到密集(Sparse-to-Dense),涉及将稀疏 MoE 模型降级为更适合硬件实现推理的密集形式 [16, 68, 170];

•专家模型合并(Expert Models Merging),即将多个预训练的密集专家模型整合为一个统一的 MoE 模型 [89, 145, 158]。

2.4.4.1 密集到稀疏

为了减轻与视觉MoE变换器模型相关的训练开销,Residual Mixture-of-Experts(RMoE)方法[165]首先在上游任务上训练一个密集的非MoE模型,随后通过一个高效的微调阶段过渡到MoE模型。这一过程表明,直接继承预训练的非MoE模型的FFN中的专家权重可能导致次优性能,需要在微调阶段对MoE和FFN输出进行对齐。类似地,Dua等人[45]主张先训练一个密集模型,然后通过引入随机初始化的门控模块来引入稀疏性,并在稀疏条件下进一步训练模型的前馈层——具体而言,通过在每个计算节点内局部更新权重,而不是跨节点平均梯度。

•Nie等人[110]提出了EvoMoE,一个高效的端到端MoE训练框架。EvoMoE将专家和稀疏门的联合学习解耦,强调通过单一专家在训练初期获取基础知识。随后,它生成多个多样化的专家,并通过使用新颖的Dense-to-Sparse门(DTS-Gate)进行训练来推进专家的多样化。DTS-Gate最初激活所有专家的密集模式,然后逐渐且自适应地收缩,将token路由到减少数量的专家。在开发MoE-LLaVA[95]大型视觉-语言模型时采用了类似的策略,该模型从密集模型开始,随后通过扩展前馈网络(FFN)来创建专家初始化,并继续仅训练MoE层,同时保持其余模型组件静态。

•Komatsuzaki 等人 [82] 强调了稀疏模型在质量和计算成本方面的效率,但同时也承认它们对大量数据的需求以及从零开始大规模训练的成本。为了解决这一问题,他们提出了一种名为“稀疏再利用”(sparse upcycling)的方案,该方案通过从预训练的密集模型检查点初始化一个稀疏激活的MoE模型来利用现有的训练投资。这涉及从原始检查点转移所有参数(以及可选地转移其相关的优化器状态),除了MoE门控网络参数,这些参数在密集模型中不存在。值得注意的是,新的MoE层由原始密集模型的FFN层的相同副本填充,并且门控机制权重被随机初始化。模型再利用中的一个关键障碍是,由于对训练好的网络进行结构修改而导致的初始性能下降。为了减轻再利用过程中的性能退化,研究人员提出将每个token的门组合权重归一化为1。这一方法基于这样的概念:在密集模型中,每个token由一个单一的“专家”FFN处理。虽然这种归一化对再利用的视觉模型有益,但发现它对再利用的语言模型性能有害。

•基于稀疏升级技术[82],Skywork-MoE模型[154]利用其预开发的Skywork-13B模型[163]的基础架构,采用其密集检查点作为初始状态的基础。他们的实证证据表明,稀疏升级与从头开始训练之间的决策应基于可用密集检查点的性能和MoE特定训练资源,因为从头开始训练的模型在性能上始终超越其升级的对应模型。研究发现,在升级MoE的训练过程中,平均专家相似度下降,表明在此过程中专家出现多样化。重要的是,Skywork-MoE分析揭示,专家相似度较高的模型往往表现不佳,从而确立了专家相似度作为升级模型MoE训练期间的一个潜在诊断工具。相反,从头开始训练的模型中专家相似度保持最低,这意味着非均匀专家初始化促进了多样化。

•Pan等人[117]认为,MoE模型中观察到的参数效率低下源于传统的稀疏训练方法,即每次输入token仅涉及并细化一组精选的专家。为了对抗这一点,他们引入了名为DS-MoE的混合框架,该框架结合了密集训练(激活所有专家)与稀疏推理(稀疏专家激活),以实现更高的计算和参数效率。值得注意的是,DS-MoE在推理期间保持所有自注意力专家(MoA [182])的激活,但有选择地激活FFN专家,反映了自注意力层相比FFN层表现出显著较低稀疏性的观察结果。

•Chen等人[17]介绍了SMoE-Dropout,这是一种创新的即插即用训练框架,首先将FFN模块化为一系列较小的FFN,然后采用由固定权重参数化的随机策略,将token路由到响应最大的k个专家。逐渐地,该框架激活越来越多的专家,防止在训练期间过度适应使用的网络容量。MoEfication [184]研究了T5模型中专家构建的各种策略,包括随机分割、参数聚类和构建共激活图。MoEBERT [199]实施了一种基于重要性的方法,将BERT模型中的FFN适应为专家。LLaMA-MoE [149]对不同的专家构建方法进行了广泛审查,最终提出了一种简单的随机分割方法,将FFN的参数分割为不重叠的专家。

2.4.4.2 稀疏到密集

•Switch Transformer [49] 研究了将大型稀疏模型蒸馏成小型密集模型以实现部署参数效率的问题。研究表明,从MoE模型的非专家层初始化密集模型的相应权重,由于非专家层的一致维度,适度提升了性能。此外,当采用教师概率的0.25和真实标签的0.75混合时,蒸馏效果有所提升。通过这两种方法,蒸馏保留了稀疏模型约30%的质量增益,仅使用了约5%的参数。

•类似地,Xue等人[170] 解决了与稀疏MoE模型相关的过拟合、部署难度和硬件限制问题。受人类学习范式的启发,他们提出了一种称为“知识整合”的新概念,旨在创建一个密集的学生模型(OneS),该模型封装了稀疏MoE模型的专业知识。他们的框架首先通过求和、平均、top-k知识收集和奇异值分解知识收集等多种方法实现知识收集。然后,他们通过知识蒸馏来精炼密集学生模型,以减轻知识收集引入的噪声。OneS模型在ImageNet上保留了MoE的61.7%的收益,在NLP数据集上保留了88.2%的收益。其他研究者也对MoE模型的蒸馏进行了进一步研究[29, 121]。

•Chen et al.[16]强调了在资源受限平台(如云或移动环境)上部署MoE模型的挑战。他们观察到只有少数专家对MoE的微调和推理贡献显著,因此提出了一种逐步淘汰非必要专家的方法。这种方法在保留MoE优势的同时,将模型简化为针对目标下游任务的单一专家密集结构。

•类似地,ModuleFormer[140]采用了类似的剪枝技术,移除与任务无关的专家以实现轻量级部署。黄等人[68]将Vision Transformers(ViTs)的训练和推理阶段分离。他们在训练过程中用定制设计的、高效的MoE替换ViT中的某些FFN。这些MoE使用随机均匀划分将标记分配给专家,并在每次迭代结束时对这些MoE进行专家权重平均(EWA)。训练后,通过专家权重的平均,MoE被转换回FFN,从而将模型恢复为原始的密集ViT进行推理。

4.4.3 专家模型合并

•李等人[89]引入了分支-训练-合并(BTM)算法,这是一种用于高效通信的语言模型(LM)训练方法。BTM独立训练一组针对训练语料库中特定领域的专家LM(ELM),例如科学或法律文本。这些ELM在没有共享参数的情况下运行,可以在推理时通过集成或参数平均合并成单一LM。

•在此基础上,Sukhbaatar等人[145]提出了分支-训练-混合(BTX),旨在结合BTM和专家混合(Mixture-of-Experts)的优势,同时解决各自的局限性。BTX保持多个专家LLM的独立训练,类似于BTM,但随后将这些专家集成在一个统一的MoE模型中。具体来说,它将所有ELM的FFN合并到每一层的单一MoE模块中,由门控网络确定每个标记的适当FFN专家。其他组件,如ELM的自注意力层,通过平均其权重进行合并。最终模型在所有合并数据上进行MoE微调,以使门控网络能够有效地混合FFN专家。

•Wang等人[158]指出,尽管基础模型的出现使得针对特定任务的专家模型获取变得更加容易,但测试时数据的异质性要求不仅仅是单一专家模型。因此,他们探讨了专家融合(Fusion of Experts, FoE)的挑战,旨在整合提供数据分布多样化但互补见解的专家模型输出,将其形式化为监督学习的一个实例。

2.4.5 衍生模型

基于前述算法设计原则,众多研究从专家混合(Mixture of Experts, MoE)框架中汲取灵感,提出了一系列MoE变体。论文将这些创新模型归类为MoE的衍生模型。例如:

•Xue等人[171]引入了WideNet,该方法通过用MoE层替换前馈网络(FFN)来增加模型宽度,同时保持Transformer层间共享的可训练参数,除了归一化层之外。

•随后,Tan等人[146]提出了稀疏通用Transformer(Sparse Universal Transformer, SUT),这是通用Transformer的高效增强版本,以其跨层参数共享为特征。SUT结合了稀疏专家混合和一种基于粘性断裂的新型动态停止机制,从而在不牺牲参数效率或泛化能力的情况下降低了计算复杂度。

•此外,传统的MoE模型通常采用专家与token之间的离散匹配[6, 44, 49, 86, 135, 193, 197],这种做法与训练不稳定和专家利用不均有关。针对这些挑战,Antoniak等人[5]创新性地提出了token混合(Mixture of Tokens, MoT),该方法在将token呈现给专家之前,先混合来自不同示例的token。因此,MoT使模型能够从更广泛的token-专家组合中受益。

近年来,MoE(混合专家)的原则——将专业知识分配给个体专家——已被应用于参数高效的微调(PEFT)领域。

•Choi等人[23]提出了稀疏提示混合(SMoP)方法,该方法利用门控机制训练多个短软提示,每个提示擅长处理数据的不同子集,从而解决了在提示微调过程中长软提示的效率问题。MoE框架也被整合到终身学习(LLL)中,旨在从持续的数据流中促进连续学习。

•Lifelong-MoE模型[19]通过增加带有正则化预训练的专家来动态扩展模型容量,有效缓解了直接微调中常见的灾难性遗忘问题[81]。

•最近,MoE的条件计算概念进一步精炼,以优化基于Transformer的语言模型(LMs)中的资源分配。深度混合(MoD)[124]采用二进制门控网络来决定一个token是否应由给定的Transformer层处理。因此,MoD Transformer能够动态地将计算资源(FLOPs)分配给特定的序列位置,与传统的或基于MoE的Transformer相比,实现了更低的总体PLOP足迹。

总结来说,MoE衍生模型的演化揭示了一个趋势:模型要么整合门控机制的条件计算方面,要么将MoE结构与通过分配专业知识给个体专家实现的各种任务(如前述的提示微调[23]和终身学习[19]与MoE)相结合,展示了MoE架构在不同领域的多功能性和适应性。

图 8. MoE 多种并行策略示意图。为清晰简洁起见,此图省略了并行化中的 All-to-All、All-Reduce、点对点通信,以及子图 (b)、© 和 (d) 中的归一化、编码、解码、分类操作。

2.5 MoE 系统设计

虽然专家混合模型(Mixture of Experts,MoE)越来越多地被用来增强大型语言模型的能力,但由于其计算工作负载本质上的稀疏性和动态性,其采用给现有的训练和推理系统带来了新的挑战。自从GShard[86]引入专家并行性以来,通过分派具有专家容量负载平衡限制的分区本地令牌来实现并行门控和专家计算,这种范式已成为促进MoE模型高效扩展的基本策略。这种方法可以被视为数据并行性[122, 123, 126]的增强,其中MoE层中的每个专家被分配到不同的设备上,而所有非专家层则在设备间复制。如图8(a)所示,专家并行性的处理流程包括以下顺序操作:门控路由、输入编码、全对全分发、专家计算、全对全合并和输出解码。通常,GEMM的输入大小需要足够大以实现计算设备的最佳利用率和吞吐量。因此,根据门控路由得到的令牌-专家映射,使用输入编码将同一专家的输入令牌聚合到连续的内存空间中。随后,全对全分发用于将输入令牌发送到分布式设备上对应的专家。在专家进行本地化计算之后,逆过程——全对全合并和输出解码,根据门控索引恢复原始数据布局。

此外,研究人员还探讨了专家并行性[49, 69, 102, 142, 186]与其他现有并行策略(张量[108, 141, 143]、流水线[67, 107, 119]、序列并行[72, 83, 90])的协同作用,以提高MoE模型在大规模分布式环境中的可扩展性和效率。如图8所示,论文列举了几个混合并行的例子,包括(b)数据+专家+张量并行[49, 69, 121, 142, 179],©数据+专家+流水线并行[60, 69, 179],(d)专家+张量并行[154]。必须认识到,分布式并行策略的选择影响着计算效率、通信开销、内存占用之间的复杂相互作用,这可能受到各种硬件配置的影响。因此,实际应用的部署策略需要针对特定用例场景进行细致的权衡和定制设计。

表4. 按参考出版日期从新到旧排列的开源MoE系统框架的比较概览。论文提供了截至2024年6月的GitHub星标数量

在随后的讨论中,论文阐述了从计算、通信和存储方面引入MoE模型的挑战,同时回顾了现有的研究如何解决这些问题。表4展示了开源MoE框架的概览。

2.5.1 计算

尽管MoE旨在高效扩展模型参数而不增加计算需求,但它面临与计算效率相关的挑战。

•一个关注点是采用专家并行性的分布式设备之间的计算负载不平衡,这导致系统在等待最重负载专家处理完成时产生显著的同步开销。这类问题通常通过算法策略解决,如优化门控机制和调整专家容量,如前一节所述。此外,解决方案如SE-MoE [136]、Tutel [69]、FlexMoE [111] 和 SmartMoE [179] 引入了动态专家放置策略,以尽可能均匀地在设备间分配工作负载。此外,FasterMoE [60] 实施了一种新颖的动态影子专家策略,在多个设备上复制专家以缓解严重的负载不平衡。这些与模型放置相关的策略影响计算和通信效率。

•另一个关注点是MoE通过包括门路由、输入编码和输出解码等操作引入了额外的计算开销。与在GPU等主流硬件上受益于广泛优化的密集模型操作不同,这些MoE操作的特点是冗余计算和内存移动,导致在计算设备上的效率低下。因此,最近的研究如DeepSpeed-MoE[121]、FastMoE [59]、HetuMoE [112] 和 Tutel [69] 专注于开发定制的GPU内核,以提高MoE操作的效率。

•在多个专家部署在单个GPU设备的情况下,MegaBlocks [50] 通过重构MoE计算为块稀疏操作,开发了专门的块稀疏GPU内核,能够高效处理动态工作负载而不丢弃token。Zheng等人 [187] 提出了PIT,一种专为MoE动态稀疏性设计的深度学习编译器,能够为模型中的所有算子找到可行的PIT规则并生成优化的GPU内核。PIT采用了一种新颖的分块机制,利用经过数学证明的排列不变变换(PIT)特性,将多个稀疏分布的微块转换为GPU高效密集块,而不改变计算结果,从而实现了高GPU利用率和低覆盖浪费。尽管取得了这些进展,Tan等人 [147] 指出当前MoE框架如MegaBlocks和PIT仍存在优化潜力,这些框架从初始的散点到组数据复制开始,增加了内存占用,并需要将MoE问题转换为稀疏矩阵格式。虽然这种转换对计算开销影响微乎其微,但它限制了将MegaBlocks扩展到FFN之外模块的透明度和适应性。为解决这些问题,Tan等人 [147] 提出了ScatterMoE,一种旨在有效最小化内存占用的MoE实现。ScatterMoE利用了ParallLinear,一种能够在分散组上执行分组矩阵操作的线性模块。这种方法产生的中介表示(例如,SMoE MLP的隐藏状态)可直接作为标准PyTorch张量访问,便于将MoE方法扩展到其他类型的专家模块。

2.5.2 通信

在专家并行中,每个MoE层的前向和后向传播阶段四次调用All-to-All通信,导致显著的开销,甚至成为效率的主要制约因素。All-to-All通信模式包括节点内(通过PCle,第四代之前的NVLink)和节点间(以太网,Infiniband,第四代NVLink)通信通道。此类通信的效率取决于多种因素,包括通道带宽的异质性、网络拓扑以及集体通信算法。此外,MoE固有的负载不平衡可能通过引发同步延迟而加剧这些低效性。

为了优化利用高节点内带宽和低节点间带宽,DeepSpeed-MoE [121] 和 HetuMoE [112] 引入了分层的All-to-All通信策略,增强了节点内进程并减少了节点间数据交换。此外,FasterMoE [60]、TA-MoE [13] 和 SE-MoE [136] 引入了拓扑感知的路由策略,旨在缓解跨节点专家选择,从而减少节点间通信负担。此外,ExFlow [174] 利用专家亲和性,预测跨层的专家分配,以最大化token处理在本地GPU范围内的保留。战略性地分配专家以最小化网络流量并利用高带宽连接是分布式MoE系统中常见的做法 [121, 142, 154]。这种方法通常与非专家模块的布局设计相结合,以优化整体系统性能。

鉴于通信和计算的并发特性,流水线技术 [67, 107, 119] 通常被用于重叠它们的执行,从而减少总时间成本。这种技术集成在诸如Tutel [69]、FasterMoE [60] 和 MPipeMoE [185] 等系统中,协调All-to-All通信和专家计算之间的重叠。值得注意的是,Lancet [75] 强调了这些流水线方法的固有限制,特别是专家计算和通信可以重叠的时间长度受限。为了解决这一限制,Lancet 将非MoE计算进行分区,并在前向传播过程中将其集成到流水线中,并战略性地调度梯度权重计算以增强后向传播中的重叠。为了延长重叠时间,ScMoE [12] 重构了MoE架构,以同时处理来自前一层的表示和当前层的表示。这种通信依赖的解耦促进了通信和计算之间的大量重叠,甚至在某些情况下实现完全重叠。Snowflake Arctic [152] 采用了类似的设计,利用密集-MoE混合变换器架构有效地重叠通信和计算。

2.5.3 存储

MoE模型中不断增加的参数加剧了计算设备内存容量所面临的限制,这一挑战在密集模型中已经十分显著。虽然专家并行通过将专家分布在多个设备上提供了一种缓解策略,但单个设备仍可能难以容纳众多专家,特别是在设备容量(如边缘设备(PCs、智能手机、IoTs))本身更为受限的推理场景中。

考虑到分层存储的金字塔结构,解决方案如SE-MoE [136]、Pre-gated MoE [70] 和 EdgeMoE [176] 有选择地仅保留GPU的高带宽内存(HBM)中的必要非专家参数和活跃专家参数,将非活跃专家参数卸载到CPU内存或SSD。这些模式因跨存储层次的数据传输而产生额外开销,因此它们结合了专家选择预测和专家参数预取技术,以重叠参数访问与计算。

此外,MPipeMoE [185] 引入了一种策略,以减少与激活和临时缓冲区相关的内存开销。这是通过共享张量的各个分区的缓冲区,同时利用重计算/通信和CPU卸载来在后向传递中恢复所需的激活来实现的。

2.6 混合专家模型应用

在当前以Transformer为基础的大型语言模型(LLMs)占主导地位的环境中,混合专家(MoE)范式提供了一种引人注目的方法,以显著扩展模型容量,同时避免在训练和推理阶段相应增加的计算需求。这些模型在提升LLMs在各种下游任务的性能方面发挥了重要作用,某些应用甚至超越了人类表现 [30, 48, 74]。有传言称,强大的GPT-4可能采用了一个MoE架构,包含8个220B专家阵列,针对多样化的数据集和任务进行训练,并采用16次迭代推理过程 1 鉴于这些,MoE已在自然语言处理、计算机视觉、推荐系统以及多模态应用等领域得到广泛应用。这些应用的核心在于利用条件计算显著增加模型参数数量,从而在固定的计算成本下增强模型能力,或通过门控机制实现动态专家选择,以进行高效的多任务学习。接下来,论文将探讨MoE在各个领域的几个代表性应用,以全面了解MoE如何应用于特定任务。

自然语言处理。将MoE架构与LLMs结合,已在多种自然语言理解(NLU)和生成(NLG)任务中展现出非凡能力,涵盖机器翻译[29, 135]、开放域问答[6, 44]、代码生成[30, 74, 150, 154]及数学问题求解[30, 36, 74, 150]等领域。MoE与LLMs的集成方法已在算法设计部分4和系统设计部分5中详尽探讨与分析,此处不再赘述。

计算机视觉。MoE网络在NLP领域取得的巨大成功激发了其在计算机视觉中的应用。例如,Riquelme等人[128]提出了Vision MoE(V-MoE),该模型在选定的ViT[41]模块中融入了稀疏激活的MLP混合体。在图像识别任务中,V-MoE与顶尖网络性能相当,而推理时所需计算资源大幅减少,显示了MoE通过专用专家识别不同图像语义的潜力。Hwang等人[69]开发了Tutel,这是一个针对MoE的可扩展堆栈设计与实现,支持动态并行与流水线处理,并基于Swin Transformer V2[98]构建了SwinV2-MoE。此外,Zhang等人[183]在基于CNN的MoE模型中探索了对抗鲁棒性,提出了一种名为ADVMOE的新型路由-专家交替对抗训练框架。最近,Chowdhury等人[25]引入了MoE中的补丁级路由概念(pMoE),该方法将每个输入图像分割成n个补丁(或标记),并通过优先路由将l个补丁(即n个中的部分)分配给每个专家进行处理,以提高效率。

推荐系统。推荐系统在各种大规模应用中至关重要,它们需要同时平衡和优化多个目标[188]。一个典型的例子是在电影推荐领域,其目标不仅是推荐符合用户即时偏好的电影,还要确保用户对所选电影的后续满意度[101]。多任务模型的有效性取决于任务特定目标与任务间关系之间的复杂互动。因此,理解这些关系中固有的权衡至关重要。具有门控机制的混合专家(MoE)模型已成为解决推荐系统中多任务学习复杂性的流行范式。Ma等人[101]引入了多门混合专家(MMOE)方法,该方法利用了跨所有任务共享的专家子模型概念,并由针对每个单独任务定制的门控网络引导。解决“跷跷板现象”——即一个任务性能的提升可能对另一个任务产生不利影响——是多任务学习中的另一个挑战。为了应对这一挑战,Tang等人[148]提出了个性化推荐的渐进分层提取(PLE)模型。PLE明确分离共享和任务特定的组件,并采用渐进路由机制逐步提取和细化语义知识,从而增强联合表示学习和任务间信息路由的效能。最近,在捕捉序列推荐场景中特别显著的长期和短期用户偏好的追求中,提出了一种名为AdaMCT[77]的新方法。AdaMCT利用层感知自适应混合单元动态融合CNN和Transformer专家,从而根据个人用户模式定制推荐。

多模态应用。多模态模型旨在处理和整合单一神经网络框架内的各种数据类型[109]。这些模型通常同时包含两种主要数据模态:图像和文本[7, 156, 191]。混合专家(MoE)架构因其专家层能够学习不同的模态划分而成为多模态模型的基础,并获得了相当大的关注[106]。这种方法的一个显著实现是LMoE模型[106],一种专为多模态学习设计的稀疏混合专家模型。LMoE在图像和文本数据上进行训练,采用对比损失和基于熵的正则化技术来解决MoE系统固有的负载平衡挑战。随后,Shen等人[138]和Lin等人[95]进一步探讨了MoE在扩展视觉-语言模型方面的潜力,提供了有助于开发更高效和有效多模态学习系统的宝贵见解。此外,为了解决大型视觉-语言模型(LVLMs)指令调优中的任务冲突问题,MoCLE[53]将MoE与LoRA[66]专家和独特的通用专家集成,根据指令集群激活任务特定的模型参数。同时,为了缓解数据冲突,LLaVA-MoLE[15]部署了一组专门针对MLP层的LoRA专家,并结合top-1门控机制来优化多模态大型语言模型(MLLMs)中的指令调优。尽管采用MoE架构的MLLMs展示了令人印象深刻的性能,但它们通常涉及有限数量的专家和模态[92]。为了解决这一限制,Li等人[92]引入了开创性的Uni-MoE,一种具有MoE架构的统一MLLM,能够管理广泛的模态。他们引入了一种渐进式训练策略,以增强跨模态的专家合作和泛化能力,并利用LoRA[66],一种轻量级微调方法,来最小化计算需求。

如何学习大模型 AI ?

由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。

但是具体到个人,只能说是:

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

在这里插入图片描述

第一阶段(10天):初阶应用

该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。

  • 大模型 AI 能干什么?
  • 大模型是怎样获得「智能」的?
  • 用好 AI 的核心心法
  • 大模型应用业务架构
  • 大模型应用技术架构
  • 代码示例:向 GPT-3.5 灌入新知识
  • 提示工程的意义和核心思想
  • Prompt 典型构成
  • 指令调优方法论
  • 思维链和思维树
  • Prompt 攻击和防范

第二阶段(30天):高阶应用

该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。

  • 为什么要做 RAG
  • 搭建一个简单的 ChatPDF
  • 检索的基础概念
  • 什么是向量表示(Embeddings)
  • 向量数据库与向量检索
  • 基于向量检索的 RAG
  • 搭建 RAG 系统的扩展知识
  • 混合检索与 RAG-Fusion 简介
  • 向量模型本地部署

第三阶段(30天):模型训练

恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。

到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?

  • 为什么要做 RAG
  • 什么是模型
  • 什么是模型训练
  • 求解器 & 损失函数简介
  • 小实验2:手写一个简单的神经网络并训练它
  • 什么是训练/预训练/微调/轻量化微调
  • Transformer结构简介
  • 轻量化微调
  • 实验数据集的构建

第四阶段(20天):商业闭环

对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。

  • 硬件选型
  • 带你了解全球大模型
  • 使用国产大模型服务
  • 搭建 OpenAI 代理
  • 热身:基于阿里云 PAI 部署 Stable Diffusion
  • 在本地计算机运行大模型
  • 大模型的私有化部署
  • 基于 vLLM 部署大模型
  • 案例:如何优雅地在阿里云私有部署开源大模型
  • 部署一套开源 LLM 项目
  • 内容安全
  • 互联网信息服务算法备案

学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。

如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值