深度解读混合专家模型(MoE):算法、演变与原理
假设一个专家团队共同解决复杂问题。每位专家都拥有独特的技能,团队通过高效分配任务实现了前所未有的成功。这就是混合专家(Mixture-of-Experts,MoE)模型架构背后的基本思想,这种方法允许机器学习系统,特别是神经网络,高效扩展。MoE 不是让一个单一的神经网络处理所有任务,而是将工作分配给多个专门的'专家',由一个门控网络决定针对每个不同输入激活哪些专家。
随着模型变得越来越大、越来越复杂,保持效率和准确性成为最大挑战,尤其是在自然语言处理(NLP)和大型语言模型(LLM)领域中参数扩展到数十亿甚至数万亿的局面下。传统模型对每个输入都激活神经网络中的所有层和神经元,计算成本巨大,减慢了推理速度,并消耗大量内存。在追求速度和可扩展性的实际应用中部署如此庞大的模型是一项艰巨的任务。
混合专家通过一次只激活一小部分专家来解决这个问题,从而在不牺牲性能的情况下减少计算开销。在 MoE 中,这种协作方法在 NLP 和像 OpenAI GPT 这样的 LLM 中变得越来越重要,这些模型需要在保持效率和准确性的同时扩展到数十亿参数。
本文将介绍 MoE 的核心概念、LLM、训练、推理以及 MoE 在现代 AI 模型中的作用。
01. MoE 的定义及核心概念
简而言之,混合专家(Mixture of Experts,MoE)是一种先进的神经网络架构,它通过动态选择专门的子模型或'专家'来处理输入的不同部分,以提高模型的效率和可扩展性。这个概念可以类比为劳动分工,每个专家专注于某个大问题中的特定一小部分任务,从而生成更快、更准确的结果。
混合专家模型由三个关键组件组成:
- 专家(Experts):专门针对特定任务的子模型。
- 门控网络(Gating Network):一个选择器,它将输入数据路由到相关的专家。
- 稀疏激活(Sparse Activation):只有少数专家针对每个输入被激活的方法,优化了计算效率。
1.1 专家
在 MoE 架构中,专家是指训练好的子网络(神经网络或层),它们专门处理特定的数据或任务。例如,在图像分类任务中,一个专家可能专门识别纹理,而另一个专家可能识别边缘或形状。这种分工有助于整个模型更高效地处理问题,因为每个专家只处理它最适合的数据类型。
1.2 门控网络或路由器
门控网络充当一个选择器,它决定将哪些输入数据发送给哪些专家。不是所有专家都同时工作,而是门控网络将数据路由到最相关的专家那里。类似于 token 选择路由策略,路由算法为每个 token 选择最佳的一个或两个专家。例如,输入令牌 1,'我们',被发送到第二个专家,而输入令牌 2,'喜欢',被发送到第一个网络。
以下是一些主流的 Token 路由技术:
Top-k 路由:这是最简单的方法。门控网络选择亲和力得分(affinity score)最高的 top k 个专家,并将输入数据发送给它们。
专家选择路由(Expert Choice Routing):与根据数据选择专家不同,这种方法由专家决定它们最能处理哪些数据。这种策略旨在实现最佳的负载均衡,并支持以多种方式将数据映射到专家。
1.3 稀疏激活
稀疏激活是 MoE 模型的关键部分和优势之一。与所有专家或参数对输入都活跃的密集模型不同,稀疏激活确保只有一小部分专家根据输入数据被激活。这种方法在保持性能的同时减少了计算需求,因为任何时候只有最相关的专家是活跃的。
- 稀疏路由:稀疏激活的一种特定技术,其中门控网络针对每个输入只激活少数专家。
02. MoE 在深度学习中的历史演变
MoE 的概念来自于 1991 年的论文《Adaptive Mixture of Local Experts》。这篇论文引入了将复杂问题分解为子问题并分配给多个专门模型的思想。这种分而治之的策略成为了 MoE 架构的核心。
接下来,两个关键研究领域进一步塑造了 MoE 的演变:
- 专家作为组件(Experts as components):最初,MoE 被应用于支持向量机(SVM)和高斯过程等模型中。然而,研究通过将 MoE 集成为深度神经网络中的组件,使它们能够作为更大模型中的层来运作,扩展了这种方法。
- 条件计算:传统的神经网络处理通过所有层处理输入,但 Yoshua Bengio 的研究引入了条件计算,根据输入选择性地激活或停用网络组件。这种动态方法提升了计算效率,因为每个输入只使用了模型中必要的部分。
2.1 大规模 NLP 模型中的 MoE:GShard 和 Switch Transformer
MoE 对自然语言处理(NLP)的影响随着 GShard 和 Switch Transformer 等模型的出现而得到巩固。2021 年,谷歌的 Switch Transformer 模型拥有 1.6 万亿参数,证明了 MoE 能够处理需要大量计算资源的任务。通过每个输入只激活少数专家,模型在参数数量增长的同时保持了效率。


