混合专家模型 MoE:用稀疏激活放大参数规模
什么是 MoE
混合专家模型(Mixture of Experts, MoE)是一种通过条件计算(conditional computation)放大参数规模的神经网络架构。传统稠密模型对每个输入复用全部参数,而 MoE 把部分前馈层替换为由多个「专家」子网络组成的集合,并由一个门控网络(router/gating)为每个 token 动态挑选少数专家参与计算。结果就是「总参数巨大、每次只激活一小部分」,从而在不成比例增加计算量的前提下显著提升模型容量。这一思想在 Shazeer 等人 2017 年的《Outrageously Large Neural Networks: The Sparsely-Gated Mixture-of-Experts Layer》(arXiv:1701.06538)中得到系统性实现,其 MoE 层堆叠于 LSTM 之间,最多可达 1370 亿参数。
专家与路由机制
MoE 的关键组件是门控网络。给定一个输入 token 的隐状态 x,router 输出对每个专家的权重(通常经 softmax),再按权重排序取 Top-k 个专家,将它们的输出加权求和:
logits = router(x) # 对每个专家打分的线性层
probs = softmax(logits)
topk = argtopk(probs, k=2) # 例如 Mixtral 选 2 个
y = sum_i_in_topk probs[i] * Expert_i(x)
早期稀疏门控 MoE 常用带噪声的 Top-k 路由(k 可为个位数);Switch Transformer 进一步把 k 简化为 1(Top-1),即每个 token 只发给得分最高的单个专家,名为 Switch routing,既降低路由计算又减少通信量。路由可能导致的负载不均衡问题,通常用辅助负载均衡损失(auxiliary load-balancing loss)来缓解。
代表性工作
Switch Transformer(Fedus、Zoph、Shazeer,arXiv:2101.03961)基于 T5 改造,把 MoE 路由简化为 Top-1,并在相同算力下取得最高约 7 倍的预训练加速,还将语言模型规模推到万亿参数,相比 T5-XXL 有约 4 倍加速。
DeepSeekMoE(Dai 等人,arXiv:2401.06066)提出两条提升专家专业化的策略:其一,把专家细粒度切分(fine-grained expert segmentation),将 N 个专家细分为 mN 个、激活其中 mK 个,使激活专家的组合更灵活;其二,隔离出 Ks 个共享专家(shared experts)以承载通用知识、降低路由专家间的冗余。论文显示 DeepSeekMoE 16B 以约 40% 的计算量达到 LLaMA2 7B 的水平,145B 版本仅用 28.5%(甚至 18.2%)的计算量即可比肩 DeepSeek 67B。
Mixtral 8x7B(Mistral AI,2023 年 12 月 11 日发布,Apache 2.0)是一个 decoder-only 的稀疏 MoE 模型:每层对每个 token,router 从 8 个专家中选出 2 个处理。其总参数约 467 亿,但每个 token 仅激活约 129 亿参数,推理速度与成本相当于一个 129 亿参数的稠密模型,同时在多数基准上超过 Llama 2 70B 且推理快约 6 倍,上下文长度 32k。
与稠密模型对比
| 维度 | 稠密模型 | MoE 模型 |
|---|---|---|
| 参数利用 | 全部参数参与每个 token | 每个 token 仅激活少数专家 |
| 同等算力下容量 | 受限 | 可放大数倍到数十倍 |
| 推理成本 | 随参数线性增长 | 约等于激活参数量 |
| 显存与存储 | 参数量即推理量 | 需容纳全部专家权重 |
核心优势是:在固定推理算力预算下,MoE 能用更大的总参数换取更高能力;代价是显存要装下所有专家,且训练与路由的工程复杂度更高。
训练与推理要点
训练方面,MoE 对路由不稳定较敏感,常用技巧包括小批量内 Top-k 的路由、负载均衡辅助损失,以及 Switch Transformer 中验证过的 bfloat16 低精度训练。推理方面,尽管总参数庞大,实际计算量由激活专家数决定,因此可用专家并行(expert parallelism)把不同专家放到不同设备,并配合高效 CUDA 核(如 Megablocks)来降低通信开销。需要留意的是,批大小较大时才能充分发挥 MoE 的吞吐优势。
局限
MoE 并非免费午餐:第一,存储与显存压力,因为全部专家权重都要常驻;第二,路由负载不均可能导致部分专家长期闲置(专家坍缩);第三,微调时小数据下 MoE 往往不如同等激活量的稠密模型稳定;第四,分布式训练通信成本较高。理解这些边界,才能在与稠密模型之间做出合理取舍。
小结
MoE 用「稀疏激活」打破了参数规模与推理算力的线性绑定:门控网络为每个 token 选择少数专家,使模型在巨大总参数下仍保持高效推理。从稀疏门控 MoE、Switch 的 Top-1 简化,到 DeepSeekMoE 的细粒度与共享专家、Mixtral 8x7B 的 8 选 2 实践,MoE 已成为大模型扩容的主流路线之一,但其显存占用与路由均衡仍是落地时必须权衡的代价。
参考与延伸阅读
- Shazeer 等,Sparsely-Gated MoE:https://arxiv.org/abs/1701.06538
- Switch Transformer:https://arxiv.org/abs/2101.03961
- DeepSeekMoE:https://arxiv.org/abs/2401.06066
- Mixtral of experts(Mistral AI 官方博客):https://mistral.ai/news/mixtral-of-experts/
- Mixtral-8x7B 模型卡(Hugging Face):https://huggingface.co/mistralai/Mixtral-8x7B-v0.1