Not All Experts are Equal: Efficient Expert Pruning and Skipping for Mixtu 论文精读:MoE 模型中,所有专家真的同等重要吗?
2026/7/24 20:54:39 网站建设 项目流程

传统稠密大语言模型通常在每个 Transformer 层中使用一个完整的前馈网络。Mixture-of-Experts,简称 MoE,则将前馈网络替换为多个相互独立的专家,并由路由器为每个 Token 选择少量专家参与计算。

这种设计减少了每个 Token 实际激活的参数量,但也带来了一个新的部署问题:

虽然每个 Token 只计算少数专家,所有专家的参数仍然必须被加载到显存中。

《Not All Experts are Equal》提出两种互补的方法:

  • 专家剪枝:永久删除作用较小的完整专家,主要减少模型参数量和显存占用;

  • 动态专家跳过:推理时根据路由权重,临时跳过贡献较小的已选专家,主要减少单个 Token 的实际计算量。

这篇论文最大的特点,是没有继续剪单个权重,而是直接利用 MoE 模型已有的模块化结构,在专家粒度上进行压缩。


一、论文基本信息

项目内容
论文题目Not All Experts are Equal: Efficient Expert Pruning and Skipping for Mixture-of-Experts Large Language Models
主要方法Post-training Expert Pruning、Dynamic Expert Skipping
作者Xudong Lu、Qi Liu、Yuhui Xu、Aojun Zhou、Siyuan Huang、Bo Zhang、Junchi Yan、Hongsheng Li
会议ACL 2024 Main Conference Long Papers
页码6159–6172
DOI10.18653/v1/2024.acl-long.334
主要模型Mixtral 8x7B、Mixtral 8x7B Instruct
官方代码Lucky-Lance/Expert_Sparsity

论文发表于 ACL 2024 长文,官方代码支持逐层专家剪枝、渐进式专家剪枝和动态专家跳过,并提供 C4、MATH 校准数据以及 LM Evaluation Harness 的评估流程。(ACL 论文集)


二、为什么 MoE 模型还需要剪枝

2.1 激活参数少,不代表模型存储小

Mixtral 8x7B 每个 MoE 层包含 8 个专家。对于每个 Token,路由器只选择其中得分最高的两个专家参与计算,因此它的单 Token 活跃参数远少于全部参数。

但是,推理系统仍然需要存储所有专家。论文指出,Mixtral 8x7B 总参数约为 47B,其中专家参数约为 45B,占全部模型参数的约 96%。使用 BF16 加载原始模型,论文的实验环境需要两张 A100 80GB GPU。

因此,MoE 实际上同时存在两种参数概念:

参数类型含义
总参数部署时必须加载的全部专家和共享参数
活跃参数一个 Token 前向传播时真正参与计算的参数

MoE 减少的主要是活跃参数,但模型存储、显存占用和专家加载开销仍由总参数决定。


2.2 不同专家的作用并不完全相同

如果每个专家都同样重要,那么删除任何一个专家都会造成明显损失。

但实际训练中:

  • 不同专家接收到的 Token 数量不同;

  • 不同专家学习到的领域知识不同;

  • 某些专家可能高度专业化;

  • 某些专家之间可能存在功能重叠;

  • 部分专家可能训练不足或贡献较小。

论文因此提出:

与其在所有专家内部平均删除权重,不如直接找出贡献较低的完整专家并将其移除。

这种做法更加符合 MoE 的模块化特征。


三、首先理解 Mixtral 的专家路由

在 Mixtral 8x7B 的每个 MoE 层中,路由器会为当前 Token 计算 8 个专家的路由分数,然后选择其中最高的两个专家。

假设路由器选择了专家 A 和专家 B:

  • 专家 A 的权重较高;

  • 专家 B 的权重较低;

  • 两个专家分别处理同一个 Token;

  • 最终输出是两个专家输出的加权和。

因此,原始 Mixtral 对每个 Token 都会计算两个专家,而不是从 8 个专家中只运行一个。

论文的两个方法分别从不同角度改造这一过程:

专家剪枝

