一句话定义: MoE 路由(Mixture of Experts routing,混合专家路由)是混合专家模型里的调度器——由一个小网络(Router,也叫 Gating Network,门控网络)给每个 token 打分,只把它发给得分最高的少数几个专家(Expert)计算,其余专家这次完全不参与。
它到底在干什么
先看没有路由的稠密模型(Dense Model):一个 token 流进前馈网络(FFN),就必须把这一层所有参数算一遍。层里有一亿个参数,就老老实实跑一亿个。
MoE 把这一层的 FFN 拆成很多个并行的“专家”,每个专家都是结构相同、参数独立的小 FFN。同时挂一个很轻的门控网络,它的全部工作就是看一眼当前这个 token 的向量,输出“去哪个专家的概率”。
打个比方:稠密模型像一家只有一个全科医生的诊所,不管你头疼还是脚疼,都是他一个人从头查到脚。MoE 像一家有十几个专科医生的大医院,门口坐着一位分诊台护士——她扫一眼你的症状,直接把你派给骨科和影像科,其他医生继续喝茶。医院的“总人数”变多了,但你这次就诊只占用两三个人的时间。
几个容易踩的点
- top-k 是逐 token 决定的:同一个句子里,形容词和数字完全可能被派给不同的专家。所以严格说不是“这个模型用了哪些专家”,而是“这个 token 这一层用了哪些专家”。
- 会“偏科”:如果没人管,门控会越用越顺手地总选同几个专家,剩下的闲置。所以训练时通常加一个负载均衡损失(Load Balancing Loss),逼着流量摊开。
- 离散选择不好求导:挑专家本身是“选 A 还是选 B”的硬决定,没法直接反向传播。实践中用软化的门控权重配合辅助损失来训练。
- 推理时要搬数据:专家分布在不同设备上,token 得按路由结果被发过去、算完再收回来(token shuffle),这部分通信开销是工程上的大头。
和相邻概念的区别
| 概念 | 核心机制 | 关键差异 |
|---|---|---|
| 稠密模型 | 每个 token 用全部参数 | 算力与参数量基本同步增长 |
| MoE | 每个 token 只用少数专家 | 总参数大,单 token 激活算力小 |
| 模型集成 | 多个完整模型各跑一遍,再投票/平均 | 每个样本都会跑遍所有成员;MoE 是内部按 token 分流 |
对实际工作的意义
MoE 解释了为什么有些模型“参数听起来很吓人,但跑起来并不慢”:参数总量决定显存占用,被激活的参数量才决定算力。部署时要注意——所有专家都得占着显存(或做卸载/分布式),所以省的是算力,不是显存。做微调时,batch 太小会让某些专家几乎收不到样本,效果不稳定。
对普通职场人来说,知道路由存在,就能理解两件事:同一模型不同问题可能走了完全不同的子网络,某些冷门能力不如宣传中那么均衡;以及选模型时,“总参数量”和“实际计算量”是两个不同的指标,具体以官方页面和实测为准。
