序列均衡损失
← 中文导读 · ← 仓库首页(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 的 batch | step 末 $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 affinity | Eq. 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$ 个 expert | 仅 top-$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 层)
四、完整手算示例
设定:$N_r=4,, K_r=2,, T=4$ → 8 个槽位;均匀目标每 expert 2 次。
4.1 路由结果
| token | 选中 expert | 累计 count |
|---|---|---|
| 1 | A, B | A:1 B:1 |
| 2 | A, C | A:2 C:1 |
| 3 | A, D | A:3 D:1 |
| 4 | B, C | B:2 C:2 |
| expert | $\mathrm{count}_i$ | $f_i = \dfrac{4}{8}\times\mathrm{count}_i$ | 状态 |
|---|---|---|---|
| A | 3 | $1.5$ | 过热(均匀是 2 次,拿了 3 次) |
| B | 2 | $1.0$ | 均匀 |
| C | 2 | $1.0$ | 均匀 |
| D | 1 | $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}$ |
|---|---|---|---|---|---|
| 1 | 0.90 | 0.70 | 0.40 | 0.30 | 2.30 |
| 2 | 0.85 | 0.40 | 0.75 | 0.20 | 2.20 |
| 3 | 0.90 | 0.30 | 0.35 | 0.60 | 2.15 |
| 4 | 0.50 | 0.80 | 0.70 | 0.25 | 2.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, .222 | 0.355 | 偏爱 ↑ |
| B (1) | .304, .182, .140, .356 | 0.246 | ≈ 均匀 |
| C (2) | .174, .341, .163, .311 | 0.247 | ≈ 均匀 |
| D (3) | .130, .091, .279, .111 | 0.153 | 冷落 ↓ |
4.3 合并算 $L_{\mathrm{Bal}}$
(忽略 $\alpha$,只看 $\sum_i f_i P_i$)
| expert | $f_i$ | $P_i$ | $f_i P_i$ | 解读 |
|---|---|---|---|---|
| A | 1.5 | 0.355 | 0.532 | 负载高 + router 偏爱 → 惩罚最重 |
| B | 1.0 | 0.246 | 0.246 | 正常 |
| C | 1.0 | 0.247 | 0.247 | 正常 |
| D | 0.5 | 0.153 | 0.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 aux | aux_loss |
| aux-loss-free bias | --moe-router-enable-expert-bias |
| 场景 | 说明 |
|---|---|
| 训练 | $b_i$ + $L_{\mathrm{Bal}}$ 并存;$\alpha$ 小 |
| 推理 | $L_{\mathrm{Bal}}$ 不参与;$b_i$ 固定 |
参考
- aux-loss-free MoE 路由 — $b_i$、top-$K$ 双轨
- DeepSeek-V3 §4.5.3 — batch-wise vs sequence-wise val loss
- Megatron MoE README