当我们查看最新发布的大语言模型(LLM)时,常常会看到标题中出现 MoE 这一术语。那么,这个 MoE 代表什么?为什么这么多 LLM 都在使用它呢?
在这篇文章中,我们将深入探讨 MoE 的两个主要组件——专家和路由器,并了解它们在典型 LLM 架构中的应用。
1、什么是混合专家(MoE)?
混合专家(Mixture of Experts,简称 MoE)模型,是一种利用多个不同的子模型(或“专家”)来提升大语言模型(LLM)质量的技术。
MoE 架构主要由两个核心组件构成:
1.专家模块:每个前馈神经网络(FFNN)层包含一组“专家”,每次可从中选择一个子集。这些“专家”本身通常是 FFNN。
2.路由或者网关网络,决定将哪些标记(token)分配给哪些专家。
在采用 MoE 架构的大语言模型的每一层中,我们会发现这些专家模块往往具有这样的特点:
要知道,所谓的“专家”并不是专门针对某个领域,如“心理学”或“生物学”。最多,它只是语法层面的专家:
更具体来说,它们的专长是在特定的上下文中处理特定的标记。
路由器(网关网络)来选择最适合给定输入的专家(们):
每个专家并不是一个完整的 LLM,而是 LLM 架构中的子模型部分。
2、专家(Experts)
为了探讨专家(MoE中的E)的代表意义和它们的工作方式,我们首先需要了解 MoE 原本要替代的是什么——密集层。
2.1、 密集层 (Dense Layer)
混合专家(MoE)起始于 LLM 相对基础的功能,即前馈神经网络(FFNN)。
记住,标准的仅解码器 Transformer 架构中,FFNN 是在层归一化后应用的:
一个 FFNN 允许模型使用由注意力机制创建的上下文信息,并通过进一步转换这些信息来捕捉数据中更为复杂的关系。
然而,FFNN 的规模会迅速增长。为了学习这些复杂的关系,它通常会扩展它接收到的输入:
2.2、稀疏层 (Sparse Layers)
传统 Transformer 中的前馈神经网络(FFNN)被称为密集模型,因为所有参数(权重和偏置)都会被激活。没有任何参数被遗漏,所有参数都参与输出计算。
如果我们更仔细地观察这种密集模型,可以发现输入会在某种程度上激活所有参数:
与此相对,稀疏模型仅激活一部分参数,并且与混合专家(MoE)紧密相关。
为了说明这一点,我们可以将密集模型切割成多个部分(所谓的专家),重新训练它,并且在给定时间内只激活一组专家:
其底层思想是每个专家在训练过程中学习不同的信息。然后,在进行推理时,仅使用与给定任务最相关的特定专家。
当被问到问题时,我们可以选择最适合执行给定任务的专家:
3、专家(Experts)学到什么?
如前所述,专家学习的内容比整个领域更为细致。因此,称它们为“专家”有时被认为是误导性的。
ST-MoE 论文中编码器模型的专家专业化
然而,解码器模型中的专家似乎并没有同样类型的专业化。不过,这并不意味着所有专家都是平等的。
一个很好的例子可以在 Mixtral 8x7B 论文中找到,其中每个标记都以第一个专家的选择为颜色。
这个视觉图展示了专家倾向于关注语法而非特定领域。
因此,尽管解码器专家似乎没有特定的专长,但它们确实会被一致地用于某些类型的标记。
4、专家的架构
尽管将专家视为密集模型中的隐藏层并将其切分成块是很形象的做法,但它们通常本身就是完整的 FFNN:
由于大多数 LLM 具有多个解码器块,因此给定文本将在多个专家之间传递,直到文本生成:
所选的专家很可能在标记之间有所不同,这就导致了不同的“路径”被选择:
如果我们更新解码器块的可视化,它现在会包含更多的 FFNN(每个专家一个):
解码器块现在有多个 FFNN(每个都是一个“专家”),可以在推理时使用。
5、路由机制
现在我们有了一组专家,那么模型是如何知道应该使用哪些专家的呢?
在专家之前,添加了一个路由器(也叫网关网络),它经过训练来选择哪个专家适合给定的标记。
5.1、路由器
路由器(或网关网络)也是一种前馈神经网络(FFNN),它根据特定的输入来选择专家。它输出概率,并利用这些概率来选择最匹配的专家:
专家层返回所选专家的输出,并乘以门值(选择概率)。
路由器与专家(其中只有少数几个被选中)一起构成了 MoE 层:
给定的 MoE 层有两种大小,分别是稀疏的混合专家或密集的混合专家模型。
这两者都使用路由器来选择专家,但稀疏 MoE 只选择几个,而密集 MoE 则选择所有专家,但可能以不同的分布进行选择。
例如,给定一组标记,MoE 会将标记分配给所有专家,而稀疏 MoE 只选择少数专家。
在当前的 LLM 状态下,当你看到“MoE”时,它通常是一个稀疏 MoE,因为它允许你使用专家子集。这在计算上更便宜,这是 LLM 的一个重要特性。
5.2、专家的选择
门控网络可以说是任何 MoE 模型中最重要的组成部分,因为它不仅决定了在推理过程中选择哪些专家,还决定了在训练过程中选择哪些专家。
在最基本的形式中,我们将输入(x)与路由器权重矩阵(W)相乘:
然后,我们对输出应用 SoftMax 操作,为每个专家创建概率分布 G(x):
路由器使用这种概率分布来选择与给定输入最匹配的专家。
最后,我们将每个路由器的输出与每个选定的专家相乘,并对结果进行求和。
让我们把所有内容放在一起,看看输入是如何通过路由器和专家流动的:
6、路由的复杂性
然而,这个简单的函数常常导致路由器会选择相同的专家,因为某些专家可能比其他专家学习得更快:
不仅会导致选择的专家分布不均,还有一些专家几乎不会被训练到,这导致在训练和推理过程中都会出现问题。
因此,我们希望在训练和推理过程中,专家之间具有相等的重要性,这就是我们所说的负载均衡。从某种意义上说,这是为了防止对同一专家的过拟合。
7、负载均衡
为了平衡专家的重要性,我们需要关注路由器,因为它是决定在特定时刻选择哪些专家的主要组成部分。
7.1、KeepTopK
负载均衡路由器的一种方法是通过一个简单的扩展,叫做 KeepTopK。通过引入可训练的(高斯)噪声,我们可以防止总是选择相同的专家:
然后,除了你想激活的前 k 个专家(例如 2 个)之外,其余专家的权重将被设置为 -∞:
通过将这些权重设置为 -∞,这些权重上的 SoftMax 输出将导致概率为 0:
KeepTopK 策略是许多大型语言模型仍然使用的一种方法,尽管有很多有前景的替代方案。请注意,KeepTopK 也可以在没有添加额外噪声的情况下使用。
7.2、Token 选择
KeepTopK 策略是将每个 token 路由发送到少数几个选定的专家。这种方法称为 Token Choice,允许将给定的 token 发送到一个专家(top-1 路由):
或发送到多个专家(top-k 路由):
一个主要的好处是,它允许对专家的贡献进行加权和整合。
7.3、辅助损失
为了在训练期间获得更均匀的专家分布,辅助损失(也称为负载均衡损失)被添加到网络的常规损失中。
它添加了一个约束,强制要求专家具有相等的重要性。
这个辅助损失的第一个组成部分是对整个批次中每个专家的路由器值进行求和:
这给出了每位专家的重要性分数,表示无论如何输入,某位专家被选择的可能性。
我们可以使用这个来计算变异系数(CV),它告诉我们不同专家之间的重要性分数差异有多大。
例如,如果重要性分数差异很大,CV 就会很高:
相反,如果所有专家的权重分数相似,CV 就会很低(这是我们希望的):
使用这个 CV 分数,我们可以在训练过程中更新辅助损失,目的是尽可能降低 CV 分数(从而给每个专家相等的重要性):
最后,辅助损失作为一个独立的损失加入到训练中进行优化。
8、专家容量
不平衡不仅存在于被选择的专家中,也存在于分配给专家的 token 分布中。
例如,如果输入 token 不成比例地分配给某个专家,而忽视了其他专家,那么也可能导致训练不足:
这里的问题不仅是哪些专家被使用,而是它们被使用的频率。
解决这个问题的一种方法是限制每个专家可以处理的 token 数量,即专家容量。当一个专家的容量达到上限时,剩余的 token 会被发送到下一个专家:
如果两个专家的容量都已满,那么 token 将不会被任何专家处理,而是被发送到下一层,这就是 token 溢出。
9、通过 Switch Transformer 简化 MoE
Switch Transformer 是第一个基于 transformer 的 MoE 模型,它处理了 MoE 中的训练不稳定性问题(如负载均衡)。它简化了架构和训练过程,同时提高了训练稳定性。
9.1、切换层
Switch Transformer 是一个 T5 模型(编码器-解码器),它用切换层替代了传统的 FFNN 层。切换层是一个稀疏 MoE 层,为每个 token 选择一个专家(Top-1 路由)。
路由器不进行任何特殊计算,它只是计算输入与专家权重的乘积,并取其 softmax(与之前做的操作相同)。
这种架构(Top-1 路由)假设每次路由只需要一个专家来学习如何路由输入。这与我们之前看到的有所不同,后者假设 token 应该路由到多个专家(Top-k 路由)来学习路由行为。
9.2、容量因子
容量因子是一个重要值,它决定了每个专家可以处理多少 token。Switch Transformer 扩展了这一点,引入了一个直接影响专家容量的容量因子。
专家容量的组成部分非常直接:
如果我们增加容量因子,每个专家就能处理更多的 token。
然而,如果容量因子过大,我们就浪费计算资源。相反,如果容量因子过小,由于 token 溢出,模型性能将下降。
9.3、辅助损失
为了进一步防止丢失 token,引入了辅助损失的简化版本。
与其计算变异系数,这个简化的损失衡量了每个专家的 token 分派比例与路由器概率分布之间的比率:
由于目标是让 N 个专家之间的路由统一,我们希望向量 P 和 f 的值为 1/N。
α 是一个超参数,我们可以用它来微调训练过程中这个损失函数的权重。过高的值会超越主损失函数,过低的值对负载均衡几乎没有作用。
10、视觉模型中的混合专家(MoE)
MoE 不仅是语言模型独有的技术。视觉模型(如 ViT)利用基于 transformer 的架构,因此也有可能使用 MoE。
简要回顾一下,ViT(视觉 transformer)是一种将图像分割为图像块并像 token 一样处理的架构。
这些图像块(或 token)随后被映射为嵌入(并添加了额外的位置嵌入),然后再输入到常规编码器中:
当这些图像块进入编码器时,它们就像 token 一样被处理,这使得该架构能够很好地利用 MoE。
10.1、Vision-MoE
Vision-MoE(V-MoE)是 MoE 在图像模型中的首次实现之一。它以我们之前看到的 ViT 为基础,并将编码器中的密集 FFNN 替换为稀疏 MoE。
这使得通常比语言模型小的 ViT 模型可以通过添加专家来进行大规模扩展。
为了减少硬件约束,每个专家使用了小的预定义专家容量,因为图像通常有很多图像块。然而,低容量往往会导致图像块丢失(类似于 token 溢出)。
为了保持容量低,网络会为图像块分配重要性分数,并优先处理那些重要性较高的图像块,这叫做批处理优先路由。
因此,如果 token 的百分比下降,我们仍然应该看到重要的图像块被路由。
优先路由使得我们能集中处理最重要的图像块,从而减少处理的图像块数量。
10.2、从稀疏混合专家到软混合专家
在 V-MoE 中,优先级评分器帮助区分更重要和不太重要的图像块。然而,图像块被分配给每个专家后,未处理的图像块中的信息会丢失。
软 MoE 旨在通过混合图像块,从离散到软图像块(token)分配。
在第一步中,我们将输入 x(图像块嵌入)与可学习的矩阵 Φ 相乘。这为我们提供了路由信息,告诉我们某个 token 与给定专家的相关性。
然后,通过对路由信息矩阵(列)进行 softmax 操作,我们更新每个图像块的嵌入。
更新后的图像块嵌入实际上是所有图像块嵌入的加权平均值。
从视觉上看,就好像所有图像块都被混合了。这些合成的图像块然后被发送到每个专家。生成输出后,它们再次与路由矩阵相乘。
路由矩阵在 token 层面影响输入,在专家层面影响输出。
最终,我们得到的是“软”图像块/token,而不是离散输入。
我的DeepSeek部署资料已打包好(自取↓)
https://pan.quark.cn/s/7e0fa45596e4
但如果你想知道这个工具为什么能“听懂人话”、写出代码 甚至预测市场趋势——答案就藏在大模型技术里!
❗️为什么你必须了解大模型?
1️⃣ 薪资爆炸:应届大模型工程师年薪40万起步,懂“Prompt调教”的带货主播收入翻3倍
2️⃣ 行业重构:金融、医疗、教育正在被AI重塑,不用大模型的公司3年内必淘汰
3️⃣ 零门槛上车:90%的进阶技巧不需写代码!会说话就能指挥AI
(附深度求索BOSS招聘信息)
⚠️警惕:当同事用DeepSeek 3小时干完你3天的工作时,淘汰倒计时就开始了。
那么,如何系统的去学习大模型LLM?
作为一名从业五年的资深大模型算法工程师,我经常会收到一些评论和私信,我是小白,学习大模型该从哪里入手呢?老师啊,我自学没有方向怎么办?老师,这个地方我不会啊。如果你也有类似的经历,一定要继续看下去!当然这些问题啊,也不是三言两语啊就能讲明白的。
所以我综合了大模型的所有知识点,给大家带来一套全网最全最细的大模型零基础教程。在做这套教程之前呢,我就曾放空大脑,以一个大模型小白的角度去重新解析它,采用基础知识和实战项目相结合的教学方式,历时3个月,终于完成了这样的课程,让你真正体会到什么是每一秒都在疯狂输出知识点。
篇幅有限,⚡️ 朋友们如果有需要全套 《2025全新制作的大模型全套资料》,扫码获取~
👉大模型学习指南+路线汇总👈
我们这套资料呢,会从基础篇、进阶篇和项目实战篇等三大方面来讲解。
👉①.基础篇👈
基础篇里面包括了Python快速入门、AI开发环境搭建及提示词工程,带你学习大模型核心原理、prompt使用技巧、Transformer架构和预训练、SFT、RLHF等一些基础概念,用最易懂的方式带你入门大模型。
👉②.进阶篇👈
接下来是进阶篇,你将掌握RAG、Agent、Langchain、大模型微调和私有化部署,学习如何构建外挂知识库并和自己的企业相结合,学习如何使用langchain框架提高开发效率和代码质量、学习如何选择合适的基座模型并进行数据集的收集预处理以及具体的模型微调等等。
👉③.实战篇👈
实战篇会手把手带着大家练习企业级的落地项目(已脱敏),比如RAG医疗问答系统、Agent智能电商客服系统、数字人项目实战、教育行业智能助教等等,从而帮助大家更好的应对大模型时代的挑战。
👉④.福利篇👈
最后呢,会给大家一个小福利,课程视频中的所有素材,有搭建AI开发环境资料包,还有学习计划表,几十上百G素材、电子书和课件等等,只要你能想到的素材,我这里几乎都有。我已经全部上传到CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费
】
相信我,这套大模型系统教程将会是全网最齐全 最易懂的小白专用课!!