← 学习笔记

学习笔记 · 2026-10-15 · 进阶

混合专家(MoE):低成本运行超大模型的方法

MoE 在模型内部设置多个称为“专家”的小型神经网络,每个 token 只计算由路由器选出的少数几个专家。因此,总参数量可以大幅增加,而每个 token 的计算量几乎保持不变。

目录
要点
  • MoE 是一种条件计算。每个输入只激活网络的一部分,从而让模型容量和计算量可以分开扩展。
  • 路由器(门控网络)为每个 token 给各专家打分,并按分数对得分最高的几个专家的输出进行加权求和。
  • Switch Transformer 通过简化路由实现了稳定训练;Mixtral 作为公开模型,总共 47B 参数中每个 token 只使用 13B,让 MoE 得到了广泛普及。
  • 计算量减少了,但内存、通信和负载均衡问题依然存在。未被使用的专家也必须全部加载到内存中。
  • 近期研究正转向如何确定专家数量和形状、多语言容量分配,以及按专家量化等服务优化。

为什么需要它:模型变大,计算量也随之变大

在深度学习中,只要数据足够多,模型容量(即参数量)越大,预测效果就越好。问题在于,通常每输入一次,模型都要计算全部参数。Sparsely-Gated MoE 论文(paper)指出,在这种结构下,当模型规模和训练数据同时增长时,训练成本大约呈平方增长,而计算资源的增长速度跟不上。

长期以来被提出的解决方案是条件计算(conditional computation)。如果每个输入只激活网络的一部分、关闭其余部分,就能在扩大容量的同时让计算量增长得更少。但同一篇论文指出,这一想法此前从未真正奏效,并总结了原因:GPU 擅长算术运算而远不擅长分支处理;只激活一部分会让每个部分分到的批次变小,降低效率;多个 GPU 之间的网络带宽会成为瓶颈;要均匀分配工作还需要额外的损失项。

MoE 通过工程手段解决了这些问题,真正实现了“参数量大、每个 token 计算量小”。据该论文介绍,混合专家的想法本身大约从 1991 年起就有研究,但它成为现代大语言模型组成部分的起点是这项 2017 年的研究。

核心思想:只叫需要的科室的综合医院

可以想象一家综合医院。医院有几十个科室,但一位患者只会在导诊台说明症状后,到被指定的一两个科室就诊。医院整体的专业能力(容量)很大,但每位患者所需的诊疗时间(计算量)很小。在 MoE 中,科室就是“专家(expert)”,导诊台就是“路由器”或“门控网络”。

以 Transformer 来说,每一层在注意力之后都有一个前馈网络(FFN,对每个 token 单独进行变换的小型神经网络)。Switch Transformer(paper)把这一个 FFN 换成多份 FFN 专家,并由路由器决定把每个 token 送往哪个专家。这样,模型中包含的总参数,与处理一个 token 时实际参与计算的激活参数就分开了。

关键在于,路由器不是人工编写的规则,而是一起训练的小型神经网络。哪个专家负责什么并不预先指定。Sparsely-Gated MoE 论文(paper)观察到,训练结束后,专家们往往会按照语法和语义出现相当程度的专门化。

从 Mixtral 看总参数与激活参数

47Btoken 可访问的总参数
13B推理时使用的激活参数
8 个中选 2 个每层选择的专家
Mixtral 8x7B 每层只使用 8 个专家中的 2 个,实际计算量远少于可访问的参数量。

如何运作:打分、挑选、混合

一个 MoE 层处理一个 token 的过程可以分为四步。第一,token 的表示(到该时刻为止计算出的向量)进入路由器。第二,路由器通过简单的矩阵乘法为每个专家打分,并用 softmax 将其转换为类似概率的值。第三,只选出得分最高的 k 个专家(top-k)。第四,被选中的专家各自计算该 token,再按路由器分数对其输出加权求和,传给下一层。Switch Transformer(paper)用公式整理了这一计算,其核心是未被选中的专家完全不参与计算。

