MoE_让大模型更大_更准_还更快
Mixture of Experts (MoE) 是一种神经网络架构,它的核心思想是将一个复杂的任务分解成若干个子任务,并为每个子任务分配一个专家网络来处理。这种架构在处理大规模模型时,能够显著提高效率和性能。
近些年,MoE 与 LLMs 的结合,LLMs 的性能和效率得到进一步提升。如今 MoE 已经成为 LLMs 的核心技术,被广泛应用于各种 LLMs 中。
本文将简要介绍 MoE 最初被提出时的样子,以及它是如何集成至 LLMs 框架中的,方便大家快速了解 MoE 的核心技术和优势。下面是一篇 LLMs 中 MoE 技术的综述,感兴趣的可以详细阅读下:
Cai W, Jiang J, Wang F, et al. A survey on mixture of experts in large language models[J]. IEEE Transactions on Knowledge and Data Engineering, 2025.
1. 最初的 MoE
MoE 的概念最早是在上世纪 90 年代由 Michael I. Jordan 和 Robert A. Jacobs 在论文《Adaptive mixtures of local experts》中首次提出。他们将 MoE 描述为一种由多个 Expert Network 和一个 Gating Network 所组成的系统。Gating Network 负责根据输入的数据,动态地决定将任务分配给哪些 Expert Network,并对它们输出进行加权组合,如下图所示。
此外,Jordan 于 1993 在论文《Hierarchical mixtures of experts and the EM algorithm》中进一步对 MoE 框架进行了理论完善,提出了 Hierarchical MoE,并使用 EM 算法实现对模型的训练,为 MoE 后续发展奠定基础。
虽然 MoE 的概念在理论上很有吸引力,但由于以下几个原因,使得在它提出后相当长的一段时间里的应用相对有限:
- 计算资源:训练复杂的 MoE 模型需要大量计算资源,然而早期算力有限,使得 MoE 很难大规模应用
- 训练难度:MoE 的训练(特别是 Gating Network 的训练)面临着梯度消失、负载不平衡等问题,使得模型难以收敛
- 非稀疏性:早期 MoE 的 Gating Network 采用 Softmax 函数,这使得每个 Expert Network 在前向传播中都会被激活,无法实现真正的稀疏性(即只有部分 Expert Network 被激活),无法有效降低计算成本
在最近几年,得益于以下关键技术的突破,以及大模型应用的普及,使得 MoE 再次回到大众视野中来:
- 稀疏门控:Google Brain 团队 2017 年在论文《Outrageously Large Neural Networks: The Sparsely-Gated Mixture-of-Experts Layer》中提出稀疏门控(Sparsely-Gated)的概念,实现了 Gating Network 只激活 Top-k 个的 Expert Network,解决了之前 MoE 的计算效率问题。这篇论文对 MoE 具有里程碑意义,让 MoE 真正具备了实际应用的潜力
- 有效性验证:Google 在其 GLaM 中使用了 MoE 架构,成功训练了拥有万亿参数的模型,并证明了 MoE 在扩大模型规模的同时,能保持较低的计算成本
- 广泛应用:随着 Transformer 架构的流行,MoE 被广泛应用于各种 LLM(如 PaLM、Switch Transformers、GPT-4、Mixtral) 中,成为提升模型规模和效率的关键技术。现在 MoE 已经成为大模型的核心技术之一了
2. 大模型中的 MoE
在 GPT4 刚发布时,不少揭秘博主认为:
GPT-4 is a mixture-of-experts model, with 16 experts of 111B parameters each.
按照上面的逻辑说法,GPT4 的结构大致是这样的:
实际上并不是上面这种简单的 MoE 架构。下面我们来看下在大模型中 MoE 是如何实现的。
在大语言模型中,MoE 的实现方式本质上是将传统的 Transformer 模型中的 FFN(Feed-Forward Network)层替换为 MoE 层。这一改动使模型能够在保持较低计算成本的同时,显著扩大模型规模。如下图所示:
从图中可以看出,MoE 层主要有如下两个核心部分:
- 专家网络(Experts Networks):是一组相互独立的前馈网络(FFN)。每个专家网络拥有自己的权重,可以简单认为为每个专家负责处理输入数据中的特定模式。在 LLMs 中,通常会有几十甚至上百个专家
- 门控网络(Gating Network)/ 路由网络(Router):是一个小型网络,作用是根据上一次输入内容,动态将输入分配给哪些专家网络进行处理
MoE 层处理流程如下图所示:
MoE 的核心是 Gating Network 如何实现稀疏选择 Expert Network。
2.1. Sparse Activation
与 Dense 层需要激活并计算所有参数不同,MoE 层仅根据 Gating Network 决策,激活一小部分 Expert Network。当某个 Expert Network 的激活概率为零时,它的前向传播计算会被完全跳过,从而节省了大量的计算资源。
Gating Network 的稀疏决策(如 Top-k)直接决定了哪些 Expert Network 被激活。这使得 MoE 在逻辑上可以拥有万亿级别的总参数量,但实际上只需要在加载和计算一小部分活跃参数,从而大大提升了模型计算效率。
Gating Network (G) 作用是将输入分配给哪些 Expert Network (E),如下所示:
其中,表示 Expert Network 的个数。
最常用的稀疏策略是 Shazeer 等人 Noisy Top-K Gating,通过引入了一些可调整的噪声,然后保前 Top k 的值:
- 引入噪声其中, 是用于控制噪声幅度的可学习权重矩阵
- 选择 Top K 的值:
- 使用 Softmax 函数计算每个 Expert 的激活概率:
简单来说仅对中的 Top k 的值进行 Softmax 操作,将其他非 Top k 的专家的激活概率强制设为 0,从而实现严格的稀疏激活。
如下是 Mixtral 8x7B 第 32 层中,针对不同 domain 的输入, Expert 所分配的 Token 数:
下图的词云显示了每个 Expert 最常处理的 Token:
从图中可以看出,不同 Domain 的输入,会对应激活的 Expert 分部有较大差异,这表明不同 Expert 会针对性处理不同 Domain 的 Token。
2.2. Load Balancing Loss (LBL)
单纯的 Top K 选择会存在专家负载不均衡的问题:少数专家会被频繁选择,而其他专家则长期处于非激活状态,造成模型容量的浪费和训练不稳定。为了解决这个问题,研究人员在训练过程中额外引入了负载均衡辅助损失(Load Balancing Loss,LBL)。
LBL 旨在鼓励 Gating Network 在每个训练 Batch 中均匀地选择专家,从而最大化模型的整体利用率。通常涉及两个关键指标:专家被选择的频率和路由赋予的平均分数。
经典的 LBL 可以表示为:
当所有 Expert Network 的选取概率()和分数相同()时,达到最小值,负载均衡达到最优。
如下图所示,Mixtral 8x7B 经过负载均衡后,不同层中每个 Expert 被分配的 Token 数:
2.3. Noise Top-K Gating Code
以下是基于 PyTorch 框架下,Noisy Top-k Gating 机制的伪代码:
import torch
import torch.nn as nn
import torch.nn.functional as F
class NoisyTopkRouter(nn.Module):
def __init__(self, d_model, num_experts, top_k):
super(NoisyTopkRouter, self).__init__()
self.top_k = top_k
self.gate = nn.Linear(d_model, num_experts)
self.noise = nn.Linear(d_model, num_experts)
def forward(self, x):
logits = self.gate(x)
noise_logits = self.noise(x)
noise = torch.randn_like(logits) * F.softplus(noise_logits)
noisy_logits = logits + noise
top_k_logits, top_k_indices = noisy_logits.topk(self.top_k, dim=-1)
zeros = torch.full_like(noisy_logits, -1e9)
sparse_logits = zeros.scatter(dim=-1, index=top_k_indices, src=top_k_logits)
gating_weights = F.softmax(sparse_logits, dim=-1)
return gating_weights, top_k_indices
3. 结论
MoE 技术的优越性已在多个备受关注的大模型中得到充分验证,已被广泛应用于各种大模型中。
可以说 MoE 技术代表了大模型架构的一个重要转折点,它通过将模型容量与计算成本解耦,为大模型的可持续扩展提供了一个经济可行的路径,使得我们能够构建更大、更强、又相对高效的模型。
4. 参考文献
[1] Jacobs R A, Jordan M I, Nowlan S J, et al. Adaptive mixtures of local experts[J]. Neural computation, 1991, 3(1): 79-87.
[2] Jordan M I, Jacobs R A. Hierarchical mixtures of experts and the EM algorithm[J]. Neural computation, 1994, 6(2): 181-214.
[3] Shazeer N, Mirhoseini A, Maziarz K, et al. Outrageously large neural networks: The sparsely-gated mixture-of-experts layer[J]. arXiv preprint arXiv:1701.06538, 2017.
[4] Kyle Kranen and Vinh Nguyen. Applying Mixture of Experts in LLM Architectures. developer.nvidia.com. 2024.
[5] Maarten Grootendorst. A Visual Guide to Mixture of Experts (MoE). Newsletter.maartengrootendorst.com. 2024.
[6] Cameron R. Wolfe. Mixture-of-Experts (MoE) LLMs. Cameronrwolfe.substack.com. 2025.
[7] Avi Chawla. Transformer vs. Mixture of Experts in LLMs. Dailydoseofds.com. 2025.