一文图解混合专家模型(Mixture of Experts, MoE)

混合专家模型(Mixture of Experts,MoE)的理念起源于1991年的论文:《Adaptive Mixture of Local Experts》,这个概念与集成学习方法相似,旨在为由多个单独网络组成的系统建立一个监管机制,在这种系统中,每个网络 (被称为"专家") 处理训练样本的不同子集,专注于输入空间的特定区域。

许多具有代表性的模型,比如Mixtral-8x7B, DeepSeek, GPT-4, Gemini 1.5, Grok-1等都采用MoE的架构,同时看了一些MoE相关的文献和资料,所以总结一下啊。

要点:

  • 与稠密模型相比, MoE预训练速度更快。

  • 与具有相同参数数量的模型相比,具有更快的推理速度。

  • 需要大量显存,因为所有专家系统都需要加载到内存中。

  • MoE主要包括两个核心部分:专家和门控网络。

1、什么是MoE?

MoE是一种机器学习方法,它将人工智能(AI)模型划分为多个独立的子网络(或"专家"),每个专家专门处理输入数据的某个子集,并共同完成任务。

MoE架构使得即使是包含数十亿参数的大模型,也能在预训练阶段大幅降低计算成本,并在推理时实现更快的性能,总体而言,其高效性来源于"选择性激活"机制,即MoE并不会在每个任务中激活整个神经网络,而是仅激活完成该任务所需的特定专家。

一般来说,参数数量越多,模型的容量就越大,也就是吸收信息和模式的能力越强,然而,更多的参数也意味着更高的计算成本,无论是在训练还是推理阶段。在典型的深度学习模型中(即所谓的"稠密模型"),整个网络都会被执行,以处理所有输入数据,这就导致了模型容量与计算可行性之间的权衡。

与传统的稠密模型不同,MoE 采用条件计算(conditional computation)来实现稀疏性:它不会在每次输入时调用整个网络,而是学习一种计算成本较低的映射函数,以确定网络的哪一部分(即哪些专家)最适合处理特定输入,例如在自然语言处理(NLP)任务中用于表示单词或单词片段的单个token。这样一来,模型的总体参数规模可以增加(从而提升容量),但计算负担不会相应增长,因为在任何特定时刻,模型只会使用一部分参数,而非全部参数。所以,作为一种基于 Transformer 架构的模型,混合专家模型主要由两个关键部分组成:

  • 稀疏 MoE 层,也称为专家: 这些层代替了传统 Transformer 模型中的前馈网络 (FFN) 层。MoE 层包含若干"专家"(例如 8 个),每个专家本身是一个独立的神经网络。在实际应用中,这些专家通常是前馈网络 (FFN),但它们也可以是更复杂的网络结构,甚至可以是 MoE 层本身,从而形成层级式的 MoE 结构。每个前馈神经网络(FFNN)层现在包含一组"专家",其中一部分会被选中进行计算。这些"专家"本质上也是前馈神经网络。
  • 门控网络或路由: 负责决定每个token(token)应该被分配到哪个专家进行处理。有时,一个token甚至可以被发送到多个专家,token的路由方式是 MoE 使用中的一个关键点,因为路由器由学习的参数组成,并且与网络的其他部分一同进行预训练。

总结来说,在混合专家模型 (MoE) 中,将传统 Transformer 模型中的每个前馈网络 (FFN) 层替换为 MoE 层,其中 MoE 层由两个核心部分组成: 一个门控网络和若干数量的专家。

2、MoE工作原理

MoE模型的工作方式是设置多个"专家"------每个专家都是一个更大神经网络中的子网络,并且每个输入token只会激活其中一个或少数几个专家,为了让每个token被正确分配到最合适的专家,模型需要选择并优化一个门控网络或路由器来激活最适合处理特定输入的专家,MoE 方法的主要优势在于,它通过强制稀疏化来提高模型容量,而不是让整个神经网络对每个输入token都全量激活,这样一来,计算成本基本保持不变的同时,模型的能力却能大幅提升。

