如果说 Transformer 的“多头”是让模型在特征空间上进行并行关注,那么 MoE 则是让模型在模型参数上实现“条件计算”(Conditional Computing)。简单来说,MoE 允许我们构建参数量极巨化(如万亿级)的模型,但每次处理任务时只激活其中很小一部分参数。


1. 核心架构:稀疏性 (Sparsity)

传统的 Transformer 模型(如标准的 GPT-3)是 Dense(稠密) 模型:每一个输入 Token 都会经过模型中每一个参数的运算。

MoE 将模型中的全连接层(FFN,Feed-Forward Network)替换为一组“专家”,并增加了一个“路由器”:

  1. 专家层 (Experts):由 个结构相同的独立网络(通常是 FFN)组成。

  2. 门控网络/路由器 (Gating Network / Router):这是一个可学习的线性层,负责决定当前的 Token 应该发送给哪几个专家处理。


2. 数学表达

对于给定的输入 ,MoE 层的输出 可以表示为各专家输出的加权和:

其中:

  • 是第 个专家的输出。

  • 是门控网络给出的权重。

稀疏路由 (Sparse Routing)

在实际工程中(如 Top-k Routing),门控网络输出的向量 是高度稀疏的。例如在 Top-2 路由中,除了得分最高的两个专家权重不为零,其余 个权重全部被强制设为 0。这意味着模型的大部分参数在本次前向传播中是不参与计算的。


3. 计算机工程视角的权衡

你可以从算法复杂度硬件利用率的角度对比 Dense 与 MoE:

维度Dense Model (稠密)MoE Model (稀疏)
计算量 (FLOPs)随参数量同步增长较低,仅取决于激活的专家数
内存占用 (VRAM)相对较小极大,所有专家参数都需加载进显存
通信开销,需要在不同设备间分发和汇聚 Token
训练稳定性较低,容易出现“专家负载不均” (Load Imbalance)

关键工程挑战:负载均衡 (Load Balancing)

在训练初期,路由器可能会倾向于一直调用某几个表现较好的专家,导致“强者愈强,弱者不练”。这会引发两个问题:

  1. 计算瓶颈:某些 GPU 满载,其他 GPU 空闲。

  2. 表达退化:成百上千个专家中只有几个被充分训练。

    因此,研究人员通常会加入一个 Auxiliary Loss(辅助损失函数),强制路由器尽可能均匀地分配任务。


4. 为什么现在 MoE 这么火?

MoE 是目前突破 LLM 性能瓶颈的关键技术(例如著名的 Mixtral 8x7BDeepSeek-V3):

  • 推理效率:MoE 模型可以用更低的推理成本实现远超其激活参数量的性能。例如一个总参数 47B 的模型,推理时可能只需 12B 的计算量,却能达到 70B 稠密模型的水平。

  • 预训练扩展性:在相同的计算预算(Compute Budget)下,MoE 能够接触到更多的参数,从而学习到更细粒度的知识。