这是用户在 2025-7-2 14:01 为 https://fengyao.notion.site/moe-posttraining 保存的双语快照页面,由 沉浸式翻译 提供双语支持。了解如何保存?
🎨
DenseMixer: Improving MoE Post-Training with Precise Router Gradient
免费获取 Notion
🎨 页面图标🎨 页面图标

DenseMixer:通过精确路由器梯度优化 MoE 后训练

冯瑶 ^{\star\dagger} 居欣霞 ^{\star} 张若涵 ^{\star} 刘丽媛 ^{\dagger} 郝世博 李某 董晨宇 王守航 沈叶龙 高建锋 尚景波
^{\dagger} : 项目负责人; ^{\star} : 核心贡献者;(正在开发中)
UCSD, 微软
首次发布于 2025 年 6 月 30 日 | GitHub: DenseMixer

TL;DR

我们介绍了 DenseMixer —— 一种新颖且有效的 MoE 后训练方法,使 MoE 更易于训练并性能更佳。
通过将一个额外的前向传递在不活跃的专家上用于精确路由梯度,DenseMixer 在不同规模的 MoE(7B、14B、30B)、架构(有/没有共享专家)、预训练方法(从头开始/循环使用)和后训练数据类型(指令/长 CoT 数据)中始终优于传统方法。
我们提供了一个即插即用实现,让 MoE 后训练变得简单,只需 pip install densemixer。它与现有库(如 transformers, llama-factory, open-instruct, verl)完全兼容,并支持参数高效的方法(如 LoRA),无需更改推理过程。
图 1 展示了 Qwen3-30B MoE 在常规方法和 DenseMixer 后训练的性能提升。结果显示了解码参数:温度=0.6,top-p=0.95。其他配置下的结果见实证结果部分。

MoE 训练中的问题

MoE 的训练难度远高于密集模型。MoE 唯一的创新是稀疏路由机制——通常通过 Top-K 路由器实现,该机制在数学上不可微分。这一问题阻碍了直接反向传播,并使梯度计算复杂化。我们在技术细节部分详细说明了这一点。

介绍 DenseMixer

为了解决不可微问题,我们引入了用于 MoE 后训练的 DenseMixer,通过在前向过程中减少不活跃专家的计算,实现更精确的路由梯度估计。具体细节见技术细节部分。
DenseMixer 在不同规模的 MoE(7B、14B、30B)、架构(有/无共享专家)、预训练方法(从头开始/循环使用)以及后训练数据类型(指令/长 CoT)中,始终优于传统方法。
它适用于任何使用 Top-K 路由和反向传播的 MoE,可以即插即用,兼容现有训练库(transformers, llama-factory, open-instruct, verl)和参数高效方法(例如 LoRA)。
从传统方法切换到 DenseMixer,只需进行以下更改:
拷贝
# Your current MoE training python your_moe_training_script.py # Shift to DenseMixer (no code changes needed!) pip install densemixer densemixer setup export DENSEMIXER_ENABLED=1 python your_moe_training_script.py
请参见我们的 GitHub 仓库获取更多详细信息。 → DenseMixer

实证结果

我们进行了不同规模、架构和方法的实验,使用相对较短的指令和长推理数据集进行训练。

模型与数据集

我们选取以下三个基础模型进行后训练实验。
型号名称
活动参数
总参数
活跃/总专家数量
共享专家编号
上下文 长度
归一化前 K 概率
它是怎么来的 预训练模型
1B
7B
8 / 64
0
4k
False
从头开始预训练
2.7B
14B
8 / 64
4
8k
False
从循环再造中预训练
3B
30B
8 / 128
0
32k
True
从头开始预训练
对于 OLMoE-1B-7B 和 Qwen1.5-MoE-A2.7B,我们主要采用了 DeepseekAI 最近 ESFT 论文 [Wang et al., 2024] 中的训练和测试数据集。
对于 Qwen3-30B-A3B-Base,我们发现用上述数据训练几乎无法提升,甚至可能降低其下游性能。因此,我们用长推理数据训练,并在需要推理的数学/编程挑战测试中测试它。
在数学领域,我们使用斯坦福 S1 数据集的一个过滤子集进行后训练,该子集包含约 1000 个训练样本,这些样本的推理路径是从 Deepseek-R1 中提炼出来的。
在编码领域,我们使用 Llama-Nemotron-Post-Training-Dataset 的筛选子集进行后训练,该数据集包含约 35K 个训练样本。

Baselines

常规 → 标准 MoE 训练
这是训练 MoE 的默认方法,大多数情况下采用这种方式。在这种方法中,非可微分的 Top-K 操作在自动微分中被视为零梯度。
ESFT → 专家精细调整
ESFT 由 DeepseekAI 提议,通过仅更新特定任务中预选的专家来利用每个专家的专业知识。它有两种变体:(1) ESFT-gate 根据平均评分选择专家;(2) ESFT-token 根据 token 选择率选择专家。专家选择非常微妙,对整体性能影响很大。
冻结路由器,只更新 MoE 中的其他组件。
Frozen Router 是由 Unsloth 在其关于如何微调 Qwen3-MoE 的教程中提出的,基于观察发现路由器训练时往往过于脆弱,因此被冻结。
此外,我们在参数高效微调(PEFT)环境中比较这些方法。其中,LoRA 仅应用于除路由器外的所有模块。由于 ESFT 本身已经是 PEFT 方法,我们没有为其添加 LoRA 版本。

