一句话定义:模型剪枝(Pruning)就是把训练好的神经网络里“贡献很小”的连接或结构删掉,让模型体积更小、推理更省显存和算力。
打个比方:一个城市的航线网络有几千条线路,其中枢纽之间的航线天天满员,而一些小城市之间的航线几乎没人坐。取消那些冷门航线,整个网络照样运转,还省下大量燃油和停机位。神经网络的权重矩阵也是如此:真正起作用的连接只占一部分,大量权重数值接近零,删掉它们对输出影响很小。
具体怎么做:最常见的是看权重绝对值,把接近零的权重置零,这叫非结构化剪枝(unstructured pruning)。它压缩率高,但得到的稀疏矩阵在通用硬件上未必跑得快,因为显卡照样要按稠密矩阵算。另一种是结构化剪枝(structured pruning),整行整列、整个通道或整个注意力头删掉,矩阵维度直接变小,硬件友好,但更容易伤精度。
难点一:什么叫“不重要”。只看权重大小很粗暴,因为有些小权重连着关键路径。更细的做法是看激活值、看删掉后损失函数的变化,或者用正则化让模型在训练中自己变稀疏。还有个经验:不同层敏感度不同,通常第一层和最后几层比较娇气,中间层更耐剪。所以实际工程里很少一刀切,而是逐层试探。
难点二:剪完必须微调。一次性剪太狠,模型会“失忆”,准确率掉得厉害。通行做法是迭代式剪枝:剪一小部分 → 用原数据微调恢复 → 再剪一小部分,循环几轮。这一步叫微调(fine-tuning),是剪枝能落地的关键。不微调直接上线,多半会翻车。
和相邻概念的区别:
| 方法 | 改变什么 | 主要收益 | 典型代价 |
|---|---|---|---|
| 剪枝 Pruning | 删掉连接或结构 | 参数、算力下降 | 需微调恢复精度 |
| 量化 AI 词典:Quantization">Quantization | 用低比特表示权重 | 显存、带宽下降 | 精度损失,需校准 |
| 蒸馏 Distillation | 小模型学大模型输出 | 结构本身变小 | 需教师模型和训练 |
对从业者的意义:剪枝是模型压缩工具箱里的常规选项,常和量化、蒸馏叠加使用,目标是把大模型塞进手机、车机或成本敏感的服务器。对普通职场人来说,理解剪枝有助于判断“模型变小了是不是一定变笨”——答案是不一定,关键看剪得准不准、补训得好不好。
具体到某个框架支持哪些稀疏格式、加速效果如何,以官方页面为准。
