混合专家模型#
随着模型规模的不断增大,一个被称为“密集(Dense)”模型的标准 Transformer 架构遇到了瓶颈:在处理每一个输入词元(token)时,模型的所有参数都会被激活和使用。这意味着模型的计算成本与其参数量成正比。当模型达到数千亿甚至万亿参数时,训练和推理的成本会变得极其高昂。
MoE的核心思想是有条件计算(Conditional Computation):与其让一个通才模型处理所有问题,不如拥有一组专家,并为每个问题选择最合适的少数几位专家来解决。 这意味着模型拥有海量的总参数(知识存储量大),但在处理任何一个具体的输入时,只激活其中一小部分参数(计算成本低),因此被称为稀疏(Sparse)模型以区别于传统的密集(Dense)模型。
在 Transformer 架构中,MoE 层通常用于替代标准的前馈网络层。一个 MoE 层主要由两部分组成:
多个专家:这些专家本身就是独立的前馈网络(FFN)。例如,一个 MoE 层可能包含 8 个或 64 个这样的专家网络。
一个“路由器”或“门控网络” (Router / Gating Network):这是一个小型的神经网络,它会分析输入到 MoE 层的词元,然后决策应该将这个词元发送给哪些专家进行处理。
工作流程如下:
一个词元的向量表示到达 MoE 层。
路由器接收这个向量,并输出一个在所有专家上的概率分布(通常通过 Softmax 实现)。这个分布表明了每个专家与当前词元的相关性。
根据路由器的输出,选择得分最高的 Top-K 个专家。
该词元的向量仅被发送给这 K 个被选中的专家进行计算。
这 K 个专家的输出结果,根据路由器给出的权重进行加权求和,得到 MoE 层的最终输出。
通过这种方式实现了计算量与总参数量的解耦。
MoE的优势:
高效扩展:允许模型在计算成本仅线性增加的情况下,将总参数量扩展到极大的规模(如万亿级别),从而容纳更多的知识。
更快的训练与推理:相比于同等参数规模的密集模型,MoE 模型的训练和推理速度要快得多,因为它在每个前向传播中实际执行的计算要少得多。
MoE存在的问题:
训练不稳定:负载均衡是一个关键问题。如果路由器倾向于总是选择某几个专家,会导致这些专家过载,而其他专家则得不到充分训练。因此需要引入额外的损失函数来鼓励路由器将计算任务均匀地分配给所有专家。
更高的显存需求:虽然计算是稀疏的,但在推理时,模型的所有参数(包括所有专家)都需要被加载到内存(显存)中。这导致 MoE 模型的部署对硬件的要求非常高。
微调复杂性:对 MoE 模型进行微调比密集模型更具挑战性。
典型的 MoE 模型:
Google Switch Transformer: 首次将 MoE 架构成功扩展到万亿参数规模。
GPT-4: 业界普遍认为其采用了 MoE 架构。
Mixtral 8x7B: 由 Mistral AI 开源的高性能 MoE 模型,它有 8 个专家,每次推理激活 2 个,总参数量约 470 亿,但实际计算量仅相当于一个 130 亿参数的密集模型。
DeepSeek-MoE: 由深度求索公司开发的 MoE 模型,同样在开源社区表现优异。