AutoCompress: An Automatic DNN Structured Pruning Framework for Ultra-High Compression Rates 论文阅读笔记/翻译

原文链接

目录

  • AutoCompress: An Automatic DNN Structured Pruning Framework for Ultra-High Compression Rates 论文阅读笔记/翻译
    • 摘要
    • 1. 介绍
    • 2. 相关工作
      • 结构和非结构化剪枝
      • ADMM
      • AutoML
    • 3. AC 框架
      • 3.1 自动过程的通用方法
      • 3.2 提升性能的三个根源
      • 3.3 核心剪枝算法
      • 3.4 权重纯化
      • 3.5 ⋆\star⋆自动压缩框架
    • 4. 实验和讨论
      • 4.1 在cifar10上的实验
      • 4.2 在ImageNet上的实验
    • 5 结论

摘要

结构化权重剪枝是DNN模型压缩的代表性方法,其中自动化的超参数选择是很必要的;本文提出了一种名为AutoCompress(之后简称为AC)的自动结构化剪枝框架,有以下优点:

  1. 在自动化过程中高效地结合结构化剪枝方案;
  2. 采用基于ADMM(Alternating Direction Methods of Multipliers) 的结构化剪枝算法,提出一种额外的权重纯化步骤;
  3. 提出一种启发式,脱胎于经验导向搜索的搜索方法。

CIFAR10ImageNet数据集上的实验表明AC达到了权重和FLOPS的超高压缩率(120倍的参数压缩);在智能手机上也实现了推理速度的显著提高。
本文所有模型

1. 介绍

这一部分有大量的文献引用,这里只是提一嘴其idea,标题就不列出了,想获得更多信息可阅读原文
深度网络(如VGG,ResNet)对存储和计算的高要求一直以来制约着其在移动平台和边缘设备的部署。基于此,很久以前就有人提出了以降低网络推理(也就是向前传播)期间存储和计算开销为目标的模型压缩方法。其中一个典型的方法就是权重剪枝,即在保持准确率的前提下减少权重参数的数量。

权重剪枝可分为两个分支:非结构化结构化的。非结构化的剪枝可以任意地剪掉参数,以追求压缩率最大化,但是存储产生的稀疏矩阵需要额外的索引开销,不利于存储;结构化剪枝在保证矩阵完整性的同时减小矩阵的规模,有益于硬件加速,因此成为了近期研究的焦点。

针对深度网络的卷积层,结构化剪枝也可分为很多种,包括filter pruningchannel pruningcolumn pruning,近期有人提出了一种基于ADMM优化工具的系统化框架,它对结构化和非结构化剪枝都适用。

结构化剪枝策略非常灵活,涉及到如何确定每层的剪枝率。传统方法是人工选择,经过不断试错来得到较好的结果,费时费力而且导出的参数往往不是最优。受到AutoML(automated machine learning) 自动机器学习的启发,近期的工作(DRL,deep reinforcement learning)提出了自动决定每层剪枝率的方法,然而它也有自己的局限性:

  1. 使用的是一种早期的,固定正则化的剪枝法;
  2. 只考虑了filter pruning

作者认为自动化过程的通用流程可分为四步:

  1. action sampling
  2. quick action evaluation
  3. decision making
  4. actual pruning and result generation

本文的策略是采用ADMM剪枝算法,添加了额外的权重纯化步骤;还提出了一种经验导向的,启发式的搜索法来优化DRL

作者在智能手机上做的实验基于他们的编译器协助的移动深度网络加速框架。

2. 相关工作

结构和非结构化剪枝

二者区别在上文已经提到了
下面给出了filter pruningchannel pruningfilter shape(column) pruning三种结构化剪枝方法的图示

filter pruning直接将一整个filter(也可叫卷积核)剪掉;channel pruning将所有filter的某一通道剪掉;filter shape pruning修改filter的形状,将所有filter的某一部分剪掉。
另外值得一提的是filter pruningchannel pruning有一定相关性:对第i层采用filter pruning时会使第i+1层的对应通道也被剪掉。

ADMM

关于admm的简明理解可以参考此处
这一部分涉及一点数学知识,没完全搞懂,大概意思是结构化剪枝问题可以转化为形如minxf(x)+g(x)\ min_xf(x)+g(x) minx​f(x)+g(x)的优化问题,其中f(x)\ f(x) f(x)是损失函数,g(x)\ g(x) g(x)是对参数数量的约束

