LORAPRUNE: PRUNING MEETS LOW-RANK PARAMETER-EFFICIENT FINE-TUNING

基本信息

这是23年10月发在arxiv上的一篇文章,文章提出将PET技术LoRA和剪枝(pruning)技术进行结合,在参数微调的同时减小模型复杂度,同时保留较高性能。

博客创建者

武松

作者

Mingyang Zhang, Hao Chen, Chunhua Shen, Zhen Yang, Linlin Ou, Xinyi Yu, Bohan Zhuang

标签

大规模预训练模型(LPM),模型剪枝(Pruning),参数高效微调(PEFT),LoRA

1. 摘要

大规模预训练模型(LPM),如LLaMA和GLM,通过微调在各种任务中显示出了卓越的性能。尽管参数高效微调方法(PEFT),如低秩适配器(LoRA)的出现降低了大模型微调的成本,但它们的部署仍然受到巨大的模型规模和计算成本的阻碍。神经网络剪枝(Pruning)提供了一种压缩LPM的方法,可以进一步降低模型的计算成本。因此,使用LoRA微调模型适配下游任务和压缩模型便于部署成为可以结合使用的两个工作。我们可以选择先进行微调,后训练剪枝,但这样分离调优和剪枝可能会导致次优的结果。然而考虑同步进行的话,目前为LPM设计的剪枝方法又与LoRA并不兼容。这是由于它们在LPM上使用了非结构化剪枝,阻碍了LoRA权值的合并,或者它们依赖于预训练模型的权值梯度来指导剪枝,但这可能会造成显著的内存开销。基于以上局限性,作者提出将LoRA微调与结构化剪枝结合,并采用优化后的基于梯度剪枝标准来对模型剪枝。作者的主要贡献包括:

  • 提出一种新的权重重要性标准:LoRA-guided criterion。即优化后的模型剪枝标准;
  • 基于以上标准,提出一个将PEFT与模型剪枝统一起来的新框架:LoRAPrune
  • 在广泛的数据集上开展了详尽的实验,验证了所提出方法的优越性能。

2. 方法

2.1 方法架构图

图2.1 方法架构图

2.2 前置知识

2.2.1 LoRA

为了有效地微调LPM,受预训练模型具有一个"内在秩"的影响,LoRA采用两个低秩矩阵A和B来学习模型变化的低秩权重。在微调过程中,预先训练的权值保持冻结,避免梯度计算,而插入的LoRA保持可训练。这一过程可由公式2.1给出。

公式2.1 LoRA公式

经过LoRA适配下游任务后,模型的权重变为 W = W 0 + B A W = W0 + BA W=W0+BA。这一公式将用于作者方法的推导。

2.2.1 剪枝
图2.2 剪枝
  • 非结构化剪枝
    非结构化剪枝即在模型的参数粒度上进行修剪,不考虑模型的层次结构,修剪后的模型稀疏度较高。这将导致如下问题:(1) 由于LoRA产生的权值BA是密集的,因此无法将BA与经过非结构化稀疏后的模型权重进行合并。但如果LoRA不与模型权重进行合并,这将增加了近54%的推理时间(文章实验部分表明),那么剪枝的带来的好处就被减弱了。即便无法合并,也可以采用先微调后剪枝的分离步骤来进行,但这样的结果是次优的。PST的提出,解决了这一问题,通过同时对模型权重和LoRA矩阵BA进行剪枝,使得LoRA可以和BA合并。但这样做需要计算BA和存储M矩阵,带来了较大的内存开销。(2)非结构化剪枝的模型本身并不能直接加速推理,需要特殊的硬件支持。

  • 基于梯度的剪枝
    基于梯度的剪枝,是指将梯度作为标准来判断剪掉哪些权重。梯度的更新幅度,可以衡量此状态下权重变化的重要性,某一权重的变化如果对梯度变化的影响较小,那么该权重被认为是重要性较低,根据一定的阈值可以予以删除,从而达到剪枝的效果。问题也出现在梯度的计算上。一方面,对于可以计算梯度的模型来说,需要计算模型全部参数在训练过程中的梯度,具有较大的计算成本;另一方面,对于LoRA应用的场景,一般是LPM,即预训练模型,在微调过程中通常冻结模型权重,自然不计算梯度,那么也就无法依据梯度来实施剪枝。

