1 min read

MoE 负载均衡系列:(2)软正则均衡的早期探索——从 Importance Loss 到 Expected Load Loss

MoE 做 SFT 时,任务损失只优化预测准确率,完全不关心 token 如何分配给专家。若 Router 持续偏好少数专家,其余专家将因长期拿不到梯度而退化。这是任务损失中漏掉的一个维度。

负载均衡的第一类思路是在损失函数中补一项惩罚,将均匀分配纳入优化目标。这类方法统称软正则——不强制均匀,仅通过梯度劝导 Router 调整偏好。本节用同一例子说明最早的两个软正则方法。

设定:3 个专家(E0、E1、E2),4 个 token,Top-1 路由。Router 输出的 softmax 概率如下:

Token E0 E1 E2
t1 0.70 0.20 0.10
t2 0.60 0.30 0.10
t3 0.10 0.80 0.10
t4 0.20 0.20 0.60

方法一:Importance Loss

每个专家的 Importance 定义为一个 batch 内所有 token 分配给该专家的概率之和。上表逐列求和得:E0 为 1.60,E1 为 1.50,E2 为 0.90。理想均匀值为 1.33。

损失函数计算这组 Importance 的变异系数平方(CV²),加到总损失中:

总损失 = 任务损失 + α × CV²

CV 是标准差与均值之比,消除了绝对尺度影响,只衡量相对离散程度。CV 越大,惩罚越重,反向传播会推动 Router 将信任分散到各个专家。

其盲区在于:Importance 只反映权重总和,不反映实际 token 数。两个专家可能拥有相同的 Importance,但一个接收少量高权重 token,另一个接收大量低权重 token,实际计算负载截然不同。

方法二:Expected Load Loss

为弥补上述盲区,Expected Load Loss 将惩罚目标从"权重总和"推进到"预计收到的 token 数"。

原始 MoE 在 Router logits 上施加随机噪声后再取 Top-1。利用噪声分布可估计每个专家对每个 token 成为 Top-1 的概率。沿用上例,加噪后的选中概率如下:

Token E0 E1 E2
t1 0.80 0.15 0.05
t2 0.70 0.20 0.10
t3 0.10 0.60 0.30
t4 0.75 0.15 0.10

各专家的期望负载为概率之和:E0 为 2.35,E1 为 1.10,E2 为 0.55。理想值为 1.33。损失函数惩罚期望负载的偏离,推动 Router 让预计 token 数趋向均匀。

相比 Importance Loss,Expected Load 更贴近实际计算负载。但其依赖 Noisy Top-k 的噪声推导,实现复杂。现代大模型更常用 f·P 辅助损失——无需噪声,实现更简洁。

小结

方法 补的漏洞 能否严格保证 主要局限
Importance Loss 权重总和太偏 不反映实际 token 数
Expected Load Loss 预计 token 数太偏 依赖噪声推导,实现复杂

两者均为软正则,通过损失函数补漏洞,但不保证结果。下一篇进入工业界主流方案:f·P 辅助损失。