跳转到内容
输入关键词后按 Enter 打开第一个结果。

Mixture of Experts (MoE) 三级教程

想象你要建一家超级大医院,但有个问题:如果让每个医生什么病都能治,培养成本太高,医生也容易变成”样样通样样松”。

MoE 的思路很简单:分工合作。医院不培养全能医生,而是设不同科室——心内科、骨科、皮肤科……病人来了,分诊台看一眼症状,就把他送到最合适的科室。

对应到 AI 里:一个大模型(医院)由多个”专家网络”(科室)组成,同时还有一个”门控网络”(分诊台)。每来一条数据(病人),门控网络决定由哪几个专家来处理。关键是——每个请求只激活少数专家,而不是全部。

这意味着你可以训练一个拥有几百个专家的”巨大模型”,但每次推理只用到其中几个,计算量和一个小模型差不多。就像医院有 50 个科室,但你看个感冒只用去呼吸科一个地方。

这也就是为什么 GPT-4 和 DeepSeek 能做到”很聪明但不太慢”的秘密之一。

中级:MoE 的架构设计与工程权衡

Section titled “中级:MoE 的架构设计与工程权衡”

从工程角度看,MoE 是一种条件计算策略。核心思想:增大模型总参数量,但每次前向传播只激活其中一部分,从而在不线性增加推理成本的前提下提升模型容量。

一个典型的 MoE 层包含两个组件:

  • 门控网络 (Gating Network):一个轻量级分类器(通常是线性层 + softmax),输入 token 的隐藏状态,输出一个概率分布,决定该 token 被路由到哪些专家。
  • 专家网络 (Expert Networks):多个独立的 FFN(前馈网络),每个都有完整的权重矩阵。

Top-K 路由是最常见的方案。比如 Top-2 路由意味着每个 token 只被发送给概率最高的 2 个专家,其余专家完全不参与计算。如果总共 8 个专家,每个的参数量和普通 Transformer FFN 一样大,那么总参数量是 8 倍,但每次推理的计算量只比普通模型多约 1.25 倍(2/8 专家激活 + 路由开销)。

主要挑战在于:负载不均衡——热门专家被反复选中,冷门专家闲置,导致 GPU 利用率低。常见解决方案包括添加辅助损失(auxiliary loss)惩罚不均匀的路由分布,以及使用 expert parallelism 在不同 GPU 上放置不同专家来降低通信开销。

高级:MoE 的数学形式与前沿进展

Section titled “高级:MoE 的数学形式与前沿进展”

MoE 层的数学表述如下。给定输入 x ∈ R^d,MoE 层的输出为:

MoE(x) = Σ(i=1..N) G(x)_i · E_i(x)

其中 N 为专家总数,E_i 是第 i 个专家(通常为 FFN),G(x) ∈ R^N 是门控网络的输出。在 Top-K 路由下,G(x) 经 softmax 后仅保留前 K 个值,其余置零并重新归一化。

负载均衡损失是训练稳定性的关键。Switch Transformer 提出的辅助损失为:

L_aux = α · N · Σ(i=1..N) f_i · P_i

其中 f_i 是专家 i 处理的 token 比例,P_i 是路由器分配给专家 i 的平均概率,α 是平衡系数。

前沿方向包括:

  • 细粒度专家:DeepSeek-V2 将专家粒度做到极细(共享专家 + 多个小 MoE 专家组),每个 token 路由到更多但更小的专家,提升稀疏激活效率。
  • 专家并行与通信优化:采用 EP(Expert Parallelism)+ TP(Tensor Parallelism)混合并行策略,通过 All-to-All 通信在 GPU 间分发 token,通信开销成为瓶颈。
  • 稀疏注意力 + MoE 结合:如 DeepSeek-V3 在注意力层也引入 Multi-Head Latent Attention (MLA) 进一步压缩 KV cache,与 MoE 的稀疏 FFN 形成双重稀疏架构。
  • 专家淘汰与知识蒸馏:研究发现训练后的 MoE 模型中部分专家贡献极低,可通过剪枝 + 蒸馏获得更紧凑的等效模型。