混合专家(Mixture of Experts, MoE)是一种把模型内部拆成多个“专家”子网络,每次推理只激活其中少数几个的架构。它的目标很直白:总参数量可以很大,但每个 token 实际计算量不必跟着变大。
它是怎么工作的
在 Transformer 里,MoE 通常替换掉部分前馈网络(Feed-Forward Network, FFN):原本一个 FFN,现在变成很多个 FFN,每个都叫一个“专家”。另外还有一个路由器(router,也叫门控网络 gating),负责看当前 token 的表示,算出该派给哪几个专家。
比如每个 token 只选 top-2 专家:路由器给所有专家打分,取最高的两个,让这两个专家分别计算,再按分数加权合并。其他专家完全不动。
打个生活化的比方:一家大医院有几十个专科,病人来了先到分诊台。分诊台不会让全院医生一起会诊,而是根据症状叫心内科和呼吸科。医院总编制很大,但单个病人只占用少数医生的时间。MoE 就是这个思路:总参数是“全院编制”,激活参数是“这次真正上班的医生”。
和相邻概念的区别
它和稠密模型(dense model)的区别最直接:稠密模型每个 token 都要过全部参数;MoE 总参数多,但每 token 只过一小部分。它和模型集成(ensemble)也不一样:集成是多个完整模型都跑一遍再投票或平均,MoE 是模型内部只跑部分专家。
| 维度 | 稠密模型 | 混合专家 |
|---|---|---|
| 总参数量 | 相对小 | 可以很大 |
| 每 token 计算 | 全部参数 | 少数专家 |
| 显存占用 | 通常与总参数匹配 | 要装下全部专家,显存压力大 |
| 关键难点 | 规模效率 | 路由、负载均衡、通信 |
对从业者和普通人的意义
对从业者,MoE 是“用显存换计算”的典型:推理时计算量可控,但所有专家参数都得能加载;训练时要处理负载均衡(load balancing),避免所有 token 都挤向少数专家,也要考虑专家并行(expert parallelism)带来的通信开销。部署时 batch 大小、路由稳定性和硬件互联都会影响实际效率。
对普通人,可以记两点:第一,看到“总参数”别直接等同于“每次计算量”,MoE 的总参数和激活参数要分开看;第二,MoE 不保证一定更聪明,关键看路由有没有把 token 派给合适的专家。具体模型用了多少专家、选几个、是否共享专家,以官方页面为准。
