混合专家 (MoE) 是一种机器学习方法,它将人工智能 (AI) 模型划分为单独的子网络或“专家”,每个子网络专门研究输入数据的一个子集,以便共同执行一项任务。
混合专家架构支持大规模模型,即使是包含数十亿个参数的模型也能大大降低预训练期间的计算成本,并在推理时实现更快的性能。从广义上讲,它通过选择性地仅激活给定任务所需的特定专家来实现这种效率,而不是为每项任务激活整个神经网络。
尽管专家混合设置的大部分现代实施大约是在过去十年中开发出来的但 MoE 模型背后的核心前提源自 1991 年的论文“本地专家的自适应混合”。该论文建议训练一个由独立网络组成的人工智能系统,每个网络专门用于不同的训练案例子集。这就需要对 "专家网络 "本身和一个决定每个子任务应使用哪位专家的门控网络进行训练。与类似的传统模型相比,作者发现他们的实验模型训练速度明显更快:只需传统模型一半的训练历时就能达到目标精度阈值。1
近年来,随着领先的深度学习模型(用于生成式 AI)变得越来越大,计算要求也越来越高,混合专家可提供一种解决大型模型提升容量和小型模型提高效率之间的权衡方法。这在自然语言处理 (NLP) 领域的探索最为显著:一些领先的大型语言模型 (LLM)(例如 Mistral 的 Mixtral 8x7B 和 OpenAI 的 GPT-4(据报道)2)都采用了 MoE 架构。
现代深度学习模型由人工神经网络构建,并由多层互连节点(或“神经元”)组成。每个神经元都有一个激活函数:这是对上一层接收到的数据进行的数学运算,其输出为下一层的输入提供信息。经典的前馈神经网络 (FFN) 在处理信息时,会将输入数据从一层神经元逐步传递到下一层神经元,直至到达外层,在那里进行最终预测。一些神经网络架构包含额外的元素,如 转换器 模型 中的自注意力机制,这些元素可以捕捉输入数据中的其他模式和依赖关系。
不同层和神经元之间的连接由可学习的模型参数介导:可变权重(和偏差)会放大或减弱网络输出的特定部分对网络其他部分的影响。深度学习模型通过调整这些参数,使用梯度下降等优化算法进行“学习”,以提高预测的准确性。
虽然参数数量越多,模型的容量(吸收信息和模式的能力)就越大,但同时也增加了训练和运行模型所需的计算资源。在一个典型的深度学习模型中(这里称为密集模型),整个网络经过执行,以便处理任何输入。这就造成了模型容量和实用性之间的权衡。
与传统的密集模型不同,混合专家使用条件计算来强制稀疏性:MoE 模型不是将整个网络用于每个输入,而是学习计算成本低的映射函数,该函数确定网络的哪些部分(换句话说,哪些专家)最有效地处理给定的输入,例如用于表示 NLP 任务中的单词或单词片段的单个标记。
这可以增加模型的容量(通过扩大参数的总数),而不会相应增加训练和运行所需的计算负担(因为并非所有这些参数都必须在任何给定时间使用)。
MoE 模型通过以下方式处理数据:指定多个“专家”,每个“专家”在更大的神经网络中都有自己的子网络,并训练门控网络(或路由器),以仅激活最适合给定输入的特定专家。
MoE 方法的主要优点在于,通过强制执行稀疏性,而不是为每个输入词元激活整个神经网络,可以在基本保持计算成本不变的情况下提高模型容量。
在架构层面上,这是通过用稀疏的 MoE 层(或块)取代传统的密集前馈网络 (FFN) 层来实现的。在神经网络术语中,“块”是指执行特定功能的重复结构元素。在稀疏 MoE 模型 (SMoE) 中,这些专家块可以是独立的单层 FFN,甚至是自身嵌套的 MoE。
例如,在 Mistral 的 Mixtral 8x7B 语言模型中,每一层由 8 个前馈块(即专家)组成,每个专家有 70 亿个参数。对于每个令牌,在每一层,路由器网络都会从八个专家中选择两个来处理数据。然后它结合这两位专家的输出并将结果传递到下一层。路由器在给定层选择的特定专家可能与在上一层或下一层选择的专家不同。3
SMoE 可能完全由稀疏的 MoE 层组成,但许多 MoE 模型架构都包含稀疏块和密集块。Mixtral 也是如此,其中负责模型自注意力机制的块在所有8个专家之间共享。在实践中,这使得 "8x7B"这样的称谓可能会产生误导:因为模型的许多参数被每个 70 亿参数的专家子网络共享,所以 Mixtral 的参数总数约为 470 亿,而不是简单相乘后的 560 亿。
这种总体参数数通常被称为稀疏参数数,一般可以理解为模型容量的一种度量。实际用于处理单个令牌的参数数(因为令牌会穿过某些专家区块,绕过其他专家区块)称为活动参数数,可以理解为模型计算成本的度量。尽管 Mixtral 的每个令牌输入都可以访问 467 亿个参数,但只有 129 亿个活动参数用于处理给定示例。
了解参数计数的这种最优利用是了解 MoE 模型优势的关键。例如,在大多数基准测试中,Mixtral 的表现优于 Meta 的 Llama 2 的 700 亿参数变体(速度要快得多),尽管总参数少了三分之一,并且在推理时使用的活动参数不到 20%。3
不过,值得注意的是,稀疏模型的总体参数数量与计算要求并非完全无关。尽管在推理过程中仅使用参数的子集但模型的全部参数大多数都会加载到内存中这意味着 SMoE 在大多数方面享有的计算效率并不适用于其 RAM/VRAM 要求。
MoE 概念(和效率)的关键在于,在任何给定时间只有稀疏层中的部分专家(以及参数)会被激活,从而减少主动计算需求。
虽然条件计算很早就被提出来作为一种理论手段,以实现计算需求与模型容量增加的解耦,但直到 Shazeer 等人在 2017 年发表论文“Outrageously Large Neural Networks:The Sparsely-Gated Mixture-of-Experts Layer”。4
在处理高维数据时,稀疏层相对于密集层的优势最为明显,因为高维数据的模式和依赖关系通常很复杂且呈非线性:例如,在 NLP 任务中,需要模型来处理长文本序列,每个单词通常仅与该序列中的一小部分其他单词相关。这使得 SMoE 成为 LLM 领域具有巨大潜力的领域,其中经过良好校准的 MoE 模型可以在不影响性能的情况下享受稀疏性的优点。稀疏门控 MoE 模型也已成功应用于计算机视觉任务,5 6 并仍是该领域的一个积极研究方面。
这种稀疏性是通过条件计算实现的:响应特定输入而动态激活特定参数。因此,强制执行条件计算的门控网络(或“路由器”)的有效设计对于 MoE 模型的成功至关重要。
在特定情况下,可以使用多种门控机制来选择利用哪些专家。正确的门控函数对于模型性能至关重要,因为糟糕的路由策略可能会导致某些专家训练不足或过于专业化,从而降低整个网络的效率。
Shazeer 的开创性论文中介绍了传统 MoE 设置中的典型门控机制,它使用 softmax 函数:对于每个专家,路由器在每个示例的基础上预测该专家的概率值(基于该专家与当前参数的连接权重),从而为给定输入产生最佳输出;路由器不计算所有专家的输出,而是只计算该示例中排名前 K 位的专家的输出(它预测的输出)。如前所述,Mixtral 采用了这种经典的 top-k 路由策略:具体来说,它采用top-2路由,即 k=2 - 从总共 8 个专家中选出 2 个最佳专家。
在他们颇具影响力的 2021 年论文《开关转换器:具有简单和效率稀疏的万亿参数模型》中,Fedus 等人将 top-k 路由发挥到了极致:与 Google 的 T5 LLM 合作,它用 128 名专家替换了模型的 FFN 层,并实现了 k=1,也称为“硬路由”。即使将模型扩展到一万亿个参数此设置也将预训练速度提高了 400%。6
尽管 MoE 有很多好处,但它们给培训过程增加了极大的复杂性。普通 "top-k路由策略的一个重要缺点是,门控网络有可能趋同于只激活少数专家。这是一个自我强化的问题:如果少数专家在早期被不成比例地选择,这些专家将更快地接受培训,然后继续被选中,因为他们现在比其他训练有素的专家提供更可靠的预测。这种不平衡的负载意味着其他专家最终会沦为累赘。
为了缓解这种情况,Shazeer 等人引入了嘈杂的 top-k 门控:在为每个专家预测的概率值中加入一些高斯噪声,从而引入一些随机性,推动优化均匀分布专家激活。他们还在专家选择中添加了两个可训练的正则化术语:最小化负载均衡损失会惩罚过度依赖任何一个专家,而最小化专家多样性损失会奖励所有专家的平等利用。
Google 在 2020 年发表的论文《GShard: Scaling Giant Models with Conditional Computation and Automatic Sharding》介绍了另外两种负载均衡方法:
随机路由:在他们的 top-2 设置中,"顶级"专家是使用标准 softmax 函数选择的,而第二位专家则是半随机选择的(任何专家被选中的概率与其连接权重成正比)。因此,排名第二的专家最有可能被选中,但不再保证被选中。
专家容量:作者设置了一个阈值,用于定义任何一位专家可以处理的最大令牌数量。如果所选的前 2 名专家中的任何一人达到容量上限,则令牌被视为“溢出”,并跳至网络的下一层。7
如前所述,稀疏模型的优势有时会被其增加的复杂性所削弱。实施 MoE 的挑战在微调过程中尤为明显。稀疏模型比传统的密集模型更容易出现过拟合,并且稀疏 MoE 层和密集 FFN 层的存在使一刀切的方法变得复杂。
已经提出了许多观察结果和方法,以减少微调MoE时的不稳定性。Switch Transforlmers 论文的作者观察到,专家较少的变体享有更成功的微调,这表明在预培训中大量专家的好处可能会因其对下游任务专业化的阻碍而受到抵消。
在 2022 年发表的论文 "ST-MoE:Zoph等 人比较了 5 种不同方法的结果:微调所有参数("All")、仅微调非 MoE 参数("Non MoE")、仅微调 MoE 参数("MoE")、仅微调自我注意和编码器-解码器注意参数("Attention")以及仅微调非 MoE FFN 参数("FFN")。
All 和 Non-MoE 之间几乎没有发现差异
仅对注意力参数进行微调导致性能略有下降。
尽管大约 80% 的模型参数位于稀疏 MoE 层中,但仅更新 MoE 参数会显著降低模型性能。
相对于 All 基准线,FFN 是唯一一种提高性能的方法。
作者假设,由于专家层仅占其模型总层数的四分之一,而一个标记每层最多只能看到两个专家,因此隔离 MoE 参数会导致权重更新不那么全面(从而造成更大的过度拟合和训练损失)。8
2023 年 7 月的一篇论文《Mixture-of-Experts Meets Instruction Tuning》探讨了指令调优对 MoE 模型的影响,使用 Google 的 T5 和 Flan-T5 的等效模型 - 一种使用 Google 的 Flan 协议进行 T5 指令调优的 LLM 版本(链接位于 ibm.com 站外)作为基线。他们的实验比较了四种设置:微调密集的 T5 模型、微调密集的 Flan-T5 模型、微调 MoE 模型和微调指令调整的 Flan-MoE 模型。
正如预期的那样,经过微调后,密集型 T5 等效模型表现优于 MoE。但相反,经过微调的 Flan-MoE 模型表现明显优于经过微调的 Flan-T5 模型。Flan-MoE 在与 MoE 相比时的改进甚至超过了 Flan-T5 相较于原始 T5.9 的改进
令人鼓舞的是,这表明尽管标准微调存在困难,但 MoE 模型实际上比密集型模型更能从指令调整中受益。这一发现随着 Mixtral 8x7B Instruct 的发布而得以实现,它是 Mixtral 的一个指令调整变体,作为基础模型在 IBM® watsonx.ai 中提供。
借助您的 AI 合作伙伴 Bob,加速软件交付,实现安全的意图感知型开发。
使用 IBM watsonx Orchestrate 轻松设计可扩展的 AI 助手和智能体,自动执行重复任务并简化复杂流程。
借助 IBM 业界领先的 AI 专业知识和解决方案组合,让 AI 在您的业务中发挥作用。
注:所有链接均位于 ibm.com 站外
1《本地专家的适应性混合》,多伦多大学,1991 年 3 月
2《AI 专家推测 GPT-4 架构》,Weights and Biases,2023 年 6 月 21 日
3《混合专家》,Mistral AI,2023 年 12 月 11 日
4《极其庞大的神经网络:稀疏门控的混合专家》,arXiv,2017 年 1 月 23 日
5 借助稀疏混合专家来调整愿景》,arXiv,2021 年 6 月 10 日;《MoCAE:校准专家混合可显著改善对象检测》,Papers with Code,2023 年 9 月 26 日
6《Switch Transformers:以简单高效的稀疏扩展到万亿参数模型》arXiv,2021 年 1 月 11 日(最后更新于 2022 年 6 月 16 日)
7《GShard:使用条件计算和自动分片扩展巨型模型》,arXiv,2020 年 6 月 30 日
8《ST-MoE:设计稳定且可转移的稀疏专家模型》arXiv,2022 年 2 月 17 日
9《专家混合遇上指令调整:大型语言模型的成功组合》,arXiv,最后更新时间为 2023 年 7 月 5 日