当前位置: 首页 > news >正文

MC-SMoE: MoE 模型压缩方案

Merge, Then Compress:用路由策略解开高效 SMoE 的压缩之谜

读完论文先给你结论

这篇文章解决的核心问题是:SMoE 很强但太占内存且专家冗余严重。作者从路由策略里“挖线索”,提出先合并再压缩的两阶段方案MC-SMoE。它通过路由激活频率识别“关键专家”,把冗余专家合并进主导专家,再利用合并后权重的低秩特性继续压缩。实测在多任务上能做到最高 80% 内存节省、20% FLOPs 降低,性能几乎不掉。


背景:SMoE 为什么既香又难用

SMoE(Sparsely activated Mixture-of-Experts)把 Transformer 中的 FFN 替换成多个专家,每个 token 只激活少量专家,从而在计算量几乎不变的情况下扩大模型容量。但真实场景里有两个硬伤:

  • 内存爆炸:每层一堆专家,参数量飙升。
  • 专家冗余:路由会出现 representation collapse,很多专家长期不工作。

所以目标是:压缩 SMoE 的参数,同时保住它的能力


方法总览:MC-SMoE = Merge + Compress

核心思想:路由策略里藏着“专家重要性”和“专家相似性”。先合并冗余专家,再在合并后的权重上做结构压缩。

图解:整体流程分三步:路由器按 token 选择专家;根据路由统计把专家分组并合并;合并后权重低维化,再做低秩 + 稀疏分解,进一步压缩。


关键观察 1:路由激活频率揭示专家重要性

不同任务下专家激活频率差异巨大,很多专家几乎不被用到。作者用路由日志统计每个专家被激活的频率,把高频专家当作dominant experts

图解:横轴为专家索引,纵轴为 MoE 层。颜色越深说明激活频率越高。可以看到很多专家几乎不激活,说明冗余严重,且不同任务的分布差异很大。


关键观察 2:路由输出可衡量专家相似性

作者不用参数相似度,而是用路由输出 logits 的相似度来判断专家是否冗余。公式如下:

Sim ( E i , E j ) = cosine ( H i , ∗ , H j , ∗ ) \texttt{Sim}(E_i, E_j) = \texttt{cosine}(H_{i,*}, H_{j,*})Sim(Ei,Ej)=cosine(Hi,,Hj,)

其中H = W r X T H = W_r X^TH=WrXT是路由器 logits,行向量H i , ∗ H_{i,*}Hi,代表专家E i E_iEi对输入的响应分布。

这种相似性更贴近“实际被分配到的样本集合”,比直接比权重有效。


M-SMoE:基于路由的专家合并

合并流程分三步:

  1. 专家排列对齐:不同专家初始化不同,需要先做 permutation alignment,避免错位融合。
  2. 确定主导专家:按激活频率选出 dominant experts。
  3. 分组并加权合并:每个非主导专家挂靠到与其最相似的主导专家,再做频率加权平均。

合并公式:

E merged = ∑ i = 1 k α i E i ∑ i = 1 k α i E_{\text{merged}} = \frac{\sum_{i=1}^k \alpha_i E_i}{\sum_{i=1}^k \alpha_i}Emerged=i=1kαii=1kαiEi

这里α i \alpha_iαi是激活频率,能自然压制长期不工作的专家。


关键发现:合并后的权重更低秩

合并后权重出现明显低维趋势,用 stable-rank 衡量:

stable-rank ( σ ) = ∑ i σ i 2 max ⁡ σ i 2 \texttt{stable-rank}(\sigma) = \frac{\sum_i \sigma_i^2}{\max \sigma_i^2}stable-rank(σ)=maxσi2iσi2

图解:图中多数层的 stable-rank 变化为负,说明合并后权重更低秩,适合进一步做低秩分解与稀疏化。


MC-SMoE:合并后继续压缩

作者在合并后做低秩 + 稀疏分解:

W ≈ U V + S W \approx U V + SWUV+S

  • U V U VUV是低秩部分,r ≪ min ⁡ ( d 1 , d 2 ) r \ll \min(d_1, d_2)rmin(d1,d2)
  • S SS是残差稀疏项,按重要性剪掉整列

重要性得分:

I ( s i , j ) = ∣ s i , j ⋅ ∇ s i , j L ∣ \mathcal{I}(s_{i,j}) = |s_{i,j} \cdot \nabla_{s_{i,j}} \mathcal{L}|I(si,j)=si,jsi,jL

