Skip to content

8.1 MoE 完整演进史(1991-2025)

混合专家模型(Mixture of Experts, MoE)是大语言模型时代最重要的稀疏化架构。它的核心思想出人意料地简洁:在不增加推理计算量的前提下,大幅扩展模型的总参数量。一个拥有 256 个专家但每次只激活 8 个的 MoE 模型,其总参数量可达稠密模型的数十倍,而单次推理的计算成本几乎持平。这种"用更多参数记忆更多知识,但只按需调用"的范式,已成为 GPT-4、DeepSeek 系列、Grok、Llama 4 等前沿模型的共同选择。

本节将从 1991 年的原始论文出发,沿时间线梳理 MoE 架构的完整演进,然后深入剖析三个核心技术问题——几何直观(为什么 Top-k 路由是最优的)、负载均衡(三种数学方案的对比)和架构级改进(共享专家与细粒度专家的组合爆炸),最后以 DeepSeek MoE 系列为案例展示这些技术如何在工程中融合。


8.1.1 演进时间线:从 Adaptive Mixtures 到 DeepSeek V3

MoE 架构演进时间线

图 8-4:MoE 架构的关键演进节点。从 1991 年 Adaptive Mixtures of Local Experts 的原始提出,到 2024 年 DeepSeekMoE 引入细粒度/共享专家范式,MoE 经历了三十余年的发展。

1991:Adaptive Mixtures of Local Experts。 Jacobs 等人提出了 MoE 的原型——将多个"局部专家"网络与一个门控网络组合,门控网络根据输入决定每个专家的激活权重。这一工作为后续所有 MoE 方法奠定了"门控路由 + 专家并行"的基本范式。但受限于当时的计算条件和网络规模,MoE 长期停留在传统机器学习的领域内,未能在深度学习时代早期引起足够重视。

2017:Outrageously Large Neural Networks(Shazeer et al.)。 这是 MoE 在深度学习中的里程碑式复兴。Shazeer 等人将 MoE 层引入 LSTM 和 Transformer 架构,证明了稀疏激活可以在保持计算量不变的条件下,将模型参数扩大到数千亿级别。该工作首次在大规模 NLP 任务上展示了 MoE 的优势,提出了 Top-k 门控机制和噪声注入策略,并暴露了专家负载不均衡这一核心问题。论文中的实验表明,MoE 模型的容量优势随专家数量的增加而持续提升。

2020:GShard。 Google 将 MoE 扩展到 6000 亿参数规模,首次在多语言机器翻译任务上实现了大规模 MoE 训练。GShard 的关键贡献在于工程层面:引入了**专家并行(Expert Parallelism)**的分布式训练方案——将不同专家部署在不同 TPU 上,通过 All-to-All 通信完成 Token-Expert 的路由分发。GShard 还提出了容量因子(capacity factor)机制来处理负载不均衡问题:每个专家在一个 batch 中能接收的 token 数量有上限,超出容量的 token 通过残差连接直接跳过本层。

Switch Transformer 架构示意图

图 8-3:Switch Transformer 架构。左侧为 Switching FFN Layer 的位置(替换标准 FFN),右侧展示了路由器对不同 token 分配到不同专家(FFN 1-4)的过程。每个 token 仅选择概率最高的一个专家(Top-1 路由),大幅简化了通信开销。

2022:Switch Transformer。 Fedus 等人将 MoE 推向极致简化——每个 token 只选择 1 个专家(Top-1 路由)。这一大胆的简化不仅降低了通信开销,还意外地提升了训练稳定性。Switch Transformer 成功训练了 1.6 万亿参数的模型,并提出了经典的辅助负载均衡损失(Auxiliary Load Balancing Loss),其公式 Laux=αNi=1NfiPi 成为后续几乎所有 MoE 模型的标准组件。实验表明,随着专家数量从 1 增加到 256,模型的测试损失持续下降。

2022:GLaM。 Google 的 GLaM 模型拥有 1.2 万亿参数,每次推理仅激活约 967 亿参数。GLaM 在多项 few-shot 基准上超越了 GPT-3,同时训练能耗仅为 GPT-3 的 1/3。这进一步验证了 MoE 架构在性能-效率权衡上的巨大优势。

2022:ST-MoE(Stable and Transferable MoE)。 Zoph 等人系统地研究了 MoE 模型的训练稳定性问题,提出了 Router z-loss 等正则化技术来缓解训练中的数值不稳定性(如路由器 logits 过大导致的溢出)。ST-MoE 还深入分析了 MoE 模型在微调阶段的迁移能力,发现 MoE 模型虽然预训练效率高,但在小数据集上微调时可能出现过拟合,需要更精细的正则化策略。

