专家混合(MoE)
专家混合(MoE)是一种神经网络架构,其中 LLM 包含许多专门化的"专家"子网络,对于每个输入 token,由一个门控机制只激活其中一小部分,通常是 8 选 2,或 256 选 8,而让其余部分处于闲置状态。该模型表现得像拥有庞大的参数量(容量),却只需付出小得多的模型的推理成本。
专家混合(MoE)是一种神经网络架构,其中 LLM 包含许多专门化的"专家"子网络,对于每个输入 token,由一个门控机制只激活其中一小部分,通常是 8 选 2,或 256 选 8,而让其余部分处于闲置状态。该模型表现得像拥有庞大的参数量(容量),却只需付出小得多的模型的推理成本。
为什么重要
MoE 是现代 LLM 在不让推理成本爆炸的前提下持续变聪明的方式。Mixtral 8×7B、DeepSeek-V3、Grok-2,以及据传 GPT-4 都使用 MoE 来低成本地堆叠容量。一个稠密的 4000 亿参数模型必须在每个 token 上运行全部 4000 亿权重。而一个总参数 4000 亿、但每次只激活 400 亿的 MoE 模型运行速度大约快 10 倍、成本也低约 10 倍,同时保留了额外参数所编码的大部分知识。对于开发者而言,MoE 改变了哪些前沿模型实际上负担得起部署,以及哪些开源选项在大规模下可行。
工作原理
专家:在每个 transformer 块内部,前馈层被替换为 N 个并行的前馈网络("专家")。典型数量为每层 8、16、64 或 256 个专家。
门控网络:一个经过学习的小型路由器决定每个 token 由排名前 k 的哪些专家来处理。k 通常为 1 或 2。
稀疏激活:只有被选中的专家会为该 token 运行其权重。其余专家不参与贡献,因此计算量随 k × 专家规模扩展,而非随专家总数扩展。
负载均衡:训练时的一项损失鼓励路由器将 token 均匀分配,以免某些专家"挨饿"。否则模型会退化为只使用少数几个专家,浪费掉其余的。
聚合:被选中专家的输出按门控分数加权后求和。
总参数 vs 激活参数
每个 MoE 规格都有两个数字:
- 总参数:完整的模型权重数量(决定显存占用)。
- 激活参数:每个 token 的计算量(决定推理成本)。
例如:Mixtral 8×7B 总参数约 470 亿,但每个 token 只激活约 130 亿。DeepSeek-V3 总参数 6710 亿,激活 370 亿。这一差距正是 MoE 魔力所在。
为什么有效
不同的专家在训练过程中会隐式地实现专门化。一个专家可能成为"代码"专家,另一个成为"数学"专家,还有一个成为"欧洲语言"专家。路由器学会将合适的 token 发送给合适的专家。这在理念上类似于人类用大脑的不同区域处理不同任务,是对信号的高效路由,而非一个铁板一块的处理过程。
权衡取舍
显存:尽管每个 token 只运行部分专家,但所有专家都驻留在显存中。一个 6710 亿参数的 MoE 仍然需要足以容纳 6710 亿参数的 GPU 显存。
部署复杂度:将 token 路由到特定专家比稠密推理更难并行化。通常需要专门的推理引擎(vLLM、TensorRT、DeepSpeed)。
训练不稳定性:负载均衡、专家坍缩和路由器噪声使得 MoE 训练比稠密训练更为棘手。
通信开销:在分布式训练中,token 到专家的路由需要 GPU 之间的全互连通信。网络会成为瓶颈。
微调难度:MoE 模型更难被有效微调,路由器的动态特性会随新数据发生漂移。
MoE vs 稠密模型
| 方面 | 稠密模型 | MoE |
|---|---|---|
| 每个 token 的计算量 | 全部参数 | N 个专家中的 k 个 |
| 显存占用 | 相对规模较小 | 相对规模较大 |
| 推理成本 | 与总参数成正比 | 与激活参数成正比 |
| 训练难度 | 标准 | 更难(均衡、路由) |
| 专门化 | 隐式存在于各层 | 显式存在于各专家 |
经验法则:MoE 在每 token 成本和算力利用率上胜出;稠密模型在显存效率和微调便利性上胜出。
知名 MoE 模型
- Mixtral 8×7B(Mistral,2023):首个被广泛使用的开源 MoE。总参数 470 亿,激活 130 亿。
- Mixtral 8×22B(Mistral,2024):更大的变体。
- DeepSeek-V3 / V3.1 / R1(DeepSeek,2024–2025):总参数 6710 亿,激活 370 亿。极致的 MoE,每层 256 个专家,激活 8 个。
- Grok-2(xAI,2024):采用 MoE 架构。
- GPT-4 和 Claude Opus:业界普遍认为其内部使用了 MoE(并非全部都已官方证实)。
Sources: