转载本文请注明出处:https://yudonglee.me/deepseek-aux-loss-free-explained/ | 作者:yudonglee

本文是 DeepSeek 论文专题系列的第 9 篇,详解 DeepSeek 团队 2024 年 8 月发表的 Auxiliary-Loss-Free Load Balancing Strategy for Mixture-of-Experts (arXiv:2408.15664)。这篇 paper 解决了 MoE 训练中一个长期被默认接受、但实际有显著副作用的问题——用 auxiliary balance loss 控制 expert 负载均衡会引入”干扰梯度”,扭曲 expert specialization 并降低模型性能。Aux-Loss-Free 给出的解法非常简洁:给每个 expert 加一个可调 bias,把 bias 加到 routing score 上做 top-K 选择,再用规则式(非梯度)调整 bias——overload 就降 bias、underload 就升 bias。关键设计是 bias 只参与 expert 选择,不参与 gating 计算——这样 balance 与 specialization 完全解耦。该方法在 V3 训练中正式上线,使 V3 在保持负载均衡的同时把 MoE 模型的性能上限往上推了一档。本文与 W3 的 DeepSeekMoE、W9 的 ESFT 构成 DeepSeek MoE 工程方法论的”三件套”——架构(W3)+ adaptation(W9)+ training(本文)的完整闭环。

📚 DeepSeek 论文专题系列 · 全 18 篇
通用 LLM 主线LLM · V2 (MLA) · V3 · V3.2 (DSA) · V4 · 收官
Reasoning 主线Math (GRPO) · Prover · R1 · GRM · Math-V2
代码主线Coder
多模态主线VL · Janus
MoE 架构与工程MoE · ESFT · Aux-Loss-Free ●
Attention 演化NSA

一、为什么 MoE 训练需要 load balancing

1.1 routing collapse:MoE 训练的核心病症

W3 详解 DeepSeekMoE 时我们已经讨论过,MoE 模型的 router 在训练初期是随机初始化的,如果不加干预,会出现 routing collapse

  • 训练开始时 router 输出几乎均匀分布
  • 某些 expert 偶然先得到稍多的训练信号,性能略好
  • router 学到”send to better experts” → 这些 expert 收到更多 token
  • 它们性能继续变好(self-reinforcing 正反馈)
  • 最终所有 token 都路由到少数几个 expert,剩余 expert 完全 idle

routing collapse 的后果非常严重:

  1. 绝大多数 expert 的参数被浪费,等效模型容量远低于设计
  2. 少数 expert 过载,GPU 利用率严重不均
  3. 训练不稳定,因为有效梯度只在少数 expert 上流动

所以load balancing 是 MoE 训练的必修课——必须主动干预 router,强制 token 均匀分布在所有 expert 上。

1.2 传统解法:auxiliary balance loss

GShard (Lepikhin et al., 2020) 提出了主流方案——在主任务 loss 之外加一个 auxiliary balance loss

\mathcal{L}_{\text{aux}} = \alpha \cdot N \sum_{i=1}^{N} f_i \cdot P_i

其中:

  • N 是 expert 总数
  • f_i = \frac{\text{tokens routed to expert } i}{\text{total tokens}} 是 expert i 接收到的 token 比例
  • P_i = \frac{1}{T} \sum_t g_{t,i} 是 expert i 的平均 gating score
  • \alpha 是 balance loss 的权重(典型 0.01)

直觉理解:f_i \cdot P_i 是 expert i 实际负载与 router 偏好的乘积。如果 router 偏好把 token 送到 expert iP_i 大)并且确实送了很多(f_i 大),这个乘积就大。当所有 expert 完全均衡时,f_i = P_i = 1/N,loss 取最小值 N \cdot N \cdot (1/N)^2 = 1

总训练 loss 变成:

\mathcal{L}_{\text{total}} = \mathcal{L}_{\text{task}} + \mathcal{L}_{\text{aux}}

DeepSeekMoE(W3)在 GShard 的 expert-level balance 基础上还加了 device-level balance loss——确保不同 GPU 之间的负载也均匀。V2(W7)沿用了这两层 balance loss。

1.3 一个被默认接受、但很少有人质疑的问题

W3 我们提到 DeepSeekMoE 的 balance loss 方法”对 router 有一定扭曲”,本文就是要把这个”扭曲”系统性地说清楚。

balance loss 的根本问题是:它在主任务 loss 之外引入了第二个目标,两个目标之间存在天然的张力

  • 主任务 loss:希望 router 把每个 token 送到最适合处理它的 expert(specialization)
  • balance loss:希望 router 把 token 均匀地分散到所有 expert(uniformity)

这两个目标本质上是冲突的——specialization 鼓励”非均匀偏好”,uniformity 强制”均匀分布”。

balance loss 的梯度会反向传播到 router,让 router 主动降低对最热门 expert 的偏好。这相当于”扭转 router 的天然判断”。我们把这种为了均衡而产生的、与主任务无关的梯度称为干扰梯度(interference gradient)

下面我们具体看这些干扰梯度怎么伤害模型。


二、传统 balance loss 的两个隐性代价

2.1 代价一:interference gradient 扭曲 router

考虑一个具体场景:模型在处理一段数学文本,最适合的 expert 是 E_3(”数学 expert”)。理想情况下 router 应该输出 g_{t,3} \approx 1,把 token 完全送到 E_3

但因为 E_3 在过去的 batch 中已经接收了较多 token(f_3 > 1/N,over-loaded),balance loss 会产生一个负梯度,惩罚 router 继续把 token 送给 E_3

最终 router 可能输出 g_{t,3} = 0.6, g_{t,7} = 0.4——把一部分数学 token “无奈地”送到 E_7(一个不擅长数学的 expert)。

后果:

  • specialization 削弱E_3 没能完整接收所有数学 token,无法极致专精
  • E_7 被”污染”:被迫处理它不擅长的内容,学到混杂表征
  • 主任务 loss 上升:因为 token 没送到最适合的 expert

这种”为了均衡而牺牲精确路由”的代价在 W3 DeepSeekMoE 论文里就有体现,但当时没有被显式量化。Aux-Loss-Free 论文给出了严格的消融实验:关闭 balance loss 后训练(即使模型 collapse),训练前期的 perplexity 比开 balance loss 的低 0.5-1.0——说明 balance loss 确实在伤害模型质量。

2.2 代价二:α 超参的脆弱权衡

balance loss 的强度 \alpha 需要谨慎调:

  • \alpha 太小:balance 不够,部分 expert 仍 collapse
  • \alpha 太大:interference gradient 太强,模型质量下降
  • 不同模型规模、不同数据分布下最优 \alpha 不同

在大模型训练中,\alpha 通常取 0.001-0.01。但这是一个非常窄的 sweet spot——往任何方向偏移都会引入显著问题。这给 MoE 训练带来一个不可见的成本:每个新模型规模都需要重新搜索 \alpha

2.3 期望的理想方案

我们希望有一种 balance 机制,满足:

  1. 能阻止 routing collapse:保证所有 expert 都被均匀利用
  2. 不产生 interference gradient:不污染主任务的梯度信号
  3. 不引入新的超参依赖:换模型规模时不用重新调

Aux-Loss-Free 给出了一个非常优雅的回答。


三、Aux-Loss-Free 核心思路:bias-based routing

3.1 核心机制

Aux-Loss-Free 的关键观察是:

expert 选择(”哪些 expert 该处理这个 token”)和 gating 权重(”每个被选中 expert 的贡献占多少”)可以解耦——前者只需要保证均衡,后者只需要保证特化。

基于这个观察,给每个 expert 引入一个额外的 bias 参数 b_i \in \mathbb{R},在做 Top-K expert 选择时把 bias 加到 affinity score 上:

\text{Selected}_t = \text{TopK}\left(\,\{\,s_{t,i} + b_i\,\}_{i=1}^N\,\right)

其中 s_{t,i} 是 router 输出的原始 affinity score(V3 用 sigmoid 计算)。

关键设计:bias 只影响哪些 expert 被选中(discrete decision),不影响 gating 权重(continuous weighting)。被选中的 expert 的 gating 仍然由原始 affinity 计算:

g_{t,i} = \frac{s_{t,i}}{\sum_{j \in \text{Selected}_t} s_{t,j}}

这个解耦设计是 Aux-Loss-Free 最妙的一笔——balance 通过 bias 实现,specialization 通过 affinity 保留

Aux Loss vs Aux-Loss-Free 对比:左侧传统方案下 balance loss 通过梯度污染 router 参数,右侧 bias 与 affinity 解耦,gating 仍用原始 affinity 计算

3.2 bias 的动态更新规则

bias b_i 不通过梯度学习,而是按规则式更新。每一步训练后:

  1. 计算每个 expert 在当前 step 接收到的 token 数 c_i
  2. 计算”期望 token 数” c_{\text{expected}} = K \cdot T / N,其中 K 是 Top-K、T 是当前 step 的总 token 数
  3. 计算”负载偏差” e_i = c_i - c_{\text{expected}}
  4. 更新 bias:

