一、MoE 的基本原理
1、核心思想
MoE(Mixture of Experts,混合专家)的核心是用条件计算替代稠密计算。传统 Transformer 的 FFN 层对每个 token 都激活全部参数;MoE 把 FFN 拆成多个“专家”(expert),每个 token 只激活其中少数几个专家。
这样做的结果是:
- 总参数量很大(比如 8 个专家,总参数是稠密模型的 8 倍)
- 单 token 计算量(FLOPs)不变或只小幅增加(只走 2 个专家)
- 模型容量上去了,推理成本却没同比例上涨
2、结构位置
MoE 通常替换的是 Transformer 中的 FFN 层,而不是 Attention 层。Attention 仍然共享。每个专家本身就是一个独立的 FFN。
3、数学形式
对于一个 token 的隐藏状态 $x$:
$$
y = \sum_{i \in \text{TopK}} g_i(x) \cdot E_i(x)
$$
其中:
- $E_i$ 是第 $i$ 个专家(FFN)
- $g_i(x)$ 是门控网络(router)给该专家的权重
- $\text{TopK}$ 表示只选权重最高的 $K$ 个专家(常见 $K=1$ 或 $K=2$)
门控通常是一个线性层 + Softmax:
$$
g(x) = \text{Softmax}(W_g x)
$$
然后取 top-$K$,并对这 $K$ 个权重做归一化。
二、路由机制(Routing)
路由是 MoE 最核心、也最容易出问题的部分。
1、Token-level routing
最常见的是每个 token 独立路由。一个 batch 里不同 token 可能走不同专家。这也是 Switch Transformer、GShard 等工作的做法。
2、Top-K 选择
- Top-1:每个 token 只选 1 个专家,计算最省,但路由决策硬、训练不稳定。
- Top-2:选 2 个专家,按权重加权求和,效果更稳,是很多模型的默认选择。
- Top-K 一般 $K$ 很小(1~2),因为 $K$ 增大计算量线性增长。
3、负载均衡(Load Balancing)
这是 MoE 训练中最关键的问题。如果 router 总是偏向少数几个专家:
- 热门专家过载,冷门专家得不到训练
- 训练效率下降,甚至崩溃
常见解法:
- 辅助损失(auxiliary loss):鼓励每个专家被选中的概率均匀。Switch Transformer 用了一个基于路由概率和实际 token 数的辅助损失。
- 专家容量(expert capacity):每个专家最多处理多少个 token,超出就丢弃或走残差。容量因子(capacity factor)是个超参。
- Router z-loss:惩罚 router logits 过大,提升数值稳定性。
- 噪声路由 / 随机性:训练时给 router logits 加噪声,增加探索。
4、路由的粒度与变体
- Token-level:最细粒度,最常用。
- Sentence-level / Task-level:整句或整个任务走同一专家,路由更稳定,但灵活性差。
- Soft routing:不硬选 top-$K$,而是所有专家加权,但计算量回到稠密,失去 MoE 的意义。
- Expert Choice routing:反过来让专家选 token,天然负载均衡,但实现复杂。
5、训练与推理的差异
- 训练:需要处理容量溢出、辅助损失、all-to-all 通信(专家分布在不同设备上)。
- 推理:路由是动态的,batch 内不同 token 走不同专家,对 kernel 和并行策略要求高。常见做法是专家并行(expert parallelism),把不同专家放在不同 GPU 上。
三、考题点评
这是一道很好的面试题。它既能考察候选人对大模型架构的宏观理解,又能深入追问路由机制、负载均衡、训练稳定性等工程细节,区分度很高。
1、层次丰富,可深可浅
- 初级:能说清“多个 FFN + 门控选 top-$K$”就及格。
- 中级:能讲负载均衡、辅助损失、容量因子。
- 高级:能聊 all-to-all 通信、专家并行、训练稳定性、Expert Choice routing、MoE 与稠密模型的 scaling 对比。
2、能考察真实理解
背概念的人可能只会说“分而治之”,但一问“如果 router 坍缩到只选一个专家会怎样、怎么解决”就能区分出真正读过论文或做过实验的人。
3、有明确的追问链
面试官可以顺着问:
- (1)MoE 放在哪一层?为什么不是 Attention?
- (2)Top-1 和 Top-2 的区别?各自优缺点?
- (3)辅助损失怎么设计?为什么需要?
- (4)专家容量溢出时 token 怎么处理?
- (5)训练时 all-to-all 通信瓶颈怎么优化?
- (6)推理时怎么部署?专家并行是什么?
- (7)MoE 真的比稠密模型好吗?在什么条件下?
4、与工业界强相关
Mixtral 8x7B、DeepSeek-MoE、Qwen-MoE、Switch Transformer 等都是热门工作,面试中问 MoE 很自然。
四、评分参考与追问方向
评分参考:
| 层次 |
期望回答 |
| 及格 |
MoE 用多个 FFN 专家,router 选 top-$K$,稀疏激活,参数量大但计算量小 |
| 良好 |
能讲清门控公式、top-$K$ 归一化、负载均衡问题、辅助损失、容量因子 |
| 优秀 |
能讲 all-to-all 通信、专家并行、router 坍缩、Expert Choice、训练/推理差异、与稠密模型 scaling 对比 |
| 加分 |
能结合具体模型(Mixtral、DeepSeek-MoE、Switch Transformer)谈设计取舍,或提到自己踩过的坑 |
追问方向:
- “如果所有 token 都路由到同一个专家,会发生什么?你怎么检测和解决?”
- “MoE 的参数量大但 FLOPs 小,那它的推理速度一定快吗?为什么?”
- “专家并行下,一个 batch 的 token 怎么跨 GPU 交换?通信量大概是多少?”
五、一句话总结
MoE 的本质是用路由做条件计算,用稀疏激活换模型容量;路由机制的核心是top-$K$ 门控 + 负载均衡;它作为面试题非常合适,因为既能考概念,又能一路追问到工程实现和训练稳定性,区分度很高。
评论专区
评论加载中...登录后即可发表评论