2.3 方法描述

2.3.1 依赖性感知(Dependency-aware)的结构化剪枝
  • 结构化剪枝
    结构化剪枝对模型权重进行结构化的修剪。相对于非结构化剪枝,其对于模型修剪的粒度粗一些,考虑到模型的层次结构,对于模型中特定的模块进行修剪,比如注意力层、前馈层。
  • Dependency-aware
    由于修剪后的神经元可能表现出与其他神经元的依赖关系,因为它们具有相互关联的性质。因此修剪神经元时也应该修剪与之相关联的神经元,例如在注意力模块中,当我们决定在查询层中修剪特定的权重头时,必须对Key、值和Out层中具有相同索引的相应的权重也进行修剪。

因此作者考虑在模型模块层面进行剪枝,并Dependency-aware的思想,对相关层也进行修剪。在这篇文章工作中,作者遵循Ma等人(2023)和Fang等人(2023)的方法,分别修剪了注意力头和前馈网络的通道。并以 G r o u p Group Group的概念来合并相关联的各个层,从而模型剪枝的粒度就成为了 G r o u p Group Group,剪枝的权重重要性也变成计算 G r o u p Group Group的权重重要性,计算公式如下:

公式2.2 Group importance计算公式
2.3.2 LoRA-guided criterion推导

如前所述,获得LPM中全部参数权重 W 0 W_0 W0的梯度是困难的,因为它需要大量的计算能力和存储空间。因此作者提出通过在下游任务适配过程中插入可学习矩阵A和B(LoRA)来估计 W 0 W_0 W0的重要性。这个估计公式的推导过程如下:

  • 遵循 ( M o l c h a n o v e t a l . , 2017 ; 2019 ) (Molchanov et al., 2017; 2019) (Molchanovetal.,2017;2019)的方法,权重 W i j ∈ W 0 W_{ij}∈W_0 WijW0的重要性可以通过计算去除其前后对损失的影响来量化,对于输入x和目标y,该损失函数由公式2.3给出:
公式2.3 损失
  • 公式2.3的计算仍然困难,故用其一阶泰勒展开式来对其进行估计,如公式2.4所示:
公式2.4 损失的一阶泰勒估计
  • 由于结合LoRA后,要将BA的权重和模型权重合并,因此模型最终权重有: W = W 0 + B A W = W_0 + BA W=W0+BA。剪枝的目标也就是令 W = 0 W=0 W=0,则有: B A = − W 0 BA = -W_0 BA=W0。由此替换公式2.3为公式2.5,替换公式2.4为公式2.6:
公式2.5 损失_修正
公式2.6 损失的一阶泰勒估计_修正
  • 从而需要计算梯度 ∂ L / ∂ ( B A ) i j ∂L/∂(BA)_{ij} L/(BA)ij,然而该梯度的计算仍较为复杂,因为在参数微调过程中无法计算得到BA矩阵的值,且BA矩阵与模型权重的shape是一致的,计算BA的梯度的复杂度相当于计算所有模型权重的梯度。因此对于该梯度的计算也需要进行估计。考虑梯度更新的公式:
公式2.7 梯度更新公式

可知:

公式2.8 推导式

又知道, ( B A ) i j (BA)_{ij} (BA)ij是由B的第i行和A的第j列相乘得到的,因此公式2.8的右侧的t-1轮的 ( B A ) i j (BA)_{ij} (BA)ij项可以由B和A矩阵的对应行和列相乘来代替,对t轮的 ( B A ) i j (BA)_{ij} (BA)ij项同理。之后对于t轮的 ( B A ) i j (BA)_{ij} (BA)ij项拆开后的子项,再使用类似公式2.8来代替,即公式2.9和2.10:

