序列均衡损失

← 中文导读 · ← 仓库首页(EN) · ← 演进总览 · ← MoE 线导读 · ← aux-loss-free 主文档 · V3 梗概 论文DeepSeek-V3 arXiv:2412.19437 §2.1(Eq. 17–20);§4.5.3 batch vs sequence


一句话

V3 主均衡靠 batch-wise $b_i$ 启发式(aux-loss-free);$L_{\mathrm{Bal}}$ 是互补兜底:在 每条序列内 用极小 $\alpha$ 惩罚 $\sum_i f_i P_i$,梯度反传进 router,防单条序列里少数 expert 被「打穿」。


两条机制的分工

机制作用域更新方式角色
aux-loss-free $b_i$整个 training step 的 batchstep 末 $b_i \pm \gamma$,无梯度主均衡
$L_{\mathrm{Bal}}$单条序列$\alpha \sum_i f_i P_i$,反传 router兜底

论文 §4.5.3:sequence-wise 强制序列内更均匀 → 抑制按领域 specialization;batch-wise(含 aux-loss-free)更灵活(Fig. 9)。

MoE 线位置

方向文档
本节点(④ $L_{\mathrm{Bal}}$)MoE 线导读 §1
主机制 ③aux-loss-free MoE 路由

总公式与符号

一条序列(长度 $T$,$N_r$ 个 routed expert,每 token 激活 $K_r$ 个):

$$ \mathcal{L}{\mathrm{Bal}} = \alpha \sum{i=1}^{N_r} f_i , P_i \qquad \text{(Eq. 17)} $$

符号含义论文
$f_i$expert $i$ 的 实际负载(离散计数)Eq. 18
$P_i$expert $i$ 的 平均路由概率(连续、可微)Eq. 19–20
$\alpha$极小超参,几乎不伤主任务§2.1
$s_{i,t}$token $t$ 对 expert $i$ 的 sigmoid affinityEq. 15
$K_r T$整条序列的 routed 槽位总数

$f_i$ 与 $P_i$ 对照(先建立地图)

$f_i$$P_i$
问什么实际接了多少活?router 平均多想派给它多少?
怎么算数 top-$K$ 选中次数对每个 token 归一化 $s$,再 对 $t$ 求平均
可微吗否(计数);梯度经 $P_i$ 传入,直接反传 router
均匀时$f_i = 1$(本文记法;论文 raw $= 1/N_r$)$P_i = 1/N_r$

前置:「槽位」是什么?

MoE 每一层、对 一条序列

  • $T$ 个 token,每个 token 选 $K_r$ 个 routed expert
  • $K_r \times T$ 个槽位(slot)= 每次 expert 被选中的机会
T=4, K_r=2 → 共 8 个槽位

token1 → [A, B] token2 → [A, C]
token3 → [A, D] token4 → [B, C]

$f_i$ 数的是:这 8 个槽位里 expert $i$ 占几个。 $P_i$ 看的是:router 在每个 token 上对 $i$ 的归一化意愿,整条序列平均多少

batch 里 每条序列单独 算一套 $(f_i, P_i)$,不跨样本混合。


一、$f_i$:实际负载

核心:$f_i$ = 这条序列里 expert $i$ 分到的槽位,相对完全均匀水平的倍数;均匀时 $f_i = 1$。

公式

$$ f_i = \frac{N_r}{K_r T} \sum_{t=1}^{T} \mathbf{1}!\left( \text{expert } i \text{ 在 token } t \text{ 被选入 top-}K_r \right) $$

做什么结果
1每个 token 上,$i$ 进 top-$K_r$ 则 $\mathbf{1}=1$,否则 $0$逐 token 判断
2对 $t$ 求和$\mathrm{count}_i$ = 被选总次数
3$\mathrm{count}_i / (K_r T)$ 再乘 $N_r$$f_i$:相对均匀的倍数

归一化直觉

$$ \text{raw}_i = \frac{\mathrm{count}_i}{K_r T}, \qquad f_i = N_r \cdot \text{raw}_i $$

$f_i$含义
$= 1$刚好均匀(每 expert 约 $K_r T / N_r$ 次)
$> 1$过热
$< 1$偏冷;可为 $0$

论文写「均匀时 $f_i = 1/N_r$」指 raw 形态 $\mathrm{count}_i/(K_r T)$;与本文 $f_i = N_r \cdot \text{raw}_i$ 差一个 $N_r$,说的是同一件事。

实现注意:计数用 $s$ 还是 $s+b$?

