Mixture of Experts(MoE)与标准Transformer的核心区别在于解码器模块:后者使用单一前馈网络,而MoE将其替换为多个小型专家网络。推理时,MoE仅激活部分专家,以更多参数换取更快的计算速度。模型通过路由器为每个token选择top-K专家。训练面临两大挑战:一是“专家过选”,通过添加噪声和屏蔽非top-K logit来缓解;二是“负载不均”,通过设置专家处理token的容量上限来平衡。Mixtral 8x7B等模型是MoE的典型应用。
我刚刷到 Daily Dose of Data Science 的一篇视觉解释,把 Transformer 和 Mixture of Experts(MoE)讲得特别清楚。
核心区别其实就在 decoder block:
Transformer 用的是一个大的前馈网络。 MoE 则把这个位置拆成了多个更小的"专家"网络。
推理时,MoE 只激活其中一部分专家。 参数总量虽然更多,但实际参与计算的只有一小部分,所以速度反而更快。
那模型怎么决定该激活哪些专家呢?
靠 Router。 它是一个多分类器,对每个 token 输出 softmax 分数,然后选 top-K 个专家。
但训练过程中有两个经典坑:
第一个坑是"专家过选"--一开始某个专家被选上后,它越变越强,越强越容易被选,导致其他专家几乎没机会训练。
解决办法:在 router 输出加噪声,同时把非 top-K 的 logit 直接设为 -∞,让其他专家也有训练机会。
第二个坑是"专家负载不均"--有的专家处理了太多 token,有的几乎闲着。