2024:DeepSeek MoE V1。 DeepSeek 奠定了"共享专家 + 细粒度专家"的全新范式。在 16B 总参数 / 2.8B 激活参数的规模下,DeepSeek MoE V1 使用 2 个共享专家 + 64 个路由专家,每次激活 6 个路由专家。两项关键创新使其性能超越了同规模的 Mixtral:(1) 细粒度专家——缩小单个专家的尺寸、增加专家数量,在总参数不变的前提下指数级增加路由路径的组合多样性;(2) 共享专家——指定部分专家对所有 token 强制激活,吸收公共知识,让路由专家专注于差异化特征。

2024:DeepSeek V2。 规模扩展至 236B / 21B 激活参数,沿用 V1 的共享+细粒度范式,但引入了设备感知路由——先选择亲和度最高的 M 个设备,再在设备内做 Top-k 选择,从而控制超大规模训练时的通信开销。同时增加了通信均衡损失,不仅平衡计算负载,还平衡设备间的数据传输。

2024-2025:DeepSeek V3。 671B / 37B 激活参数。核心 MoE 结构不变(256 个路由专家 + 1 个共享专家,激活 8 个),但在负载均衡上实现了质的飞跃——引入 Loss-Free 负载均衡,通过可学习的偏置项取代辅助损失,彻底隔离均衡优化与主任务优化。路由层使用 Sigmoid 替代 Softmax,呼应了 MoE 几何直观中"模长"而非"概率"的理论洞察。

下表总结了主要 MoE 模型的架构参数对比:

模型年份总参数激活参数路由专家数激活专家数共享专家细粒度比例路由策略负载均衡
Outrageously Large2017数千Top-k0标准Noisy Top-k重要性损失
GShard2020600B2048Top-20标准Top-2容量因子
Switch Transformer20221.6T128-2048Top-10标准Top-1Aux Loss
GLaM20221.2T97B64Top-20标准Top-2Aux Loss
ST-MoE2022269B32Top-20标准Top-2Aux Loss + z-loss
Mixtral 8x7B202447B13B820标准Top-2Aux Loss
DeepSeek MoE V1202416B2.8B64621/4Top-kAux Loss(专家+设备)
Qwen 1.5 MoE202460441/8Top-kAux Loss
DeepSeek V22024236B21B160621/4设备感知 Top-kAux Loss + 通信均衡
DeepSeek V32025671B37B256811/14Sigmoid + Top-kLoss-Free + 序列级 Aux
Llama 42025128111/2Top-1Aux Loss

表 8-1:主要 MoE 模型架构参数对比。"细粒度比例"指单个专家的中间维度相对于标准 FFN 的缩小倍数。

从这张表可以清晰地观察到三个趋势:(1) 路由专家数量从个位数增长到数百个,但每次激活数量保持在个位数;(2) 共享专家从无到有,成为 2024 年以后的标配;(3) 细粒度切分越来越激进,单个专家越来越小,组合路径越来越多。


8.1.2 MoE 的几何直观:为什么选"模长最大的 k 个"

要真正理解 MoE 路由的数学本质,需要回到最基础的问题:MoE 是如何从稠密模型中"长出来"的?

从 Dense 到 Sparse 的等价变换。 标准 FFN 层的计算为 y=f(xW(A))W(B),其中 xRd 是输入行向量,W(A)Rd×DW(B)RD×d。设 n 整除 D,令 c=D/n,将参数矩阵分为 n 块:

y=i=1nf(xWi(A))Wi(B)=i=1nvi

每个 vi 就是一个"专家"的输出。稠密模型等价于对所有 n 个专家的输出求和。

近似问题与正交假设。 MoE 的核心诉求是:能否只用 k<n 个向量的和来逼近 n 个向量的和? 在假设 vi 两两正交的理想条件下,近似误差为:

i=1nviiSvi2=iSvi2

要最小化这个误差,显然应该vi 最小的那些向量排除在外——等价地,挑出模长最大的 k 个向量。几何意义非常直观:模长越大的向量在求和中贡献越显著,越不容易被其他向量抵消。

为什么 Router 输出是"模长"而非"概率"。 上述分析揭示了一个关键洞察:最优路由策略是比较各专家输出的"模长"大小,而非比较"概率"。然而,直接计算所有 vi 的模长需要完整执行所有专家的前向传播,这违背了减少计算量的初衷。解决方案是重新设计模型结构:

  1. 归一化方向:令 ei=vi/vi,使所有专家的方向向量模长归一;
  2. Router 预测模长:引入轻量级路由网络,直接预测每个专家的模长 ρ=[ρ1,,ρn]=h(xW(R)),其中 W(R)Rd×nh() 为值域非负的激活函数。