环节分数
真实派活(Eq. 16)$s_{i,t} + b_i$ 取 top-$K_r$
论文 Eq. 18 写法示性函数写 $s_{i,t}$
工程(Megatron seq_aux_loss按真实 dispatch 计数($s+b$ 选中则 $\mathrm{count}_i{+}{+}$)

二、$P_i$:平均路由概率

核心:$P_i$ = 这条序列上,router 对 expert $i$ 的 归一化意愿 的时间平均;均匀时 $P_i = 1/N_r$。

公式

Step 1 — 原始 affinity

$$ s_{i,t} = \mathrm{Sigmoid}(\mathbf{u}_t^\top \mathbf{e}_i) \in (0, 1) \qquad \text{(Eq. 15)} $$

$\mathbf{u}_t$:token $t$ 的 FFN 输入;$\mathbf{e}_i$:expert $i$ 的路由向量。注意:这里用 $s$,不加 $b_i$

Step 2 — 在全体 expert 上归一化

$$ s'{i,t} = \frac{s{i,t}}{\displaystyle\sum_{j=1}^{N_r} s_{j,t}} $$

  • 分母是 全部 $N_r$ 个 routed expert,不是只在 top-$K_r$ 内
  • 对每个 token $t$,$\sum_i s'_{i,t} = 1$(概率分布)
  • $s'_{i,t}$ 可微,梯度可回传到 router

Step 3 — 对序列求平均

$$ P_i = \frac{1}{T} \sum_{t=1}^{T} s'_{i,t} $$

$P_i$含义
$= 1/N_r$router 对 $i$ 的意愿与其他 expert 相当
$> 1/N_r$router 系统性偏爱 $i$
$< 1/N_r$router 系统性冷落 $i$

$P_i$ 与门控 $g_{i,t}$ 的区别

$s'_{i,t}$ / $P_i$门控 $g_{i,t}$(Eq. 13–14)
归一化范围全部 $N_r$ 个 experttop-$K_r$ 内 的 $s$
是否进 loss$P_i$ 进入 $L_{\mathrm{Bal}}$乘 FFN 输出,进 主 loss
是否加 $b_i$不加top-$K$ 选择用 $s+b$,但 $g$ 仍用 $s$

$L_{\mathrm{Bal}}$ 通过 $P_i$ 调的是 router 的 全局偏好;门控 $g$ 只管选中 expert 的输出权重。


三、为什么乘 $f_i P_i$?

只惩罚 $P_i$只惩罚 $f_i$$f_i P_i$
router 可压低概率,top-$K$ 仍可能选它计数不可微,无法直接反传负载高 意愿高 → 惩罚最大
负载未必下来梯度压低 $s_{i,t}$,top-$K$ 与 $P_i$ 一起下来

Switch / GShard 经典结构:离散负载 × 连续概率 = 可微的负载均衡信号。

计算流水线(每条序列、每个 MoE 层)

MoE 前向积累 f_i/P_i → L_Bal → 反传 router

图示详情


四、完整手算示例

设定:$N_r=4,, K_r=2,, T=4$ → 8 个槽位;均匀目标每 expert 2 次

4.1 路由结果

token选中 expert累计 count
1A, BA:1 B:1
2A, CA:2 C:1
3A, DA:3 D:1
4B, CB:2 C:2
expert$\mathrm{count}_i$$f_i = \dfrac{4}{8}\times\mathrm{count}_i$状态
A3$1.5$过热(均匀是 2 次,拿了 3 次)
B2$1.0$均匀
C2$1.0$均匀
D1$0.5$偏冷

4.2 各 token 的 $s$ 与 $s'$

设每层 router 给出的 raw affinity(sigmoid 后):

token$s_{0,t}$$s_{1,t}$$s_{2,t}$$s_{3,t}$$\sum_j s_{j,t}$
10.900.700.400.302.30
20.850.400.750.202.20
30.900.300.350.602.15
40.500.800.700.252.25

token 1 归一化

$$ s'{0,1} = \frac{0.90}{2.30} \approx 0.391,\quad s'{1,1} \approx 0.304,\quad s'{2,1} \approx 0.174,\quad s'{3,1} \approx 0.130 $$

对 $t$ 求平均得 $P_i$

expert各 token 的 $s'_{i,t}$$P_i = \frac{1}{4}\sum_t s'_{i,t}$vs 均匀 $1/4=0.25$
A (0).391, .386, .419, .2220.355偏爱 ↑
B (1).304, .182, .140, .3560.246≈ 均匀
C (2).174, .341, .163, .3110.247≈ 均匀
D (3).130, .091, .279, .1110.153冷落 ↓

4.3 合并算 $L_{\mathrm{Bal}}$

(忽略 $\alpha$,只看 $\sum_i f_i P_i$)

expert$f_i$$P_i$$f_i P_i$解读
A1.50.3550.532负载高 + router 偏爱 → 惩罚最重
B1.00.2460.246正常
C1.00.2470.247正常
D0.50.1530.076本就偏冷,贡献小

$$ \sum_i f_i P_i \approx 1.10 $$

反传会 压低 A 的 $s_{0,t}$ → 后续 token 更少选 A,$P_0$ 与 $\mathrm{count}_0$ 一起下降。D 的 $f_3 P_3$ 很小,loss 几乎不阻止其他 expert 把活分给 D。


五、超参与总 loss

$\alpha$:论文取 极小值extremely small),$L_{\mathrm{Bal}}$ 只作安全网(对比 aux-loss-free Table 5 里大 $\alpha$ 的纯 aux-loss 基线)。

$$ \mathcal{L} = \mathcal{L}{\mathrm{main}} + \lambda{\mathrm{MTP}}\mathcal{L}{\mathrm{MTP}} + \alpha \sum{i} f_i P_i + \cdots $$

$L_{\mathrm{Bal}}$ 只动 router(经 $s_{i,t}$);不改 $b_i$ 启发式;不加在 expert FFN 上。


六、工程与场景

概念Megatron-LM
sequence-wise aux--moe-router-load-balancing-type seq_aux_loss
batch-wise auxaux_loss
aux-loss-free bias--moe-router-enable-expert-bias
场景说明
训练$b_i$ + $L_{\mathrm{Bal}}$ 并存;$\alpha$ 小
推理$L_{\mathrm{Bal}}$ 不参与;$b_i$ 固定

参考