公式2.9 推导式
公式2.10 推导式

这个过程由公式2.11给出:

公式2.11 对梯度$∂L/∂(BA)_{ij}$的估计

此时,对于公式2.6中梯度 ∂ L / ∂ ( B A ) i j ∂L/∂(BA)_{ij} L/(BA)ij的估计,即可仅计算B和A的梯度来进行了,大大降低了计算复杂度。

  • 将公式2.11代入公式2.6得到最终的权重重要性估计公式2.12:
公式2.12 LoRA-guided criterion权重计算公式
2.3.3 LoRAPrune算法
图2.3 LoRAPrune算法

其中,公式10计算该轮各组权重的移动平均值moving averages:公式如2.13所示:

公式2.13 moving averages

目的是为了从采样的校准数据中准确地估计出A和B的梯度,因为仅使用一批采样数据来计算梯度可能会在梯度估计中产生较高的偏差。另外,其中的M表示掩膜矩阵,即用来对模型剪枝的运算矩阵,定义如公式2.14,剪枝运算过程如公式2.15所示:

公式2.14 mask M
公式2.14 剪枝运算过程

3. 实验

3.1 数据集

  • WikiText ( M e r i t y e t a l . , 2016 ) (Merity et al., 2016) (Merityetal.,2016)、PTB ( M a r c u s e t a l . , 1993 ) (Marcus et al., 1993) (Marcusetal.,1993)
  • 遵循LLaMA的实验数据集,采用以下常识推理数据集:BoolQ (Clark et al., 2019), PIQA(Bisk et al., 2020), HellaSwag (Zellers et al., 2019), WinoGrande (Sakaguchi et al., 2021), ARC-easy
    (Clark et al., 2018), ARC-challenge (Clark et al., 2018) and OpenbookQA (Mihaylov et al., 2018).
  • P e r p l e x i t y Perplexity Perplexity评价指标:在自然语言处理中,Perplexity是一种用于衡量语言模型质量的指标。Perplexity是一个正实数,表示给定一个语言模型和一个测试集合,该模型能够正确预测测试集中每个词的概率的困难程度。该指标数值越小表征模型效果越好。

3.2 Baselines

作者将LoRAPrune与以下剪枝方法进行了比较:
(1) Magnitude Pruning:基于模型权重的绝对值的迭代剪枝。
(2) Random Pruning:使用随机选择的权重进行迭代剪枝。
(3) LLM-Pruner ( M a e t a l . , 2023 ) (Ma et al.,2023) Maetal.2023:使用公式2.4的标准进行一次性修剪。即直接计算全部模型权重的梯度。
(4) WANDA ( S u n e t a l . , 2023 ) (Sun et al.,2023) Sunetal.2023:基于输入特征的大小和预训练的权重的一次性修剪。

3.3 实验结果及分析

  • 对比实验
    作者提出的方法应用于LLaMA-1模型家族,表3.1给出了应用于LLaMA-7B模型上的对比实验的结果,实验对比了剪枝率的不同,以及是否进行微调,对各个剪枝方法效果的影响。
表3.1 对比实验

在LoRAPrune没有进行微调情况下,它的结果可以与使用完全梯度进行修剪的LLM-Pruner相比较。例如,在20%的压缩率下,LLM-Pruner在7个不同的推理数据集上实现了56.69%的平均准确率,而LoRAPrune实现了56.50%的平均准确率。然而,当应用微调来恢复模型精度时,我们的LoRAPrune远远超过了结构稀疏性下现有的任何大型模型剪枝方法。例如,在50%的压缩率下,LoRAPrune在WikiText2上达到了30.12的困惑,显著优于LLM-Pruner的38.12的困惑。作者复现了结构化剪枝情景下的实验结果。我们的研究结果表明,与LLM-Pruner和LoRAPrune等基于梯度的剪枝方法相比,WANDA的剪枝结果较差。这一观察结果强调了在我们的实验中,基于梯度的剪枝方法的优越的性能和有效性。值得注意的是,LoRAPrune对预训练权值梯度的有效近似允许对这些权值进行8位量化,大大减少了修剪的内存需求。此外,即使将模型量化到8位,LoRAPrune也显示了优越的剪枝结果。这些发现强调了LoRAPrune在不同场景和压缩率中实现令人印象深刻的剪枝结果方面的有效性和多功能性。

  • 模型推理时间优化