MoE 的前向计算公式化为:

y=iargtopkρρiei

重要推论ρi 的物理意义是"模长"而非"概率",因此激活函数 h() 不需要做归一化(如 Softmax)。使用 Sigmoid、ReLU 等非归一化激活函数不仅合理,反而能避免当 k>1 时专家之间的恶性竞争——Softmax 的归一化约束迫使一个专家的分数上升必然伴随其他专家的下降,而模长之间没有这种零和博弈。这正是 DeepSeek V3 使用 Sigmoid 替代 Softmax 的理论依据。


8.1.3 [必读] 负载均衡:三种方案的数学对比

如果任由模型自由路由,极易出现少数专家被频繁激活、大量专家长期闲置("死亡专家")的局面。这不仅造成算力浪费,也使大参数量的优势无法发挥。因此,必须引入负载均衡机制。本节对比三种方案的数学原理,从工程启发式逐步演进到解析最优解。

方案一:辅助损失(Auxiliary Loss)

核心思想:在主任务损失之外,添加一个正则化项来惩罚不均衡的路由分配。

定义归一化后的 Router 打分为 P=[p1,,pn],以及 Top-k 截断的指示分布 f=[f1,,fn](当 iargtopkρfi=1/k,否则为 0)。对一个 batch 内所有 token 取期望,得到实际负载分布 F=E[f] 和期望打分分布 P¯=E[P]

目标是最小化均方差 12FQ2,其中 Q=(1/n,,1/n) 是均匀分布。但 F 是经过不可导的 argtopk 操作得来的,无法直接回传梯度。采用**直通估计器(STE)**技巧,用可导的 P 作为 F 的平滑近似:

Laux=12P+sg[FP]Q2

其中 sg[] 为停止梯度算子。对其求导,得到:

θLaux=θ(i=1nFiPi)

因此,等效的辅助损失为 Laux=αni=1nFiPi(乘以常数 n 放大)。

优点:实现简单,是 Switch Transformer 以来的行业标准。

缺点:权重超参数 α 极难调节——过大则干扰主任务优化,过小则不起均衡作用。更深层的问题在于,STE 的梯度只是次优近似,辅助损失的梯度方向与主任务的梯度方向存在内在冲突。

方案二:Loss-Free 负载均衡(独立偏置项)

核心思想:彻底隔离均衡优化与主任务优化——不改变 Router 的打分,而是引入一个输入无关的偏置项来干预分配。

引入偏置 b=[b1,,bn],修改分配规则为:

y=iargtopk(ρ+b)ρiei