实证结果

对于每种方法,我们对训练超参数(学习率和批量大小)进行网格搜索,并报告最佳性能。更多详细信息请见 Github 仓库。

OLMoE-1B-7B (参数总量 70 亿)

OLMoE-1B-7B 模型的结果如下。
GSM
MBPP
HumanEval
Intent
Law
Summary
Translation
avg
Base Model
15.85
19.80
10.97
0.20
5.70
7.40
11.09
10.14
Frozen Router
44.88
17.8
7.23
72.80
22.50
36.05
28.29
32.79
Conventional
45.94
23.4
18.92
74.60
22.35
35.99
26.89
35.44
DenseMixer
49.00
25.12
20.73
77.40
23.02
40.64
32.55
38.35
Frozen Router -lora
45.03
24.2
17.07
55.80
21.30
37.70
28.19
32.76
Conventional -lora
44.58
24.2
15.85
60.20
21.60
37.30
26.22
32.85
DenseMixer -lora
45.38
26.2
16.48
66.60
24.70
40.80
29.43
35.66
ESFT - gate
43.06
20.8
14.02
21.20
22.39
19.50
17.37
22.62
ESFT - token
43.82
19.6
12.80
20.80
22.60
17.80
16.67
22.01

Qwen1.5-MoE-A2.7B (参数总量 140 亿)

Qwen1.5-A2.7B 模型的结果如下。
GSM
MBPP
HumanEval
Intent
Law
Summary
Translation
avg
Base Model
38.69
38.84
32.31
16.83
18.20
28.29
16.53
27.10
Frozen Router
53.37
35.20
37.10
82.20
33.01
38.29
32.75
44.56
Conventional
53.42
34.60
36.43
81.80
29.25
37.80
33.02
43.76
DenseMixer
55.16
35.40
39.68
83.40
33.83
40.56
33.90
45.99
Frozen Router -lora
46.77
31.40
36.58
71.00
30.30
30.19
28.08
39.19
Conventional -lora
43.89
34.00
38.41
64.80
28.80
37.99
26.14
39.15
DenseMixer -lora
47.24
35.40
38.41
71.80
31.80
40.20
29.25
42.01
ESFT - gate
50.72
34.00
36.59
76.40
27.10
35.89
28.49
41.31
ESFT - token
52.76
35.80
37.20
76.00
28.20
33.39
28.86
41.74

Qwen3-30B-A3B-Base (参数总量 30B)

对于 Qwen3-30B-A3B 模型,我们报告了在三种解码超参数(温度和 top_p)下评估指标,因为长 CoT 评估不稳定。
使用 Nemotron-Code 数据集(35K 训练样本)后训练的检查点结果
temperature & top_p
HumanEval (avg@4)
HumanEval+ (avg@4)
MBPP (avg@1)
LiveCodeBench (avg@4)
avg
Base Model
0.6 & 0.95
65.24
60.06
53.60
16.85
48.94
0.7 & 0.8
62.80
61.12
55.60
16.48
49.00
1.0 & 0.7
62.65
59.14
49.80
13.26
46.21
Conventional
0.6 & 0.95
92.23
86.89
80.80
32.26
67.21
0.7 & 0.8
91.01
85.37
76.80
29.39
65.59
1.0 & 0.7
90.85
86.59
79.00
33.42
67.59
DenseMixer
0.6 & 0.95
93.59
89.02
82.00
34.31
68.80
0.7 & 0.8
91.92
86.89
80.80
31.89
67.32
1.0 & 0.7
93.29
88.87
84.39
34.40
68.99
使用斯坦福 S1 数据集(1000 个训练样本)后训练的检查点结果
温度 & 最优选择
GPQA Diamond (avg@8)
AIME 2024 (avg@32)
AIME 2025 (avg@32)
Olympiad Bench (avg@1)
MATH-500 (avg@1)
avg
Base Model
0.6 & 0.95
38.88
20.63
7.71
34.81
72.80
34.97
0.7 & 0.8
39.89
20.53
8.33
33.92
75.40
35.61
1.0 & 0.7
36.36
18.75
8.75
31.70
68.00
36.20
Conventional
0.6 & 0.95
54.80
61.56
45.63
57.33
93.40
62.54
0.7 & 0.8
54.23
61.67
44.27
55.41
92.20
61.56
1.0 & 0.7
56.55
63.65
46.15
59.11
93.00
63.69
DenseMixer
0.6 & 0.95
58.52
63.85
45.83
58.51
93.60
64.06
0.7 & 0.8
55.80
63.13
45.31
57.18
93.00
62.88
1.0 & 0.7
58.14
62.71
47.50
57.77
93.80
63.98

Findings

