标准回答
剪枝的两类粒度
- 非结构化剪枝:把不重要的单个权重置零,能达到很高稀疏率,但稀疏分布不规则,普通硬件难以转化为实际加速,需专用稀疏内核;
- 结构化剪枝:直接移除整通道、注意力头或整层,模型仍是稠密小模型,能在通用硬件上获得真实的延迟与体积收益,是端侧首选。
典型流程
按重要性指标(权重幅值、对损失的敏感度、梯度信息等)给结构单元打分,剪掉低分单元,然后微调恢复精度;可迭代式逐步剪枝以减小一次性掉点。
其他结构优化
算子融合减少访存与启动开销、用深度可分离卷积替代标准卷积、对权重矩阵做低秩分解,都能在结构层面降算力。
组合
实际部署常把剪枝与量化、知识蒸馏叠加:先得到更小的结构,再量化降比特,并用蒸馏挽回精度。
常见误区
⚠️ 常见踩坑
只看「稀疏率」高就以为变快——非结构化剪枝在普通硬件上往往无加速;以及剪完不做微调直接部署,导致精度大幅下滑。
追问
追问 1:为什么端侧更偏好结构化剪枝?
端侧硬件(CPU/NPU)对规整的稠密计算友好,结构化剪枝产出的仍是更小的稠密网络,能直接减少 FLOPs、内存与延迟。而非结构化剪枝的随机稀疏需要专门的稀疏算子支持,端侧后端通常不具备,难以兑现理论加速。
追问 2:剪枝和量化应该先做哪个?
常见顺序是先剪枝再量化:先用结构化剪枝缩小网络规模,微调恢复精度,再做量化降比特,最后整体微调或校准。两者收益叠加;但要在目标设备上验证联合压缩后的精度回退是否可接受,必要时对敏感层保守处理。
延伸学习
与本题相关的知识库文章、术语、工具与行业资讯。