稀疏混合专家模型通过“按需激活”扩大参数容量:每个词元不再经过全部前馈网络,而是由路由器选择少量专家处理。理论上,这能降低单词元计算量;但在真实推理系统中,路由分布是否均匀,往往决定了稀疏性最终转化为吞吐优势,还是演变为设备等待、通信拥塞和尾延迟。
路由器到底做了什么
在典型的稀疏 MoE 层中,路由器根据词元隐藏状态计算各专家的分数,再选择 Top-K 专家。Top-1 只调用一个专家,计算和通信路径较短;Top-2 或更大的 K 值可融合多个专家的输出,通常具有更强的表达能力,但会增加专家计算、词元复制和跨设备传输。
Switch Transformer 采用 Top-1 路由,并引入辅助负载均衡损失,鼓励词元选择比例和路由概率在不同专家之间更加均匀来源链接。Mixtral 则采用 Top-2 方案,每个词元选择两个专家并按路由权重合并结果来源链接。这说明 K 并不存在脱离模型和硬件环境的统一最优值。
负载不均衡为什么会发生
路由器的目标不是简单地平均分配任务,而是把词元交给更适合的专家。随着训练推进,部分专家可能对高频语言模式形成优势,继而吸引更多词元;这些专家获得更多更新后又可能继续增强,形成“热门专家”效应。与此同时,其他专家利用率偏低,模型总容量没有得到充分发挥。
进入推理阶段后,这种偏斜会直接映射为硬件负载差异。如果专家分布在多张加速卡上,承载热门专家的设备需要处理更多词元,而其他设备较早完成计算却必须等待。MoE 层通常要等相关专家结果返回后才能继续,因此整体耗时由较慢的设备和最繁忙的专家决定,而不是由平均负载决定。
负载均衡如何改变推理延迟
一、影响专家计算时间
均匀路由可以让各专家形成规模相近的词元批次,更充分地利用矩阵乘法算子。负载过度分散时,某些专家获得的词元太少,小矩阵计算难以发挥设备吞吐;负载过度集中时,热门专家又会成为关键路径。理想状态不是机械地让数量完全相等,而是在专家专门化和硬件执行效率之间取得平衡。
二、影响跨设备通信
采用专家并行时,词元需要发送到持有目标专家的设备,并在计算完成后返回原设备。Top-K 越大,每个词元潜在的发送次数越多;路由越不均衡,热点设备的网络流量越集中。即使理论 FLOPs 较低,All-to-All 通信、数据重排、同步等待和内核启动也可能侵蚀收益。
三、放大尾延迟
在线服务更关心高分位延迟,而不只是平均延迟。单个请求可能包含大量词元,只要某一层出现热门专家排队,就会拖慢后续层执行。小批量、低并发场景尤其敏感,因为专家收到的词元数量较少,路由波动更难被大批量平均掉。
常见的均衡手段及其代价
- 辅助负载均衡损失:训练时惩罚专家使用偏斜,能够降低专家塌缩风险,但权重过高可能干扰任务目标,使路由器为了“平均”而牺牲有效的专家分工。
- 专家容量限制:为每个专家设置可接收的最大词元数。容量太小可能产生溢出或词元丢弃,容量太大则需要更多缓冲区,并容易引入填充计算。
- 路由噪声或温度调节:避免早期训练过快集中到少数专家,但推理阶段通常需要确定性更强的策略,以保证结果稳定和缓存行为可预测。
- 无丢弃稀疏算子:MegaBlocks 将动态专家计算重新组织为块稀疏运算,以减少固定容量、填充和词元丢弃之间的矛盾[3]。不过,其实际收益仍取决于模型规模、设备架构和软件栈。
部署时应如何评估
只比较模型的激活参数量或理论计算量并不充分。工程评测至少应同时记录专家词元计数、最大负载与平均负载之比、空闲专家比例、跨设备通信时间、词元重排时间、首词元延迟、单词元生成延迟以及高分位请求延迟。
- 分别在单请求、小批量和高并发条件下采集逐层专家负载,避免只看全局平均值。
- 对比 Top-1、Top-2 及不同容量策略,观察质量、吞吐和尾延迟的联合变化。
- 检查热门专家是否集中在同一设备,必要时调整专家放置方式或复制热点专家。
- 区分预填充和逐词元解码。前者批量较大,更容易形成高效专家计算;后者批量较小,路由与通信开销占比通常更突出。
- 在真实输入分布上进行压测,因为语言、代码和领域内容变化都可能改变专家选择模式。
总结
MoE 路由不仅是模型结构问题,也是调度和通信问题。路由过度集中会制造热门专家、设备等待和尾延迟;过度追求均匀又可能削弱专家专门化。优化时应把 Top-K、均衡约束、专家容量、专家放置和稀疏算子作为一个整体,并以真实业务流量下的吞吐与高分位延迟验证效果。只有当路由分布能够匹配硬件拓扑和服务负载,稀疏激活才会真正转化为可感知的推理效率。