广泛的实验结果表明,DenseMixer 在不同规模、架构和预训练方法的 MoE 模型中,以及在多样化的训练和评估数据集上,始终优于传统的 MoE 训练。这种性能优势在全微调和参数高效微调(如 LoRA)方法中都表现出来,并且在不同的生成超参数设置下依然保持稳定。
我们还发现,Frozen Router 有时能超越常规训练,因为常规训练使用不精确的梯度进行端到端的路由训练。然而,它始终不如 DenseMixer 表现好,后者得益于更准确的梯度信号。

技术细节

对于那些对背后的数学和实现方式感兴趣的人,我们提供了问题的详细步骤和解决方案。

核心问题:不可微分的路由

传统方法如何处理这个问题

DenseMixer: 用计算换梯度精度

处理更复杂的情况

效率分析

Memory

在标准的 MoE 训练中,模型权重始终加载到 GPU 上。因此,在这种情况下,DenseMixer 的内存使用几乎没有增加。这一结果通过所有实验的训练日志分析得到了验证。

FLOPs

虽然 DenseMixer 需要在不活跃的专家上额外计算,但时间消耗不会随着活跃专家的数量线性增长。它只需要额外一次前向传递,并且不需要对这些不活跃的专家进行梯度计算和参数更新。
例如,使用 Qwen3-30B-A3B 时,DenseMixer 的 FLOPs 约为传统训练的 1.46 倍(根据此脚本估算)。这代表了理论上的上限,假设没有其他额外开销。实际上,由于通信等额外时间成本,实际减速小于 1.46 倍。此外,在少量数据上进行后训练时,开销变得可以忽略不计。
代码运行结果的详细统计
拷贝
Model Training Cost Analysis -- Conventional Training for Qwen3-30B-A3B Number of parameters: 30,431,444,992 Number of Forward TFLOPs per layer: 16.85 Number of Backward TFLOPs per layer: 33.70 Number of TFLOPs per layer: 50.54 Peak memory cost: 157.93 GBs Model Training Cost Analysis -- DenseMixer Training for Qwen3-30B-A3B Number of parameters: 30,431,444,992 Number of Forward TFLOPs per layer: 40.04 # densemixer increases this Number of Backward TFLOPs per layer: 33.70 # densemixer barely changes this Number of TFLOPs per layer: 73.74 Peak memory cost: 164.96 GBs FLOPs: DenseMixer / Conventional = 1.46x

时间消耗

我们比较了传统方法和 DenseMixer 在使用 deepspeed ZeRO3 并行处理的完整微调设置下的时间消耗。
Training Data num. & epoch
Intent 7K & 3
Law 1K & 3
Summary 19K & 3
Translation 11K & 4
Qwen1.5-MoE (14B - A2.7B)
Conventional
22 min
8.5 min
1.2 h
39 min
Qwen1.5-MoE (14B - A2.7B)
DenseMixer
24 min
9.5 min
1.4 h
45 min
Training Data num. & epoch
Stanford - S1 1K & 5
Nemotron - Code 35K & 1
Qwen3-MoE (30B - A3B)
Conventional
2.8 h
21 h
Qwen3-MoE (30B - A3B)
DenseMixer
3.6 h
28 h

Note

DenseMixer 在 Qwen3-30B-A3B 中引入了更高的开销,比小规模模型更高。但这不代表大规模模型必然放大计算成本。如 Handling More Complicated Cases 部分所述,部分开销来自处理归一化 Top-K 的实现,涉及附加操作,如 detach,这会给 DenseMixer 带来额外开销。
我们相信更高效的实现——例如,使用自定义的 PyTorch autograd 函数 —— 可以进一步降低成本,使 DenseMixer 能够应用于现代 MoEs,同时保持一致的改进和较小的额外开销。

结论与未来研究方向

我们确认,Top-K 路由的不可微分性是实现更有效 MoE 训练的关键障碍。通过在不活跃的专家上进行额外的前向传递,DenseMixer 实现了更精确的路由梯度,显著提升了 MoE 后训练质量,具体表现为下游性能超越了传统 MoE 训练方法。
未来,我们计划将监督微调(SFT)扩展到强化学习(RL),并在参数超过 100B 的更大规模的 MoE 模型上评估 DenseMixer,如 Qwen3-235B-A22B、Llama-4 (109B)和 DeepSeekV3 (675B)。

Citation

拷贝
@misc{yao2025densemixer, title = {DenseMixer: Solving MoE Post-Training with Precise Router Gradients}, url = {https://fengyao.notion.site/moe-posttraining}, author = {Yao, Feng and Cui, Junxia and Zhang, Ruohan and Liu, Liyuan and Hao, Shibo and Zhang, Li and Dong, Chengyu and Wang, Shuohang and Shen, Yelong and Gao, Jianfeng and Shang, Jingbo}, journal = {Feng Yao's Notion}, year = {2025}, month = jun }
这项工作目前处于预览阶段。我们很高兴分享早期成果,并欢迎社区的反馈。我们将继续优化和扩展 DenseMixer 的功能。如果您有任何问题或反馈,请随时联系我们:fengyao@ucsd.edu
Feng Yao
Feng Yao
1 天
虽然所有训练结果都低于基础模型,但与 ESFT 论文中的表 1 一致。