关键点:b 仅参与排序截断(决定选谁),不参与前向计算(乘上去的仍是 ρi。因此 b 不会产生影响主模型的梯度,实现了完全隔离。

b 不参与反向传播,需要单独的更新规则。目标仍是 min12FQ2,通过 STE 近似得到:

bLFQ

应用符号梯度下降(SignSGD):

bbγsign(FQ)

或使用收敛更平稳的 RMS 归一化形式:

bbγFQRMS(FQ)

优点:主干网络专注模型能力,偏置项专注负载均衡,两者互不干扰。

缺点:仍依赖超参数学习率 γ,且需要迭代收敛。DeepSeek V3 在实践中发现,Loss-Free 在 batch 级别的调整对极端分布的单个序列不够稳健,因此最终保留了一个互补的序列级辅助损失。

方案三:Quantile Balancing(分位数均衡)

核心思想:从数学最优分配的角度出发,通过拉格朗日对偶给出解析解,完全消除超参数和迭代过程。

线性规划建模。 设有 m 个 token、n 个专家。第 i 个 token 对第 j 个专家的原始打分为 si,j,分配决策为 xi,j{0,1}。负载均衡可建模为约束优化问题:

maxxi,ji,jxi,jsi,js.t.jxi,j=k,ixi,j=mkn

第一个约束要求每个 token 选 k 个专家,第二个约束要求每个专家处理等量的 token。

Minimax 求解。 松弛 xi,j[0,1],引入拉格朗日乘子 αi(Token 偏置)和 βj(Expert 偏置),利用 Minimax 定理得到最优解的显式形式:

xi,j={1,si,jαiβj>00,si,jαiβj<0

这揭示了一个深刻结论:最优负载均衡可以通过给 Token 加偏置 αi 和给 Expert 加偏置 βj,然后做零阈值截断来实现

动态路由的极简解。 如果放宽"每个 token 必须选 k 个专家"的约束,允许根据 token 难度动态分配 expert 数量,则乘子 αi 消失,分配规则退化为:

xi,j=1si,j>βj

此时 βj 的解析解就是该专家全局打分序列 s,j 中的 (1k/n) 分位数(Quantile)

算法流程

  1. 维护上一步的 βRn 和衰减率 λ
  2. 前向激活:若 si,j>βj,则 token i 激活 expert j
  3. 统计当前 batch 每列的 (1k/n) 分位数 qj,更新 βλβ+(1λ)qj

优点:无需对所有 token 的分数做 Top-k 排序(只需逐元素比较阈值),且动态决定每个 token 激活的专家数量——是负载均衡的理论最优解。

缺点:动态激活数量给硬件调度带来挑战(不同 token 激活不同数量的专家,难以保证算子的 padding 效率);分位数的在线估计在小 batch 下可能不够稳定。

三种方案对比总结

维度Auxiliary LossLoss-Free(偏置项)Quantile Balancing
数学基础STE 近似梯度STE + 独立更新拉格朗日对偶解析解
是否影响主任务梯度是(正则项叠加)否(完全隔离)否(仅修改路由阈值)
超参数权重 α(难调)学习率 γ衰减率 λ(不敏感)
收敛方式梯度下降迭代SignSGD 迭代一步分位数估计
每 token 激活数固定 k固定 k动态(期望为 k
硬件友好度高(固定计算图)高(固定计算图)较低(动态形状)
代表模型Switch Transformer, MixtralDeepSeek V3理论前沿(实验验证中)

表 8-2:三种负载均衡方案的数学对比。从左到右,数学严谨性递增,工程易用性递减。

三种方案的演进脉络清晰:Auxiliary Loss 是工程启发式的起点,Loss-Free 通过隔离优化参数解决了梯度冲突问题,Quantile Balancing 则从拉格朗日对偶理论给出了无超参数的解析解。实践中,DeepSeek V3 的 Loss-Free + 序列级辅助损失的混合方案是目前工程效果最好的选择。


8.1.4 架构级改进:共享专家与细粒度专家

前述负载均衡方案的数学目标都是达到均匀分布 Q=1/n。但从表征学习的角度,均匀分布未必是最优的——现实世界的知识分布往往是长尾的(齐夫定律),强行追求均匀是对客观分布的扭曲。共享专家和细粒度专家的引入,正是对"完全均匀"假设的架构级修正。

共享专家(Shared Expert)

结构定义。n 个专家中,指定 s 个为共享专家(Shared Expert),对每个 token 强制激活;剩余 ns 个为路由专家(Routed Expert),每个 token 从中动态选择 ks 个。

残差视角。 共享专家充当公共基底向量,吸收所有 token 的共有基础特征(公共知识)。路由专家仅需拟合减去公共均值后的残差。这一设计的数学优雅之处在于:剥离共性成分后,剩余的特征残差向量之间更容易满足两两正交的假设(8.1.2 节的几何直观),从而使路由策略更逼近最优理论界。

比例控制。 为避免共享专家权重过大致使路由专家边缘化,需要在初始化或前向传播中引入比例因子,对齐两类专家输出的总模长期望。

细粒度专家(Fine-Grained Expert)

结构定义。 在保持模型总参数量和每次前向激活参数量不变的前提下,成倍缩小单个专家的尺寸,同比例增加专家总数和每次激活数。例如,标准 FFN 的中间维度为 4d,若将每个专家的中间维度缩小为 d(1/4 比例),则需要 4 倍的专家数量来保持总参数不变。

组合爆炸。 细粒度切分的核心收益是路由路径的组合多样性呈指数级增长。设原始配置为 n 个专家中选 k 个,则可能的路由路径数为 (nk)。将每个专家拆成 m 份后,路径数变为 (mnmk)

  • 原始:(82)=28 种路径
  • 2 倍细粒度:(164)=1820 种路径
  • 4 倍细粒度:(328)=10518300 种路径

从 28 到 1820 再到千万级别,组合多样性的爆炸意味着模型可以用更精细的"微元"去覆盖知识流形的不规则表面,减少大块专家被迫打包不相关知识的冗余。

参数效率。 细粒度切分在总参数和总 FLOPs 均不变的前提下完成,付出的代价仅仅是路由器的输出维度增大(从 n 维变为 mn 维)以及通信次数可能增加。这是一笔极其划算的交易。

下表展示了各模型在细粒度切分上的选择:

模型路由专家数激活专家数细粒度比例路由路径数 (nk)
Mixtral 8x7B82标准28
DeepSeek MoE V16461/48.3×106
Qwen 1.5 MoE6041/84.9×105
DeepSeek V325681/144.4×1013
Llama 412811/2128

表 8-3:细粒度切分的组合多样性对比。DeepSeek V3 的路由路径数比 Mixtral 多出十余个数量级。


8.1.5 DeepSeek MoE:专家区隔化设计详解

DeepSeek MoE 系列是上述所有技术的集大成者。以下以 DeepSeek V3 的架构为例,结合下图详细解析其设计。

DeepSeek MoE 架构示意图

图 8-1:DeepSeek MoE 架构。左侧为 Transformer Block 的整体结构(FFN 层被 MoE 层替换),右侧展示了 MoE 层内部的共享专家(绿色)与路由专家(橙色)的组合方式。Router 基于输入 ut 选出 Top-Kr 个路由专家,其输出与共享专家的输出相加。注意力层使用 MLA(Multi-Head Latent Attention)以压缩 KV 缓存。

专家区隔化的三层机制。 DeepSeek MoE 的设计不仅仅是简单地增加专家数量,而是通过三层机制确保专家之间的功能分化(Specialization):

第一层:共享-路由分离。 共享专家负责所有 token 都需要的基础语言能力(语法、常见搭配等),路由专家负责特定领域或特定语义模式的处理。这种分离确保了路由专家不必浪费容量去学习公共知识,可以全力发展差异化能力。

第二层:细粒度切分。 DeepSeek V3 将单个专家的中间维度缩小到标准 FFN 的 1/14,对应 256 个路由专家。每个专家的参数量极小,被迫专注于非常狭窄的功能片段。这种"强制专精"使得不同专家之间的知识重叠大幅减少。

第三层:路由激活函数的选择。 DeepSeek V3 使用 Sigmoid 而非 Softmax 作为路由激活函数。如 8.1.2 节分析,Softmax 的归一化约束强制专家之间零和竞争——一个专家的分数上升必然伴随其他专家的下降。Sigmoid 解除了这一约束,允许多个专家同时获得高分(模长大),路由器只需选出最大的若干个,而非在零和博弈中优胜劣汰。这降低了路由器的学习难度,也减少了"赢家通吃"式塌缩的风险。

DeepSeek V3 的完整 MoE 前向流程:

  1. 输入 ut 经过共享专家 S1(所有 token 强制通过),得到基础输出 yshared
  2. 输入 ut 经过 Router W(R),计算 ρ=Sigmoid(utW(R))
  3. 选出 ρ 中最大的 8 个位置,对应的路由专家被激活;
  4. 8 个路由专家分别计算,输出按 ρi 加权求和得到 yrouted
  5. 最终输出 y=yshared+yrouted

Loss-Free 与序列级辅助损失的混合。 在训练过程中,偏置项 b 按 Loss-Free 规则更新,保证全局负载均衡;同时保留一个权重极小的序列级辅助损失,确保单个序列内部不出现极端的路由分配。这种"全局用 Loss-Free,局部用 Aux Loss"的混合策略,是 DeepSeek V3 在大规模训练中保持稳定性的关键工程经验。


8.1.6 本节总结

MoE 架构的三十余年演进史,本质上是围绕三个核心问题的不断深化:

"选谁"——路由机制。 从 1991 年的软门控到 2017 年的 Top-k 硬路由,再到 DeepSeek V3 的 Sigmoid + 动态偏置路由,路由机制的演进方向是从"概率分配"转向"模长排序",这一转向有着严格的几何最优性支撑——在正交假设下,选模长最大的 k 个专家恰好最小化近似误差。

"怎么均"——负载均衡。 从 Switch Transformer 的辅助损失到 DeepSeek V3 的 Loss-Free 偏置项,再到 Quantile Balancing 的解析最优解,三种方案在数学严谨性上层层递进。实践中的最佳策略是混合使用:Loss-Free 处理全局均衡,轻量级辅助损失兜底局部异常。

"怎么分"——专家架构。 从统一规格的大专家到共享+路由的功能分离,再到细粒度切分带来的组合爆炸((82)=28(2568)4.4×1013),架构改进的方向是让每个专家更加专精、知识重叠更少、路由路径更多样。

三者并非独立:几何直观解释了路由策略的最优性,负载均衡保证了大量专家都能被有效利用,而共享+细粒度的架构设计则从根源上增强了专家间的正交性——让理论假设更贴近现实。这三条技术线索在 DeepSeek V3 中交汇,形成了当前最先进的 MoE 架构设计范式。