这样能让每一层自适应地保留最关键的结构。


实验效果:更小但几乎不掉分

论文在 8 个 NLP 任务上做了系统对比。

图解:在 COPA 任务上,MC-SMoE 以接近原模型的准确率换取最高 80% 内存节省,说明合并 + 压缩不会明显伤性能。

更多细节见主表(Switch-Base-32):

  • M-SMoE:可减小 60% 内存,部分任务还略涨分。
  • MC-SMoE:可减小 80% 内存 + 20% FLOPs,性能下降 <1%。

补充实验:方法设计的有效性

1. 自适应合并比例优于固定比例

图解:不同任务下专家聚类结构不同,自适应合并可以更好匹配每层冗余程度。

2. 路由 logits 相似度最稳

图解:路由 logits 直接反映“专家接收到的 token 分布”,比权重或特征相似更可靠。


附录关键点:延迟问题与工程化启示

论文指出:即便专家数量下降,路由器输出维度不变,实际延迟仍然可能偏高。如果能进一步剪裁路由器输出通道,延迟还能进一步下降。

图解:后层的主导专家更容易压缩,说明越深层越可能冗余,给部署优化留出空间。


总结与启发

这篇工作给出一个非常实用的 SMoE 精简路径:

  • 用路由统计找冗余,而不是只靠权重。
  • 先合并再压缩,避免直接压缩造成性能崩坏。
  • 合并后低秩性增强是关键突破点。

如果你在做 MoE 相关落地(比如推理部署、移动端推理、边缘设备),MC-SMoE 的思路值得直接借鉴。


本文参考自 Merge, Then Compress: Demystify Efficient SMoE with Hints from Its Routing Policy

http://www.jsqmd.com/news/280622/

相关文章:

  • MCP学习笔记
  • HC-SMoE: MoE Expert 合并压缩方案解读
  • UE5 C++(43):用 timeLine 实现开关门
  • AI大模型开发入门到精通:一本助你转型的必备书籍
  • 基于SpringBoot+Vue校园跑腿网站的设计与实现
  • 导师严选2026 TOP10 AI论文工具:专科生毕业论文写作全测评
  • IPO投资策略:如何评估新上市公司
  • 基于SpringBoot+Vue校园足球俱乐部管理系统的设计与实现
  • Linux OOM killer 评分系统的演变及分数优先级详解
  • 降AI率必备!6款免费工具亲测,学生党轻松降80%,论文AI检测一次过
  • AI Agent实战指南:程序员必学大模型应用,从概念到商业布局,值得收藏
  • 基于SpringBoot+Vue学校物资采购系统的设计与实现
  • Balanced 01-String
  • AI大模型学习全攻略:零基础入门、35岁转行可行性与就业前景
  • AI率过高别慌!这6个免费降AI工具亲测有效,学生党拯救论文指南
  • D6 707.设计链表
  • 基于SpringBoot+Vue一鹿租车公司车辆管理系统的设计与实现
  • 毕业党救星!5个降AI率工具大公开,亲测好用,能帮你把AI率降低80%以上
  • 实验室智能监控系统实战源码-基于YOLOv8的实时目标检测与PyQt5可视化界面
  • 如何在idea中创建mavenweb项目
  • AI率过高有救了!这5个工具实测能打,可将论文AIGC痕迹大幅降低80%
  • Java毕设项目推荐-基于springboot+vue的全国走失儿童认领与登记系统【附源码+文档,调试定制服务】
  • 开箱即用的番茄叶片病害识别平台|YOLOv8+PyQt5实战指南
  • 工控人注意了:Windows近期系统更新会导致你电脑的西门子软件TIA Portal 无法使用,你中招了吗?
  • 计算机Java毕设实战-基于springboot的走失儿童认领与登记系统基于springboot+vue的javaweb宝贝回家走失儿童报备【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • 学生党必看:3步轻松改写AI文献综述,教你如何用AI把AI率从80%降到5%!
  • 强烈安利MBA必备TOP8 AI论文软件
  • 基于SpringBoot+Vue医疗陪护服务平台的设计与实现
  • Java计算机毕设之基于springboot+vue的走失儿童认领与登记系统基于SpringBoot的宝贝回家走失儿童报备系统(完整前后端代码+说明文档+LW,调试定制等)
  • 【第1章>第17节】图像黒色顶帽理论分析与MATLAB仿真测试