大语言模型的多头注意力并不意味着每个注意力头都同等重要。研究发现,一些头会学习相近的关注模式,另一些头则承担句法关系、位置关联或跨词依赖等较明确的功能。因此,注意力头剪枝的核心不是简单减少头数,而是在压缩模型与保留关键能力之间找到平衡。
注意力头剪枝压缩了什么
在多头注意力模块中,每个头分别执行查询、键和值的投影与注意力计算,随后将结果拼接并映射到输出空间。头剪枝通常为每个头设置掩码或门控,将贡献较低的头永久关闭,并进一步删除相应权重及计算分支。
需要注意的是,剪掉一定比例的注意力头,不等于按相同比例压缩整个模型。LLM的大量参数往往集中在前馈网络、词嵌入和输出层中,注意力头只对应其中一部分。因此,头剪枝率更适合描述注意力结构的稀疏程度,整模型压缩率则应使用剪枝前后的实际参数量、模型文件大小或显存占用进行计算。
剪枝率如何影响模型体积与速度
随着保留头数减少,查询、键、值相关投影以及注意力矩阵计算可以同步缩减,理论计算量和中间激活占用也会下降。序列越长,减少注意力计算带来的潜在收益通常越明显。不过,如果实现方式只是把被剪枝头的输出设为零,而没有重构权重矩阵和算子形状,模型参数仍可能保留,推理框架也未必能获得可观的实际加速。
这意味着评估压缩效果不能只报告“剪掉了多少头”,还应同时记录参数量、权重文件大小、峰值显存、首个Token延迟、逐Token延迟和吞吐量。结构化剪枝通常比非结构化置零更容易转化为部署收益,但最终效果仍受硬件利用率、批量大小、序列长度和推理引擎支持程度影响。
为什么轻度剪枝可能几乎不降精度
不同注意力头之间存在一定冗余,部分头可能捕捉相似模式,也可能只在有限样本上发挥作用。Voita等人的机器翻译实验表明,在特定模型和数据集上,大量编码器注意力头被移除后,性能下降仍较小。这说明合理识别冗余头具有压缩空间,但该结论不能直接外推到所有LLM和任务。相关研究可参阅注意力头分析论文[1]。citeturn1search3
轻度剪枝有时还会产生类似正则化的效果,减少重复或噪声路径,使模型更依赖稳定特征。然而,这并不代表剪枝一定提升精度。测试集波动、随机种子、微调数据规模和评价指标都可能造成表面改善,实验中应通过多次运行和置信区间判断差异是否稳定。
激进剪枝为何容易损害下游任务
当剪枝越过模型的冗余区间,关键注意力头会被删除,模型表示能力随之下降。长文本理解、指代消解、机器翻译、信息抽取和多步推理通常更依赖跨位置关系,因此可能比简单分类任务更敏感。生成任务还可能出现事实一致性下降、上下文利用不足或输出重复等问题,而这些变化未必能被单一困惑度完整反映。
下游任务之间需要的头也不完全相同。对情感分类贡献较低的头,可能对实体关系或翻译对齐很重要。因此,基于某一任务计算的重要性分数并实施剪枝,往往会形成任务专用压缩模型;如果目标是通用部署,则应在多任务、多长度和生成式评测上联合验证。
常见剪枝策略及其差异
- 梯度重要性:根据头输出或门控变量对损失的梯度估计贡献,计算方便,但结果可能受校准数据影响。
- 消融评估:逐个关闭注意力头并观察指标变化,直观可靠,但对大模型而言计算成本较高。
- 可学习门控:在训练中加入稀疏约束,让模型自动选择保留头。可微子集剪枝还能直接约束保留数量,便于控制稀疏度,详见相关研究[2]。citeturn1search1
- 全局排序:在所有层之间统一比较重要性,通常比每层机械剪掉相同比例更灵活,因为不同层的冗余程度并不一致。
一套更稳妥的实验流程
- 先建立未剪枝模型的参数量、延迟、显存和下游指标基线。
- 准备与真实业务分布一致的校准集,避免只用单一类型文本判断头的重要性。
- 设置由低到高的多档剪枝率,绘制压缩收益与任务精度之间的关系,而不是只测试一个比例。
- 在每档剪枝后进行短程微调或知识蒸馏,使剩余注意力头重新分配功能。
- 导出结构化模型并在目标硬件上实测,确认理论计算下降是否真正转化为速度和成本收益。
实践中的最佳剪枝点,不是头数最少的位置,而是业务指标仍满足要求时,参数、显存、延迟与吞吐量综合收益最大的拐点。
总结
注意力头剪枝能够减少注意力模块中的冗余计算,但头剪枝比例、整模型压缩率和实际推理加速并非同一概念。温和剪枝通常更容易在保持精度的同时获得收益,激进剪枝则可能破坏关键语言关系,并对长上下文、生成和推理任务造成更明显影响。可靠的方案应采用结构化删除、分阶段提高剪枝率、剪枝后恢复训练以及多任务实测,最终用目标硬件上的真实指标决定部署配置。