💡 答案要点
MoE = 让不同的 token 走不同的专家网络,训练成本低但推理能力随专家数线性增长。
标准 FFN vs MoE-FFN:
标准 FFN(GPT-4、Llama 等):
每个 token 都经过同一组参数(W1 → Gate → W2)
参数量 = seq_len × batch_size × (d_ff + d_ff) × 2
→ 每个 token 都要算全部参数
MoE FFN(Mixtral、LLaMA-MoE 等):
每个 token 只选 Top-K 个专家处理
参数量 = seq_len × batch_size × num_experts × (d_ff + d_ff) / 路由选择率
→ 总参数多 10 倍,但每个 token 只算 2 个专家MoE 核心组件:
┌───────────────┐
│ Input Token │
│ embedding │
└──────┬────────┘
▼
┌───────────────┐
│ Gating Network │ ← 路由决策:哪个 token 去哪些专家
│ Top-K Router │ 通常用带噪声的 softmax
└──────┬────────┘
▼
┌───────────────┐ ┌───────────────┐
│ Expert 1 FFN │◄──►│ Expert 2 FFN │
└──────┬────────┘ └──────┬────────┘
▼ ▼
┌──────────────────────────┐
│ Weighted Sum + Output │
└──────────────────────────┘路由策略详解:
python
# 典型实现(Top-2 MoE)
class MoERouter(nn.Module):
def __init__(self, d_model, num_experts, top_k=2):
self.gate = nn.Linear(d_model, num_experts)
self.top_k = top_k
def forward(self, hidden_states):
# 原始分数
raw_logits = self.gate(hidden_states) # (batch, seq, num_experts)
# 加噪声负载均衡(防止某些专家被独占)
noise = torch.randn_like(raw_logits) * 0.01
noisy_logits = raw_logits + noise
# Top-K 选择
gates = F.softmax(noisy_logits, dim=-1)
top_values, top_indices = torch.topk(gates, self.top_k, dim=-1)
return top_values, top_indices2026 年主流 MoE 变体:
| 方案 | 特点 | 代表模型 |
|---|---|---|
| Dense Transformer + MoE FFN | 仅 FFN 层做 MoE,attention 保持密集 | Mixtral 8x7B、LLaMA-3.1-405B-MoE |
| Fully Sparse MoE | 多层甚至 attention 也做 MoE | Gemini Ultra |
| Switch Transformer | Top-1 routing,极简路由 | Google 大规模实验 |
| DeepSeek MoE | 共享专家 + 专用专家分离 | DeepSeek-V2/V3 |
MoE 的挑战:
1. 负载均衡(Load Balancing)
问题:路由器倾向于把样本集中到少数专家
解决:辅助损失(auxiliary loss)惩罚不平衡
loss_aux = α × Σ_i f_i × E_i
2. 通信开销(Communication)
在多 GPU 并行时,token 分散到不同设备上的专家
需要 All-to-All 通信来路由 token
解决:专家并行(Expert Parallelism)、分组策略
3. 推理延迟
Top-2 MoE 意味着每个 token 要运行 2 个专家 FFN
吞吐量 ≈ 同规模 Dense 模型的 0.5x~0.8x
但每 token 成本更低(总参数量分摊)性能对比(相同有效参数量):
| 配置 | 总参数 | 活跃参数 | 每 token 成本 | 吞吐 | 质量 |
|-------------|--------|----------|--------------|------|------|
| Dense 70B | 70B | 70B | 100% | 100% | 基准 |
| MoE 8×7B | 56B | 14B | 20% | 60% | 相当 |
| MoE 64×1B | 64B | 2B | 3% | 35% | 略低 |面试话术:
"MoE 的核心思想是'稀疏激活'——每 token 只经过少数专家。Mixtral 8×7B 有 56B 总参数,但每个 token 只激活 14B,相当于用 1/4 的计算成本获得 8 倍的表达能力。2026 年的主流是'Dense Attention + Sparse FFN'混合模式,兼顾推理效率和训练稳定性。关键在于负载均衡——如果路由器把所有样本都推到几个热门专家,MoE 的优势就没了。"
⭐ 面试加分项:
- 能解释 MoE 的 auxiliary load balancing loss 公式和设计动机
- 理解 expert parallelism 中的 all-to-all 通信模式
- 知道 Switch Transformer(Top-1)vs Top-2 MoE 的区别
- 能讨论 MoE 在推理时的缓存友好性挑战(KV cache 无法复用专家特征)