外观
Transformer 与混合专家(MoE)在 LLM 中的对比
Transformer vs. Mixture of Experts in LLMs
到目前为止,我们已经探讨了 LLM 是如何被搭建、训练、以及如何生成文本的。
所有现代 LLM 都依赖 Transformer 架构,但还有一个重要问题:
我们要如何在不让模型变得体量巨大、运行成本高昂的前提下,进一步扩大模型规模?
这正是混合专家(Mixture of Experts,MoE)架构登场的地方。
MoE 让整体参数量保持很大,但对每个 token 只激活一小部分「专家」。
这使得模型的容量得以增长,而计算量却不会随之成比例地增加。
有了这层背景,让我们来对比一下传统的 Transformer 模块和 MoE 这种替代方案。
混合专家(MoE)是一种颇受欢迎的架构,它通过引入不同的「专家」来改进 Transformer 模型。
下图说明了它们与传统 Transformer 之间的差异。

让我们深入了解一下 MoE!
Transformer 与 MoE 的差异体现在解码器模块中:

- Transformer 使用一个前馈网络。
- MoE 使用多个「专家」,它们本质上也是前馈网络,但相比 Transformer 中的那个要小得多。
在推理阶段,只有一部分专家会被选中参与计算。这使得 MoE 的推理速度更快。
此外,由于网络中包含多个解码器层:

- 文本在不同层之间会经过不同的专家。
- 不同 token 所选用的专家组合也各不相同。
但模型是如何决定该选用哪些专家才是最合适的呢?
路由器(router)负责完成这项工作。
路由器就像一个多分类分类器,会为所有专家生成一组 softmax 得分。根据这些得分,我们选出排名靠前的 K 个专家。
路由器与整个网络一起训练,并逐渐学会如何挑选出最合适的专家。

但这个过程并不是一帆风顺的。
其中存在一些挑战。
挑战一)注意训练刚开始时会出现这样的模式:

- 模型选中了「专家 2」(由于所有专家一开始都差不多,这基本是随机的)。
- 被选中的这个专家会稍微变强一点。
- 由于它表现最好,很可能再次被选中。
- 这个专家因此学到了更多东西。
- 同一个专家可能因为「表现最好」而反复被选中。
- 它因此学得越来越多。
- 如此循环往复!
结果就是,许多专家因为得不到训练机会而始终「欠训练」!
我们通过两个步骤来解决这个问题:

- 在路由器的前馈输出中加入噪声,让其他专家也有机会获得更高的 logits。
- 把除了排名前 K 之外的所有 logits 都设为负无穷。经过 softmax 之后,这些分数就会变成零。
这样一来,其他专家也能获得被训练的机会。
挑战二)有些专家接触到的 token 数量可能远多于其他专家——这同样会导致专家训练不充分。
我们通过限制每个专家能处理的 token 数量上限来避免这个问题。
如果某个专家达到了处理上限,输入的 token 就会被转交给次优的专家来处理。
MoE 模型需要加载更多参数。不过,由于每次只会激活其中一部分专家,实际参与计算的只是其中一小部分。
这带来了更快的推理速度。MistralAI 推出的 Mixtral 8x7B,正是一个基于 MoE 架构的知名 LLM。