原来每层有 8 个可选专家,剪枝后可能只剩 6 个或 4 个,但每个 Token 通常仍从剩余专家中选择两个。

动态专家跳过

每层可以继续保留原有专家,但当第二个专家的路由权重明显小于第一个专家时,只运行第一个专家。

这两种方法处理的是两个不同问题。


四、专家剪枝和动态跳过有什么区别

对比维度专家剪枝动态专家跳过
专家是否永久删除
是否减少模型参数
是否减少模型文件
是否降低显存占用基本不降低
是否减少每 Token 活跃专家数通常不减少
决策时间部署前离线决定推理时逐 Token 决定
主要目标降低存储和显存降低实际计算量
是否可同时使用可以可以

论文明确指出,单独的专家剪枝虽然减少了总参数,但每个 Token 仍然会被路由到两个专家,所以理论上的每 Token MoE FLOPs 并没有同步减少。专家剪枝的速度收益主要来自更少的 GPU、通信开销和更好的内存局部性;动态跳过才直接减少了部分 Token 的活跃专家数量。


五、方法一:后训练专家剪枝

5.1 核心思想

专家剪枝的基本目标是:

找出一组专家,使删除其他专家后,当前 MoE 层的输出尽可能接近原始输出。

这里并不是简单统计哪个专家被路由得最少,也不是比较专家权重大小,而是直接测量删除一组专家后,MoE 层输出发生了多大变化。

因此,它本质上是一种层输出重构方法


5.2 第一步:准备校准数据

对于通用任务,论文从 C4 中抽取校准样本。

默认实验将文本整理为:

  • 128 个序列;

  • 每个序列包含 2048 个 Token。

然后使用完整的原始模型执行前向传播,并缓存每一个 MoE 层的:

  • 输入特征;

  • 原始输出特征。

这些缓存结果相当于每个 MoE 层剪枝时的参考答案。


5.3 第二步:枚举专家组合

假设每层原来有 8 个专家,希望最终保留 6 个。

算法会枚举所有“从 8 个专家中选 6 个”的组合。对于每一种组合:

  1. 暂时删除其他两个专家;

  2. 删除与这些专家对应的路由分支;

  3. 使用缓存的层输入重新执行该 MoE 层;

  4. 比较剪枝后输出和原始输出之间的差异。

输出差异最小的专家组合会被保留。

如果希望每层只保留 4 个专家,就枚举所有“8 选 4”的组合,并选择重构误差最低的一组。


5.4 为什么可以直接枚举

对于 Mixtral,每层只有 8 个专家。

保留 6 个时,只需要测试 28 种组合;保留 4 个时,需要测试 70 种组合。这个搜索空间并不算大,因此可以直接穷举。

论文报告,Mixtral 8x7B:

  • 保留 6 个专家的剪枝约需 30 分钟;

  • 保留 4 个专家的剪枝约需 90 分钟。

整个任务无须更新模型参数,也不需要剪枝后微调。


5.5 为什么逐层独立剪枝

论文采用的是layer-wise pruning

  • 每一层都使用原始模型缓存的输入和输出;

  • 每一层独立搜索自己的最佳专家组合;

  • 最后将所有剪枝后的 MoE 层重新组合成完整模型。

这种方式速度较快,也避免了前面层剪枝误差持续影响后面层的搜索。

论文还测试了渐进式方法:先剪第一层,再使用已经剪过的模型继续搜索下一层。渐进式搜索在保留 6 个专家时略好,但在只保留 4 个专家时反而更差,作者推测可能是小规模校准数据上的逐层过拟合。


六、为什么不能直接根据路由频率剪专家

一个非常自然的思路是:

哪个专家被路由器选择得最少,就删除哪个专家。

论文将这种方法称为 Frequency 基线。

但实验发现,基于激活频率的专家剪枝表现甚至经常低于随机剪枝。

原因可能是:

1. 调用频率不等于不可替代性

一个专家可能很少被调用,但它专门处理某类困难或少见输入。删除后,模型在这些样本上的能力会明显下降。

2. 高频专家之间可能高度冗余

两个专家可能经常被调用,但功能高度相似。保留所有高频专家未必是最好的组合。