这种选择在每个 token、每一层上分别进行。以 Mixtral(paper)为例,每层有 8 个 FFN 专家,路由器为每个 token 选出 2 个。即使在同一句话中,不同的词也可能使用不同的专家组合;同一个词在不同层上也可能如此。结果是,一个 token 可以访问的参数为 47B,但推理时实际使用的激活参数为 13B。

使用多个 GPU 训练时,专家会分布到各个设备上。Switch Transformer(paper)解释说,由于不同专家的权重放在不同设备上,设备越多,模型权重也越多,而单个设备的内存和计算负担仍保持在可承受范围内。代价是需要把 token 发送到其专家所在的设备,再把结果取回,因此会产生通信。这种通信成本是 MoE 设计的核心约束之一。

单个 MoE 层的处理流程token 向量 → 路由器; 路由器 → 专家 1(选择); 路由器 → 专家 2(选择); 路由器 → 专家 3; 路由器 → 专家 4; 专家 1 → 加权求和; 专家 2 → 加权求和; 加权求和 → 传至下一层token 向量经过注意力的表示路由器各专家分数·top-k专家 1已选中专家 2已选中专家 3不计算专家 4不计算加权求和按路由器分数混合传至下一层选择选择
单个 MoE 层的处理流程 token 在路由器处获得分数,只有被选中的专家参与计算,然后按分数加权求和。图为从 4 个专家中选 2 个的示例,虚线框表示本次 token 不参与计算的专家。

发展脉络:从 LSTM 之间的 MoE 到公开的 MoE 模型

Sparsely-Gated MoE(paper)是起点。它用多达数千个前馈专家和可训练的门控网络构建 MoE 层,将其插入堆叠的 LSTM 层之间,构建出最多 137B 参数的模型。作者报告称,在现代 GPU 集群上只损失少量计算效率,就把模型容量扩大了 1000 倍以上,并在语言建模和机器翻译上以更少的计算取得了优于当时最佳水平的结果。

Switch Transformer(paper)把这一思想移植到 Transformer 上并加以简化。此前的研究推测,路由器要正常学习就必须选择 2 个以上的专家,而 Switch 简化了路由算法,降低了通信和计算成本。作者将复杂性、通信成本和训练不稳定列为阻碍 MoE 普及的原因,并通过改进训练技巧,首次以 bfloat16 等低精度训练了大型稀疏模型。在相同计算资源下,其预训练速度比基于 T5-Base、T5-Large 的模型快最多 7 倍,在全部 101 种语言上都确认了提升,并扩展到万亿参数规模,报告的预训练速度比 T5-XXL 快 4 倍。即使只有 2 个专家也有收益;把大型稀疏模型蒸馏为小型稠密模型时,模型规模最多可缩小 99%,同时保留 30% 的质量提升。

Mixtral(paper)是把 MoE 带出实验室的案例。它采用与 Mistral 7B 相同的结构,每层设 8 个专家、每个 token 使用 2 个,并以 32k token 上下文进行训练。作者表示,在所有评测的基准上,它都优于或相当于 Llama 2 70B 和 GPT-3.5,尤其在数学、代码生成和多语言方面大幅领先 Llama 2 70B。Base 模型和 Instruct 模型以 Apache 2.0 许可证公开,成为任何人都可下载使用的开放权重 MoE 的代表案例。

近期走向:用多少个、什么形状、如何服务

近期研究的问题已从“MoE 是否可行”转向“如何设计和运营”。第一是容量分配。多语言 MoE 扩展研究(paper)提出了同时考虑激活参数、各语言训练 token、专家数量和语言数量的缩放定律。它利用预训练的 64 种配置中得到的 26,300 个分语言损失观测值进行拟合,对未见过配置的预测误差比最强基线降低了 28%。在激活参数和各语言训练 token 相同的情况下,设 32 个专家的模型在支持语言从 12 种增加到 200 种时,损失增幅比稠密模型少 83%。这意味着覆盖的语言越广,设置更多专家越有利。

