模型剪枝基于一个观察:深度神经网络中存在大量接近零或冗余的权重,移除它们对输出影响很小。其流程一般为:训练一个密集模型 → 评估权重重要性 → 移除不重要的连接 → 微调恢复精度。
非结构化剪枝:粒度最细,直接删除单个权重(将其置零)。它能够达到极高的稀疏率(如90%以上的权重被移除),理论上参数极大减少。但致命缺陷是导致权重矩阵呈随机稀疏状,现代GPU/CPU的矩阵乘法无法直接利用这种稀疏性,需要专用硬件或稀疏库(如NVIDIA的Sparsity Toolkit)才能加速,因此工业界部署较少。
结构化剪枝:粒度较粗,移除整个滤波器(Channel)、注意力头或整个层。例如,在卷积网络中删除一个卷积核,在Transformer中削减一个注意力头。移除后,矩阵维度直接降低,无需特殊硬件,在常规GPU上就能获得实实在在的加速和显存节省。缺点是灵活性较差,剪枝粒度大,精度损失往往比非结构化更明显,且需要精心设计重要性评估准则(如基于L1范数、梯度幅度或BN层缩放因子)。
若部署在移动端或专用AI芯片,非结构化剪枝有价值。
若部署在通用云GPU,结构化剪枝是首选。
当前大模型剪枝(如LLM-Pruner)常结合结构化剪枝和参数高效微调(如LoRA),在保持零样本能力的同时压缩模型。