3. 专家作用需要联合判断

删除专家 A 是否安全,可能取决于专家 B、C 是否仍然存在。单独给每个专家排一个频率分数,无法表达专家之间的互补关系。

4. 重构误差更接近实际影响

论文的方法直接回答:

删除这一组专家后,当前层输出变化多大?

这比“专家被调用多少次”更加接近最终剪枝目标。


七、为什么每层删除的专家不一样

专家剪枝不是从整个模型中选择两个专家并全局删除,而是每个 MoE 层独立保留不同的专家组合

例如:

  • 第 1 层可能保留专家 0、1、2、4、5、7;

  • 第 2 层可能保留专家 0、2、3、4、6、7;

  • 第 3 层可能又是另一种组合。

因为不同层承担的功能不同,同一个专家编号在不同层中也不是同一个网络,更没有必要强制所有层删除相同编号的专家。

这种逐层选择方式保留了更大的灵活性,但也意味着剪枝后仍然是一个层间异构的 MoE 模型。


八、通用专家剪枝的实验结果

论文在 Mixtral 8x7B 和 Mixtral 8x7B Instruct 上评估了 8 个零样本任务:

  • ARC-Challenge;

  • ARC-Easy;

  • BoolQ;

  • HellaSwag;

  • MMLU;

  • OpenBookQA;

  • RTE;

  • WinoGrande。

主要平均结果如下。

模型每层保留专家数零样本平均准确率相对原模型变化
Mixtral 8x7B867.58
Mixtral 8x7B664.22-3.36
Mixtral 8x7B459.57-8.01
Mixtral 8x7B Instruct869.98
Mixtral 8x7B Instruct667.45-2.53
Mixtral 8x7B Instruct463.88-6.10

从两个模型平均来看,论文将其概括为:

  • 删除两个专家,平均下降约 2.9 个百分点;

  • 删除四个专家,平均下降约 7.1 个百分点。

这些结果是在没有额外训练的情况下获得的。


8.1 删除两个专家是比较合理的折中

每层从 8 个专家减少到 6 个时:

  • 专家参数减少约四分之一;

  • 整体零样本性能只出现约 2.5~3.4 个百分点下降;

  • 原本需要两张 A100 80GB 的 BF16 模型可以装入一张 80GB GPU;

  • 论文测得约 1.2 倍 Token 生成加速。

因此,保留 6 个专家是论文中更平衡的配置。


8.2 删除四个专家压缩更大,但损失明显

保留 4 个专家意味着每层永久删除一半专家。

模型实际内存从论文统计的 89,926 MB 降至 46,879 MB,约为原始模型的 52%。但零样本平均准确率下降约 6~8 个百分点。

这说明专家之间确实存在冗余,但不能认为“一半专家完全没有作用”。


九、与 Wanda 2:4 权重剪枝的比较

论文将每层保留 4 个专家的方案,与 Wanda 2:4 半结构化权重剪枝进行比较。两者都能够移除大约一半的专家相关参数,但形成的模型结构完全不同。

方法删除对象是否保留专家完整性是否依赖稀疏内核
Wanda 2:4每 4 个权重删除 2 个
专家剪枝 r=4每层删除 4 个完整专家不需要特殊权重稀疏内核

实验中,专家剪枝在两个 Mixtral 模型上的平均任务性能均优于 Wanda 2:4。

模型Wanda 2:4专家剪枝 r=4
Mixtral 8x7B57.5159.57
Mixtral 8x7B Instruct62.8063.88

Wanda 的实测速度反而低于原始模型,约为 0.91~0.92 倍;专家剪枝 r=4 达到约 1.27 倍。论文将 Wanda 的结果归因于半结构化稀疏需要专门硬件和实现支持,而完整删除专家更容易直接减少存储和通信。

不过,这并不能证明专家剪枝在所有优化后的 2:4 运行时上都必然更快。它只说明在论文使用的实现和测试环境中,专家级结构化删除更容易转化为实际收益。


十、方法二:面向特定任务的专家剪枝

10.1 通用校准数据可能选错专家

使用 C4 校准的目标,是尽量保持模型在通用文本分布上的行为。

