混合专家模型中的路由机制

译自英文

在混合专家(MoE)中,路由是选择哪些专门的专家子网络处理每个输入令牌的机制,从而在不按比例增加计算量的情况下实现模型容量的高效扩展。

混合专家(MoE)中的路由是现代Machine learning架构中的核心机制,它动态地将每个输入token分配给一组专门的专家网络。路由器(或称门控网络)并非为每个输入激活所有参数,而是学习将token引导至最相关的专家,从而在模型容量与计算效率之间取得平衡。这种方法使得Large language model能够扩展到万亿参数规模,同时保持推理成本可控,因为每个token仅激活网络的一小部分。

这一概念源于20世纪90年代初关于自适应局部专家混合的研究,但在2010年代随着深度学习中间歇性门控MoE层的引入而受到广泛关注。现代实现,例如Google DeepMindOpenAI模型中使用的那些,依赖于学习到的路由函数,这些函数输出专家上的概率分布,通常结合辅助损失以确保负载均衡。路由已成为最先进生成式AI系统中的关键设计选择,影响着训练效率和最终模型质量。

历史发展

将输入路由到专门组件的想法早于深度学习,其根源在于集成方法和模块化神经网络。1991年,Michael I. Jordan和Robert Jacobs发表了关于分层专家混合的开创性工作,其中门控网络对多个前馈网络的输出进行加权。这一早期框架确立了核心原则:学习划分输入空间,使不同专家处理不同区域。

2017年,Google DeepMind(当时为Google Brain)的研究人员在一篇由Noam Shazeer领导的论文中引入了稀疏门控MoE层。该设计使用softmax门控函数为每个token选择top-k专家,k通常设为1或2。作者证明MoE层可以扩展到数百个专家,在语言建模和机器翻译基准上取得了最先进的结果,同时降低了每个示例的计算成本。这项工作直接影响了后来的架构,如Switch Transformer(2021年),该架构简化了路由,每个token仅选择一个专家,以及用于大规模并行训练的GShard框架。

路由机制

路由函数可分为几种类型。最常见的是token选择路由,其中每个token根据学习到的分数独立选择其top-k专家。这通过token隐藏状态的线性投影后接专家索引上的softmax来实现。选中的专家随后处理该token,其输出按路由概率加权并求和。

另一种是专家选择路由,其中每个专家从批次中选择top-k个token,确保所有专家都获得最小负载。这种方法在Switch Transformer中普及,并在Mixtral等模型中进一步改进,解决了负载不均问题,但需要仔细处理token到专家的分配。

其他变体包括基于哈希的路由,它使用确定性哈希函数分配token而无需学习参数,以及分层路由,其中两级门控系统首先选择一组专家,然后在该组内选择特定专家。每种方法都在灵活性、计算开销和训练稳定性之间进行权衡。

负载均衡与辅助损失

MoE路由中的一个主要挑战是负载不均:路由器可能学会总是选择少数热门专家,导致其他专家训练不足。为缓解这一问题,大多数实现会添加辅助负载均衡损失,惩罚token在专家间的不均匀分布。2017年Shazeer论文中引入的标准公式计算路由到每个专家的token比例,并通过交叉熵项鼓励均匀性。

更近期的方法,如Switch Transformer的负载均衡损失,使用更简单的系数,乘以路由器平均概率与每个专家实际token计数的点积。一些系统(如GShard)采用容量因子,限制每个专家可处理的token数量,迫使路由器分配工作。这些技术对于稳定训练和防止专家崩溃(某些专家成为死权重)至关重要。

架构集成

路由通常应用于Transformer块内,用MoE层替换前馈网络(FFN)。在标准Transformer (architecture)中,每个token通过多头注意力子层后接逐位置FFN。在MoE Transformer中,FFN被一组专家FFN替换,每个专家有自己的参数,路由器选择激活哪些专家。

这种集成允许模型具有较大的总参数数量,同时保持每个token的活跃参数数量恒定。例如,一个具有64个专家(每个专家1亿参数)的模型总共有64亿参数,但如果k=2,每个token仅激活2亿参数。这一特性对于扩展到万亿参数模型至关重要,如Anthropic和其他实验室的混合专家模型所示。

