MoRE: Mixture of Reused Experts

论文地址:https://arxiv.org/abs/2609.18176
项目页面:https://github.com/EricQiu6/MoRE
学术交流群:922230617
目录
[1. 引言](#1. 引言)
[2. 背景:标准 MoE 的结构瓶颈](#2. 背景:标准 MoE 的结构瓶颈)
[3. MoRE 方法:共享专家池 + 独立路由 + 深度embedding](#3. MoRE 方法:共享专家池 + 独立路由 + 深度embedding)
[3.1 Reuse Block:相邻层共享专家池](#3.1 Reuse Block:相邻层共享专家池)
[3.2 Depth Embedding:让共享专家知道 "我在第几层"](#3.2 Depth Embedding:让共享专家知道 “我在第几层”)
[4. 实验结果:PPL 与下游任务全面领先](#4. 实验结果:PPL 与下游任务全面领先)
[4.1 实验设置](#4.1 实验设置)
[4.2 验证 PPL](#4.2 验证 PPL)
[4.3 下游任务](#4.3 下游任务)
[5. 消融与分析:为什么 R=2、为什么相邻层共享有效](#5. 消融与分析:为什么 R=2、为什么相邻层共享有效)
[5.1 Reuse Factor R](#5.1 Reuse Factor R)
[5.2 路由分析与系统表现](#5.2 路由分析与系统表现)
[6. 局限性](#6. 局限性)
1. 引言
在标准 MoE 中,每层维护独立专家池,层与层之间不能复用专家。MoRE 将相邻若干层的 FFN 专家参数共享 ,形成一个 "reuse block"。每层仍然保留自己的 Router,并额外加入一个可学习的 depth embedding,让共享专家知道当前处于哪一层。
主要结论:
-
不增加总参数量:MoRE 通过权重绑定复用相邻层专家,物理专家总数与基线 DeepSeek-v3 对齐。
-
路由组合空间组合式扩大 :若标准 MoE 每层有 N 个专家、Top-K 路由,则组合数为 C_N^K;MoRE 每层从 R⋅N 个共享专家中选 Top-K,组合数变为 C_{R·N}^K。论文举例:N=32,K=4,R=2 时,组合数从 35,960 增至 635,376,约 18 倍。
-
允许跨层专家复用:相邻层可以路由到同一个专家,这是标准 MoE 结构上做不到的。
-
实验全面领先:在 114M--1.15B 三个尺度上,MoRE 的验证 PPL 均低于 DeepSeek-v3、Dense 和 MoEUT;下游 OLMo3 任务宏平均也最佳。
-
工程改动极小:只需相邻层专家权重绑定 + 每层一个 depth embedding,不需要自定义归一化、门控或训练稳定技巧。

图 1:架构对比。
- 上图:标准MoE,各层拥有大小为 N 的专家池。
- 下图:MoRE,复用因子 R=2,相邻层共享一个包含 2N 个专家的池。每层保留其自身的路由矩阵 W_ℓ,并在路由前接收可学习的深度embedding d_ℓ。
- 颜色表示哪些层共享专家参数。
2. 背景:标准 MoE 的结构瓶颈
标准 MoE 用 Router 为每个 token 选择 Top-K 个专家 FFN,从而在不大幅增加计算量的情况下扩大模型容量。但论文指出一个结构性限制:
每层专家池是独立的,Router 只能从本层专家中选择。
这带来三个问题:
-
路由空间受限:每层只有 C_N^K 种专家组合。想扩大组合空间,只能增加专家数量,导致参数量线性增长。
-
相邻层重复学习:浅层功能相似,却要各自学习冗余专家,浪费参数容量。
-
无法跨层复用专家:标准 MoE 中,同一专家不可能在连续两层被同一 token 选中。
已有权重共享架构如 Universal Transformers、MoEUT 能提升参数效率,但 MoEUT 需要 sigmoid gating、Switch Head、自定义 normalization 等复杂修改。MoRE 希望保留标准 MoE 的训练简单性,只做最小结构改动。
3. MoRE 方法:共享专家池 + 独立路由 + 深度embedding
3.1 Reuse Block:相邻层共享专家池
定义复用(reuse)因子 R:一个专家池被 R 个相邻层共享。论文默认 R=2。
对于每个 reuse block b,构造共享的专家池:

注意:
-
只共享 FFN 专家参数;
-
attention 权重、Router 权重、depth embedding 仍然层特定;
-
总唯一专家数不增加,只是每层可访问的池子变大;
-
每层 Router 输出维度变为 (R⋅N)×d。
伪代码理解:
python
# 一个 reuse block 内,R 层共享同一组专家参数
experts = [E_b1, E_b2, ..., E_b{R*N}]
for layer_l in block:
x = x + d_l # 加入 depth embedding
logits = W_l @ x # 每层独立 Router
topk = TopK(logits, K)
gates = softmax(logits[topk]) # 对 Top-K logits 整体做 softmax
y = sum(gates[i] * experts[topk[i]](x) for i in range(K))
3.2 Depth Embedding:让共享专家知道 "我在第几层"
因为专家参数被多层共享,专家本身无法区分当前是哪一层在调用它。MoRE 在路由前加入可学习深度向量:

然后 Router 和共享专家都接收 x′_ℓ:

作用分工:
-
Router 决定选哪些专家;
-
Depth embedding 调整专家如何处理输入,让同一组权重在不同深度稍微 specialization;
-
加法形式非常轻量,参数和计算开销可忽略。
4. 实验结果:PPL 与下游任务全面领先
4.1 实验设置
主干:DeepSeek-v3;
基线:DeepSeek-v3 标准 MoE、DeepSeek Dense、MoEUT;
数据:C4,约 6.55B tokens,上下文 1024,batch size 64,vocab 8000;
尺度:Small / Medium / Large,MoE 模型约 114M / 369M / 1.15B;
专家维度 d_FFN=128;
MoRE 使用 R=2,每层分配 2N 专家,使物理专家总数与 DeepSeek-v3 对齐;
统计检验:paired bootstrapping,B=10,000,α=0.05。
4.2 验证 PPL

| 尺度 | 模型 | 参数量 | FLOPs | PPL |
|---|---|---|---|---|
| Small | MoEUT | 118M | 100B | 16.94 |
| Small | Dense | 80M | 108B | 16.30 |
| Small | DeepSeek | 114M | 104B | 15.98 |
| Small | MoRE | 114M | 104B | 15.89 |
| Medium | MoEUT | 369M | 164B | 14.69 |
| Medium | Dense | 116M | 152B | 15.34 |
| Medium | DeepSeek | 369M | 151B | 13.53 |
| Medium | MoRE | 369M | 151B | 13.40 |
| Large | MoEUT | 1.15B | 438B | 12.78 |
| Large | Dense | 356M | 438B | 13.07 |
| Large | DeepSeek | 1.15B | 424B | 11.88 |
| Large | MoRE | 1.15B | 424B | 11.75 |
结论(论文的表格不够直观,调整了一下排布):
- 三个尺度上 MoRE 都取得最低 PPL。
- 论文还从 "匹配物理专家数" 角度比较,MoRE 同样更高效,且专家数越大差距越明显(最大专家数时 13.97 vs. 14.07)。

另外,Figure 2 显示在 1.15B 模型上,MoRE 在相同训练 token 数下 PPL 持续低于 DeepSeek;Figure 3 显示相对改进不随模型规模增大而消失。
4.3 下游任务

在 OLMo3 下游评测集上,MoRE 在三个尺度均为宏平均最佳:
- MoRE 在 LAMBADA、HellaSwag、SciQ 等受益于语言建模能力的任务上提升明显。
- 整体上,PPL 优势能转化为下游准确率提升,且共享专家权重没有牺牲世界知识容量。
5. 消融与分析:为什么 R=2、为什么相邻层共享有效
5.1 Reuse Factor R
在 114M、18 层、40k steps 设置下:

所有 R≥2 都优于 DeepSeek,但 R>2 收益递减,且彼此差异不显著。论文默认选 R=2:
-
兼容大多数偶数层 Transformer;
-
专家池扩展最温和,缓解大规模专家数带来的负载均衡和路由坍塌问题。

Depth Embedding 与共享策略:
-
Depth embedding 去掉后 PPL 从 18.71 升到 18.76,说明轻量深度信号有用;
-
连续块共享 A-A-B-B-C-C 最好,非对齐和随机共享都更差,说明 "共享参数怎么排" 很重要;
-
CKA 分析显示相邻层表示相似度最高:距离 1 约 0.91,距离 2 约 0.83,随后逐渐衰减。这解释了为什么相邻层共享专家更合理。

5.2 路由分析与系统表现
MoRE 确实发生了跨层专家复用,而且比随机水平高得多。
论文统计了 1.15B 模型在 C4 验证集上的路由行为:
-
如果专家选择是随机的,相邻层选中同一个专家的概率约为 K/N。MoRE 的随机基线是 7/139≈5.0%,但实际复用率达到 10.3%,约为随机水平的两倍。
-
作为对比,DeepSeek 标准 MoE 的随机基线是 7/69≈10.1%,实际复用率反而只有 8.35%,低于随机水平。
-
这种复用主要集中在浅层,越深越弱,说明浅层更倾向于复用通用专家,深层更特化。
Figure 4 的热图辅助展示了这一点:MoRE 在相邻共享层出现水平条纹,表示同一专家在共享层被类似频率激活。


系统表现:
-
内存:MoRE 与 DeepSeek 基本相当,因为复用已有专家参数而非新增专家;
-
吞吐:naive HuggingFace MoE 实现用 Python for-loop 遍历专家,MoRE 因每层专家数 2× 而明显变慢;使用 SonicMoE 后,MoRE 达到 DeepSeek 约 96% 吞吐;
-
论文明确说未针对大规模训练效率做系统优化,专家并行、负载均衡路由等是正交方向。

泛化验证:
- 论文还在 Qwen3MoE、Mixtral 上实现 MoRE,并在 FineWeb 上验证
- 114M 规模下 PPL 均有改善,说明方法不只适用于 DeepSeek-v3 主干和 C4 数据。
6. 局限性
-
最大验证到 1.15B,100B+ 极大规模行为未知;
-
最优 R 可能随模型深度/规模变化;
-
只共享 FFN 专家,未共享 attention;
-
未深入优化专家并行和分布式负载均衡;
-
depth embedding 是加性轻量信号,不允许共享专家在层间行为差异过大。