下面谈一谈剪枝的理论基础。首先,所谓的理论基础只是暂时的,在一个高速发展的学科中,很难确保今天的理论不会被明天的实验推翻。在传统上,人们一直认为剪枝的基础是 DNN 的过参数化,即深度神经网络参数比拟合训练数据所需参数更多,可以剪去一部分以降低网络复杂度而尽量不影响其性能。在 2019 年,有学者提出了彩票假设(ICLR 2019 best paper)[2]:一个随机初始化的神经网络里包括一个子网络,当该子网络被单独训练时,能在最多相同迭代次数后达到原始网络训练后的性能——就好比一堆彩票中存在一个中奖子集,只要买了这个子集就能获得最大收益。随后,又有学者在《What’s Hidden in a Randomly Weighted Neural Network?》中提出了“近似加强版”彩票假设(CVPR 2020)[3]:在一个随机权重的足够过参数化的神经网络中,存在一个子网络,无需训练,其性能与相同参数量训练过的网络相当。再随后,又有学者声称自己证明了这个“近似加强版”的彩票假设,并在标题里宣称 Pruning is all you need(ICML 2020)[4]。也就是说,如图 1 所示,以后不需要训练了,我们只用找一个足够大的网络,剪啊剪啊就能得到一个性能很好的子网络。这个说法如果成立当然是极好的,因为基于梯度的优化算法训练时间长,且是次优的,但问题在于缺乏有效的纯剪枝算法,所以目前剪枝的基本流程还是:训练、剪枝、微调。另外,作者是用二值小网络+推广证明的,太过理想化,而且没有考虑非线性的情况。近年来,虽然彩票假设及其衍生理论在一些研究领域取得了进展,例如图中奖彩票(KDD 2023)[5]和对偶彩票假设(ICLR 2022)[6],但在大模型领域,我们尚未观察到具有显著影响力的研究工作。图 1 LLaMA 3.1 微调内存需求
代表性方法:LLM-Pruner
本节将以首个针对大模型的结构化剪枝框架 —— LLM-Pruner(NeurIPS 2023)[7]为例,介绍大模型剪枝的基本流程。该框架特点为任务无关的压缩、数据需求量少、快速和全自动操作,主要包括以下三个步骤:(1)分组阶段本阶段的主要工作是根据依赖性准则,将 LLM 中互相依赖的神经元划分为一组。依赖性准则为:若 i 是 j 的唯一前驱,则 j 依赖于 i;若 j 是 i 的唯一后继,则 i 依赖于 j。在具体操作中,需要分别将网络中每个神经元作为初始节点,依赖关系沿方向传导,传导过程中遍历的神经元为一组,一组需同时剪枝。以图 2 中 Group Type B(即 MHA,多头注意力)为例,从 Head 1 开始传导,Head 1 是上面两个虚线圈神经元的唯一前驱,是下面六个虚线圈神经元的唯一后继,它们都依赖于 Head 1,故被划分为一组。图 2 LLaMA 中耦合结构的简化示例(2)评估阶段本阶段的主要工作是根据重要性准则评估每个组对模型整体性能的贡献,贡献小的组将被修剪。常见的重要性准则有:L1 范数(向量中各元素绝对值之和)、L2 范数(向量中各元素平方和的开平方)、损失函数的 Taylor 展开一阶项、损失函数的 Taylor 展开二阶项等。LLM-Pruner 采用损失函数的 Taylor 展开来计算重要性,并提出了两条计算组重要性的路径:权重向量级别和单个参数级别。