GBLM-Pruner 论文精读:预训练完成后,梯度还能帮助我们剪枝吗?

📅 2026/7/24 20:56:15
GBLM-Pruner 论文精读:预训练完成后,梯度还能帮助我们剪枝吗?
大语言模型剪枝通常依赖三个问题权重有多大、对应特征是否经常被使用、删除之后会不会明显破坏模型输出。幅值剪枝只回答了第一个问题Wanda进一步考虑了第二个问题而GBLM-Pruner试图利用梯度回答第三个问题。它的核心观点是即使大语言模型已经完成预训练少量校准数据产生的梯度仍然包含参数敏感性信息。将梯度加入权重重要性评估可以更准确地判断哪些权重适合被删除。一、论文基本信息项目内容论文题目Beyond Size: How Gradients Shape Pruning Decisions in Large Language Models方法名称GBLM-PrunerGradient-Based Language Model Pruner作者Rocktim Jyoti Das、Mingjie Sun、Liqun Ma、Zhiqiang Shen首次提交2023年11月8日最新公开版本arXiv v22024年4月8日论文状态arXiv预印本论文链接arXiv页面 (arXiv)官方代码VILA-Lab/GBLM-Pruner (GitHub)论文主要研究的是一次性大语言模型权重剪枝。它不删除完整的注意力头、MLP神经元或者Transformer层而是将一部分单独的权重置为零支持普通非结构化稀疏以及2:4、4:8半结构化稀疏。二、论文要解决什么问题2.1 只看权重大小并不可靠最简单的幅值剪枝认为权重绝对值越小对模型越不重要因此越应该被删除。这种判断有一定合理性但并不总是正确。假设模型中有两个权重它们的数值都很小第一个权重发生轻微变化时模型损失几乎不变第二个权重发生轻微变化时模型损失明显上升。虽然两个权重的数值相近但第二个权重显然更加重要。因此权重数值只能说明参数本身有多大不能直接说明模型对这个参数有多敏感。2.2 Wanda加入了激活但没有直接观察损失变化Wanda在权重幅值之外加入了输入激活。它认为一个权重的重要性不仅取决于自身大小还取决于对应输入通道是否经常出现较强激活。也就是说权重大、输入激活强通常比较重要权重小、输入激活弱通常更适合删除。相比纯幅值剪枝这种数据驱动的判断明显更加合理而且不需要更新剩余权重。但是激活仍然只是描述了这个连接在前向传播中被使用的程度。它没有直接回答删除这个权重以后模型的语言建模损失会增加多少2.3 SparseGPT精度较高但处理过程更加复杂SparseGPT通过局部二阶信息估计删除权重造成的影响并在剪枝过程中调整剩余权重用其他参数补偿被删除权重带来的误差。这种方式通常能够保持较好的模型性能但需要处理近似Hessian逆矩阵并执行逐层权重补偿。GBLM-Pruner的作者认为相比WandaSparseGPT实现更加复杂相比SparseGPTWanda虽然简单却更偏经验设计。GBLM-Pruner希望在两者之间找到一个平衡比纯幅值剪枝和Wanda更充分地利用模型信息不执行SparseGPT式的剩余权重更新不进行剪枝后微调不改变模型原有网络结构。三、核心思想GBLM-Pruner在Wanda的权重与激活指标上进一步加入了损失梯度。三种信息分别表示信息它反映的问题权重幅值这个连接本身有多强输入激活这个连接在校准数据中被使用得有多频繁损失梯度模型损失对这个权重有多敏感因此一个比较适合删除的权重通常同时具有以下特点权重数值较小对应输入激活较弱损失对该权重不敏感。相反即使一个权重数值很小只要它的梯度较大GBLM-Pruner仍可能将其保留下来。论文最终使用的评分关系可以用一句纯文本表示权重重要性 权重与激活的联合得分 放大后的权重与梯度联合得分其中梯度项需要额外放大是因为预训练模型上的梯度通常比激活数值小很多。论文通过消融实验将放大系数设置为100。四、为什么训练结束后梯度仍然有用经典Optimal Brain Surgeon剪枝方法通常假设模型已经训练到局部最优点此时梯度接近零因此可以忽略一阶梯度项重点利用二阶曲率信息判断参数重要性。GBLM-Pruner重新审视了这个假设。一个预训练大语言模型可能在原始海量训练数据上接近某种最优状态但在当前抽取的有限校准样本上梯度并不会严格等于零。即使梯度数值较小不同参数之间的梯度大小仍可能存在明显差异。这些差异可以反映在当前语言建模目标下改变某个权重会对损失产生多大影响。因此GBLM-Pruner并不要求梯度足够大而是关注不同权重之间的相对梯度差异。只要这种相对排序具有信息梯度就能够帮助剪枝。从直觉上看激活回答的是“这个权重是否经常参与计算”梯度回答的是“模型是否在意这个权重发生变化”。这两种信息并不完全相同因此可以相互补充。五、GBLM-Pruner具体怎样执行5.1 准备少量校准数据论文从C4训练集中随机抽取128个文本序列每个序列长度为2048个Token。这些数据不需要人工标签。模型直接使用原本的自回归语言建模目标即根据前面的Token预测后面的Token并计算语言建模损失。(ar5iv)使用通用语言建模损失的目的是让剪枝过程尽量保持任务无关性而不是专门服务于某一个下游任务。5.2 对每个校准样本执行反向传播每个校准序列输入模型后程序先进行前向传播计算损失然后执行一次反向传播获得各个线性层权重的梯度。这里必须特别说明GBLM-Pruner所说的training-free并不表示完全不使用反向传播。它仍然需要计算梯度只是不使用优化器更新模型参数也不执行剪枝后的重新训练。官方代码虽然创建了AdamW优化器但只使用它清空梯度。每个样本执行loss.backward()后代码保存梯度统计然后再次清空梯度并没有调用参数更新步骤。(GitHub)因此更准确的描述是GBLM-Pruner是一种无需重新训练、无需参数更新的后训练剪枝方法但不是无反向传播的剪枝方法。5.3 聚合多个样本的梯度不同文本样本产生的梯度方向可能不同。如果简单地把所有带正负符号的梯度直接相加正梯度和负梯度会相互抵消。最后得到的数值很小并不一定表示该权重不重要也可能只是不同样本对它的优化方向相反。为避免这种抵消GBLM-Pruner使用两种方式聚合梯度L1聚合累加不同样本梯度的绝对值L2聚合累加梯度平方最后再开平方。两种方式都不关心梯度是正还是负而是衡量这个权重在多个样本上总体具有多强的敏感性。官方代码分别保存L1和L2梯度文件。L1版本直接累加绝对梯度L2版本累加梯度平方后再开平方。(GitHub)5.4 收集输入激活除了梯度之外方法还需要获得每个线性层的输入激活。官方实现通过前向Hook收集线性层输入并统计对应输入维度的激活尺度。这一部分基本继承了Wanda的数据统计方式。(GitHub)因此GBLM-Pruner实际上包含两种数据统计一次带反向传播的梯度统计一次逐层前向传播的激活统计。5.5 计算权重重要性对每个权重方法计算两部分得分。第一部分来自Wanda权重越大对应输入激活越强重要性越高。第二部分来自梯度权重越大损失对它越敏感重要性越高。论文不是用两个分数相乘而是将它们相加。消融实验表明当激活项和梯度项以减法组合时剪枝性能会完全崩溃以加法组合时两种信息能够形成互补。5.6 在每个输出神经元内部排序得到重要性分数后GBLM-Pruner并不是在整个模型中进行一次全局排序。对于一个线性层它会在每个输出神经元内部分别比较连接到该神经元的所有输入权重然后删除其中分数最低的一部分。例如设置50%稀疏率时每个输出神经元都会删除约一半得分较低的输入连接。论文比较了整层排序、输入维度排序、输出维度排序以及128元素分组等多种粒度。结果表明按单个输出神经元独立比较的效果最好LLaMA-2-7B在50%稀疏率下的困惑度为6.86。(ar5iv)官方代码也印证了这一点它沿权重矩阵最后一个维度排序并在每一行中选出得分最低的指定比例权重将其直接置为零。(GitHub)5.7 逐层传播剪枝后的输出GBLM-Pruner按照Transformer层顺序逐层剪枝。当前层完成剪枝后程序重新计算该层在校准样本上的输出并将剪枝后的输出作为下一层的输入。这样后续层收集到的激活来自前面已经剪枝的网络而不是始终来自原始稠密模型。(GitHub)完整流程可以概括为校准文本 → 计算梯度 → 聚合梯度 → 收集激活 → 计算重要性 → 排序并置零 → 重新计算当前层输出 → 继续剪下一层六、理论分析到底说明了什么论文从Optimal Brain Surgeon框架出发重新保留了传统推导中经常被忽略的一阶梯度项。原来的思路主要关注二阶信息删除一个权重后模型损失曲面会发生怎样的变化。GBLM-Pruner认为除了这种曲率信息还应该考虑损失沿当前梯度方向的变化。经过近似处理作者得到的主要结论是删除一个权重造成的损失变化一部分与权重和输入激活有关另一部分与权重和损失梯度有关。这为“激活项加梯度项”的重要性指标提供了理论动机。(ar5iv)不过理论推导与最终实现之间并不是完全一致的。理论推导中的激活部分带有平方梯度部分也保留了方向信息实际方法则去掉了激活项的平方对权重和梯度取绝对值或范数使用加法组合两部分为梯度项增加了100倍的经验缩放。这些修改主要由消融实验决定而不是全部由理论严格推出。(ar5iv)因此对这部分更准确的理解是理论解释了为什么梯度可能有用但最终剪枝指标仍然是一种理论启发下的经验设计。七、实验设置论文在六个LLaMA模型上进行了实验。(ar5iv)设置内容模型LLaMA-1-7B、13B、30BLLaMA-2-7B、13B、70B校准数据C4校准样本数128序列长度2048 Tokens硬件NVIDIA A100 40GB或80GB主要稀疏率50%稀疏形式非结构化、2:4、4:8困惑度数据集WikiText零样本任务BoolQ、RTE、HellaSwag、WinoGrande、ARC-easy、OBQA对比方法幅值剪枝、SparseGPT、Wanda是否剪Embedding否是否剪最终分类头否剪枝后微调无八、实验结果解读8.1 50%非结构化剪枝下面是WikiText困惑度数值越低越好。(ar5iv)方法LLaMA-2-7BLLaMA-2-13BLLaMA-2-70BLLaMA-1-7BLLaMA-1-13BLLaMA-1-30B原始模型5.474.883.325.685.094.10幅值剪枝16.036.835.3617.2920.217.54SparseGPT7.006.034.257.226.195.32Wanda6.925.974.227.266.155.24GBLM-Pruner6.865.884.177.156.115.18GBLM-Pruner在六个模型上都取得了最低困惑度说明梯度确实能够改善权重选择。但需要注意GBLM-Pruner相对于Wanda的提升幅度并不大。例如LLaMA-2-7B从6.92降低到6.86LLaMA-2-13B从5.97降低到5.88LLaMA-2-70B从4.22降低到4.17。因此实验更准确地证明了梯度能够为Wanda提供小幅但比较稳定的补充而不是带来数量级上的性能提升。8.2 只使用梯度是否有效论文单独测试了“权重加梯度”的评分方式不使用激活。在LLaMA-2-7B和13B上仅加入梯度就能将困惑度从幅值剪枝的16.03和6.83降低到约7.09和5.96。其结果已经接近Wanda和SparseGPT。这说明梯度并不是一个无效的附加项。即使不使用激活它本身也能够提供较强的参数重要性信号。不过梯度和激活一起使用时效果最好说明两者提供的信息并不完全重复。8.3 梯度聚合方式非常关键论文比较了直接梯度累加、L1聚合和L2聚合。梯度处理方式50%剪枝后困惑度带符号梯度直接累加119.72L1聚合7.17L2聚合7.09直接累加的结果几乎完全失效原因是不同样本的正负梯度发生了严重抵消。使用L1或L2范数后模型恢复到合理性能。这说明GBLM-Pruner真正有效的关键不只是“使用梯度”而是使用经过跨样本绝对值或范数聚合的稳定梯度统计。(ar5iv)8.4 为什么梯度缩放系数设置为100由于预训练模型的梯度较小如果直接把梯度项加到激活项上梯度几乎不会影响最终排序。论文测试了从0.001到100000的多个缩放系数。LLaMA-2-7B在50%稀疏率下当系数为100时取得最低困惑度6.858。系数继续增大后性能又开始下降。(ar5iv)这说明梯度项过小相当于退化为Wanda梯度项过大会压制激活信息两部分需要保持合适的数值平衡。同时这也暴露了一个问题固定系数100是通过实验选择的不一定适用于所有模型和数据集。8.5 零样本任务结果在LLaMA-1系列上GBLM-Pruner的平均零样本准确率均高于SparseGPT和Wanda。(ar5iv)模型SparseGPTWandaGBLM-PrunerLLaMA-1-7B61.7761.1763.07LLaMA-1-13B66.2766.4566.65LLaMA-1-30B69.3370.8471.17不过这种优势并不是在所有模型上都成立。在论文补充的LLaMA-2结果中LLaMA-2-13B上GBLM-Pruner平均准确率为67.74略高于SparseGPT的67.54和Wanda的67.62LLaMA-2-70B上GBLM-Pruner为73.27低于SparseGPT的74.00也略低于Wanda的73.36。(ar5iv)因此困惑度上的提升比较稳定但零样本任务上的优势会受到具体模型和任务影响。8.6 2:4和4:8半结构化剪枝2:4表示每连续4个权重中必须删除2个。4:8表示每连续8个权重中删除4个。两者稀疏率都是50%但局部位置约束比普通非结构化剪枝更严格。实验表明在严格的2:4稀疏下SparseGPT通常更有优势在4:8稀疏下GBLM-Pruner在多数较大模型上取得更好结果非结构化剪枝仍然是GBLM-Pruner表现最稳定的场景。(ar5iv)例如在LLaMA-2-7B的2:4剪枝中SparseGPT10.82Wanda12.11GBLM-Pruner11.91。这里GBLM-Pruner没有超过SparseGPT。这说明当硬件要求非常严格的局部稀疏模式时仅靠权重重要性排序可能不够SparseGPT对剩余权重的误差补偿仍然有价值。8.7 对校准数据是否敏感作者随机抽取了五组不同的128条校准数据对LLaMA-2-7B进行50%剪枝。得到的困惑度分别为6.86、6.87、6.89、6.86、6.87。不同数据划分之间的波动很小。作者还将校准样本数量从1增加到512结果显示GBLM-Pruner对样本数量变化的敏感程度低于SparseGPT。(ar5iv)不过这只能说明它在论文测试设置下比较稳定并不能证明梯度与校准数据分布无关。若校准数据集中在代码、数学或特定领域最终保留的权重仍可能偏向对应数据分布。九、梯度为什么产生了看似结构化的剪枝模式论文将梯度生成的掩码可视化后发现使用L1或L2方式聚合梯度时掩码中出现了明显的横向和纵向条带直接累加带符号梯度时掩码则更加杂乱。这说明同一输入维度或者输出维度上的多个权重可能具有相关的梯度敏感性。虽然GBLM-Pruner执行的是逐权重非结构化剪枝但最后形成的稀疏位置并不完全随机而是带有某种通道级相关性。不过论文只进行了可视化观察没有进一步证明这些条带是否对应某个完整注意力头某个MLP神经元某种具体语言能力可以安全删除的完整结构。因此这部分更适合作为一个有趣现象而不是结构化剪枝结论。十、与其他大语言模型剪枝方法的区别方法重要性依据是否需要反向传播是否更新剩余权重是否改变网络维度幅值剪枝权重大小否否否Wanda权重和输入激活否否否SparseGPT权重、激活和二阶近似否是否LLM-Pruner梯度和结构依赖是通常需要恢复训练是GBLM-Pruner权重、激活和梯度是否否GBLM-Pruner尤其容易与LLM-Pruner混淆。两者虽然都使用梯度但目标不同LLM-Pruner主要进行结构化剪枝删除注意力头、通道等完整结构GBLM-Pruner主要进行逐权重稀疏化把低分权重设置为零。因此GBLM-Pruner得到的模型张量形状通常没有变化只是其中零权重比例增加。十一、方法优点11.1 证明了预训练模型梯度仍有价值论文最重要的贡献是重新审视了“训练结束后梯度可以忽略”的传统假设。实验表明少量无标签校准数据产生的梯度经过正确聚合后确实能够改善大语言模型权重重要性排序。11.2 不需要剪枝后微调剪枝完成后可以直接评估不需要LoRA恢复、知识蒸馏或者全参数微调。这降低了对训练数据和训练资源的依赖。11.3 不需要更新剩余权重与SparseGPT相比GBLM-Pruner不需要在删除权重后重新调整剩余参数也不需要在剪枝阶段执行复杂的误差补偿。论文附录还测试了为GBLM-Pruner加入OBS式权重更新结果没有带来改善。11.4 方法逻辑直观权重、激活和梯度分别表示连接强度、使用程度和损失敏感性。三者结合后比单独依赖权重大小更容易解释。十二、方法局限12.1 “无需训练”容易产生误解GBLM-Pruner不更新参数但仍然需要对每个校准样本执行反向传播。对于数十亿参数的大语言模型计算并存储所有线性层梯度仍然会带来明显的时间、显存和内存开销。它的校准成本显然高于只需要前向传播的Wanda。(GitHub)所以不能简单地把它理解为“几乎零成本的剪枝”。12.2 非结构化稀疏不等于真实推理加速论文的主要优势来自50%非结构化剪枝。但将一半权重设置为零并不会让普通PyTorch密集矩阵乘法自动减少一半计算时间。要获得真实加速还需要稀疏权重存储格式对应的稀疏GEMM内核硬件对目标稀疏模式的支持推理框架能够正确调用稀疏算子。论文主要报告困惑度和任务准确率没有系统报告真实延迟、Token吞吐量、显存占用和能耗。因此它证明的是相同稀疏率下模型精度保持得更好而不是已经证明端到端部署速度更快。(ar5iv)12.3 在硬件友好的2:4稀疏下不占优势2:4更容易被特定GPU稀疏计算单元利用但GBLM-Pruner在这一设置下经常不如SparseGPT。这意味着它在精度最好的非结构化场景与实际硬件最容易加速的场景之间仍然存在一定距离。12.4 相比Wanda的提升比较有限GBLM-Pruner在50%非结构化剪枝下稳定优于Wanda但多数模型的困惑度差距只有0.03到0.09左右。考虑到GBLM-Pruner需要额外执行反向传播在实际应用中需要判断这一小幅精度提升是否值得额外的梯度计算成本论文没有给出完整的剪枝时间、峰值显存和成本收益分析。12.5 梯度缩放系数带有经验性最终采用的100倍缩放来自LLaMA-2-7B上的消融实验。不同模型规模、数值精度、校准数据和损失函数可能具有完全不同的梯度尺度因此固定系数未必能够直接推广。更加理想的方式可能是根据每层的激活和梯度分布自动进行尺度对齐。12.6 理论推导与实际评分并不完全一致理论分析保留了梯度方向和部分平方项而最终实现使用绝对值、范数、加法和人工缩放。因此理论更多提供了设计方向不能看作对最终指标的完整严格证明。12.7 零样本优势并不普遍GBLM-Pruner在LLaMA-1系列上的平均准确率较好但在LLaMA-2-70B上没有超过SparseGPT和Wanda。这说明更低的语言建模困惑度并不保证所有知识、阅读理解和常识推理任务都同步提升。十三、这篇论文真正有价值的地方GBLM-Pruner最重要的价值不是提出了一个特别复杂的剪枝算法而是增加了一个新的观察维度。此前一次性大语言模型剪枝主要关注权重 → 权重加激活 → 权重、激活与二阶补偿GBLM-Pruner进一步提出权重、激活之外还可以直接观察损失梯度。它说明预训练结束并不代表梯度完全失去价值。即使模型不再训练梯度仍可以作为一种诊断信号用于判断模型对哪些参数更加敏感。从这个角度看GBLM-Pruner的贡献主要是剪枝准则的扩展而不是网络结构、稀疏内核或者部署框架上的创新。十四、一句话总结GBLM-Pruner利用少量校准文本计算大语言模型的权重梯度并将梯度敏感性加入Wanda的权重与激活评分中在不更新剩余权重、不进行剪枝后微调的条件下提高了LLaMA模型50%非结构化剪枝后的性能但它仍需要成本较高的反向传播而且非结构化零权重并不能直接转化为真实推理加速。