OOPS:基于异常值检测和二次规划的结构化剪枝方法,用于大型语言模型

《Neural Networks》:OOPS: Outlier-Aware and Quadratic Programming Based Structured Pruning for Large Language Models

【字体: 时间:2025年11月27日 来源:Neural Networks 6.3

编辑推荐:

  大型语言模型(LLMs)因模型规模和资源消耗限制部署场景。本文提出结构化剪枝框架OOPS,通过异常值感知的剪枝单元选择、二次规划模块重建和层间蒸馏,在无需重新训练时恢复性能,且相比LoRA微调方法减少80%计算资源。实验表明OOPS在11个模型上优于SOTA方法。

  
Jiateng Wei|Siqi Li|Jingyang Xiang|Jiandang Yang|Jun Chen|Xiaobin Wei|Yunliang Jiang|Yong Liu
浙江大学网络系统与控制研究所,杭州,310027,中国

摘要

大型语言模型(LLMs)的庞大模型规模和资源消耗限制了它们在许多场景中的部署和应用。结构化剪枝为这一挑战提供了解决方案。根据剪枝后是否需要重新训练,LLMs的结构化剪枝方法可分为两类:无需重新训练的和需要重新训练的。无需重新训练的方法通常会导致性能显著下降,而需要重新训练的方法可能需要大量的计算资源。为了解决这些限制,我们提出了一个名为OOPS(基于异常值感知和二次规划的结构性剪枝框架)的结构化剪枝框架。它包括三个关键组成部分:异常值感知的剪枝单元选择、基于二次规划的重建和逐层蒸馏。通过使用前两个组成部分,OOPS可以在不需要重新训练的情况下对模型进行剪枝,并且性能优于现有的无需重新训练的方法。当进一步结合逐层蒸馏对剪枝后的层进行单独训练时,OOPS在计算成本更低的条件下优于其他需要重新训练的方法。我们在4个LLM家族的11个模型上评估了OOPS的有效性,证明了其在无需重新训练和需要重新训练的情况下都优于现有方法。

引言

大型语言模型(LLMs)在语言理解和文本生成方面取得了显著的成功(Brown, Touvron, Lavril, Izacard, Martinet, Lachaux, Lacroix, Rozière, Goyal, Hambro, Azhar等人,Scao, Fan, Akiki, Pavlick, Ili?, Hesslow, Castagné, Luccioni, Yvon等人)。然而,LLMs的出色性能伴随着巨大的模型规模和高计算开销,这限制了它们在许多场景中的部署,尤其是在边缘设备上。模型压缩技术为这个问题提供了解决方案。最近的尝试主要集中在量化或非结构化剪枝上(Chen, Chen, Wang, Dai, Tsang, Liu, 2024a; Frantar, Alistarh, 2023; Frantar, Ashkboos, Hoefler, Alistarh, 2022; Sun, Liu, Bair, & Kolter, Xiao, Lin, Seznec, Wu, Demouth, Han, 2023)。然而,低比特模型引入了额外的量化和反量化开销,需要精心设计的核来加速推理(Lin等人,2024b)。另一方面,具有任意稀疏模式的非结构化剪枝需要极高的稀疏比例和硬件协同设计来加速推理(Shi, Wang, Chu, 2020; Wang, 2020)。相比之下,结构化剪枝以有序的方式从网络中移除某些权重(例如行、列或层),直接减少了计算和内存开销,并使通用设备能够加速(Song等人,2024)。根据训练需求,剪枝方法可以分为无需重新训练和需要重新训练的方法。现有的LLMs无需重新训练的方法通常基于启发式信息进行误差补偿(An等人,2024;Wang等人,2024a)或引入额外参数(Ashkboos等人,2024a),导致结果不佳。另一方面,基于重新训练的LLMs剪枝通常使用LoRA(Hu等人,2021)来微调整个剪枝模型,这通常耗时且数据密集。为了解决这些挑战,我们提出了OOPS,一个基于异常值感知和二次规划的结构性剪枝框架,旨在提高剪枝模型在无需重新训练和需要重新训练场景下的性能。
在进行结构化剪枝时,有两个关键挑战:? 确定适当的剪枝结构。? 实施有效的策略来恢复剪枝后的网络性能。对于第一个方面,受到LLM.int8()(Dettmers等人,2022)的启发,我们关注激活异常值,确保剪枝后保留与异常值对应的权重通道。此外,考虑到注意力(Attention)和前馈网络(FFN)模块的不同重要性,我们采用网格搜索方法在具有分组查询注意力(GQA)(Ainslie等人,2023)的模型中平衡剪枝参数。关于第二个方面,我们提出的方法包括两个组成部分:模块级重建和逐层蒸馏。为了最小化剪枝后的输出误差,我们为每个模块的输出权重制定了一个二次规划(QP)问题。解决这个问题可以在无需重新训练的情况下实现性能恢复。此外,为了进一步最小化输出误差,引入了逐层蒸馏来单独训练剪枝后的层。与现有的基于LoRA的重新训练方法(Guo, Xu, Zhang, & Yang, Ma, Fang, Wang, 2023)相比,OOPS需要的计算资源更少(仅需要80G A800 GPU即可处理70B模型),并且在使用更少数据的情况下实现了相当或更好的结果(52k对比256)。我们方法的概述如图1所示,可以分为两部分:剪枝结构选择(①)和剪枝后网络的性能恢复(②和③)。总结我们工作的贡献:
  • 在确定剪枝结构时,我们关注异常值,确保它们得到保护。我们还引入了网格搜索方法来平衡MHA和FFN模块之间的参数。
  • 在剪枝过程中,我们基于QP优化问题对权重进行剪枝和重建。此外,我们为剪枝后的模型引入了逐层蒸馏,与LoRA重新训练相比,它在更少的资源和数据下实现了更好的性能。
  • 我们通过广泛的实验评估了OOPS的有效性。实验结果表明,OOPS在不同模型和条件下都优于现有方法。