根据token如何映射到专家,MoE可以是稀疏的(sparse)或密集的(dense)。稀疏 MoE 只在路由时选择一部分专家进行计算,相比于密集 MoE,大幅降低了计算成本。

从架构上看,这种方法是通过用稀疏MoE层(或模块)替换传统的密集前馈网络(FFN)层来实现的。在神经网络的术语中,"模块"(block)指的是执行特定功能的重复结构。在稀疏MoE(SMoE)模型中,这些专家模块可以是单层结构、自包含的 FFN,甚至可以是嵌套的 MoE 结构。

许多早期研究采用了"token选择路由"策略,即路由算法会为每个token挑选最合适的一个或两个专家进行计算;不过,这种独立的token选择方式往往会导致专家负载不均,部分专家过度使用,而其他专家利用率不足。为了解决这个问题,以往的稀疏门控网络引入了额外的辅助损失作为正则化手段,以防止过多token被路由到同一个专家。但这种方法的效果有限,因此,采用token选择路由的模型通常需要大幅增加专家的计算容量(是实际需求的 2 到 8 倍),以避免缓冲区溢出导致token丢失。

以 Mistral 的 Mixtral 8x7B 语言模型为例,它的每一层由 8 个前馈模块(即专家)组成,每个专家包含 70 亿个参数。对于每个token,每一层的路由网络都会从这 8 个专家中挑选 2 个来处理数据。然后,它会将这两个专家的输出结合起来,并将结果传递到下一层。而且,每一层选中的专家可能会有所不同,不一定与前一层或后一层选中的专家相同。

3、挑战

尽管混合专家模型 (MoE) 提供了若干显著优势,例如更高效的预训练和与稠密模型相比更快的推理速度,但它们也伴随着一些挑战:

  • 训练挑战: 虽然 MoE 能够实现更高效的计算预训练,但它们在微调阶段往往面临泛化能力不足的问题,长期以来易于引发过拟合现象。
  • 推理挑战: MoE 模型虽然可能拥有大量参数,但在推理过程中只使用其中的一部分,这使得它们的推理速度快于具有相同数量参数的稠密模型。然而,这种模型需要将所有参数加载到内存中,因此对内存的需求非常高。以 Mixtral 8x7B 这样的 MoE 为例,需要足够的 VRAM 来容纳一个 47B 参数的稠密模型。之所以是 47B 而不是 8 x 7B = 56B,是因为在 MoE 模型中,只有 FFN 层被视为独立的专家,而模型的其他参数是共享的。此外,假设每个token只使用两个专家,那么推理速度 (以 FLOPs 计算) 类似于使用 12B 模型 (而不是 14B 模型),因为虽然它进行了 2x7B 的矩阵乘法计算,但某些层是共享的。

参考文献及资料

相关推荐
AI大模型37 分钟前
COZE实战部署(四)—— coze实战部署
程序员·llm·coze
AI大模型37 分钟前
COZE实战部署(三)—— 更多实例的展示
llm·agent·coze
阿里云大数据AI技术15 小时前
OpenSearch 视频 RAG 实践
数据库·人工智能·llm
大模型开发16 小时前
零基础打造AI智能体实战教学(10)----零基础用Coze打造短视频自动洗稿工作流
llm·agent·coze
商汤万象开发者17 小时前
懒懒笔记 | 课代表带你梳理【RAG课程 19:基于知识图谱的RAG】
llm
字节跳动视频云技术团队19 小时前
ICME 2025 | 火山引擎在国际音频编码能力挑战赛中夺得冠军
llm·aigc·音视频开发
AI大模型19 小时前
COZE实战部署(二)—— 创建Coze应用
程序员·llm·coze
聚客AI19 小时前
大模型学习进阶路线图:从Prompt到预训练的四阶段全景解析
人工智能·llm·掘金·日新计划
大模型开发19 小时前
零基础打造AI智能体实战教学(9)----把Coze AI助手部署到Discord频道教程
llm·agent·coze
ansurfen1 天前
我的第一个AI项目:从零搭建RAG知识库的踩坑之旅
python·llm