Zubnet AI学习Wiki › 专家混合模型
模型

专家混合模型

别名:MoE

一种架构,其中模型包含多个“专家”子网络,但每个输入仅激活其中少数几个。一个路由网络决定哪些专家与给定的token相关。这意味着模型可以拥有1000亿+的总参数,但每次前向传递仅使用200亿个参数。

为什么重要

MoE 是 Mixtral 等模型(据报道还有 GPT-4)实现大模型质量与小模型速度的方法。权衡在于更高的内存占用(所有专家模型都必须加载),尽管计算成本更低。

深度解析

在标准的Transformer中,每个token在每一层都会通过相同的前馈网络(FFN)。在MoE Transformer中,这个单一的FFN被多个并行的FFN(即“专家”)以及一个小型路由网络(通常称为“门控”)所取代,路由网络决定每个token由哪些专家处理。通常,门控会选择前k个专家(通常是2个),并使用门控的softmax权重混合它们的输出。关键的洞察是,总参数数量可以非常庞大(赋予模型巨大的记忆和泛化能力),而每个token的计算量仍然可控,因为对于任何给定输入,大多数专家都处于空闲状态。例如,Mixtral 8x7B总共有约47B参数,但每个token仅激活约13B参数。

路由问题

路由机制是工程复杂性的主要来源。一个简单的路由器可能会将所有token发送到相同的少数专家,导致其他专家未被使用——这被称为专家崩溃(expert collapse)。为防止这种情况,MoE模型在训练过程中使用辅助负载均衡损失,对专家利用率不均进行惩罚。Google最初的Switch Transformer使用top-1路由(每个token一个专家),并实现了令人印象深刻的扩展,但大多数现代MoE模型更倾向于使用top-2路由以提高稳定性。一些较新的方法,如DeepSeekMoE,增加了始终与路由专家一起激活的共享专家,确保无论路由决策如何,每个token都能获得基本的处理能力。

内存与计算

定义MoE部署的权衡是内存与计算。尽管每个token仅激活一小部分专家,但所有专家都必须加载到内存中。一个8x7B的MoE模型需要的内存与一个密集的47B模型大致相同,尽管其运行速度与一个13B的密集模型相当。这使得MoE模型在消费级硬件上显得笨拙——如果你的GPU显存只能容纳13B参数,那么使用密集的13B模型可以以相同的速度进行推理,而无需MoE的额外开销。当内存足够容纳完整模型且希望每FLOP获得最大质量时,MoE模型才真正表现出色。这就是为什么它非常适合云服务:像OpenAI和Mistral这样的提供商可以在其集群中分配足够的内存,而每请求的计算成本是他们利润的主要驱动力。

专家并行是专属于MoE的部署模式。在多GPU设置中,可以将不同的专家分配到不同的GPU上,这样每个设备只需存储和计算一部分专家。token根据需要的专家被路由到不同的GPU上进行处理,然后结果被汇总回来。这引入了全对全通信开销,但允许远超单个设备容量的模型高效运行。Google的GShard和Switch Transformer论文在大规模上展示了这一点,这也是目前最大的MoE模型在生产中部署的方式。

操作中的陷阱

一个实践者常遇到的细微之处:MoE模型在微调期间可能表现出不可预测的行为。如果你在狭窄的领域上进行微调,路由器可能会开始将所有token导向一小部分专家,从而有效浪费其余专家的容量。一些团队在微调期间冻结路由器;另一些团队则添加额外的正则化。量化是另一个陷阱——激活频率较低的专家校准样本较少,因此简单的训练后量化可能会不成比例地降低它们的性能。该领域正在积极解决这些操作挑战,但MoE显然是未来的发展方向。Grok、DBRX、Mixtral以及几乎可以肯定的GPT-4都使用了它,随着模型规模的增长,效率论点只会变得更强。

相关概念

← 所有术语
← Mistral AI 模型 →
ESC