MoE 架构细节:门控路由与负载均衡
深入 MoE 的三个关键技术点:Top-K 门控路由、负载均衡损失,以及共享专家等架构改良。
门控路由:每个 token 一次"分诊"
# Router:一个小的线性层 + Top-K 选择
logits = W_g @ token_hidden # 对每个专家打分
probs = softmax(top_k(logits, K)) # 只保留得分最高的 K 个
output = Σ probs_i × Expert_i(token) # 加权合并
- Top-K 路由:Mixtral 取 K=2,DeepSeek-V3 每 token 路由到 8 个专家(细粒度专家 + 分组路由);
- 路由是离散选择(不可导),靠"得分加权"让梯度仍能流入门控 —— 训练能收敛的关键设计。
负载均衡:防止"能者多劳"的塌缩
如果没有约束,路由会自我强化:少数"明星专家"越练越强、被分到更多 token,其他专家荒废 —— 模型实际可用容量骤降。对策:
- 负载均衡辅助损失:训练时惩罚专家间负载不均(Switch Transformer 首创);
- 专家容量限制:每个专家每批次只处理固定数量 token,超出的"溢出"(drop 或绕过);
- 无辅助损失路由:DeepSeek-V3 的创新,用动态偏置调节而非额外损失项,均衡效果更稳。
架构改良趋势
- 细粒度专家:专家更多更小(DeepSeek-V3:256 个),组合更灵活、能力更细;
- 共享专家(Shared Expert):少数专家每个 token 必经,负责通用知识,其余专家按需路由 —— 减少专家间冗余;
- 分组路由:先选专家组再选专家,兼顾负载与通信效率。
记忆锚点:Router≈意图识别,专家≈工具集,负载均衡≈"不能让一个同事干所有活"的管理学。
📝 课后练习
quiz-1 MoE 训练中"负载均衡辅助损失"的目的是?