但假设模型最终只用于数学推理,最重要的专家组合可能与通用语言任务完全不同。

论文发现,使用 C4 选择的 6 专家模型在 GSM8K 上:

  • Mixtral 8x7B 从 58.61 降到 41.02;

  • Mixtral 8x7B Instruct 从 63.46 降到 48.52。

通用任务上还算温和的剪枝,在数学任务上产生了更严重的退化。


10.2 改用领域数据进行校准

论文将校准数据从 C4 替换为 MATH 训练集。

剪枝流程没有改变:

  • 仍然缓存 MoE 层输入和输出;

  • 仍然枚举专家组合;

  • 仍然选择重构误差最低的组合。

唯一变化是校准样本更集中于数学领域。

结果说明,专家重要性具有明显的任务依赖性

论文可视化发现,在 Mixtral 的 32 层中,C4 和 MATH 选择出完全相同专家组合的层只有 4 个。


十一、数学任务结果

在 GSM8K 5-shot 评估中,使用 MATH 作为校准集明显优于使用 C4。

模型每层保留专家数C4 校准MATH 校准
Mixtral 8x7B641.0251.25
Mixtral 8x7B424.8737.07
Mixtral 8x7B Instruct648.5258.38
Mixtral 8x7B Instruct430.4047.01

这组结果说明:

专家是否重要,取决于模型将要执行什么任务。

对数学任务不重要的专家,可能对通用问答很重要;通用任务中看似冗余的专家,也可能存储着数学领域需要的能力。


11.1 领域校准仍不能完全恢复性能

即使使用 MATH 校准,剪枝后仍存在明显损失。

例如 Mixtral 8x7B Instruct:

  • 原始模型:63.46;

  • 保留 6 个专家并使用 MATH 校准:58.38;

  • 保留 4 个专家:47.01。

因此,领域数据只能帮助选择更合适的专家组合,不能完全补偿专家被永久删除造成的容量损失。


11.2 微调可以进一步恢复

作者又在 MetaMathQA 上对不同专家数的模型进行了完整微调。

对于 Mixtral 8x7B:

配置GSM8KMATH
8 专家81.3534.86
6 专家,C4 剪枝79.5332.48
6 专家,MATH 剪枝79.5333.58
7 专家,MATH 剪枝81.2034.40

保留 7 个专家并微调后,结果已非常接近完整 8 专家模型。Mixtral Instruct 也出现类似趋势。

但这里的代价很高:论文使用 16 张 A100 80GB,训练 900 步。因此,前面的专家剪枝是轻量后训练方法,而这部分恢复实验已经属于较昂贵的完整微调。


十二、方法三:动态专家跳过

12.1 专家剪枝为什么没有直接减少每 Token FLOPs

假设每层从 8 个专家剪到 6 个。

原始模型每个 Token 从 8 个专家中选两个;剪枝后仍然从 6 个专家中选两个。

因此,对于当前 Token 来说,仍然要执行两个完整专家,理论上的专家计算量没有变化。

模型之所以加速,主要是因为:

  • 模型能够放到更少的 GPU 上;

  • 专家参数读取量下降;

  • GPU 间通信减少;

  • 缓存命中和内存预取更好;

  • 专家块加载更加集中。

论文也明确将从 6 个专家进一步剪到 4 个专家后的加速,部分归因于更好的时间和空间局部性,而不仅是 GPU 间通信。


12.2 不是每个 Token 都需要两个专家

对于一个 Token,路由器选中的两个专家通常具有不同权重。

例如:

  • 第一专家权重:0.90;

  • 第二专家权重:0.10。

此时第二专家对最终输出的贡献可能非常有限。

动态跳过方法认为:

如果第二专家的路由权重远小于第一专家,就不运行第二专家,只使用第一专家。

如果两个专家权重接近,例如 0.55 和 0.45,则仍然执行两个专家。


12.3 如何决定“差得足够大”

论文为每一个 MoE 层分别设置一个阈值。

校准时:

  1. 在校准数据上执行模型;

  2. 记录每个 Token 的第二专家权重与第一专家权重之比;

  3. 对每一层分别统计这一比例;

  4. 使用该层所有比例的中位数作为阈值。