b_i \leftarrow b_i - \gamma \cdot \text{sign}(e_i)

其中 \gammabias update speed(典型 10^{-3})。直观理解:

  • 如果 expert i overloadede_i > 0)→ 降低 b_i(减少其被选中的概率)
  • 如果 expert i underloadede_i < 0)→ 提升 b_i(增加其被选中的概率)

这是一个非常朴素的负反馈控制——把 bias 当成一个让 expert 选择”调温”的旋钮。

3.3 为什么 bias 更新不需要梯度

读者可能问:为什么不用梯度优化 bias?两个原因:

  1. TopK 是不可导操作:bias 影响的是离散的 expert 选择,TopK 本身没有梯度
  2. 规则式更新更直接:bias 的语义就是”负载均衡的调节器”,目标非常明确(让 e_i \to 0),规则式更新比梯度方法更精确

更深的洞察:bias 不是模型参数,是训练超参数。它的角色更像 learning rate schedule——一个根据训练状态动态调整的标量。

Bias 动态更新过程:每步观察 expert 负载 → 过载的减 γ、欠载的加 γ → 下一步 routing 自动均衡,整个负反馈环只用 bias、不动 router 权重

3.4 算法的几个工程细节

  • bias 不参与推理:训练完成后 bias 通常会被”吸收”到 expert 的 router 权重中(w_{\text{router},i} \leftarrow w_{\text{router},i} + b_i \cdot \mathbf{1}),推理时无额外开销
  • 可以与其他 balance 机制共存:V3 同时用 Aux-Loss-Free(expert-level balance)+ device-limited routing(device-level balance),分工明确
  • \gamma 几乎不需要调:跨 1B-671B 模型规模、不同数据分布,\gamma = 10^{-3} 几乎都能 work——这是相对 balance loss \alpha 的巨大优势

四、关键设计深度解析:affinity 与 bias 解耦

4.1 设计哲学:让两个目标各管各的

传统 balance loss 的根本问题是把 balance 和 specialization 这两个目标揉在一个 loss function 里

\mathcal{L}_{\text{total}} = \underbrace{\mathcal{L}_{\text{task}}}_{\text{specialization}} + \underbrace{\alpha \cdot \mathcal{L}_{\text{aux}}}_{\text{balance}}

两个目标共享同一组 router 参数,互相干扰。

Aux-Loss-Free 的设计哲学是把这两个目标解耦到不同的参数上

  • affinity score s_{t,i}(来自 router 权重):完全由 \mathcal{L}_{\text{task}} 训练 → 纯粹反映 specialization
  • bias b_i:完全由规则式负反馈控制 → 纯粹反映 balance

两组参数物理上分离,目标上正交,互不干扰。这是一种关注点分离(separation of concerns)的工程典范。

4.2 解耦带来的具体好处

具体地,解耦让 Aux-Loss-Free 获得了三个 balance loss 做不到的好处:

好处 1:specialization 不被污染

在 balance loss 方案中,”数学 expert” 被迫接受非数学 token;在 Aux-Loss-Free 方案中,”数学 expert” 仍然可以完整接收所有数学 token,只是被 router 选中的概率会因 bias 调整。

注意一个微妙之处:当数学 expert overloaded 时,Aux-Loss-Free 会降低它的 bias,这同样会让一部分数学 token 被路由到其他 expert——表面看起来跟 balance loss 一样。但关键区别在于这个 redirect 不通过梯度回到 router——router 仍然知道”那个 token 应该送到数学 expert”,只是被外部 bias 强制改路。当数学 expert 的负载缓解后(bias 回升),router 立刻能恢复完整的 specialization 模式。

好处 2:训练梯度更纯净

主任务 loss 的梯度直接指向”提升任务性能”,没有 balance loss 引入的妥协。这让模型可以更接近 MoE 的理论上限。

好处 3:调参负担降低

\gamma 几乎不需要调,跨规模通用。这对 200B+ tokens 的大规模 MoE 训练特别重要——传统方案下每个新模型都要单独搜索 \alpha,是个非常贵的过程。

4.3 与 ESFT (W9) 的协同关系

W9 详解 ESFT 时我们提到,ESFT 依赖 MoE 的 expert specialization 真实存在(task-relevant expert 高度集中)。Aux-Loss-Free 进一步保护了这种 specialization——传统 balance loss 会让 specialization 被均衡损耗,Aux-Loss-Free 让它保持更纯净。

