像 LLaMA 和 OPT 这样的大型语言模型 (LLMs) 彻底改变了人工智能,在文本生成和理解方面展示了令人难以置信的能力。然而,有一个问题: 它们体积巨大。这些模型拥有数十亿个参数,需要巨大的计算能力和内存,这使得它们很难在标准硬件上部署。
为了解决这个问题,研究人员转向了网络剪枝技术——即移除不必要的参数以使模型更小、更快的过程。但这面临一个两难境地。你可以选择分散地移除单个权重 (非结构化剪枝) ,但这需要专用硬件才能看到速度提升;或者你可以移除整个结构,如行或列 (结构化剪枝) ,但这通常会破坏模型的性能,除非你花费数周时间进行重新训练。
在这篇文章中,我们将探讨一篇名为 “Structured Optimal Brain Pruning for Large Language Models” (大型语言模型的结构化最优大脑剪枝) 的论文中提出的一种新方法,称为 SoBP 。 这项技术提供了一个“两全其美”的解决方案: 它执行结构化剪枝 (硬件友好) ,而不需要昂贵的重新训练 (资源友好) ,同时性能优于当前的最新方法。
剪枝难题: 非结构化 vs. 结构化
在深入了解解决方案之前,我们需要了解当前剪枝技术存在的问题。
非结构化剪枝分析单个权重的关键程度。如果一个权重被认为不重要,它就会被设为零。虽然这在理论上减小了模型大小,但生成的权重矩阵呈现出随机的“稀疏”模式。标准 GPU 被设计用于对密集的数字矩形进行乘法运算;它们无法高效处理这种像瑞士奶酪一样布满孔洞的矩阵。
结构化剪枝则移除整行、整列或注意力头。这缩小了矩阵的维度,直接转化为任何硬件上的速度提升。缺点是什么?这是一种更激进的修改。直接剔除整列通常会严重降低模型的智能水平,需要昂贵的“微调”或“重训练”阶段来恢复性能。

如图 1 所示,非结构化剪枝 (a) 留下了到处都是的空隙,而结构化剪枝 (b) 则干净利落地缩小了矩阵维度。SoBP 旨在实现 (b) 的结果,但通过复杂的数学方法避免了通常随之而来的性能下降。
SoBP 解决方案: 一种无需重训练的方法
SoBP (结构化最优大脑剪枝) 旨在压缩 LLM 而无需随后的微调阶段。它通过非常精确地确定剪掉什么以及如何调整剩余权重来补偿损失来实现这一点。
该框架分三个不同阶段运行:
- 全局重要性感知选择 (Global Importance-Aware Selection): 使用全局信息决定网络的哪些部分 (头或神经元) 最不重要。
- 局部贪婪微调 (Local Greedy Refinement): 在特定模块内微调选择以最小化误差。
- 模块级重构 (Module-Wise Reconstruction): 调整剩余权重,确输出尽可能接近原始输出。

让我们从数学和概念上分解这几个阶段。
第一阶段: 全局重要性感知选择
LLM 由许多层组成,每层都包含多头注意力 (MHA) 机制和前馈网络 (FFN)。并非所有层都是生而平等的。一些研究表明,LLM 中较深层是冗余的,而其他层则至关重要。
为了决定在哪里下刀,SoBP 使用基于一阶信息 (梯度) 的全局度量标准。目标是在应用“掩码” \(M\) (其中 0 表示剪枝,1 表示保留) 时,最小化损失函数 \(\mathcal{L}\) 的变化。
研究人员使用泰勒展开来近似损失变化:

这里,\(g\) 是损失相对于掩码的梯度。如果特定单元的梯度 \(g_i\) 很高,这意味着移除它 (将掩码从 1 变为 0) 将严重增加损失。因此,我们要保留高梯度的单元,剪掉低梯度的单元。
然而,注意力机制中的头和 FFN 中的神经元具有不同的参数数量。为了公平地比较它们,作者引入了归一化的重要性分数:

随着为网络中每个单元计算出这些分数,选择过程就变成了一个背包问题 。 我们有一个“容量” (目标模型大小,例如原始大小的 70%) 和具有“价值” (重要性分数) 及“体积” (参数数量) 的物品。算法选择一组单元 \(\mathcal{S}\),在满足大小约束的同时最小化总重要性损失:

这给了我们一个全局路线图: 我们大致知道要从每层剪掉多少个头或神经元。
第二阶段: 局部贪婪微调
第一阶段的全局选择依赖于一阶信息 (梯度) 。这在计算上很便宜,但忽略了相关性。例如,神经元 A 和神经元 B 单独看起来可能都不重要,但如果同时移除两者可能会破坏模型。
为了解决这个问题,SoBP 将视角拉近。在每个模块内,它使用基于二阶信息 (海森矩阵/Hessian 矩阵) 的贪婪方法来微调选择。Hessian 矩阵描述了损失曲面的曲率,有助于识别权重之间如何相互作用。
目标是最小化原始输出与剪枝后输出之间的重构误差 \(E\):

在这个方程中,\(W_S\) 代表我们要移除的权重,\(H^{-1}\) 是逆 Hessian 矩阵。直接计算最优集合 \(S\) 是不可能的,因为组合太多了。相反,SoBP 使用了一种贪婪策略:
- 计算移除每一行所引起的误差。
- 剪掉引起误差最小的那一行。
- 更新剩余权重以补偿这种移除。
- 更新逆 Hessian 矩阵。
- 重复直到达到该模块的目标稀疏度。