推理时:

  • 若第二专家与第一专家的权重比低于阈值,就跳过第二专家;

  • 否则仍执行两个专家。

使用中位数意味着,在与校准集相似的数据上,每层大约有一半 Token 可能只执行一个专家。不同层的阈值并不相同,而且 C4 与 MATH 校准得到的阈值也存在明显差异。


12.4 为什么只比较路由权重

路由权重本身反映了路由器对两个专家的相对偏好。

当第二专家权重很小时,它对加权输出的贡献通常也更小。论文附录从输出重构误差的角度给出解释:只要被跳过专家的总路由权重足够小,跳过后的输出误差就可以得到控制。该原则也可以从 top-2 扩展到一般 top-k 路由。

不过,这种推导使用了专家输出差异相对集中的近似,因此路由权重阈值仍然是一种经验化、易部署的判断,而不是严格保证每个 Token 输出误差的上界。


十三、动态跳过实验结果

论文将动态专家跳过应用于:

  • 原始 8 专家模型;

  • 已剪到 6 专家的模型;

  • 已剪到 4 专家的模型。

通用零样本任务结果如下。

Mixtral 8x7B

保留专家数专家剪枝动态跳过平均准确率加速
867.581.00×
866.371.08×
664.221.19×
662.911.23×
459.571.27×
457.911.31×

Mixtral 8x7B Instruct

保留专家数专家剪枝动态跳过平均准确率加速
869.981.00×
869.031.08×
667.451.20×
666.041.27×
463.881.27×
462.331.33×

13.1 最有价值的对比

对于 Mixtral 8x7B Instruct:

  • 保留 4 个专家、不跳过:63.88,1.27×;

  • 保留 6 个专家、加入跳过:66.04,1.27×。

两者速度相同,但后者平均准确率高出 2.16 个百分点。

这说明:

为了获得同样的速度,不一定要永久删除更多专家。可以保留更多模型容量,再根据每个 Token 的难度动态减少计算。

这也是专家剪枝和动态跳过互补的核心原因。


十四、为什么动态跳过不会降低显存

动态跳过只是在推理过程中决定某个 Token 是否执行第二专家。

所有专家参数仍然存在于模型中,也必须被加载到设备。因此:

  • 模型文件不会变小;

  • 模型参数量不会下降;

  • 静态显存基本不变;

  • 只有部分 Token 的运行计算减少。

所以动态跳过适合解决计算和生成速度问题,而不能单独解决“模型装不进 GPU”的问题。

若显存是主要限制,应优先使用专家剪枝或量化;若模型已经能够装入设备,但生成速度不足,则动态跳过更有吸引力。


十五、实际显存与速度收益

论文报告的实际模型内存如下。

方法配置内存原模型占比
原始 Mixtral8 专家89,926 MB100%
Wanda2:451,214 MB57%
专家剪枝保留 6 专家68,383 MB76%
专家剪枝保留 4 专家46,879 MB52%

保留 6 个专家后,模型可由两张 A100 80GB 降到一张 A100 80GB 加载。保留 4 个专家进一步减小内存,但在单卡环境中,速度提升不会仅来自减少 GPU 通信,作者认为内存局部性和专家块加载也发挥了作用。

需要注意,这些速度和内存数字依赖论文的:

  • GPU 数量;

  • 模型并行方式;

  • BF16 精度;

  • Hugging Face 实现;

  • Batch 和生成配置;

  • 专家加载和通信机制。

换用 TensorRT-LLM、vLLM、不同量化方式或专家并行策略后,绝对收益可能变化。


十六、校准样本需要多少

论文测试了 1、2、4、16、64、128 和 256 个 C4 序列,每个序列长度为 2048,用于将 Mixtral 8x7B 剪到每层 6 个专家。

平均任务结果如下。

校准序列数平均准确率
162.63
263.93
463.53
1663.59
6464.32
12864.22
25663.94

64 和 128 个序列表现最好。只使用一个序列会出现一定下降,但从 2 到 256 个序列之间的变化总体不大。

