【模型压缩】模型剪枝详解

本文详细介绍了模型剪枝的必要性和原理,探讨了结构化与非结构化、静态与动态、硬剪枝与软剪枝的区别。重点讨论了结构化剪枝中的通道级、滤波器级和层级剪枝,以及Network Slimming剪枝方法,通过L1正则化实现模型压缩。文章还展示了模型剪枝的实战流程和效果。
摘要由CSDN通过智能技术生成

参考链接:https://zhuanlan.zhihu.com/p/635454943
https

1. 前言

1.1 为什么要进行模型剪枝

CNN在实际应用中的部署主要受以下几个方面制约。

1)模型大小的限制

CNN强大的表示能力来自其数百万可训练参数。这些参数以及网络结构信息需要存储在磁盘上,并在推理期间加载到内存中。例如,在ImageNet上存储一个典型的CNN会消耗超过300MB的空间,这对嵌入式设备来说是一个巨大的资源负担。

2) 运行时内存

在推理期间,CNN的中间激活/响应甚至可能比存储模型参数占用更多内存空间,即使批量大小为1。这对于高端GPU来说不是问题,但对于许多计算能力较低的应用程序来说,这是负担不起的。

3) 计算操作数

卷积操作在高分辨率图像上计算量很大。大型CNN在移动设备上处理一张图像可能需要几分钟的时间,这使得在实际应用中采用它是不现实的。

因此有必要对模型进行压缩,而满足边缘设备的AI应用。

而剪枝就是模型压缩技术的一种。(模型压缩技术:剪枝、蒸馏、量化、低秩分解等)

1.2 为什么可以进行模型剪枝

生物学启发:

生物研究发现人脑是高度稀疏的。
比如 2016年早期经典的剪枝论文就曾提到,生理学上发现对于哺乳动物,婴儿期产生许多的突触连接,在后续的成长过程中,不怎么用的那些突触就会退化消失。突触修剪从出生时就开始了,一直持续到
20 多岁。
结合深度神经网络是模仿人类大脑结构,和该生理学现象,我们可以认为深度神经网络是存在稀疏性的。

过参数化:

深度学习网络模型从卷积层到全连接层存在着大量冗余的参数,大量神经元激活值趋近于0,将这些神经元去除后可以表现出同样的模型表达能力,这种情况被称为过参数化,而对应的技术则被称为模型剪枝。
尽管大型神经网络已经无数次证明了它们的学习能力,但事实证明,在训练过程结束后,并非它们的所有部分都仍然有用。

2. 剪枝方式的几种分类

2.1 结构化剪枝 和 非结构化剪枝

  • 非结构化剪枝将每个单独的权重置为0
  • 结构化剪枝移除一组规则的权重,如layer剪枝、filter剪枝、通道剪枝
    在这里插入图片描述
    在这里插入图片描述
    一般我们会用结构化,或者说粒度不是那么细致的剪枝比如砍通道,这个是已经很成熟了,可以直接拿过来用,可以直接加速并部署起来的,和你做一个小模型差不多;
    非结构化是直接修改权重,这样的效果实际上部署起来会比较的麻烦,而且现有的工具链加速其实不是那么明显.

2.1.1 结构化剪枝

结构化剪枝的重点,并不是在“剪枝”,而在于“结构”。
它更像是寻找一种优秀网络结构的方法,去让自己网络适配自己的数据集,而非“剪枝”方法。
结构化修剪方法在通道或层的层次上进行修剪,不需要专用的硬件/库来实现
结构化剪枝则是指按照一定的结构进行剪枝
这种方式会改变神经网络的结构,剪枝后的网络会比原来的网络更小,更简单。
在这里插入图片描述
1)layer-l

  • 16
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值