稠密模型每层全算;MoE 用「多个小专家 + 路由」替代,参数很多但每次只激活一小部分(稀疏激活)。Mixtral、DeepSeek 都靠它堆参数。本文讲清结构、路由与负载均衡。
MoE(Mixture of Experts)把每个前馈层换成 N 个并行小专家 + 一个路由。前向时路由只挑 top-k 个专家算,于是总参数很大,但单次推理激活的参数很少——用「参数多」换「表达强」,用「稀疏激活」保住「算力省」。
把 Transformer 里的 FFN 层替换成 MoE 层:
对 token 的隐藏状态 x,router 算 N 个 logits,softmax 后取 top-k:
输出 = Σ_{选中专家 e} weight_e · Expert_e(x)。
如果不约束,路由会偷懒——所有 token 都塞给一两个"明星专家",其余专家饿死(专家坍缩),容量优势丧失。
解法两类:
| 维度 | 说明 |
|---|---|
| 显存 | 总参数全要驻留显存(哪怕不都激活),显存占用大。 |
| 通信 | 专家常分片到多卡,路由带来频繁的 all-to-all 通信。 |
| 负载 | 不均衡导致部分专家/设备成为瓶颈,批处理效率低。 |
| 微调 | 路由对数据敏感,小数据微调易过拟合到少数专家。 |