这说明方法对校准样本数量相对稳定,但校准数据属于哪个领域比单纯增加样本数更加重要。


十七、这篇论文真正证明了什么

论文证明的不是:

Mixtral 中有一半专家完全无用,可以无损删除。

真实结果是:

  • 删除两个专家,通用平均准确率下降约 2.9 个百分点;

  • 删除四个专家,平均下降约 7.1 个百分点;

  • 数学等特定任务对错误专家组合更加敏感;

  • 动态跳过仍会造成小幅性能下降;

  • 领域微调能够恢复,但成本较高。

论文真正证明的是:

MoE 专家具有不同的边际贡献,而且这种贡献取决于层和任务。使用层输出重构误差可以找到比随机、调用频率和部分权重剪枝方案更好的专家子集;同时,路由权重不平衡可以被用于动态减少单 Token 的活跃专家数量。


十八、与普通权重剪枝的区别

对比维度权重剪枝本文专家剪枝
最小删除单位单个权重或权重块完整专家
是否改变专家数量
模型结构规则性可能不规则高度规则
是否需要稀疏算子通常需要不需要权重稀疏算子
搜索自由度相对低
精度保持通常更灵活删除粒度较大
模型文件是否直接缩小取决于稀疏格式
是否减少专家并行通信不一定可以

专家剪枝可以被视为一种 MoE 特有的结构化剪枝。它利用专家本身就是独立 FFN 模块这一特点,删除后不需要重新构建不规则矩阵。


十九、与 LayerPrune 的区别

对比维度LayerPrune本文专家剪枝
删除对象完整 Transformer 层MoE 层中的部分专家
注意力层是否删除
模型深度是否变化
每层宽度是否变化专家数量减少
主要选择指标跨层表示相似度MoE 层输出重构误差
是否需要恢复训练通常使用 QLoRA Healing通用剪枝不需要
对推理的影响每个 Token 少经过若干层每层可选专家减少

LayerPrune纵向缩短模型深度,本文则横向减少 MoE 层中的专家容量。

两者理论上可以联合使用,但性能风险也会叠加。


二十、与 AST 半结构化稀疏训练的区别

对比维度AST本文
稀疏粒度每组权重中的 2:4完整专家
是否重新训练是,使用数十亿 Token通用方案无需训练
掩码是否动态学习专家组合离线确定
硬件依赖依赖 2:4 支持普通 MoE 实现即可加载
动态推理没有改变每 Token 专家数可动态跳过第二专家
主要模型LLaMA-2 等稠密模型Mixtral MoE

AST改变的是专家内部权重结构,而本文改变的是专家数量与专家激活策略。


二十一、方法优点

21.1 符合 MoE 模型的天然结构

专家本身就是独立模块,删除完整专家比制造大量零权重更加规则。

21.2 无需通用剪枝后的额外训练

任务无关专家剪枝只需要少量校准数据和前向传播,不更新模型权重。

21.3 同时考虑专家组合

方法不是给每个专家单独打分,而是直接搜索一组专家的联合重构效果,因此能够考虑专家之间的替代和互补关系。

21.4 模型文件和显存真实下降

保留 4 个专家时,论文测得模型内存约降至原来的 52%,不是只报告理论 FLOPs。

21.5 给出了真实 Token 生成加速

论文报告约 1.2~1.33 倍生成速度提升,并分析了 GPU 通信和内存局部性的影响。

21.6 专家剪枝和动态跳过可以互补

永久删除用于减少静态容量,动态跳过用于按 Token 减少计算,可以在相同速度下获得比单独高比例剪枝更好的精度。


二十二、方法局限

22.1 枚举搜索无法扩展到大量专家

直接枚举在 8 个专家时可行,但若每层有 32、64 或更多专家,组合数量会迅速增长。

论文也将这一点列为主要局限:当前方法适合每层 4 或 8 个专家的模型,但面对每层 32 个专家时会非常繁重。

例如从 32 个专家中保留 16 个,组合数将达到数亿级,已经无法直接穷举。


22.2 只验证了 Mixtral 8x7B 系列

实验主要覆盖:

  • Mixtral 8x7B;

  • Mixtral 8x7B Instruct。

