You Only Need 2/3 of the Chosen Experts: An Empirical Study of Dynamic Expert Pruning in Fine-Grained MoE LLMs

论文地址:https://arxiv.org/abs/2609.25809
项目页面:https://github.com/MingZwhy/An-Empirical-Study-on-Expert-Pruning
学术交流群:922230617
目录
[1. 背景:细粒度 MoE 时代,路由冗余到底有多大?](#1. 背景:细粒度 MoE 时代,路由冗余到底有多大?)
[2. 核心结论](#2. 核心结论)
[3. 方法:用 "专家预算" 作为统一坐标系](#3. 方法:用 "专家预算" 作为统一坐标系)
[3.1 路由与剪枝的形式化](#3.1 路由与剪枝的形式化)
[3.2 公平比较的关键:匹配平均专家数 ˉk](#3.2 公平比较的关键:匹配平均专家数 ˉk)
[3.3 模型与任务覆盖](#3.3 模型与任务覆盖)
[4. 发现一:三分之二的专家就够了](#4. 发现一:三分之二的专家就够了)
[4.1 均匀保留 ⌈2K/3⌉ 个专家](#4.1 均匀保留 ⌈2K/3⌉ 个专家)
[4.2 知识能活下来,推理活不下来](#4.2 知识能活下来,推理活不下来)
[4.3 实测加速](#4.3 实测加速)
[5. 发现二:动态分配只在激进剪枝时才值钱](#5. 发现二:动态分配只在激进剪枝时才值钱)
[5.1 保守预算:动态规则几乎打平](#5.1 保守预算:动态规则几乎打平)
[5.2 激进预算:最多 +2.98 点](#5.2 激进预算:最多 +2.98 点)
[5.3 增益集中在生成任务](#5.3 增益集中在生成任务)
[6. 发现三:什么决定了剪枝敏感度?](#6. 发现三:什么决定了剪枝敏感度?)
[6.1 Thinking 模型更抗剪](#6.1 Thinking 模型更抗剪)
[6.2 规模在激进剪枝下才显现](#6.2 规模在激进剪枝下才显现)
[6.3 多模态模型更脆弱](#6.3 多模态模型更脆弱)
[7. 实践建议](#7. 实践建议)
[7.1 用均匀截断确定预算](#7.1 用均匀截断确定预算)
[7.2 评估动态分配的增量价值](#7.2 评估动态分配的增量价值)
[7.3 为紧预算设计分配规则](#7.3 为紧预算设计分配规则)
[8. 一些疑问以及解答](#8. 一些疑问以及解答)
[Q1:论文说的 "以 2K/3 为初始工作点",这个 K 是怎么来的?](#Q1:论文说的 “以 2K/3 为初始工作点”,这个 K 是怎么来的?)
[Q2:发布方的 K 是权衡后的结果,直接砍不会破坏这个权衡吗?发布方做推理评估,为什么没发现更小的 K 也够用?](#Q2:发布方的 K 是权衡后的结果,直接砍不会破坏这个权衡吗?发布方做推理评估,为什么没发现更小的 K 也够用?)
1. 背景:细粒度 MoE 时代,路由冗余到底有多大?
MoE(Mixture-of-Experts)架构已经从 Mixtral 的 2/8 粗粒度路由,演进到 Qwen3-30B-A3B 的 8/128 、Qwen3-Next-80B-A3B 的 10/512。专家池越来越大,每 token 激活的专家数也越来越多,这让 "动态专家剪枝"(根据 token 动态决定执行几个专家)看起来非常有吸引力。
但问题在于:现有剪枝方法的证据几乎都来自粗粒度架构和 likelihood 打分的多选题基准。在细粒度 MoE 上,三个核心问题尚未被系统回答:
-
Q1:细粒度 MoE 的 per-token 专家选择到底有多少冗余?
-
Q2:动态分配相比 "直接降低专家数"(uniform truncation)什么时候才有优势?
-
Q3:什么决定了模型对剪枝的敏感度?
这篇论文用 12 个 checkpoint、9 个架构家族、11 个核心基准(覆盖知识 QA、数学、代码生成、通用推理)做了系统性实证研究。
2. 核心结论

| 维度 | 结论 |
|---|---|
| 冗余度 | 均匀保留约 2/3 的专家,平均保留 98.8% 的性能 |
| 推理加速 | 两个 serving 后端实测 1.2--1.7× 加速 |
| 动态剪枝 | 保守预算下几乎无增益(−0.53 ~ +0.67 点);激进预算下最多 +2.98 点 |
| 敏感度 | 大模型、Thinking 模型更鲁棒;多模态模型更脆弱 |
3. 方法:用 "专家预算" 作为统一坐标系
3.1 路由与剪枝的形式化
MoE 层有 E 个路由专家,router 选出 K 个,按 gate 权重降序排列 w_1 ≥ ⋯ ≥ w_K:

剪枝保留(层 L)子集 S(x,ℓ) 并重新归一化:

-
Fixed-K(均匀截断):所有 token、所有层都保留 top-k,无校准、无动态分配,只改一个整数。
-
动态规则:基于 token 和层的信号,动态决策保留几个专家。
-
共享专家依然处理所有 token。
3.2 公平比较的关键:匹配平均专家数 ˉk
不同规则的阈值不可直接比较(同样阈值在生成任务和 QA 任务上花的预算完全不同)。论文用实测平均激活专家数作为统一坐标:

每个阈值旋钮都离线求解到目标 ˉk(生成 / QA 分别校准),超出目标预算 10% 的配置直接排除。
3.3 模型与任务覆盖
-
核心 4 模型:Qwen3-30B-A3B(K=8)、Qwen3-Next-80B-A3B(K=10)、Ling-lite-1.5(K=6)、GPT-OSS-20B(K=4)
-
扩展 5 架构:MiniMax-M2.7、DeepSeek-V2-Lite、Hy3、DeepSeek-V4-Flash、Gemma 4 26B-A4B
-
单因素对照:Qwen3-Thinking(推理模式)、Qwen3-235B-A22B(规模)、Qwen3-VL-30B-A3B(模态)
-
11 个基准:ARC-Easy/Challenge、WinoGrande、OpenBookQA、AIME-24/25、MATH-500、GSM8K、LiveCodeBench-v6、MMLU-Pro、GPQA-Diamond
4. 发现一:三分之二的专家就够了
4.1 均匀保留 ⌈2K/3⌉ 个专家

在 9 个模型 × 3 个任务族上,均匀保留 ⌈2K/3⌉ 个专家平均保留 98.8% 的性能。27 个 "模型-任务族" 组合中有 6 个甚至持平或超过未剪枝分数(包括两个 Qwen3 模型和 GPT-OSS-20B 的数学与代码推理)。
扔掉权重最低的约 1/3 专家,模型几乎无感。
原因在于 gate 加权混合 + 重归一化:去掉低权重专家后,剩余权重重新集中,去掉 1/3 专家并不等于去掉 1/3 贡献。
4.2 知识能活下来,推理活不下来
预算收紧时,知识 QA 平缓下降,生成式任务先稳后崩:
-
Qwen3-30B-A3B 在 6 专家时,知识 QA 保留 97.5%(低于两个生成任务族);
-
到 2 专家时顺序反转:知识 QA 仍有 60.4%,而数学与代码推理跌到 13.5%。
在 9 个模型中有 8 个,数学与代码推理在激进端是最不鲁棒的 。原因很直观:知识 QA 是短答案打分,而推导/程序需要逐步依赖前文,局部扰动会沿生成链累积放大。
4.3 实测加速
| 模型 | 原生 K | 剪枝 ˉk | ρ | vLLM prefill | vLLM decode | HF prefill | HF decode |
|---|---|---|---|---|---|---|---|
| Qwen3-30B-A3B | 8 | 5 | 0.63 | 1.15× | 1.18× | 1.26× | 1.70× |
| Qwen3-Next-80B | 10 | 6 | 0.60 | 1.25× | 1.65× | 1.31× | 1.73× |
| Ling-lite-1.5 | 6 | 4 | 0.67 | 1.21× | 1.38× | 1.21× | 1.52× |
| GPT-OSS-20B | 4 | 3 | 0.75 | 1.25× | 1.23× | 1.24× | 1.44× |
**注意:**Fixed-K 让每个 token 专家数一致,GEMM 形状统一,容易高效服务;动态规则给每个 token 不同的 kk,在匹配平均预算下更难高效部署。
5. 发现二:动态分配只在激进剪枝时才值钱
论文在 vLLM 上统一复现了 4 种已发表规则:
| 规则 | 决策依据 | 层预算 | 需校准 | k_min | 旋钮 |
|---|---|---|---|---|---|
| Fixed-K | 固定 k | ✗ | ✗ | --- | k |
| NAEE | gate 权重相对 top-1 的比例 | ✗ | ✗ | 2 | β |
| DynROUTE | 累计保留概率质量 | ✗ | ✗ | --- | p |
| DiEP | top-1 比例 × 专家相似度 | ✗ | ✗ | 2 | β |
| BAN | 层敏感度 + token 敏感度 | ✓ | ✓ | 3 | λ |
5.1 保守预算:动态规则几乎打平
在 4 个核心模型上,最佳动态规则相对 Fixed-K 的边际为 −0.53 ~ +0.67 点,平均仅 +0.06。
含义 :Figure 2 发现的冗余已经吃掉了大部分空间,给每个 token 相同的缩减专家数就能匹配最好的规则。动态分配的复杂度在保守预算下赚不回来。
5.2 激进预算:最多 +2.98 点

| 模型 | 激进预算 k | 最佳规则 | 相对 Fixed-K |
|---|---|---|---|
| Qwen3-30B-A3B | 3 | BAN | +2.45 |
| Qwen3-Next-80B | 4 | BAN | +2.71 |
| Ling-lite-1.5 | 2 | BAN | +2.98 |
| GPT-OSS-20B | 2 | DynROUTE | +0.90 |
而且赢家会随模型和预算变化:Qwen3-30B-A3B 保守预算下 DynROUTE 最好,激进预算下 BAN 最好;BAN 在 4 个模型中的 3 个拿下激进预算最佳。
5.3 增益集中在生成任务
以 Qwen3-30B-A3B 激进预算为例,BAN 在 7 个生成数据集上平均 +3.17 点,而 4 个知识 QA 只有 +1.20 点。MATH-500 从 80.2 → 88.0,LiveCodeBench 从 25.7 → 28.6。
GPT-OSS-20B 上更极端:DynROUTE 把 LiveCodeBench 从 48.0 拉到 62.5(+14.5 点),而整套平均只提升 0.90 点------因为其他数据集在这个预算下已接近未剪枝分数。
方法论警示 :只用 likelihood 打分的多选题评估剪枝,会同时低估剪枝的代价 和动态分配的价值。
6. 发现三:什么决定了剪枝敏感度?
6.1 Thinking 模型更抗剪


Qwen3-30B-A3B-Thinking vs Instruct,在 4 个最难的生成数据集上:
-
在 8 到 5 专家区间,Thinking 与 Instruct 的差距较小;
-
到 4 专家,Thinking 领先 2.7点;
-
到 3 专家,领先扩大到 5.1点。
Thinking 模型平均输出 8.9k token(Instruct 为 3.7k),更长的生成 + 更好的保留率,优势恰好出现在第 4 节认为最脆弱的能力上(数学与代码推理)。
6.2 规模在激进剪枝下才显现
Qwen3-235B-A22B vs Qwen3-30B-A3B:
-
在 8 到 5 专家区间:大模型无优势;
-
4 专家:大模型领先 2.5 点;
-
3 专家:大模型保留 76.7% ,小模型保留 62.3% ,差距 14.4 点。
同样,优势集中在数学/代码/通用推理,知识 QA 无对应增益。
6.3 多模态模型更脆弱



Qwen3-VL-30B-A3B vs Qwen3-30B-A3B(各 9 个数据集):
-
在 8 到 4 专家区间:曲线差距在 1 点以内;
-
3 专家:多模态落后 11 点;
-
2 专家:差距扩大到 42 点。
路由统计给出了解释:记录全部 48 个 MoE 层的 128 维 softmax(top-K 之前):
| 指标 | 文本模型 | 多模态模型 |
|---|---|---|
| 选中 8 专家占 128 维 softmax 总质量 | 44.3% | 15.5% |
| 前 3 专家占选中 8 专家的权重 | 59.8% | 49.8% |
| 截断到 3 专家丢弃的选中权重 | 40.2% (1-59.8%) | 50.2% (1-49.8%) |
多模态模型的路由分布更平坦,同样的保留专家数会丢掉更大比例的权重。对 1000 个样本进行 bootstrap 后,top-8 质量的差距为 -26.0 点,95% 置信区间为 -31.1, -21.2;在多模态模型中,路由器的熵值高出 0.70 nats,置信区间为 +0.54, +0.85。
7. 实践建议
论文把建议整理为三步:
7.1 用均匀截断确定预算
-
以 ⌈2K/3⌉ 为初始工作点,只改一个路由参数;
-
逐步降低 k,画出性能曲线,观察模型在哪里开始掉点;
-
如果业务涉及推导、程序、开放式回答,必须跟踪完整生成,不能只看 likelihood QA。
7.2 评估动态分配的增量价值
-
在均匀截断开始明显退化的预算上,测量动态规则相对 Fixed-K 的边际;
-
BAN 和 DynROUTE 是值得先试的候选(Table 3 中多数获胜配置来自它们);
-
比较的基础是实测平均激活专家数 ˉk,不是阈值本身;换模型/负载时要重新测量并校准。
7.3 为紧预算设计分配规则
-
激进预算下最强结果来自跨深度分配预算(layer sensitivity);
-
路由信号要结合目标模型解读:同样保留数在多模态和文本模型上保留的权重份额不同;
-
阈值参数化方式决定跨架构可迁移性:相对 top-1 的比值 会随 router 宽度漂移(top-2 时 top-1 占大头,top-10 时只占小头),而累计保留质量、per-rank 统计跨宽度保持含义;
-
别忘了 kernel 支持:分配本身的开销要足够低,质量提升才能转化为实际推理收益。
8. 一些疑问以及解答
Q1:论文说的 "以 2K/3 为初始工作点",这个 K 是怎么来的?
K 不是论文设定的超参,而是模型原生的每 token 路由专家数(native top-K),直接读模型配置即可。论文符号区分很明确:
-
K:模型 router 原生每 token 选多少个 routed experts;
-
k:剪枝后实际保留的 routed experts 数;
-
ρ = k/K:保留比例;
-
n_s:共享专家,每个 token 都过,不计入 routed expert 预算。
所谓 "2K/3 初始工作点",就是先读出原生 K,再把每 token 保留数降到约 2K/3 的整数:
2/3 也不是理论最优,而是论文在 9 个模型、3 个任务族上做均匀预算扫描后得到的经验起点:该点平均保留 98.8% 的未剪枝性能。论文建议的流程是:读原生 K → 从约 2K/3 开始 → 逐步降低 k 画性能--预算曲线 → 按业务可接受损失决定最终 k → 进入激进区间后再考虑动态分配。
Q2:发布方的 K 是权衡后的结果,直接砍不会破坏这个权衡吗?发布方做推理评估,为什么没发现更小的 K 也够用?
这两个问题要一起回答,因为核心在于:K 是训练时的容量选择,k 是推理时的算力预算,两者不是同一个优化问题。
1)发布方的 K 是 "训练时固定 K" 约束下的权衡
Top-K router 对所有 token 一视同仁,不管 gate 分数是尖峰还是平坦都执行 K 个。K 在训练时固定,影响的是专家分工、负载均衡、容量因子、训练并行和 kernel 形状。
发布方选 K 的目标是 "训练出质量最高的模型",不是 "替每个部署场景找最省算力的推理配置"。
2)训练时用小 K ≠ 训练大 K 再剪枝
论文没有做 "用小 K 重新训练" 的对照,所以不能推断 "发布方本可以用 2K/3 训练"。训练时 K 一变,router 分布、专家 specialization、容量因子都会变,模型可能学不到大 K 模型的容量。
剪枝是在已经学好的大 K 模型上回收冗余,两者不等价。MoE 本身就是容量与计算解耦,剪枝是把这种解耦再往前推一步:训练时买容量,推理时按预算花算力。
3)"直接砍" 确实会破坏权衡,只是平均破坏很小
论文自己就显示不是无损:平均保留 98.8% 是 9 模型 × 3 任务族的平均;Qwen3-30B-A3B 在 k=5 时 MATH 从 89.6 升到 91.0,但 ARC-c 从 60.8 掉到 54.9;激进端数学与代码推理在 9 个模型里 8 个最不鲁棒。
所以论文的建议是先 2K/3 再逐步扫描,不是无脑砍。
4)发布方做的是 "默认配置能力评估",不是 "跨预算扫描"
发布方的推理评估通常在原生 K 下测模型有多强,目标是报告能力上限;论文做的是系统改变 k、画性能--预算曲线,回答 "更低算力下还能保留多少"。两者不矛盾,后者也不是前者的自然推论:
-
发布指标是最强能力,不是最优性价比:默认配置不主动降质,类似发布全精度模型、部署时再量化;
-
评估协议可能掩盖问题:论文 §5.3 指出 likelihood-scored QA 会同时低估剪枝代价和动态分配价值;论文 11 个基准里 7 个是生成式,才暴露出 "知识 QA 平缓、生成任务先稳后崩";
-
单点评估 vs 预算扫描:不扫 k=1...K 整条曲线,结构性问题不会自己浮现;
-
服务效率是另一层约束:Fixed-K 让专家 GEMM 形状统一,容易高效服务;动态 k 在匹配平均预算下更难高效部署。发布方优先保证开箱即用的吞吐,把剪枝留给部署方按后端适配,是工程上的合理选择。
**总结:**K 是训练时为了学出好模型而定的,k 是推理时为了匹配算力预算而定的;"直接砍"不是否定发布方的权衡,而是在部署维度上做再权衡。论文量化的是这个再权衡的空间有多大、什么时候会真的破坏质量。