章节片段

LLMs的量化

量化通过降低模型权重的精度来实现压缩。由于激活异常值导致的高量化误差,许多方法专注于在压缩过程中解决这个问题。LLM.int8()(Dettmers等人,2022)和OWQ(Lee等人,2023)采用了混合精度策略,其中与异常值通道对应的权重以高精度存储,而其余权重则量化为低比特。SmoothQuant(Xiao等人,2023)和AWQ(Lin

初步

在本节中,我们简要介绍了LLMs中的计算过程,并基于此介绍了相应的剪枝单元。

方法论

在剪枝模型时,我们首先选择剪枝单元,然后恢复剪枝后的模型性能。OOPS的框架如图1所示,包括三个组成部分:异常值感知的剪枝单元选择、基于二次规划的模块重建和逐层蒸馏。第一个组成部分负责选择适当的剪枝单元,后两个组成部分专注于恢复剪枝引起的性能下降。

实验

我们通过广泛的实验验证了OOPS的有效性。第5.2节和第5.3节分别将OOPS与其他方法在语言建模和零样本任务中进行比较。第5.4节介绍了OOPS的消融研究。第5.5节详细说明了压缩成本。由于OOPS包含三个组成部分,为了简化,我们将它们简称为OS(异常值感知剪枝单元选择)、MR(基于优化的模块重建)和LD(逐层蒸馏)

结论

在这项工作中,我们提出了OOPS,一个用于LLMs的结构化剪枝框架。在无需重新训练的场景中,OOPS通过异常值感知方法选择剪枝单元,并通过解决最小化输出误差的二次规划问题来重建剪枝后的模块。在需要重新训练的场景中,结合逐层蒸馏进一步提高了OOPS的性能。此外,与LoRA重新训练相比,逐层蒸馏显著减少了计算资源

CRediT作者贡献声明

Jiateng Wei: 方法论,形式分析。Siqi Li: 形式分析,概念化。Jingyang Xiang: 验证。Jiandang Yang: 项目管理。Jun Chen: 监督,概念化。Xiaobin Wei: 项目管理。Yunliang Jiang: 监督。Yong Liu: 监督。

利益冲突声明
作者声明他们没有已知的财务利益或个人关系可能影响本文报告的工作。

相关新闻
生物通微信公众号
微信
新浪微博
  • 搜索
  • 国际
  • 国内
  • 人物
  • 产业
  • 热点
  • 科普
  • 急聘职位
  • 高薪职位

知名企业招聘

热点排行

    今日动态 | 人才市场 | 新技术专栏 | 中国科学人 | 云展台 | BioHot | 云讲堂直播 | 会展中心 | 特价专栏 | 技术快讯 | 免费试用

    版权所有 生物通

    Copyright© eBiotrade.com, All Rights Reserved

    联系信箱:

    粤ICP备09063491号