如果你要给一棵树修剪枝叶,你会怎么剪?
最直觉的做法是:从上到下,整枝整枝地锯。简单粗暴,但有效——至少对树来说是这样。
但如果你要给一个大语言模型"瘦身",同样的策略就不一定最优了。过去几年,LLM 压缩领域的主流方法就是"整层删除"——找到最不重要的几层,整个拿掉,然后用一些补偿机制来弥补损失。就像修剪果树,一枝一枝地锯。
但 SubFit 这篇论文提出了一个反直觉的问题:为什么一定要整层整层地删?模型里的冗余,真的恰好按层分布吗?
答案是否定的。而基于这个否定答案,SubFit 把 LLM 压缩的粒度从"层"推进到了"子模块"——注意力(Attention)和前馈网络(FFN)可以独立地、非连续地选择和替换。
先理解现有方法的两个约束
在 SubFit 之前,所有"替换式压缩"方法都共享两个隐含假设:
约束一:整层粒度。 压缩的基本单位是一整个 Transformer 层。要么保留,要么替换,没有中间选项。
约束二:连续选择。 被移除的层必须是连续的。比如删掉第 8、9、10 层可以,但删掉第 3、7、12 层不行。
这两个约束从哪来的?主要是工程方便——整层替换实现简单,连续选择方便用残差连接来补偿。但 SubFit 的作者发现,这两个约束在理论上站不住脚。
冗余不按层分布
通过分析预训练 Transformer 中各子模块的冗余度,作者发现了两个关键事实:
事实一:同一层内,Attention 和 FFN 的冗余度差异巨大。 有些层的 Attention 很重要但 FFN 很冗余,有些层则相反。整层删除意味着你被迫同时处理两个冗余度完全不同的组件——要么删少了(浪费了 FFN 的压缩空间),要么删多了(伤害了 Attention 的关键能力)。
事实二:冗余的子模块不一定连续分布。 第 3 层的 FFN 和第 17 层的 FFN 可能都很冗余,但中间的层可能很重要。强制连续选择意味着你要么放弃这些分散的冗余,要么把重要的层也一起删掉。
这就像打扫房间:垃圾不是集中在某个角落,而是散落在各处。如果你只打扫一个区域,其他地方的垃圾还在;如果你想打扫干净,就得每个角落都看看。
SubFit:子模块级别的精准手术
SubFit 的核心思路是:打破整层和连续两个约束,在子模块级别做精准压缩。
具体来说:
1. 非连续选择。 Attention 和 FFN 独立评估冗余度,各自选择最不重要的子模块。第 3 层的 FFN 和第 17 层的 FFN 可以同时被选中,不受连续性约束。
2. 差异化替换。 Attention 和 FFN 用不同的替换策略:
- Attention 子模块只需要一个低秩旁路(low-rank bypass)就能近似其残差贡献。因为 Attention 的输出本质上是对 Value 向量的加权求和,信息集中在低秩子空间中。
- FFN 子模块需要更高秩的映射,但多个被移除的 FFN 可以共享一个低秩基(shared low-rank basis),从而控制部署成本。
3. 校准数据拟合。 替换模块的参数通过少量校准数据来拟合,不需要重新训练整个模型。
打个比方:如果整层删除是用大锤砸墙,SubFit 就是用手术刀精准切除病变组织,同时给每个切口缝上合适的补丁——Attention 的补丁薄一点,FFN 的补丁厚一点,但多个 FFN 共享同一卷补丁布,省材料。
压缩越狠,优势越大
SubFit 在 10 个 LLM(5 个基座模型 + 5 个指令微调模型)、5 个稀疏度水平(12.5% 到 37.5%)上进行了全面评估。
关键数据:
- 25% 稀疏度下:SubFit 保留了 84.6% 的下游任务准确率,困惑度仅恶化 2.42 倍。而最强基线只保留了 81.6% 的准确率,困惑度恶化 4.34 倍。
- 37.5% 稀疏度下:差距进一步拉大。SubFit 的困惑度恶化比最强基线低 5.69 倍,是唯一一个在指令微调模型上保留 73% 以上准确率的方法。
- 12.5% 稀疏度下:差距最小(0.11 倍),因为轻度压缩时整层删除的损失本来就不大。
这个趋势很合理:压缩越激进,精准手术的优势越明显。 就像减肥——减 5 斤怎么减都差不多,但减 30 斤时,是均匀减脂还是乱砍肌肉,差别就大了。
实际收益:不只是准确率
SubFit 还带来了实际的推理加速和 KV-Cache 节省。因为移除的是具体的子模块而非整层,所以:
- 推理时每跳过一层 Attention,就省掉一次注意力计算
- 每跳过一层 FFN,就省掉两次矩阵乘法
- KV-Cache 只需要为保留的 Attention 层存储键值对
在 25% 稀疏度下,SubFit 实现了可测量的推理加速,同时 KV-Cache 占用也显著降低。
更深层的启示:AI 模型的"解剖学"
SubFit 的意义不只是一次压缩方法的改进。它揭示了一个更深层的事实:Transformer 的冗余结构比我们以为的更复杂、更不均匀。
整层删除之所以流行,不是因为它最优,而是因为它最简单。就像早期医学用放血疗法,不是因为放血有效,而是因为当时对人体循环系统的理解不够。
SubFit 做的事情,相当于给 Transformer 做了一次精细的"解剖"——发现 Attention 和 FFN 的冗余模式完全不同,不同深度的冗余分布也不均匀。基于这种精细理解,才能设计出更精准的压缩策略。
这个思路可以推得更远:如果子模块级别的压缩比整层更好,那 token 级别、注意力头级别呢?我们对 Transformer 内部结构的理解,可能还远远不够。
论文: From Layers to Submodules: Rethinking Granularity in Replacement-Based LLM Compression
代码: github.com/eliacunegatti/SubFit
作者: Elia Cunegatti, Marcus Vukojevic, Erik Nielsen 等
讨论回复
1 条回复推荐
智谱 GLM-5 已上线
我正在智谱大模型开放平台 BigModel.cn 上打造 AI 应用,智谱新一代旗舰模型 GLM-5 已上线,在推理、代码、智能体综合能力达到开源模型 SOTA 水平。