微信扫码
添加专属顾问
我要投稿
在本视觉指南中,我们将通过 50 多个图示来详细探讨这一重要组件:专家混合模型(MoE)!
本指南将围绕 MoE 的两个主要组成部分——专家(Experts)和路由器(Router)——在典型的基于 LLM 架构中的应用展开讨论。
什么是专家混合模型?
专家混合模型(MoE)是一种通过使用多个不同的子模型(或“专家”)来提升 LLM 质量的技术。
专家(Experts):每个前馈神经网络层(FFNN)现在都有一组可以选择的“专家”。这些“专家”通常本身也是前馈神经网络(FFNN)。
请注意,这些“专家”并不像人类领域中的“心理学”或“生物学”专家那样在特定学科上表现出高度专业化。
更具体地说,它们擅长于在特定上下文中处理特定的 tokens。
每个专家并不是一个完整的 LLM,而是 LLM 架构中一个子模型部分。
专家的角色
要理解专家的含义及其工作方式,首先需要了解 MoE 用来替代的内容:密集层(Dense Layers)。
专家混合模型(MoE)最初是从大型语言模型(LLMs)中相对基础的功能开始的,即前馈神经网络(Feedforward Neural Network,FFNN)。
FFNN 允许模型利用注意力机制生成的上下文信息,并进一步转化这些信息,从而捕捉数据中更复杂的关系。
在传统的 Transformer 中,FFNN 被称为密集模型(Dense Model),因为它的所有参数(包括权重和偏置项)都会被激活。所有参数都被用于计算输出,没有任何部分被遗弃。
相比之下,稀疏模型(Sparse Models)仅激活总参数中的一部分,这与专家混合模型(MoE)密切相关。
为了说明这一点,我们可以将密集模型分解为多个部分(称为专家),并重新训练它。
其核心思想是,每个专家在训练过程中学习不同的信息。而在推理时,仅使用与当前任务最相关的特定专家。
然而,在解码器模型中的专家似乎并没有表现出相同类型的专业化。这并不意味着所有专家都是等同的。
https://arxiv.org/pdf/2401.04088
这一可视化结果也表明,专家往往更关注句法,而不是某个特定领域的内容。
因此,尽管解码器中的专家似乎没有特定的专业化,但它们确实在某些类型的 tokens 上表现得更加一致。
解码器块现在包含多个可以在推理时使用的 FFNN(即“专家”)。
路由机制(The Routing Mechanism)
现在我们有了一组专家,模型如何知道该使用哪些专家呢?
在专家之前会加入一个路由器(也称为门控网络),它会被训练来选择每个 token 应选择的专家。
路由器(或门控网络)本身也是一个 FFNN,它根据特定的输入选择专家。
专家层返回被选定专家的输出,并乘以门控值(选择概率)。
给定的 MoE 层有两种类型:稀疏专家混合模型(Sparse Mixture of Experts)和密集专家混合模型(Dense Mixture of Experts)。
例如,面对一组 tokens,MoE 会将这些 tokens 分布到所有专家,而稀疏 MoE 则只会选择少数几个专家。
在目前的 LLM 中,当你看到“MoE”时,它通常指的是稀疏 MoE,因为稀疏 MoE 允许使用部分专家,从而减少计算开销,这对于 LLM 来说是一个重要的特性。
门控网络可以说是 MoE 中最重要的组件,因为它不仅决定了推理时要选择哪些专家,还决定了训练时的选择。
路由器利用这个概率分布来为给定的输入选择最匹配的专家。
这不仅会导致专家选择的不均匀分布,还会导致某些专家几乎没有被训练过。这会在训练和推理过程中引发问题。
因此,我们希望在训练和推理期间,各个专家的使用具有同等的重要性,这就是所谓的负载平衡。某种程度上,这是为了防止模型在同一组专家上过拟合。
负载平衡与优化
为了平衡专家的重要性,我们需要重点关注路由器,因为它是决定某一时刻选择哪些专家的主要组件。
一种对路由器进行负载平衡的方法是使用一个简单的扩展策略,称为 KeepTopK。
https://arxiv.org/pdf/1701.06538
尽管存在许多有前景的替代方案,许多 LLM 仍然使用 KeepTopK 策略。需要注意的是,KeepTopK 也可以不使用额外的噪声。
KeepTopK 策略会将每个 token 路由到若干选定的专家。
这种策略的主要优点在于,它可以对各个专家的贡献进行加权,并将其整合起来。
为了在训练期间实现专家的均匀分布,网络的常规损失中加入了辅助损失(也称为负载平衡损失)。
辅助损失增加了一个约束,强制专家在训练过程中具有相同的重要性。
这为我们提供了每个专家的重要性得分,即在不考虑输入的情况下,给定专家被选中的概率。
最后,辅助损失将作为一个独立的损失项,参与训练优化。
专家的不平衡不仅体现在被选中的专家上,还体现在分配给这些专家的 token 分布上。
这里不仅要考虑使用了哪些专家,还需要关注这些专家被使用的频率。
解决这个问题的方法是限制每个专家能够处理的 token 数量,即专家容量(Expert Capacity)。
第一个解决 MoE 训练不稳定性问题(如负载平衡)的基于 Transformer 的 MoE 模型是 Switch Transformer。它通过简化架构和训练过程,提高了训练稳定性。
Switch Transformer 是一个 T5 模型(编码器-解码器结构),它将传统的 FFNN 层替换为切换层(Switching Layer)。
这种架构(top-1 路由)假设每个 token 只需要一个专家来学习如何进行路由。这与我们之前讨论的 top-k 路由(将 token 分配给多个专家)有所不同。
然而,如果容量因子过大,就会浪费计算资源。相反,如果容量因子过小,模型性能会因为 token 溢出而下降。
为了进一步防止 token 被丢弃,Switch Transformer 引入了简化版的辅助损失。
由于目标是希望将 token 在 N 个专家中均匀分配,因此我们希望向量 P 和 f 的值为 1/N。
α 是一个超参数,用于在训练过程中微调此损失的重要性。值过高会影响主要损失函数,而值过低则无法有效进行负载平衡。
视觉模型中的专家混合模型
MoE 并不仅限于语言模型。视觉模型(如 ViT)使用 Transformer 架构,因此也有潜力使用 MoE。
当这些图像块进入编码器时,它们会像 tokens 一样被处理,这使得这种架构非常适合 MoE。
这种改进使得 ViT 模型(通常比语言模型小)能够通过增加专家的数量来大幅扩展。
为了降低硬件限制,每个专家都设置了一个较小的预定义容量,因为图像通常包含大量的图像块。
为了保持容量较低,网络会为每个图像块分配重要性得分,并优先处理这些得分较高的图像块,从而避免溢出图像块的丢失。
优先路由使得在处理较少的图像块时,仍能聚焦于最重要的图像块。
在 V-MoE 中,优先评分机制能够区分出重要和不重要的图像块。然而,图像块被分配给每个专家后,未被处理的图像块中的信息就会丢失。
软 MoE(Soft-MoE)旨在通过混合图像块,从离散的图像块(token)分配转变为软分配。
第一步,我们将输入 x(图像块嵌入)与一个可学习矩阵 Φ 相乘。这将生成路由信息,它告诉我们某个 token 与某个专家的相关程度。
路由矩阵在 token 层面影响输入,并在专家层面影响输出。
因此,我们获得了“软”图像块/token,这些 token 被处理,而不是离散输入。
Mixtral 8x7B 的激活与稀疏参数对比
MoE 的一个重要特点是其计算需求。由于在同一时刻只会使用部分专家,我们可以拥有比实际使用的更多的参数。
换句话说,我们仍然需要将整个模型(包括所有专家)加载到设备中(稀疏参数),但在实际运行推理时,我们只需要使用部分参数(活跃参数)。MoE 模型需要更多的显存来加载所有专家,但推理时运行速度更快。
我们需要加载 8x5.6B(46.7B)的参数(加上所有共享参数),但推理时只需要使用 2x5.6B(12.8B)的参数。
结论
以上就是我们对专家混合模型(MoE)的探索之旅!希望这篇文章能帮助你更好地理解这一有趣技术的潜力。如今几乎所有的模型架构中都有 MoE 变体,这也预示着它可能会长期存在下去。
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2025-04-25
OpenAI 白送 200 美元的深度研究功能?实测后发现这个「阉割版」不如不用
2025-04-25
为什么一定要做Agent智能体?
2025-04-25
哇!首个MCPBench来了,MCP竟然不比Function Calls更有优势? | 最新
2025-04-25
医疗大模型案例分析(一):Google Med-PaLM
2025-04-25
vLLM+Qwen-32B+Open Web UI构建本地私有大模型
2025-04-25
AI产品经理思考MCP(3):MCP的未来可能
2025-04-25
AI产品经理思考MCP协议(2):标准化的必要性
2025-04-25
AI产品经理思考MCP协议(1):预见MCP——我的“万能库”与标准化之路
2024-08-13
2024-06-13
2024-08-21
2024-09-23
2024-07-31
2024-05-28
2024-08-04
2024-04-26
2024-07-09
2024-09-17