没有验证 DeepSeek-MoE、Qwen-MoE、DBRX、Switch Transformer 或更多专家数量的 MoE 模型,因此泛化性仍不充分。


22.3 删除比例在所有层中相同

当设置 r=6 时,每个 MoE 层都必须保留 6 个专家;设置 r=4 时,每层都保留 4 个。

但不同层的专家冗余程度可能不同:

  • 某些层可以只保留 3 个;

  • 某些关键层可能需要保留 7 个或全部 8 个。

统一专家预算实现简单,却可能不是全局最佳配置。


22.4 层与层之间独立搜索

每层选择的专家组合只保证当前层输出重构误差较小,不直接优化完整模型的最终语言建模损失或任务准确率。

前面层的微小误差可能在后面持续累积。渐进式搜索也没有稳定解决这一问题。


22.5 重构误差不一定保护高级能力

MoE 层输出接近,并不能保证:

  • 数学推理能力不变;

  • 事实知识不丢失;

  • 长上下文行为一致;

  • 指令遵循能力保持;

  • 安全和拒答能力保持。

数学实验已经表明,使用通用 C4 重构得到的专家组合,在 GSM8K 上可能出现远大于通用任务平均值的损失。


22.6 动态跳过只看路由权重

路由权重低,不一定表示专家输出不重要。

一个权重较小的专家仍可能提供与第一专家完全不同、但关键的修正信息。论文的阈值方法没有直接计算当前 Token 的专家输出差异。


22.7 动态跳过的阈值依赖校准分布

阈值由 C4 或 MATH 上的路由权重比例中位数决定。

当部署数据与校准集差异较大时:

  • 实际跳过比例可能变化;

  • 性能损失可能增大;

  • 某些领域需要重新校准阈值。

论文的数学任务实验也显示,动态跳过在领域任务上会带来比通用任务更明显的性能下降。


22.8 实际速度提升相对有限

即使专家参数减少约一半,端到端加速仍只有约 1.27~1.33 倍。

原因是:

  • 每个 Token 仍包含注意力计算;

  • 路由器仍需执行;

  • 剩余专家仍然是大型 FFN;

  • KV Cache 和其他层没有减少;

  • 动态批处理中的专家分组和调度存在开销。

因此,参数压缩比例不能直接等同于速度提升比例。


22.9 任务微调成本很高

虽然基础专家剪枝不训练,但论文中用于数学能力恢复的完整微调需要 16 张 A100 80GB。

所以“无需训练”只适用于原始后训练剪枝流程,不适用于希望进一步恢复领域能力的完整方案。


二十三、这篇论文最重要的启示

这篇论文真正重要的地方,是区分了 MoE 部署中的三种稀疏性。

第一种:模型级专家稀疏

永久删除完整专家,减少总参数、模型文件和显存。

第二种:路由稀疏

每个 Token 只从全部专家中选择 top-k,属于原始 MoE 自带机制。

第三种:动态计算稀疏

即使路由器选出了 top-k,也可以根据权重差异进一步减少实际运行的专家数量。

因此,MoE 模型压缩不能只问:

哪些权重应该置零?

还应该问:

哪些专家需要长期保留?哪些专家只对特定领域重要?当前 Token 真的需要运行所有被路由器选中的专家吗?

论文将静态模型容量动态 Token 计算量分开优化,这一点比单一剪枝率指标更接近真实 MoE 部署问题。


二十四、一句话总结

《Not All Experts are Equal》先用少量校准数据缓存每个 MoE 层的原始输入输出,再逐层枚举专家组合,永久删除重构误差最小的低贡献专家,从而降低 Mixtral 的模型文件和显存;随后根据每个 Token 的两个路由权重是否高度不平衡,动态跳过贡献较小的第二专家,以进一步减少推理计算。实验中,每层保留 6 个专家可将 Mixtral 8x7B 从两张 A100 80GB 降到一张,并获得约 1.2 倍加速;结合动态跳过后最高达到约 1.33 倍,但专家重要性高度依赖任务,枚举搜索也难以扩展到每层拥有数十个专家的新型 MoE 模型。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询