ROSE: Reordered SparseGPT for More Accurate One-Shot Large Language Models Pruning

本文提出了 ROSE,一种针对 SparseGPT 的改进方法,通过引入预剪枝、基于损失的两级重排序策略以及自适应识别列状层,有效解决了原有固定剪枝顺序导致的次优问题,从而在多种主流大语言模型上实现了更精准的单次剪枝效果。

Mingluo Su, Huan Wang

发布于 2026-03-09
📖 1 分钟阅读☕ 轻松阅读

Each language version is independently generated for its own context, not a direct translation.

这篇论文介绍了一种名为 ROSE 的新方法,旨在让大型语言模型(LLM)变得更“瘦”、更轻,同时保持它们原本聪明的头脑。

为了让你轻松理解,我们可以把大型语言模型想象成一座巨大的、由无数块积木搭建的城堡

1. 背景:为什么要“修剪”?

这座城堡(模型)非常宏伟,但也非常沉重,需要巨大的能量(计算资源)和空间(内存)才能运转。为了让它在普通的手机或电脑上也能跑起来,我们需要拆掉一些不重要的积木,这个过程叫“剪枝”(Pruning)。

  • 以前的做法(SparseGPT): 就像一位老练的工匠,他按照从左到右的固定顺序,一块一块地拆积木。他每拆一块,都会仔细计算怎么调整剩下的积木,让城堡尽量不塌。
  • 遇到的问题: 研究发现,这座城堡的某些部分(特别是负责“自我注意力”的层),积木的分布很特别。有些区域的积木非常结实(权重很大),有些则很松散。如果工匠死板地按照“从左到右”的顺序拆,可能会先拆掉那些虽然看起来在左边、但实际上对城堡结构至关重要的“承重墙”,导致城堡在后期突然崩塌(误差激增)。

2. 核心发现:顺序很重要!

论文作者通过观察发现,拆积木的顺序决定了城堡最终能有多稳固。

  • 比喻: 想象你在拆一个复杂的乐高模型。如果你先拆掉那些看起来不起眼、但其实是连接关键部件的“小柱子”,模型就会立刻散架。但如果你先拆掉那些“冗余”的、或者虽然重要但容易通过调整其他部分来弥补的积木,模型就能保持完整。
  • ROSE 的洞察: 作者发现,那些“承重墙”(高权重、高误差风险的积木)如果越早被拆掉,工匠就有越多的时间和空间去调整剩下的积木来弥补损失。反之,如果等到最后才拆,剩下的积木太少,根本来不及调整,城堡就塌了。

3. ROSE 是怎么做的?(三步走策略)

ROSE 就像是一位拥有“透视眼”和“智能规划师”的新工匠,它不再盲目地从左到右拆,而是分三步走:

第一步:预演(Pre-pruning)—— “先试拆一下”

在正式拆之前,工匠先快速模拟一下:如果我要拆掉 50% 的积木,哪些积木最可能被拆掉?

  • 它会根据积木的大小(权重)和它受到的拉力(输入激活),给每块积木打分。
  • 它不需要真的拆,只是预测哪些积木是“高危”的。

第二步:重新排序(Reordering)—— “把难拆的放前面”

这是 ROSE 最聪明的地方。它把积木分成了两类:

  1. 列内排序(Column Reordering): 在每一小堆积木里,把那些“拆了之后风险最大”的积木,提前放到最前面去拆。
  2. 堆间排序(Block Reordering): 把那些“整体风险最大”的积木堆,也提前放到最前面去拆。
  • 比喻: 就像你要整理一个杂乱的衣柜。以前的做法是按衣服挂着的顺序一件件拿下来。ROSE 的做法是:先找出那些最难处理、最容易把其他衣服带乱的“大件”(比如大衣),优先把它们拿出来整理好,然后再处理那些容易折叠的小件。这样,整个衣柜整理起来更顺畅,不容易乱。

第三步:智能识别(Identification)—— “只给需要的人用”

并不是所有积木堆都有这种“特殊结构”。有些地方的积木分布很均匀,按顺序拆就行。

  • ROSE 会先测量一下:这个区域的积木分布是不是“参差不齐”?如果是(也就是论文说的“柱状模式”),它就启动“重新排序”模式;如果不是,它就按老规矩办。这就像智能开关,只在需要的时候才开启高级功能,不浪费力气。

4. 结果如何?

实验证明,ROSE 这个方法非常有效:

  • 更精准: 在同样的“瘦身”比例下(比如剪掉 80% 的积木),ROSE 保留下来的模型比原来的 SparseGPT 更聪明,回答问题的准确率更高。
  • 更稳定: 它避免了模型在剪枝后期突然“崩溃”的情况。
  • 速度没变慢多少: 虽然多了一步“规划”的过程,但这个过程非常快,几乎不影响整体效率。

总结

ROSE 就像是一个懂得“先难后易”的顶级整理师。

它不再死板地按顺序工作,而是先观察局势,找出那些最难处理、风险最大的部分,优先把它们处理掉,从而为后续的调整留出更多的空间。这种方法让大型语言模型在“减肥”后,依然能保持健壮的体魄和聪明的头脑,更容易被部署到各种设备上。

一句话概括: 以前是“不管三七二十一,从左拆到右”;现在是“先挑最难的拆,给剩下的留条活路”,让模型剪得更好、更聪明。