第二是专家的形状。如今的细粒度(fine-grained)MoE 常常把每个专家做窄,同时增加专家数量。专家形状研究(paper)认为,形状不应只是随路由粒度附带决定的事项。把专家的输入维度和中间宽度作为明确的设计选择来处理后,即便改变模型规模和路由粒度进行实验,两个值相近的“接近正方形”的专家始终更有优势。按层分配不同专家数量和形状的方式,也在相同参数量、计算量和通信量下降低了验证损失。

第三是服务。DuoRate(paper)指出,MoE 服务要为精度付两次成本:存储时要为路由器可能选择的所有专家付费,而在一步解码中只为实际选中的专家付费。两者之间的差距被称为“store-read gap”;在公开的 BitsMoE 检查点中,按存储计每个权重 2.54 比特,按解码流量计则变成 7.50 比特。DuoRate 采用“存储一次、按任务决定读取比特数”的方式,报告称在 Qwen3-30B-A3B 上以每个权重 2.9 比特达到了与 4 比特量化格式相当的水平。

局限与争议

第一,计算减少了,内存却不会减少。即便是每个 token 只计算 13B 的 Mixtral(paper),由于无法预知哪个 token 会调用哪个专家,也必须把 47B 参数全部加载到内存中。DuoRate(paper)所说的“存储成本要为所有专家支付”指的正是这个问题。因此,MoE 适合“GPU 内存(VRAM)充足但希望节省计算”的环境,在内存较小的设备上反而可能成为负担。

第二,负载均衡与通信。如果路由器把 token 集中分给少数专家,其余专家就会闲置,而集中的专家所在的设备则会成为瓶颈。Sparsely-Gated MoE(paper)从一开始就指出,要获得所需的稀疏性和负载均衡,可能需要额外的损失项。专家分散在多个设备上时,收发 token 的网络成本也会增加。Switch Transformer(paper)将复杂性、通信成本和训练不稳定列为普及障碍,也是出于同样的原因。

第三,比较效率时要看清基准。“MoE 更大更便宜”的说法通常是在相同激活参数或相同 FLOPS 基准下的比较。若以总参数、内存或实际吞吐量(token/秒)为基准,结论可能会不同。像多语言研究(paper)那样附带“激活参数和训练 token 相同时”条件的结果,只应在该条件范围内解读。

稠密模型与 MoE 对比

稠密模型每次计算全部参数

  • 结构和训练简单
  • 扩大容量,计算量也随之增大
  • 内存占用与计算量成正比

MoE只计算被选中的专家

  • 每个 token 计算量不变,扩大容量
  • 所有专家都须加载到内存
  • 需管理负载均衡与通信成本

공통 两者都采用 Transformer 结构,区别在于 FFN 是设一份还是设多份

在每个 token 计算量相同的条件下,并列展示 MoE 的收益与代价。

延伸学习

初学者建议从 Switch Transformer(paper)的第 2 章读起。路由器打分、top-k 选择和加权求和用两个简短公式就整理清楚了,还有一张把稠密 FFN 换成 Switch FFN 的图,便于把握结构。接着读 Sparsely-Gated MoE(paper)的第 1 章,可以了解条件计算此前为何失败(分支、批次缩小、带宽、负载均衡),从而看清 MoE 设计决策背后的原因。

想对实际模型有直观感受,可以阅读 Mixtral(paper)的摘要和结构说明,确认“8 个中选 2 个”“47B 对 13B”的含义。之后可按兴趣选择近期研究:模型设计方面,专家形状研究(paper)和多语言扩展研究(paper)是不错的起点;部署与成本方面,DuoRate(paper)是不错的起点。

相关术语

激活参数 Transformer 缩放定律 量化 模型并行 分布式训练 模型服务 Distillation

参考资料

奠基论文

最新研究

由 AI 根据所列参考资料撰写并经过审核。详情请查看原始资料。