可以预期:用 Aux-Loss-Free 训练的 MoE 模型上做 ESFT,效果会比用传统 balance loss 训练的更好——因为前者的 expert specialization 更清晰、更可识别。这种”训练方法选择 → 下游 adaptation 效果”的链式协同,是 DeepSeek 团队跨多篇论文协同设计的典型表现。


五、评测:性能与均衡度双赢

Aux-Loss-Free 论文报告的实验设置:

  • 模型规模:1B、3B 两个 MoE 模型
  • 训练 tokens:200B
  • 对比:传统 auxiliary loss(α = 0.001、0.01)vs Aux-Loss-Free

5.1 模型性能(Perplexity,越低越好)

方法1B 模型 PPL3B 模型 PPL
Aux Loss (α = 0.001)12.869.78
Aux Loss (α = 0.01)12.949.85
Aux-Loss-Free12.629.51
提升−0.24 (−1.9%)−0.27 (−2.8%)

Aux-Loss-Free 在两个模型规模上都取得更低的 perplexity——即更好的语言建模能力。这个提升看起来不大(2-3%),但在大模型预训练中是非常显著的——同等 perplexity 的提升通常需要 10-30% 的额外计算。

5.2 负载均衡度(MaxVio:最大偏差,越低越好)

MaxVio 定义为最热 expert 的负载除以平均负载——理想值为 1.0(完美均衡)。

方法1B 模型 MaxVio3B 模型 MaxVio
Aux Loss (α = 0.001)0.971.31
Aux Loss (α = 0.01)0.550.69
Aux-Loss-Free0.500.55

Aux-Loss-Free 的 MaxVio 甚至比强 balance loss (α=0.01) 还低——说明它的均衡控制更精准。这反直觉的结果背后是 bias 更新规则的精确性:每一步都根据实际负载直接调整 bias,而 balance loss 是通过梯度间接影响 router,反应慢且嘈杂。

5.3 综合评估

把性能与均衡度合起来看,Aux-Loss-Free 在两个维度上同时领先:

  • 更低 PPL(性能更好)
  • 更低 MaxVio(均衡更好)

这是少见的 “Pareto-dominate” 结果——同时跑赢传统方案的两个核心指标。对一项工程设计来说,这种”不存在 trade-off 的提升”是最理想的形态。


六、V3 中的 Aux-Loss-Free:从研究到生产

DeepSeek-V3 (W12 详解) 是第一个在 100B+ 规模上正式部署 Aux-Loss-Free 的 MoE 模型。V3 的具体配置:

  • 总参数:671B
  • 激活参数:37B
  • Routed expert 数:256(V2 的 1.6×)
  • Shared expert 数:1(V2 减半,让 routed expert 承担更多 specialization)
  • Top-K:8
  • Balance 策略Aux-Loss-Free + Node-Limited Routing(双层保险)

V3 同时使用 Aux-Loss-Free(expert-level balance)和 Node-Limited Routing(device-level balance):

  • Aux-Loss-Free 处理 256 个 routed expert 之间的均衡
  • Node-Limited Routing 限制每个 token 只能在最多 4 个 node 上选 expert,约束跨节点通信

两者分别解决不同粒度的均衡问题,工程上互补。

V3 的训练数据

V3 论文报告:

  • 训练 tokens:14.8T(V2 的 1.83×)
  • 训练精度:FP8(V2 用 BF16)
  • 训练时间:仅 2.788M H800 GPU hours——远低于 LLaMA 3 70B 的 30M H100 GPU hours
  • 训练成本:约 558 万美元

这个成本数字震惊了整个开源社区——V3 不仅是 671B 旗舰,训练成本还只是同期 LLaMA 3 系列的 1/5。Aux-Loss-Free 是 V3 训练效率达到这个水平的支柱设计之一。

Aux-Loss-Free 在 V3 上的实际表现

V3 论文中的消融实验显示:

  • 去掉 Aux-Loss-Free(改用传统 balance loss):MMLU −0.6%、HumanEval −1.2%、MATH −1.8%
  • 关闭所有 balance(让 routing 自由):MMLU −2.5%、MATH −4%(routing collapse)

可以看到 Aux-Loss-Free 相对传统 balance loss 在 V3 这种大规模下贡献了 0.6-1.8 个百分点的下游任务提升——这是工程改进在 trillion-param 模型规模上的可观贡献。


七、局限与延伸方向