表3.2 模型推理时间优化

如表3.2所示,当剪枝20%的权重时,不合并LoRA的LPM比不合并LoRA的LPM的推理速度更慢。此外,通过结构化剪枝,该模型在压缩率为20%和50%时,推理时间分别减少了24.7%和49.5%。

  • 验证LoRA-guided criterion的有效性
图3.1 模型推理时间优化

通过比较掩模相似度与普通准则来评估所提出的lora引导准则的有效性。图3.1表明在低剪枝率(比值10%)的情况下,由这两个标准生成的掩模M显示出高度的一致性。随着压缩率的增加,掩模的相似度可能会降低。然而,必须强调的是,LoRAPrune遵循迭代剪枝方法。在每次剪枝迭代中,它只需要精确地识别最不重要的权值(大约是前5%),从而确保准确的近似。因此,lora指导的准则可以获得与普通准则相同的修剪结果,同时可以降低成本。

4. 总结

4.1 亮点

  • 解决了LoRA和基于梯度的剪枝方法不兼容的问题
  • 方法的理论基础扎实,有详尽的公式推导,模型剪枝过程可解释

4.2 不足

  • 创新性较低,剪枝的权重重要性公式的基础仍依赖已有公式
  • 依赖微调的同时剪枝,无法独立进行剪枝

4.3 启发(下一步工作)

  • 进一步提高高压缩率下的模型推理效果

5 相关知识链接

@article{zhang2023pruning,
  title={Pruning Meets Low-Rank Parameter-Efficient Fine-Tuning},
  author={Zhang, Mingyang and Shen, Chunhua and Yang, Zhen and Ou, Linlin and Yu, Xinyi and Zhuang, Bohan and others},
  journal={arXiv preprint arXiv:2305.18403},
  year={2023}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这篇论文主要介绍了一种稀疏结构搜索的方法来有效地调整深度神经网络中的参数,以达到更好的性能和更高的效率。作者将该方法称为Pruning with Neuron Selectivity Ratio (PNSR)。该方法的主要思想是通过对神经元的选择性比率进行剪枝,来寻找最优的网络结构。 具体来说,PNSR方法首先训练一个初始的完整模型,然后通过计算每个神经元的选择性比率来确定哪些神经元可以被剪枝。选择性比率是指在训练过程中神经元被激活的次数与总共经历的迭代次数之比。这个比率越高,说明这个神经元在网络中的作用越大,越不应该被剪枝。根据选择性比率,可以将网络中的神经元分为三类:保留、可剪枝和不可剪枝。其中保留的神经元直接保留在模型中,不可剪枝的神经元则不能被剪枝,而可剪枝的神经元则可以被剪枝,并且剪枝后不会影响网络的性能。 接下来,PNSR方法使用一种叫做“剪枝重训练”的策略来进一步优化网络结构。这种策略的基本思想是先剪枝掉一些神经元,然后重新训练网络,使其在剪枝后的结构上取得最佳性能。具体来说,PNSR方法在剪枝后使用一种叫做“结构化剪枝”的方法来调整网络的结构,使得剪枝后的网络结构更加紧凑和简单。然后,PNSR方法使用该结构再次训练网络,直到网络达到最佳性能。 最后,作者在CIFAR-10和ImageNet数据集上对PNSR方法进行了实验。实验结果表明,PNSR方法可以显著减少模型的参数数量,同时保持网络性能不变或稍微下降。这表明,PNSR方法可以有效地提高深度神经网络的效率,并有望在实际应用中得到广泛应用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值