Skip to content

Transformer 与混合专家(MoE)在 LLM 中的对比

Transformer vs. Mixture of Experts in LLMs

到目前为止,我们已经探讨了 LLM 是如何被搭建、训练、以及如何生成文本的。

所有现代 LLM 都依赖 Transformer 架构,但还有一个重要问题:

我们要如何在不让模型变得体量巨大、运行成本高昂的前提下,进一步扩大模型规模?

这正是混合专家(Mixture of Experts,MoE)架构登场的地方。

MoE 让整体参数量保持很大,但对每个 token 只激活一小部分「专家」。

这使得模型的容量得以增长,而计算量却不会随之成比例地增加。

有了这层背景,让我们来对比一下传统的 Transformer 模块和 MoE 这种替代方案。

混合专家(MoE)是一种颇受欢迎的架构,它通过引入不同的「专家」来改进 Transformer 模型。

下图说明了它们与传统 Transformer 之间的差异。

llms p45 1

让我们深入了解一下 MoE!

Transformer 与 MoE 的差异体现在解码器模块中:

llms p45 2

  • Transformer 使用一个前馈网络。
  • MoE 使用多个「专家」,它们本质上也是前馈网络,但相比 Transformer 中的那个要小得多。

在推理阶段,只有一部分专家会被选中参与计算。这使得 MoE 的推理速度更快。

此外,由于网络中包含多个解码器层:

llms p46 1

  • 文本在不同层之间会经过不同的专家。
  • 不同 token 所选用的专家组合也各不相同。

但模型是如何决定该选用哪些专家才是最合适的呢?

路由器(router)负责完成这项工作。

路由器就像一个多分类分类器,会为所有专家生成一组 softmax 得分。根据这些得分,我们选出排名靠前的 K 个专家。

路由器与整个网络一起训练,并逐渐学会如何挑选出最合适的专家。

llms p47 1

但这个过程并不是一帆风顺的。

其中存在一些挑战。

挑战一)注意训练刚开始时会出现这样的模式:

llms p47 2

  • 模型选中了「专家 2」(由于所有专家一开始都差不多,这基本是随机的)。
  • 被选中的这个专家会稍微变强一点。
  • 由于它表现最好,很可能再次被选中。
  • 这个专家因此学到了更多东西。
  • 同一个专家可能因为「表现最好」而反复被选中。
  • 它因此学得越来越多。
  • 如此循环往复!

结果就是,许多专家因为得不到训练机会而始终「欠训练」!

我们通过两个步骤来解决这个问题:

llms p48 1

  • 在路由器的前馈输出中加入噪声,让其他专家也有机会获得更高的 logits。
  • 把除了排名前 K 之外的所有 logits 都设为负无穷。经过 softmax 之后,这些分数就会变成零。

这样一来,其他专家也能获得被训练的机会。

挑战二)有些专家接触到的 token 数量可能远多于其他专家——这同样会导致专家训练不充分。

我们通过限制每个专家能处理的 token 数量上限来避免这个问题。

如果某个专家达到了处理上限,输入的 token 就会被转交给次优的专家来处理。

MoE 模型需要加载更多参数。不过,由于每次只会激活其中一部分专家,实际参与计算的只是其中一小部分。

这带来了更快的推理速度。MistralAI 推出的 Mixtral 8x7B,正是一个基于 MoE 架构的知名 LLM。

本站内容仅供学习交流,版权归原作者所有。