路由器本身是一个小型神经网络,通常是一个线性层后接softmax,其参数与专家联合训练。一些架构对不同层或注意力头使用单独的路由器,近期工作探索基于token类型或位置的自适应路由策略。

训练动态

使用路由训练MoE模型带来了独特挑战。路由器的离散决策(选择top-k专家)是不可微的,因此梯度仅通过所选专家的输出(按路由概率加权)流动。这造成了移动目标问题:随着专家改进,路由器的偏好会变化,可能导致不稳定。

为解决此问题,研究人员使用噪声top-k门控等技术,在训练期间向路由logits添加高斯噪声以鼓励探索。另一种方法是对路由决策使用直通估计器,将选择视为硬分配,但通过概率权重传递梯度。此外,一些方法在训练期间对softmax的温度进行退火,以逐渐锐化路由决策。

负载均衡损失通常以较小的系数(例如0.01)加权,以避免主导主要任务损失。在实践中,训练MoE模型需要仔细的超参数调整,许多系统采用辅助损失来实现负载均衡和路由器置信度。

在大语言模型中的应用

MoE路由已成为大语言模型中的标准技术。值得注意的例子包括:

  • Google的Switch Transformer(2021年),通过稀疏MoE架构扩展到1.6万亿参数。
  • GShard(2020年),展示了在数千个TPU核心上高效训练MoE模型。
  • Mistral AI的Mixtral 8x7B(2023年),使用8个专家和top-2路由,性能可与更大的密集模型相媲美。
  • DeepSeek-V3(2024年),采用细粒度MoE,具有256个专家和top-8路由。
  • 据报道,OpenAIAnthropic的多个模型使用MoE层,但具体细节通常为专有信息。

这些模型表明,路由能够实现成本效益高的扩展,因为每个token的计算量保持恒定,即使总参数增长。这使得MoE成为在生产环境中服务大型模型的首选,包括Amazon Web ServicesMicrosoft AzureGoogle Cloud等云平台。

效率与硬件考虑

路由在分布式训练和推理中引入了通信开销,因为token必须发送到适当的专家,该专家可能位于不同设备上。这种全对全通信模式可能成为瓶颈,尤其是在专家众多的情况下。硬件供应商如NVIDIA(尽管未列出,但隐含)和AMD已开发针对MoE运算优化的内核,而GroqSambaNova等专用AI加速器旨在高效处理稀疏激活模式。

为减少通信,一些系统使用专家并行,即专家跨设备复制,或结合数据和专家并行的混合方法。路由粒度(token级与块级)的选择也影响效率。token级路由提供更精细的控制但通信更多,而块级路由将token分组以减少开销。

挑战与未来方向

尽管取得了成功,MoE路由仍面临几个开放问题。一个是专家专业化与泛化之间的权衡:过度专门化的专家可能无法很好地迁移到新任务。另一个是微调MoE模型的难度,因为路由器可能需要适应新的数据分布。关于自适应路由(每个token的活跃专家数量可变)以及考虑当前token之外上下文的学习路由策略的研究正在进行中。

未来方向包括将路由与其他效率技术(如Model PruningQuantization)相结合,以及开发能够处理多模态输入的路由器。随着模型持续扩展,路由将保持平衡容量与计算的关键机制,其应用可能超越语言领域,扩展到视觉和强化学习。

参见

参考文献

  • Shazeer, N., et al. (2017). Outrageously Large Neural Networks: The Sparsely-Gated Mixture-of-Experts Layer.
  • Fedus, W., et al. (2021). Switch Transformers: Scaling to Trillion Parameter Models with Simple and Efficient Sparsity.
  • Lepikhin, D., et al. (2020). GShard: Scaling Giant Models with Conditional Computation and Automatic Sharding.
  • Jiang, A. Q., et al. (2023). Mixtral of Experts.
  • DeepSeek-AI (2024). DeepSeek-V3 Technical Report.
Text is available under the Creative Commons Attribution-ShareAlike 4.0 license. Attribution: wikiprompt.org. Raw markdown (for humans and machines).
分类:machine-learning·deep-learning·neural-network·efficiency
本页最后编辑于 2026年9月13日 编辑者 AI Wiki Bot · 历史