【Designing Energy-Efficient Convolutional Neural Networks using Energy-Aware Pruning】论文笔记

[CVPR’17]论文链接:https://arxiv.org/abs/1611.05128
主要工作:使用能量感知修剪方法设计一个高效节能的卷积神经网络(题目直译,哈哈)
作者认为以往的裁剪方法,都没有考虑到模型的带宽以及能量的消耗,因此无法从能量利用率上最大限度的裁剪模型,因此提出了一种针对CNN的能量感知修剪算法,直接利用CNN的能量消耗来指导修剪过程。总的来说也是修剪策略中的一种。

效果:

AlexNet和GoogLeNet的能耗分别降低了3.7倍和1.6倍,精度损失低于1%。

主要思想:

1)利用能量估算工具对CNN进行能量估算(计算能耗和数据转移能耗)。
2)修剪:首先修剪消耗最多能量的层(越到后面越难修剪),然后通过最小化feature maps的变化而不是filters的变化进行参数的修剪。使用封闭形式的最小二乘解来局部微调,以快速恢复精度并提高压缩比。修剪完所有层之后,整个网络通过反向传播进行全局微调。

能量估算方法

1.背景和动机
CONV和FC层中的乘法和累积(MAC)操作在现有CNNs总操作中占99%以上,因此在处理运行时间和能耗方面占主导地位。 MAC的能耗来自所需数据的计算和内存访问,包括权重和特征映射。尽管计算量随着MAC数量线性增加,但所需数据量并不一定会因数据重用而相应地缩放,即相同的数据值用于多个MAC。这意味着一些数据比其他数据对能量的影响更大,因为它们被更频繁地访问。换句话说,去除更多重用的数据有可能产生更高的能量降低。CNN中的数据重用在很多方面都有出现,并且由不同层的形状配置决定。
在CONV层中,由于其权重共享属性,根据输出特征图的分辨率和滤波器的大小分别重复使用每个权重和输入激活。在CONV和FC层中,每个输入激活也在同一层内的不同输出通道的所有滤波器上重用。当应用输入批处理时,每种权重都会在两种类型的层中的所有输入要素图中进一步重用。总体而言,CONV层通常比FC层具有更多的数据重用。因此,根据一般经验,CONV层中的每个权重和激活对能量的影响都比FC层更高。虽然数据重用是比较数据相对能源影响的一个很好的指标,但它并不直接转化为实际的能源消耗。这是因为现代硬件处理器实现了多级存储器层次结构,例如DRAM和多级缓冲器,以分摊存储器访问的能量成本。其目标是通过较少的能量消耗存储器级别访问更多数据,这些存储器级别通常具有较少的存储容量,因此可以将数据访问降至最低能耗级别。因此,访问具有多次重复使用的单个数据的总能量成本可能会有很大差异,具体取决于访问如何在不同内存级别上传播,并且使用内存层次结构最大限度地降低整体能耗是高效处理CNN的关键。
2.方法
随着在多级存储器层级中利用数据重用的想法,作者的另一篇论文Eyeriss: A Spatial Architecture for Energy-Efficient Dataflow for Convolutional Neural Networks提出了一个框架,可以估计CNN的推断能耗。对于每个CNN层,框架通过将其分为计算能耗Ecomp和数据移动能耗Edata来计算能耗。 Ecomp是通过计算层中的MAC数量并通过在计算核心中运行每个MAC操作所消耗的能量来计算的。 Edata是通过计算硬件中存储器层次结构中每个层次的存储器访问次数计算出来的,并用该存储器层次的每次访问消耗的能量来衡量。基于上述框架,作者创建了一种方法,进一步说明数据的影响稀疏性和能耗降低。例如,我们假设当其输入激活或权重为零时,MAC的计算和相关的存储器访问可以完全跳过。无损数据压缩也应用于稀疏数据,以节省片上和片外数据移动的成本。位宽的影响通过相应地缩放不同硬件组件的能量成本来量化。例如,乘法器的能量消耗与二进制的位宽成正比,而存储器访问的能耗只能线性地缩放其能量。
利用这种方法,可以量化各种流行的CNN模型和方法之间的能源成本差异,例如增加数据稀疏度或激进的位宽降低。更重要的是,它为研究人员在设计时评估CNN的能量消耗提供了一个通道,可用作反馈,从而导致CNN设计大大降低能耗。

算法步骤:

能量感知修剪的关键步骤如图所示,其中输入是CNN模型,输出是能量消耗较低的稀疏CNN模型。
这里写图片描述
步骤1:基于能量来确定网络层的修剪顺序。
步骤2,3和4:分别删除,恢复和局部调整网络中一层的权重,这个内部循环针对网络中的每一层而被重复。修剪和恢复权重包括选择权重,而本地微调权重包括更改权重的值,同时最小化输出特征映射错误。在步骤2中,使用简单的基于量值的修剪方法来快速去除高于目标压缩比的权重(例如,如果目标压缩比是30%,则在该步骤中去除35%的权重)。重新移动的额外重量的数量是凭经验确定的。在步骤3中,将对减小输出误差具有最大影响的相关权重恢复到其原始非零值以达到目标压缩比(例如,恢复权重的5%)。在步骤4中,利用闭式最小二乘解对局部权重进行局部微调,以进一步减少输出特征映射误差。
步骤5:使用反向传播在整个网络上执行全局微调。
所有这些步骤迭代地执行,直到最终网络不能再保持给定的准确度,例如1%的准确度损失。
与之前的基于幅度的修剪方法相比,这项工作的主要区别在于步骤1,3和4的引入。步骤1使剪枝能够最小化能量消耗。步骤3和步骤4增加压缩比并减少能量消耗。

恢复权重:

作者将最小化输出特征图的误差问题建模为L0最小化问题:
这里写图片描述
q是我们希望保留的所有filters中的非0数,解决这个L0-最小化问题是NP难题,因此作者提出了一种贪心算法去逼近它。
1.将基于幅度修剪完的filters进行进一步的修剪,达到比目标压缩比更高的压缩比。每个filters具有相应的非零权重的索引。
2.迭代地恢复权重,直到非零权重的数量等于q。
3.每个filters的残差用来表示我们需要最小化的当前输出特征映射差。在每次迭代中,对于那些没有非零权重的索引的权重,通过减少L1范数选择使得残差最大的权重,对其添加非零权重的索引。然后通过这个新的权重来更新残差。
4.从每次迭代中残差最大的滤波器恢复权值,这可以防止算法恢复具有小残差的滤波器中的权重,对整体输出特征图的误差影响较小。如果仅根据filters的最大“L1范数改进”来选择权重,则可能发生这种情况。为了加速恢复过程,在每次迭代中恢复给定过滤器中的多个权重。因此,选择具有最高g使得最大’L1范数改进的g权重,计算时减少了每个权重残差改进的频率,否则这需要很长时间。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值