OWL:Outlier Weighed Layerwise Sparsity 论文解读

发布时间:2026/7/24 20:59:30

OWL:Outlier Weighed Layerwise Sparsity 论文解读 一、论文基本信息论文正式题目Outlier Weighed Layerwise Sparsity (OWL): A Missing Secret Sauce for Pruning LLMs to High Sparsity方法简称OWL发表会议ICML 2024作者Lu Yin、You Wu、Zhenyu Zhang、Cheng-Yu Hsieh、Yaqing Wang、Yiling Jia、Gen Li、Ajay Kumar Jaiswal、Mykola Pechenizkiy、Yi Liang、Michael Bendersky、Zhangyang Wang、Shiwei Liu。官方代码仓库提供了 OWL 与 Wanda、SparseGPT、N:M 稀疏和 LoRA 恢复训练的实现。(Proceedings of Machine Learning Research)先给出最重要的定位OWL 本身并不是一种新的权重剪枝指标而是一种“各层应该剪多少”的非均匀稀疏率分配方法。它可以叠加在Wanda 上SparseGPT 上Magnitude pruning 上N:M 半结构化剪枝上LLM-Pruner 式结构化剪枝上甚至低秩分解和混合精度量化上。因此OWL 更准确的分类是Outlier-aware layerwise sparsity allocation for LLM compression。二、它要解决什么问题SparseGPT 和 Wanda 等早期 LLM one-shot 剪枝方法通常采用一个简单规则每一层都剪掉相同比例的权重。例如目标稀疏率为 70%就让所有 Transformer 层的权重矩阵都达到约 70% 稀疏。这种uniform layerwise sparsity在 50% 左右稀疏率时通常很强所以一度形成了一个经验判断LLM 不需要复杂的非均匀层稀疏率。但这和视觉模型中的剪枝经验相反。CNN 和 ViT 中不同层冗余程度不同通常非均匀剪枝比所有层统一比例更好。OWL 要回答的问题就是为什么 LLM 中统一层稀疏率在中等稀疏时有效但到了 70%–80% 的高稀疏率就会迅速崩溃不同层真的应该被同等对待吗作者发现问题与 LLM 中显著的outlier features密切相关不同 Transformer 层中的异常大特征分布非常不均匀而这些异常值对模型能力又十分关键。(arXiv)三、先明确这里的“Outlier”到底是什么OWL 中的 outlier 不是简单指权重绝对值很大的参数。论文先使用与 Wanda 相同的权重重要性分数。对于一个线性层输入激活为 (X)权重矩阵为 (W)表示第 (j) 个输入通道在所有校准 token 上的激活是连接输入通道 (j) 和输出通道 (i) 的权重。每个权重的 outlier score 为一个权重即使数值不大但如果它连接的是高激活输入通道其分数仍可能很高。(arXiv)然后论文将满足下列条件的权重定义为 outlier其中是当前线性矩阵或权重块中所有的平均值(M) 是阈值倍数论文常用 (M5) 或 (M7)。所以 OWL 中的 outlier 更准确地说是在“权重幅值 × 输入激活”意义下远大于当前层平均水平的重要权重。四、Layerwise Outlier DistributionLOD有了 outlier 定义后作者计算每一层中的 outlier 比例其中就是第 (l) 层的Layerwise Outlier DistributionLOD。它表示该层全部权重中有多少比例属于异常重要权重。所有层的 outlier ratio 组合起来形成论文发现LLM 的 LOD 并不是平坦的而是明显不均匀大致呈现一种U 形趋势前部层的 outlier 比例较高中间区域逐渐下降最后若干层的 outlier 比例又会上升。(arXiv)这说明模型两端的一些层包含更多关键异常特征不能和中间低 outlier 层按照完全相同的比例剪枝。五、作者做了三个关键观察1. 不同层的 outlier 分布高度不均匀如果所有层 outlier 数量差不多统一稀疏率是合理的。但 LOD 呈明显层间差异所以统一剪枝会产生一个问题outlier 较少的层可能仍保留大量普通权重outlier 较多的关键层却被强行剪掉相同比例导致关键结构遭到破坏。这种问题在 50% 以下不一定明显但到 70% 甚至 80% 时会被放大。(arXiv)2. 剪枝方法的性能与 outlier 保留能力高度相关在 LLaMA-13B 上作者比较了 Magnitude、Wanda 和 SparseGPT。70% 稀疏率时方法剪枝后 LODWikiText PPLDense5.432%5.09Wanda5.716%55.90SparseGPT6.645%19.24Magnitude5.322%84539.45SparseGPT 虽然原本不是显式为 outlier 设计的但它保留甚至增强了更多高分权重性能也最好Magnitude pruning 损坏了 outlier 分布PPL 直接崩溃。(arXiv)作者由此认为SparseGPT 和 Wanda 成功的重要原因之一不只是它们剪枝分数合理而是它们无意或有意地保护了 LLM 的异常重要特征。3. 非均匀稀疏不能走向另一个极端作者还发现简单使用全局阈值也会失败。全局剪枝会让所有层的所有权重一起竞争结果可能是某些层几乎不剪某些层被剪得极其严重某些输出通道失去绝大多数连接。在 LLaMA-7B 上即使只有 20% 全局稀疏Wanda 的 PPL 就会升到数千而逐层均匀、输出均衡的剪枝仍接近 Dense。(arXiv)所以 OWL 的设计不是让每层稀疏率差异越大越好。而是在统一稀疏率附近进行温和、受约束的非均匀调整。六、OWL 的核心做法假设目标整体稀疏率为S例如S70%OWL 要为每个权重块或线性矩阵分配自己的稀疏率其基本原则是即outlier 比例越高当前模块越重要稀疏率越低应该保留更多权重。反过来outlier 比例较低说明关键异常权重较少可以承担更高稀疏率。(arXiv)这里需要指出一个容易误解的地方论文摘要有时会用“稀疏率与 outlier 分布相匹配”甚至“proportional”一类措辞但方法公式明确是outlier 越多剪得越少因此稀疏率与 (1-D_i) 相关而不是与 (D_i) 同方向增加。七、为什么还需要 (\lambda) 约束如果完全按照 LOD 分配可能出现某层只剪 20%某层却剪 95%。这会重新退化成类似全局剪枝的极端不均匀结构。因此 OWL 引入超参数限制每个模块的稀疏率同时保持整体平均稀疏率为 (S)。这样既能保护 outlier 多的重要模块让 outlier 少的模块多承担一些稀疏预算又不会让层间差异过于极端。(arXiv)论文对 (M) 和 (\lambda) 做小规模搜索。典型设置包括LLaMA-7B(M5,8%)LLaMA-13B(M7,8%)LLaMA-30B(M5,8%)LLaMA-65B(M5,20%)。(arXiv)八、一个直观例子假设模型只有三层整体目标稀疏率是 70%。三层的 outlier ratio 分别为层Outlier ratio第1层8%第2层2%第3层7%统一剪枝会得到层稀疏率第1层70%第2层70%第3层70%OWL 则可能分配成层稀疏率第1层65%第2层78%第3层67%平均仍然约为 70%但更多剪枝预算被转移到了 outlier 较少的第二层。所以 OWL 的本质不是降低整体压缩率而是在相同非零参数总量下重新决定参数预算应该留在哪些层。九、论文中的 per-block 与 per-layer论文这里的术语容易混淆。一个 LLaMA Transformer 层通常包含七个主要线性矩阵q_projk_projv_projo_projgate_projup_projdown_proj如果让同一个 Transformer 层内七个矩阵共用一个稀疏率论文将其称为per-layer OWL。更好的方式是允许这些线性权重块分别获得不同稀疏率论文称为per-block OWL。在 LLaMA-7B、70% 稀疏时per-layer OWLPPL86.285per-block OWLPPL24.55也就是说光知道“第几层重要”仍不够同一个 Transformer 层里的 Q/K/V/O 和不同 MLP 矩阵其 outlier 分布与敏感性也不同。(arXiv)因此 OWL 最终实现得更细不是一个 Transformer 层只对应一个稀疏率而是不同线性权重块可以有不同的稀疏率。十、OWL 与 Wanda 是什么关系Wanda 的核心作用是决定一个线性矩阵内部具体剪掉哪些权重。它使用对权重排序。但标准 Wanda 通常让所有层使用相同稀疏率。OWL 的作用是先根据各层 outlier 分布决定每个权重块要剪多少。然后再由 Wanda 决定在这个权重块内部具体删谁。所以OWL 负责宏观预算分配Wanda 负责微观权重选择。“OWL Wanda”并不是替换 Wanda而是给 Wanda 增加了一层非均匀稀疏率策略。十一、OWL 与 SparseGPT 是什么关系SparseGPT 使用二阶信息和误差补偿决定哪些权重置零如何更新剩余权重以减小输出重构误差。但原始 SparseGPT通常也是各层使用相同稀疏率。OWL 可以先确定再让 SparseGPT按照每个模块自己的目标稀疏率执行二阶剪枝。所以二者分工是OWL层间/模块间预算分配SparseGPT模块内部二阶剪枝与权重补偿。这也说明 OWL 是一种很通用的上层策略而不是与 Wanda、SparseGPT竞争的底层剪枝准则。(arXiv)十二、主要实验结果70% 稀疏70% 是 OWL 最核心的实验点因为标准 Wanda 和 SparseGPT 在这里已经开始明显退化。LLaMA-V1-7B方法WikiText PPLDense5.68Wanda85.77OWL Wanda24.55SparseGPT26.30OWL SparseGPT19.49OWL 让 Wanda 的 PPL 降低了61.22让 SparseGPT 降低了约6.81。(arXiv)不同模型规模70% 稀疏时模型WandaOWL WandaSparseGPTOWL SparseGPTLLaMA-7B85.7724.5526.3019.49LLaMA-13B55.9017.1719.2414.55LLaMA-30B17.3710.7512.5610.28LLaMA-65B15.238.6110.458.28可以看到模型越小OWL 带来的提升通常越明显。原因是大模型本身冗余更多即使分配不够理想也有较大的补偿空间小模型容量紧张高稀疏下错误分配预算更致命。(arXiv)十三、必须正确理解这些结果OWL 在 70% 高稀疏率下明显优于原始 Wanda 和 SparseGPT但它并不是近乎无损。例如 LLaMA-7BDense PPL5.68OWL SparseGPT19.49OWL Wanda24.55说明模型的基础语言建模能力仍然有明显下降。OWL 的结论应该表述为它将 70% 稀疏从“几乎不可用”改善为“相对可用”而不是实现 70% 完全无损剪枝。十四、Zero-shot 任务结果在 LLaMA-7B、70% 稀疏率下七个 zero-shot 任务平均准确率为方法平均准确率Dense62.40Wanda39.39OWL Wanda46.47SparseGPT44.93OWL SparseGPT48.03在 LLaMA-13B 上方法平均准确率Dense65.61Wanda41.25OWL Wanda48.88SparseGPT48.38OWL SparseGPT50.85OWL 在 BoolQ、HellaSwag、WinoGrande、ARC 和 OpenBookQA 等大多数任务上都有改善但距离 Dense 模型仍有明显差距。(arXiv)十五、为什么低稀疏率时提升不明显LLaMA-7B 使用 Wanda 时稀疏率UniformOWL30%5.996.0140%6.386.3950%7.267.2260%10.709.3570%85.7724.5480%3499.881002.87在 40% 以下所有层仍保留足够多权重偶尔错误删除一些 outlier不一定立刻造成严重后果。但到 60%–70%每层剩余权重数量变少关键 outlier 被删的概率快速提高不合理的层预算开始触发性能崩溃。所以 OWL 的价值主要体现在高稀疏率而不是低稀疏率。(arXiv)十六、反向分配实验说明了什么论文还设计了OWL-inverseoutlier 越多的层反而剪得越多outlier 越少的层反而保留更多。在 LLaMA-7B、70% 稀疏时OWLPPL 24.54UniformPPL 85.77OWL-inversePPL822.23这说明 OWL 的提升并不是“只要非均匀就有效”而是稀疏预算的方向必须与 outlier 分布一致。错误的非均匀分配甚至比统一剪枝更差。(arXiv)十七、LoRA 恢复训练OWL 基本方法不要求微调但作者也测试了极少量 LoRA 恢复。对 70% 稀疏的 OWL SparseGPT只使用约30,000 个 C4 tokens模型微调前 PPLLoRA 后 PPLLLaMA-7B19.4911.15LLaMA-13B14.559.00这说明 OWL 得到的高稀疏模型仍保留一定可恢复性少量微调可以明显缩小与 Dense 的差距。为了保持原有稀疏模式作者没有把 LoRA adapter 合并回稀疏主权重。(arXiv)十八、真实推理速度OWL 默认产生的是非结构化稀疏因此在普通 GPU dense GEMM 中不会自动加速。论文使用支持稀疏 CPU 推理的DeepSparse在 Intel Xeon Platinum 8360Y CPU 上测试 LLaMA2-7B-Chat稀疏率吞吐量加速Dense4.68 token/s1.0×40%5.97 token/s1.3×50%8.25 token/s1.8×60%9.86 token/s2.1×70%12.21 token/s2.6×80%15.48 token/s3.3×90%18.43 token/s3.9×10%–30% 稀疏几乎没有速度收益说明稀疏 kernel 只有在足够高的稀疏率下才能抵消索引和不规则访存开销。(arXiv)十九、OWL 是非结构化剪枝还是结构化剪枝这个问题需要分两层回答。OWL 本身OWL 是层级稀疏率分配方法。它本身不限定最终剪枝粒度。论文主实验论文主实验中的OWL WandaOWL SparseGPT主要是非结构化权重剪枝。即单个权重被置零矩阵形状不变。扩展应用论文还将 OWL 用于mixed N:M 半结构化稀疏LLM-Pruner 式 head/neuron 结构化剪枝SVD 低秩压缩mixed-precision quantization。所以最准确的结论是OWL 不是某一种固定剪枝粒度它是一种可叠加在非结构化、半结构化或结构化压缩方法上的层间预算分配策略。二十、N:M 和结构化剪枝扩展在 LLaMA-7B 上OWL 用于 mixed N:8 稀疏时方法配置PPLUniform Wanda3:842.56OWL mixed平均3:821.49Uniform Wanda2:82962.00OWL mixed平均2:8331.37OWL 允许不同层使用不同的 (N)但总体非零参数量保持一致。(arXiv)它还将 LLM-Pruner 的统一层稀疏率替换为 OWL数据集剪枝率UniformOWLWikiText60%90.0276.99WikiText80%1228.17321.64PTB60%192.06150.16PTB80%1691.87502.07说明 outlier-based 预算分配对结构化 head/neuron 剪枝同样有一定作用。(arXiv)二十一、与 FLAP 的区别刚才看的 FLAP 和 OWL 都使用激活信息但两者不是同一类方法。FLAP本身是一套完整的结构化剪枝方法剪 attention heads 和 FFN neurons使用 WIFV权重列范数 × 输入方差使用 bias compensation输出真正变窄的 dense 模型。OWL主要是一种层间稀疏预算分配方法使用 Wanda score 的 outlier ratio不负责补偿剪枝误差主实验仍是非结构化 Wanda/SparseGPT可以作为 FLAP、LLM-Pruner等方法的上层预算分配思想。一句话区分FLAP 决定“剪哪些结构以及如何补偿”OWL 主要决定“每个层或权重块应该剪多少”。二十二、与 Wanda 和 SparseGPT 的区别方法核心解决的问题Wanda单个权重是否重要SparseGPT剪掉权重后如何二阶补偿OWL不同层/模块应该分配多少稀疏率OWL 的最大贡献是把 LLM 剪枝从只研究“删谁”推进到同时研究“各层应该删多少”。二十三、方法优点第一方法简单且通用。OWL 不需要重新设计 Wanda 或 SparseGPT只替换每个权重块的目标稀疏率。第二特别适合高稀疏率。60% 以下收益有限但到 70% 时能显著推迟模型崩溃。第三额外计算开销很小。因为 LOD 本身使用 Wanda 已经计算的权重—激活分数。论文报告相对基础剪枝方法额外增加的剪枝时间最多约两秒。(arXiv)第四可以应用到多种压缩形式。包括非结构化、N:M、结构化剪枝、SVD 和混合精度量化。(arXiv)第五揭示了 LLM 的层间 outlier 分布规律。其价值不仅是提高剪枝效果还说明 LLM 不同深度的关键异常特征分布明显不同。二十四、方法局限1. 它仍然依赖启发式 outlier 定义Outlier 的阈值由 (M) 决定但 (M5) 或 (7) 并没有严格理论保证需要针对模型选择。2. 依赖校准数据LOD 使用输入激活范数。如果校准数据与真实应用分布差异较大得到的 outlier 分布可能不适合数学代码多语言长上下文专业领域数据。3. Outlier 多不一定严格等于层重要OWL 假设outlier ratio 高的层更敏感。这个假设实验上有效但 outlier 数量并不能完整表示层间依赖语义功能后续层补偿能力特定任务的长尾重要性。4. 只做预算分配不解决局部剪枝误差如果内部剪枝方法本身很差OWL 不能完全弥补。例如 Magnitude pruning 即使加入更合理的层分配在极高稀疏率下仍可能表现不佳。5. 主要优势集中在高稀疏率50% 以下OWL 与 Uniform 差距通常很小有时还略差。因此它并非所有压缩设置下都必要。6. 非结构化主实验的真实加速依赖稀疏引擎普通 GPU 和通用 Transformer 推理框架不能自动利用任意零权重。论文中的明显速度收益依赖 DeepSparse CPU 稀疏执行。二十五、整体评价OWL 是一篇思路非常清晰的 LLM 剪枝论文。它没有提出比 SparseGPT 更复杂的二阶优化也没有提出新的结构化剪枝单元而是指出了一个此前被忽视的问题即使已经知道每层内部应该删哪些权重如果所有层的稀疏率分配不合理高稀疏模型仍然会迅速崩溃。它把 LLM 剪枝分成两个层次微观层面每个权重矩阵内部哪些参数应该保留宏观层面总参数预算应该如何分配给不同层和模块。Wanda 和 SparseGPT主要解决第一层OWL 主要解决第二层。从目前看的 LLM 剪枝方法脉络中SparseGPT二阶非结构化剪枝Wanda激活感知非结构化剪枝LLM-Pruner依赖组结构化剪枝FLAP波动感知、无需训练的结构化宽度剪枝ShortGPT层删除LaCo层折叠OWL基于 outlier 分布的非均匀层稀疏预算分配。它最准确的定位是Calibration-based, outlier-aware, non-uniform layerwise sparsity allocation for high-sparsity LLM pruning。一句话总结《Outlier Weighed Layerwise Sparsity》提出 OWL先利用 Wanda 的“权重幅值 × 输入激活范数”计算各权重的重要性将显著超过层内平均值的权重视为 outlier再统计每个层或线性权重块的 outlier ratiooutlier 越多的模块越重要因此分配更低的稀疏率outlier 越少的模块则承担更多剪枝预算同时用 (\lambda) 限制各模块只能在整体目标稀疏率附近温和浮动。OWL 本身不是新的权重剪枝准则而是可以叠加在 Wanda、SparseGPT、N:M 或结构化剪枝上的预算分配方法其主要价值是在 70% 以上高稀疏率时显著推迟 LLM 性能崩溃。

相关新闻