近年来,大语言模型(Large Language Model, LLM)日益强大的性能吸引了各行各业的关注,并逐步在各种领域得到了广泛应用。为了节省大模型部署的成本,降低大模型服务延迟,越来越多的研究聚焦于大语言模型轻量化,试图平衡大语言模型的性能与效率。
剪枝是实现模型轻量化的重要技术之一,它通过删去模型中重要性较低的参数减少模型的参数量。近期,学术界提出了多种剪枝技术,这些方法利用少量校准数据(一般是128条2048个token的文本)无需迭代式的训练就能度量并识别出重要性较低的参数,一般被称为训练后剪枝。训练后剪枝的目标如下:其中 是第 层的参数, 是第 层的输入表示, 与校准数据相关, 是第 层的剪枝后的参数。训练后剪枝包括两个主要要素:校准数据与剪枝算法。校准数据影响了剪枝算法的目标函数, 剪枝算法则是寻找目标函数的最优解。目前剪枝算法的改进使得模型剪枝不断逼近最优解,但是如果我们的目标函数受到校准数据的影响本就存在偏差呢?
论文:Beware of Calibration Data for Pruning Large Language Models
链接:https://arxiv.org/abs/2410.17711
发现
我们在DCLM-7B模型上对比了剪枝算法与校准数据分别对剪枝性能的影响。图1(a)展示了5种近期最有代表性和竞争力的剪枝算法,我们遵循相关论文中的常规设置,从C4数据中采样128条序列长度为2048的校准数据;图1(b)展示了SparseGPT方法使用5种不同校准数据的性能差异。通过这个实验我们得到两个重要发现:
C4并非是最优的校准数据选择,可以通过选取更好的校准数据,为剪枝算法的性能带来一个百分点的显著提升; 校准数据的影响超过剪枝算法的影响,如果选用的校准数据不合适,原本具有竞争力的剪枝算法也会失效。
因此,我们认为研究者在不断提出新剪枝算法的同时,也有必要对校准数据进行更深入的研究。在本文中,我们试图回答关于校准数据的以下三个问题:
问题1:校准数据在不同剪枝设置下对剪枝性能的影响有多大? 问题2:校准数据量如何影响压缩模型的性能? 问题3:什么样的数据适合作为校准数据?
实证研究
我们在DCLM-7B上进行实验,因为它是目前唯一开源了全部预训练数据且性能足够强大的LLM,透明的预训练数据有助于我们研究影响校准数据性能的因素(OPT系列虽然也开源了数据,但其性能与目前广泛使用的LLMs相去甚远,它的剪枝现象不一定适用于当前的LLMs)。
问题1
我们分别从稀疏比和稀疏类型两个方面比较在不同剪枝设置下校准数据的影响。图2展示了Wanda剪枝算法使用不同校准数据(C4、Wikipedia、Slimpajama、DCLM,其中DCLM就是DCLM-7B的预训练数据)的性能极差(最高的性能减去最低的性能)。我们可以看到随着稀疏比越大、稀疏类型越趋于结构化,校准数据带来的影响越大。稀疏比增大,稀疏类型趋于结构化意味着剪枝的难度增加,此时剪枝的目标函数变得更加重要,仅凭剪枝算法的改进无法得到令人满意的性能。在实际应用中,高稀疏比、结构化或半结构化的剪枝模型才能够实现有效的吞吐速度提升,因此,为了剪枝的实用性,校准数据也是未来研究和实践中不可忽视的因素。此外,值得注意的是,如果校准数据的选择不合适,甚至可能起到负面作用,在常识推理任务上的性能落后于基于参数幅度(magnitude)的剪枝(图3)。
问题2
我们已经观察到不同的校准数据会对剪枝模型带来不同的性能影响,那么,我们能否通过简单的增加校准数据数量缩小不同校准数据之间的性能gap呢?我们从四个不同的数据集中分别采样了64-2048条校准数据进行实验。如图4所示,目前的方法大多对校准数据的数量很鲁棒,无论选用何种数据都难以通过增加数据量提升剪枝性能,因此我们也无法通过增加校准数据的策略避免使用不合适的数据作为校准数据。此前Williams & Aletras[1]已经发现剪枝算法对于C4的数量鲁棒,但他们没有研究在其他数据集上的变化,以及不同数据之间的性能差异。
问题3
回答完以上两个问题,我们不得不面对最重要的问题,我们应该选择什么样的数据作为剪枝的校准数据?我们做了两个合理的假设:
校准数据与LLM的训练数据越相似,剪枝性能越好; 校准数据的质量越高,剪枝性能越好。
我们在2:4半结构化设置下进行实验,如表1所示,三种剪枝算法的性能非常一致,Wikipedia作为校准数据的性能最差,DCLM最佳,C4略微优于Slimpajama。众所周知,Wikipedia是非常高质量的预训练预料,但是它作为校准数据的表现却是最差,相反,C4是从互联网上爬取的数据,尽管经过了一些初步的清理(如去除广告、重复内容等),但依然可能包含一些无关内容或不完整的数据,其用作校准数据的性能却比Wikipedia高出了1.2-1.5%。这一现象说明校准数据的质量并不是影响剪枝性能的主要因素。
至于与训练数据的相似性,定性的来看,C4、Slimpajama和DCLM均是从Common Crawl中清洗而来,Slimpajama中还混杂了其他高质量数据,而Wikipedia的来源则截然不同,因此,相较于Wikipedia、C4和Slimpajama与DCLM的相似性更高。
我们也进行了定量的评估,用MinHash-LSH算法编码了四个数据集的3-gram,计算它们之间的Jaccard相似度,C4、Slimpajama、Wikipedia与DCLM的相似度分别为0.07,0.016和0.008,与我们的定性分析一致,也与表1中的剪枝性能排序吻合。
因此,我们认为校准数据与训练数据的相似性对剪枝性能的影响比校准数据的质量更大。训练数据或与训练数据相似的数据更适合作为校准数据。我们推测,这可能是由于LLM更好地学习了训练数据中的模式,在剪枝过程中,使用具有相似模式的数据作为校准数据,可以更准确地反映模型参数的重要性。
合成数据
我们通过对校准数据的实证研究发现预训练数据或与其相似的数据适合作为模型训练后剪枝的校准数据。然而,绝大多数先进的LLMs并不会公开自己的预训练语料,我们如何寻找与它们的预训练语料相似的数据作为校准数据呢?一个简单有效的方法是让LLMs自生成合成数据。LLMs在预训练的过程中已经内化了诸如语法结构、词汇分布、常识知识等pattern,由于自回归生成的特性,LLMs会利用这些pattern生成与训练数据分布接近的数据。我们的生成方法非常简单,我们从Wikipedia中随机采样数据,仅保留原有数据的前t个token作为前缀,让LLM继续生成后续的内容。在生成数据之后,我们根据ppl对生成数据做了简单的过滤,过滤掉ppl最高的k%个样本,避免低质量合成数据对剪枝性能造成负面影响。
表2汇报了不同校准数据在DCLM-7B上的剪枝性能,我们计算剪枝模型在Alpaca数据集上的ppl,来评估模型的语言建模能力,在7个常识推理数据集上评估模型的常识理解与推理能力。从中可以看出合成数据明显优于Wikipedia、Slimpajama、C4,在常识推理能力上最高可以提升约2.7%的准确率。令人惊讶的是,合成数据甚至比预训练数据更加适合作为校准数据,相较DCLM数据,合成数据提升了约0.4-0.7%的常识推理能力。我们认为这可能是由于LLM并没有充分学习到的校准数据中的某些模式,使用这些模式作为校准数据可能会错误地估计参数的重要性。相比之下,自生成的校准数据通常会生成LLM能够更好地学习到的模式,从而避免使用代表性不足的模式作为校准数据。
更多的分析实验
我们进一步验证了自生成的合成数据在50%、65%、4:8和2:4半结构化剪枝下的有效性,在LLaMA系列模型剪枝上的有效性;讨论了数据合成过程中前缀长度与过滤比例的影响;验证了合成数据与训练数据之间的相似性。我们在此处不做详细介绍,欢迎感兴趣的读者阅读我们的论文。
与近期工作的讨论
我们注意到近期也有一些工作研究了模型压缩中的校准数据与合成数据。Shin等人[2]研究了剪枝的目标函数,认为基于均方误差的目标函数容易使得剪枝模型在校准数据上过拟合,他们认为使用自生成的校准数据能够缓解这种过拟合现象;而我们的工作侧重于全面的研究校准数据本身对于剪枝模型性能的影响。Bandari等人[3]研究了预训练数据和下游任务数据作为校准数据的性能差异以及不同形式的校准数据之间的性能差异,他们发现下游任务数据作为校准数据不一定能够提升相应下游任务的性能,ICL格式的数学推理数据作为校准数据的性能最好;与他们的工作相比,我们的工作聚焦于更加通用的预训练校准数据,提出的校准数据选择方案更具一般性。Williams等人[4]也提出使用合成数据作为校准数据,他们侧重于数据合成的方案设计,并没有讨论为什么训练数据或与训练数据相似的合成数据适合作为校准数据;与之相比,我们的工作体系化地研究了校准数据对剪枝模型性能的重要影响以及选择校准数据的标准,并且我们通过保留前缀token生成后续文本的合成数据方法比他们提出的从起始符生成合成数据的方法更加简单有效。
总结
在本文中,我们强调了校准数据在LLM训练后剪枝中发挥的关键作用。通过系统的探索,我们证明了与原始训练数据相似的校准数据可以获得更好的剪枝性能。为了解决实际场景中难以获取的训练数据的挑战,我们提出了一种自生成的合成校准数据策略,该策略可以有效地为LLM构造合适的校准数据。实验结果表明,我们的方法显著优于现有的常用校准数据。我们坚信,校准数据作为训练后剪枝的重要组成部分,仍具有进一步研究的巨大潜力。
On the Impact of Calibration Data in Post-training Quantization and Pruning: https://arxiv.org/abs/2311.09755
[2]Rethinking Pruning Large Language Models: Benefits and Pitfalls of Reconstruction Error Minimization: https://arxiv.org/abs/2406.15524
[3]Is C4 Dataset Optimal for Pruning? An Investigation of Calibration Data for LLM Pruning: https://arxiv.org/abs/2410.07461
[4]Self-calibration for Language Model Quantization and Pruning: https://arxiv.org/abs/2410.17170