模型剪枝(Pruning)

AI TERM术语词条

Model Pruning

技术原理 模型压缩端侧部署推理优化

术语释义

移除神经网络中冗余的权重、神经元或整层结构,让模型更小更快而性能尽量不损失。分结构化与非结构化两大路线,常与量化、蒸馏组合使用,是端侧部署的关键压缩手段。

模型剪枝(Pruning)指移除神经网络中冗余的权重、神经元乃至整层结构,让模型变得更小、更快,而性能尽量不损失。它是模型压缩的核心手段之一,与量化、蒸馏共同组成把大模型装进有限显存与算力的工具箱,直接决定推理成本、延迟以及端侧能否落地。

为什么模型可以被剪

训练好的网络中存在大量「贡献极小」的参数:它们的权重接近零,去掉后对输出几乎没有影响。这种冗余来自过参数化——为了让优化过程更容易找到好的解,模型参数量通常远大于任务本身所需。剪枝正是利用这一点:先评估每个权重或结构单元的重要性,再移除排名靠后的部分,最后通过微调让剩余参数重新适应,把精度追回来。

两大技术路线

  • 非结构化剪枝:逐个权重地剪,压缩率高、精度损失小,但得到的稀疏矩阵需要专用硬件或稀疏算子才能真正提速,通用硬件上往往只省显存不省时间。
  • 结构化剪枝:以通道、注意力头、整层为单位成块移除,剪完仍是规整的稠密网络,普通加速卡直接受益,工程界更欢迎。
  • 半结构化剪枝:按固定比例保留权重(例如每四个权重保留两个),在稀疏率与硬件加速支持之间取平衡。
  • 粒度取舍:粒度越细,理论压缩上限越高,但对硬件与推理框架的要求也越高;落地时通常先看目标硬件支持哪种稀疏形式。

标准流程与训练策略

典型流程是三步:评估重要性、移除低分项、微调恢复精度。重要性评分常用权重幅值、梯度大小或激活值统计;移除时可以一次性剪到位,也可以迭代地「小步剪、多次微调」,后者通常更稳。除了「先训练再剪」,还有训练中剪枝(边训练边稀疏化)以及结构化剪枝后直接可用等思路,目的是减少甚至省掉恢复训练的开销。

与量化、蒸馏的分工

  • 剪枝:删掉不重要的部件,改变的是「有多少参数在参与计算」。
  • 量化:把保留下来的参数换成更低精度的表示,改变的是「每个参数占多少位」。
  • 蒸馏:让小模型模仿大模型的行为与输出分布,改变的是「由谁来完成计算」。
  • 组合使用:三者并不互斥,实际部署里常见「先剪枝再量化」的串联组合,压缩收益可以叠加。

实践要点

  • 先定硬件再定方案:目标设备是否支持稀疏加速,直接决定该选结构化还是非结构化路线。
  • 分阶段提高稀疏率:逐层或逐步加大剪枝比例,比一次性剪到很高比例更容易恢复精度。
  • 每轮都做验证:用实际指标而不是理论压缩率,来判断是否值得继续往下剪。
  • 关注端到端延迟:参数变少不等于推理变快,预处理与内存搬运也要计入。
  • 别忽视微调数据:恢复训练的数据分布应贴近真实使用场景,否则追回的精度可能不落在关键能力上。

常见误区

  • 「剪得越多越好」:超过模型冗余上限后精度会明显下降,收益与损失之间存在拐点。
  • 把稀疏率当加速比:非结构化剪枝在通用硬件上常常只减少显存占用,不带来同比例提速。
  • 剪枝后不做专项验证:平均指标可能看不出问题,但长尾场景与特定任务上的退化会更明显。
  • 与量化混为一谈:两者作用的维度不同,可以叠加但不可互相替代。
查看全部 218 条 →
共 9 条