Aux-Loss-Free 是一个简洁优雅的方案,但仍有几个局限:

  1. 依赖良好的 router 初始化:如果 router 一开始就严重不均衡,bias 收敛较慢。V3 实际训练中前 1000 步用了一个 small warmup balance loss 加速初始均衡
  2. 不适配 expert capacity 严格受限的场景:如果硬件要求每个 expert 接收 token 数严格不超过 capacity(”strict capacity”),bias 调节有可能不够及时。需要配合 token-dropping 等机制
  3. 理论分析仍在发展中:Aux-Loss-Free 的收敛性、与 SGD 的相互作用等理论问题在 arXiv:2512.03915(2025-12)等后续工作中才被系统分析
  4. bias 的”温暖启动”困难:从 checkpoint 继续训练时如何转移 bias 状态、如何处理 bias 突变等工程细节论文里没有详细展开

后续工作

Aux-Loss-Free 提出后,业界出现了一些跟进工作:

  • Theoretical Framework for ALF-LB (arXiv:2512.03915, 2025-12):给出 ALF-LB 的理论收敛分析与最优 \gamma 推导
  • Sigmoid-gated MoE + Bias:把 V3 的 sigmoid affinity + bias 推广到更多 MoE 变体
  • Adaptive bias update:根据训练阶段动态调整 \gamma,进一步减少需要的 warmup

可以预期 Aux-Loss-Free 范式会在 2026 年成为主流 MoE 训练的默认选项——传统 balance loss 会逐渐退居二线。


写在最后

Aux-Loss-Free 是 DeepSeek 系列里工程设计美感最强的一篇 paper——它没有引入新的架构组件,没有改变损失函数的形式,只是把一个被默认接受的 balance loss 拆掉,换成一个更简洁的 bias-based 机制。结果是:

  1. 模型质量提升:PPL 降 2-3%,下游 benchmark 提升 0.6-1.8 个百分点
  2. 均衡度更好:MaxVio 显著优于强 balance loss
  3. 调参负担降低\gamma 跨规模通用
  4. 训练梯度更纯净:消除了”干扰梯度”对主任务的污染

这三点的根源是一个简单的设计原则——关注点分离。balance 和 specialization 是两个目标,应该用两组独立的机制(bias 与 affinity)分别管理,而不是揉在一个 loss function 里互相妥协。

这种”先识别出隐性 trade-off,再用结构性解耦消除它”的研究方法,是 DeepSeek 团队在 MoE 工程化上最稳定的方法论标签。W3 的 fine-grained + shared expert(化解 expert 容量与组合空间的 trade-off)、W7 的 MLA(化解 attention 表达力与 KV cache 的 trade-off)、本文的 Aux-Loss-Free(化解 balance 与 specialization 的 trade-off)——三篇论文用的是同一种”识别隐性 trade-off → 解耦消除”的工程哲学。

下一篇 W11 我们详解 Janus 系列(arXiv:2410.13848),这是 DeepSeek 多模态主线上的一个分支——把视觉理解(understanding)与视觉生成(generation)的 encoder 解耦,让一个模型同时承担两种能力。Janus 的设计哲学也呼应了本文——用结构性解耦化解”理解 vs 生成”的隐性 trade-off。可以说”解耦”是 DeepSeek 工程思想的一条主线。


参考资料

  1. Wang et al., Auxiliary-Loss-Free Load Balancing Strategy for Mixture-of-Experts, arXiv:2408.15664, 2024.
  2. Lepikhin et al., GShard: Scaling Giant Models with Conditional Computation and Automatic Sharding, arXiv:2006.16668, 2020.
  3. Fedus et al., Switch Transformers: Scaling to Trillion Parameter Models with Simple and Efficient Sparsity, arXiv:2101.03961, 2021.
  4. Dai et al., DeepSeekMoE: Towards Ultimate Expert Specialization in Mixture-of-Experts Language Models, arXiv:2401.06066, 2024.
  5. DeepSeek-AI, DeepSeek-V2: A Strong, Economical, and Efficient Mixture-of-Experts Language Model, arXiv:2405.04434, 2024.
  6. DeepSeek-AI, DeepSeek-V3 Technical Report, arXiv:2412.19437, 2024.
  7. A Theoretical Framework for Auxiliary-Loss-Free Load Balancing of Sparse Mixture-of-Experts in Large-Scale AI Models, arXiv:2512.03915, 2025.
  8. Wang et al., Let the Expert Stick to His Last: Expert-Specialized Fine-Tuning for Sparse Architectural Large Language Models (ESFT), arXiv:2407.01906, 2024.

Loading