AutoML

NAS(神经网络架构搜索)采用了AutoML。
在传统的机器学习方法中,准确率高低很大程度上取决于特征的质量;为了减小人工筛选特征的开销,自动特征工程会生成合适的特征集。

3. AC 框架

给定一个经过预训练的深度网络,AC会决定每层的剪枝率和剪枝策略。

3.1 自动过程的通用方法

四个步骤上文已经提到了,其中的action表示对超参数选择取样;由于超参数空间很大,前两步应该快速进行以降低训练时间,作者使用简洁启发式的方法,基于被选择的超参数消除每层中的部分参数,然后评估准确率;第三步根据超参数的取样结果和评估结果确定超参数的值;第四步使用优化算法产生剪枝结果,优化算法每轮只运行一次。
重复上述步骤4-8次。

3.2 提升性能的三个根源

一是剪枝策略,作者发现filter pruning 配合 filter shape pruning 表现最好,比较结果列在附录;

二是在上述的第四步中使用 ADMM 作为优化算法,而且还添加了一个纯化步骤;具体的操作在之后详述;

三基本上是在批判DRL,启发式的搜索算法。

3.3 核心剪枝算法

算法中最主要的一步就是ADMM regularization
首先考虑一个深度网络的损失函数f({Wi},{bi}),f(\{W_i\},\{b_i\}),f({Wi​},{bi​}),其中WiW_iWi​和bib_ibi​是第i层的参数;那么剪枝问题就可以被定义成min⁡{Wi},{bi}f({Wi},{bi}),\min_{\{W_i\},\{b_i\}}f(\{W_i\},\{b_i\}),{Wi​},{bi​}min​f({Wi​},{bi​}),s.t.Wi∈Si,for all i,s.t. W_i \in S_i,\text{for all i},s.t.Wi​∈Si​,for all i,
SiS_iSi​代表剪枝要求
这里不太明白为什么可以独立地考虑每一层对损失函数的影响
接下来引入指示函数
gi(Wi)={0if Wi∈Si,+∞otherwiseg_i(W_i)= \begin{cases} 0 & \text{if $W_i \in S_i$,}\\ +\infty & \text{otherwise}\\ \end{cases}gi​(Wi​)={0+∞​if Wi​∈Si​,otherwise​
引入附加变量ZiZ_iZi​和对偶变量UiU_iUi​,构造一个增广拉格朗日函数,接着分解成两个子问题:
min⁡{Wi},{bi}f({Wi}i=1N,{bi}i=1N)+∑i=1Nρi2∥Wi−Zik+Uik∥F2\min_{\{W_i\},\{b_i\}}f(\{W_i\}_{i=1}^N,\{b_i\}_{i=1}^N)+\sum_{i=1}^N\frac{\rho_i}{2}\Vert W_i-Z_i^k+U_i^k\Vert_F^2{Wi​},{bi​}min​f({Wi​}i=1N​,{bi​}i=1N​)+i=1∑N​2ρi​​∥Wi​−Zik​+Uik​∥F2​
min⁡{Zi}gi(Zi)+∑i=1Nρi2∥Wik+1−Zi+Uik∥F2\min_{\{Z_i\}}g_i(Z_i)+\sum_{i=1}^N\frac{\rho_i}{2}\Vert W_i^{k+1}-Z_i+U_i^k\Vert_F^2{Zi​}min​gi​(Zi​)+i=1∑N​2ρi​​∥Wik+1​−Zi​+Uik​∥F2​
分别求解
这部分涉及一些数学知识实在理解不能,先挖个坑
ADMM regularization的特点是动态正则化,在每轮迭代都会调整,惩罚不同的参数,这是它优于传统算法固定L1或者L2正则化的原因。

3.4 权重纯化

这一步位于基于ADMM的剪枝操作之后。
第2节已经提到,剪掉第i层的一个filter会导致第i+1层对应的一个通道也被剪掉,因此这种剪枝方法效率是比较高的。
另一方面由于ADMM regularization是一种动态的L2正则化,并且具有非凸性 (?),所以剪掉大量非零但是很小的参数仍可保持准确率。
总的来说方法就是在ADMM regularization之后设置基于filter pruningcolumn pruning的两个threshold值,剪掉低于threshold值的对应filter和column。

3.5 ⋆\star⋆自动压缩框架

首先明确一下,这一节描述的内容应用于之前提到自动化过程的步骤一和二,即基于启发式算法对参数取样,评估,作为决定每层剪枝率和剪枝策略的依据

整个框架分为两个阶段,阶段一根据ADMM算法做剪枝(其实只是正则化?),阶段二做纯化(实际剪枝?),每个阶段都会做多轮迭代,两个阶段的执行流程是相同的,只有最后是进行ADMM还是纯化的区别。图示如下:

下面以阶段一为例来说明。
在每轮迭代的开始会将压缩率(针对参数数量或者FLOPS)设定为2,这样只经过两轮就可以达到四倍的压缩率。
每轮迭代的第一步是取样,这里使用的是基于导向搜索增强的模拟退火算法(模拟退火算法有助于脱离局部最优,可以找到近似最优解,一个简单的解释)。
具体做法是这样的:

  1. 设定一个总体的剪枝率Ct≈2C_t\approx 2Ct​≈2,
  2. 将所有层按照保留参数数量排序并且为其分配一个随机的剪枝率(和基于filter和column剪枝的权重),但是要保证参数更多的层的剪枝率更高,
  3. 用CtC_tCt​标准化剪枝率
    这样就生成了一个初始的取样方案At0A_t^0At0​,
  4. 在所有层的子集上定义一个改变剪枝率和剪枝策略的perturbation(扰动),p也是满足参数越多剪枝率越大的,
  5. 用p修改At0A_t^0At0​,进行一次快速评估(即按照At0A_t^0At0​的剪枝率和剪枝策略剪掉对应层中值最小的参数,在3.1中提到),根据退火算法修正At0A_t^0At0​
    得到剪枝方案,执行ADMM算法。

上述流程伪代码如下:

4. 实验和讨论

作者使用Pytorch,在cifar-10上用VGG-16和ResNet-18,ImageNet上用VGG-16和ResNet-18/50做了实验,并且主要关注卷积层的剪枝,针对提升性能的三个来源分别做了实验。实验结果可查阅原文

4.1 在cifar10上的实验

得到以下结论:

  1. 仅仅使用搭配纯化步骤的ADMM优化算法(根源二),作者提出的算法在精确度和剪枝率上都优于一些前辈算法(2PFPCE,NISP,AMC);
  2. 在手动决定超参数(没采用模拟退火?)的前提下,结合基于filter和column的剪枝策略在参数和FLOPS的压缩上都优于仅仅基于filter的剪枝策略;
  3. 采用模拟退火后表现超过了DRL和手动决定超参数的版本。

对于另一篇论文Rethinking the value of network pruning(思考剪枝结果是得到的结构还是参数值),作者也做了相关实验,发现:
仅使用基于filter的剪枝策略,放弃已有参数值从头开始训练可以恢复原先的精确度
对此作者认为基于filter和channel的剪枝策略本质都是在寻找一个更小的网络结构;以这个角度看,作者的AC框架确定每层的压缩率,也做了同样的事情。
但是另一组实验表明基于混合剪枝策略,从头训练不能恢复到原来的精确度,作者认为由于混合剪枝策略不光产生了更小的网络,同时也调整了filter的形状,这就需要原先大网络的一些细节了。(感觉filter的形状与原本网络的参数值并没有直接的关系,作者的解释有些模糊)

4.2 在ImageNet上的实验

结果与cifar10上类似,具体信息查看原文表格

5 结论

对前面内容的概括

AutoCompress: An Automatic DNN Structured Pruning Framework for Ultra-High Compression Rates相关推荐

  1. 论文解读《Structured Pruning for Deep Neural Networks with Adaptive Pruning Rate Derivation Based on Con》

    论文:Structured Pruning for Deep Neural Networks with Adaptive Pruning Rate Derivation Based on Connec ...

  2. 论文阅读【异常检测】ModelCoder: A Fault Model based Automatic Root Cause Localization Framework for Microservi

    ModelCoder: A Fault Model based Automatic Root Cause Localization Framework for Microservice Systems ...

  3. 《论文阅读》Structured Pruning Learns Compact and Accurate Models

    Structured Pruning Learns Compact and Accurate Models 文章目录 Structured Pruning Learns Compact and Acc ...

  4. Accelerate CNNs from Three Dimensions: A Comprehensive Pruning Framework详解

    Accelerate CNNs from Three Dimensions: A Comprehensive Pruning Framework详解 文章目录 Accelerate CNNs from ...

  5. 论文笔记30 -- (视频压缩)【CVPR2021】FVC: A New Framework towards Deep Video Compression in Feature Space

    <FVC: A New Framework towards Deep Video Compression in Feature Space> CVPR 2021 的一篇Oral 提出了特征 ...

  6. 【论文阅读】Structured Pruning Learns Compact and Accurate Models

    本文目录 论文信息 1. 研究背景 2. 方法:结构化剪枝方法CoFi 2.1 粗粒度和细粒度的剪枝 2.2 从原模型到剪枝模型的逐层蒸馏 3. 实验 3.1 模型对比 3.2 消融实验 3.3 剪枝 ...

  7. NeurlPS2020:Neuron-level Structured Pruning using Polarization Regularizer(polarization正则化技术)

    引言 因为之前并没有接触到剪枝相关工作,所以有必要了解一些剪枝知识和先人工作. 剪枝核心思想:核心思想:剔除模型中"不重要"的权重,使模型减少参数量和计算量,同时尽量保证模型的性能 ...

  8. Pruning paper 合集

    Network Sparsification (Pruning) 文章目录 Network Sparsification (Pruning) 0 鼻祖论文 1 基于度量标准的剪枝 1.1 Channe ...

  9. AAAI 2020 | 滴滴东北大学提出自动结构化剪枝压缩算法框架,性能提升高达120倍...

    点击上方"视学算法",选择"星标" 快速获得最新干货 2020 年 2 月 7 日-2 月 12 日,AAAI 2020 将于美国纽约举办.不久之前,大会官方公 ...

最新文章

  1. 您也使用托管C++吗?
  2. knowladge_网站开发_jQuery插件_Clock Demo
  3. shell 中浮点数和整数的比较
  4. 作业调度进程c语言代码,进程调度 时间片轮转调度算法源代码(C语言)
  5. [转载] wikipedia 维基百科 语料 获取 与 提取 处理 by python3.5
  6. mysql索引操作(转)
  7. linux下查看使用的显示服务器类型
  8. 手动修改美化7zip图标 - 附替换文件
  9. Scala的空值删除和空值填充
  10. 【安卓手机驱动无法安装则无法连接电脑,终极100%解决方法】ADB interfacm与 Andriod安装出现黄色感叹号
  11. C++(基础) 每日一题 4.编写一个函数print 打印一个学生的成绩数组,该数组中有5个学生的数据,每个学生的数据包括num,name,scor[3]3门课的成绩。
  12. 扫地机器人进水后会出现什么故障_小米扫地机器人吸进水怎么办?小米扫地机器人吸进水解决方法...
  13. 移动硬盘 Windows-延缓写入失败:无法为某文件保存所有数据,数据已经丢失
  14. 470计算机毕业设计
  15. struts2中No result defined for action xxx.xxx.xxx and result xxx错误的几种解决方法
  16. 【转】24个GE SFP/10 GE SFP+端口是什么意思
  17. evc小项目:Gps功分器测试
  18. 【扩展】电机驱动(DRV8870)
  19. 工程流体力学笔记暂记12(总流伯努利方程)
  20. 【路径规划】FMM快速行进法船舶路径规划【含Matlab源码 2291期】

热门文章

  1. 基于Halcon学习的一维码识别【八】barcode.param_meas_thresh_abs.hdev
  2. uniapp开发App从开发到上架全过程(三)-上架
  3. 【前端路由原理--原生JS实现方式】--前后端路由的区别、关于单页面应用与多页面应用、什么是CSR、SSR、SSG、ISP
  4. 三极管的材质、管型以及极性判断
  5. 国科大杭州高等研究院
  6. 2022年广东省房地产经纪人(房地产经纪业务操作)练习题及答案
  7. 汇编笔记之二——如何使用test执行jnz(或jz )
  8. 简单两步,去除网站首页后缀index.html
  9. 用EXCEL记笔记/默写/写日程表等_先利其器
  10. 找不到微粒贷入口?带你了解更全面的微粒贷使用流程