如图 3 可视化所示,这个迭代过程确保每当移除一个单元时,幸存的权重都会被调整以“填补空缺”,与简单地删除权重就完事相比,大大减少了误差。
第三阶段: 模块级重构
一旦选择了特定的行和列,我们就必须重构权重矩阵。这看起来很简单——只要删除行就行了——但存在数值稳定性挑战。
Cholesky 分解技巧
权重更新公式依赖于逆 Hessian 矩阵。在实践中,更新这个矩阵数千次 (每剪枝一行更新一次) 会导致数值误差,从而破坏模型。为了解决这个问题,SoBP 利用了 Cholesky 分解 , 这是一种常用于稳定矩阵运算的方法 (类似于 GPTQ 量化方法) 。
然而,Cholesky 分解通常需要按特定顺序处理权重。由于 SoBP 基于重要性选择剪枝单元 (这可能位于矩阵中的任何位置) ,作者使用了一个巧妙的技巧: 矩阵重排 (Matrix Rearrangement) 。

如图 4 所示,他们置换 (打乱重排) 输入和权重矩阵,以便所有要剪枝的列都移动到末尾。这使他们能够高效地应用基于 Cholesky 的稳定更新。之后,他们只需将行排回原来的位置。
输入权重误差补偿
还有一个最后的障碍。当我们剪枝第 \(l\) 层时,第 \(l\) 层的输出会发生轻微变化。这意味着第 \(l+1\) 层的输入现在与原始模型预期的不同。随着误差逐层累积,模型会“偏离”其原始行为。
为了解决这个问题,SoBP 调整下一层的输入权重 (\(W_p\))。它求解一个优化问题,以找到一个修正值 \(\delta W_p\),使新输入 \(\widehat{X}_p\) 与原始输入 \(X_p\) 对齐:

解析解允许该方法计算所需的精确调整:

这种补偿机制确保即使是经过大量剪枝的层,也能继续向后续层传递有意义的数据。
实验结果
这种严谨的数学推导能转化为更好的模型吗?研究人员在 LLaMA 和 OPT 模型家族以及各种数据集上测试了 SoBP。
性能比较
结果显示,SoBP 始终优于其他结构化剪枝方法 (如 FLAP 和 SliceGPT )以及分解方法 (如 ASVD )。
在下表 (论文中的表 7) 中,我们看到了压缩 30% 的 LLaMA 模型在零样本任务 (如 ARC、HellaSwag 等常识推理测试) 上的表现。

数据中的关键结论:
- 精度保持: 对于 LLaMA1-30B,SoBP 保持了 69.62% 的平均准确率,显着高于 SliceGPT (58.05%) 和 FLAP (64.58%)。
- 鲁棒性: 即使在激进的压缩率下,SoBP 也避免了在其他方法中看到的灾难性性能下降。
在 OPT 模型家族中也观察到了类似的趋势。表 9 说明 SoBP 在各种任务中始终能获得更高的平均准确率。

推理速度和吞吐量
结构化剪枝的主要目标是速度。非结构化剪枝可能会减少参数,但很少能在标准 GPU 上加快生成速度。然而,SoBP 带来了真正的加速。

图 8 比较了推理时间 (越低越好) 和吞吐量 (越高越好) 。
- 预填充阶段 (Prefill Phase, 处理提示词): 与 Dense (原始) 模型相比,SoBP 显着缩短了时间。
- 解码阶段 (Decode Phase, 生成文本): 吞吐量大幅提高。例如,在 OPT-66B 模型上,SoBP 的吞吐量几乎是密集模型的两倍。
作者还指出,通过强制执行维度为 8 的倍数的约束 (表示为 SoBP/8) ,他们可以进一步优化 GPU 上的张量计算,在吞吐量上击败 SliceGPT-eq。
什么最重要? (消融实验)
作者拆解了他们的方法,看看哪些组件对成功的贡献最大。

表 3 揭示了每个阶段的贡献:
- GI (全局重要性): 仅基于全局分数进行剪枝比幅度剪枝 (Mag) 效果好,但困惑度仍然很高。
- + Rec (重构): 添加模块级重构显着降低了困惑度 (越低越好) 。
- + LGR (局部贪婪微调): 完整的方案 (GI + LGR + Rec) 产生了最好的结果 (最低的困惑度) 。
这证实了全局感知和局部微调的结合对于成功至关重要。
结论与意义
论文 “Structured Optimal Brain Pruning for Large Language Models” 展示了模型压缩领域引人注目的一步。通过将剪枝视为多阶段优化问题——结合全局一阶分析与局部二阶微调——SoBP 成功缩小了像 LLaMA-70B 和 OPT-66B 这样的巨型模型,而没有破坏它们。
这项工作的意义在于其无需重训练的特性。对于大多数研究人员和公司来说,微调一个 700 亿参数的模型极其昂贵。SoBP 提供了一种普及这些强大模型使用权限的方法,允许它们在更小、更便宜的硬件上运行,且智力损失极小。
虽然该方法目前依赖于超参数 \(\lambda\) 来平衡头与神经元的剪枝,但未来的工作旨在通过 AutoML 自动化这一过程,有可能使“一键式”压缩成为下一代 LLM 的现实。
](https://deep-paper.org/en/paper/file-3676/images/cover.png)