点击我爱计算机视觉标星,更快获取CVML新技术

本文转自机器之心。

机器之心编辑部

2020 年 2 月 7 日-2 月 12 日,AAAI 2020 将于美国纽约举办。不久之前,大会官方公布了今年的论文收录信息:收到 8800 篇提交论文,评审了 7737 篇,接收 1591 篇,接收率 20.6%。本文介绍了滴滴 AI Labs 与美国东北大学合作的一篇论文《AutoCompress: An Automatic DNN Structured Pruning Framework for Ultra-High Compression Rates》

近年来,随着深度神经网络模型性能不断刷新,模型的骨干网络参数量愈发庞大,存储和计算代价不断提高,从而导致难以部署在资源受限的嵌入式平台上。滴滴 AI Labs 与美国东北大学王言治教授研究组合作,联合提出了一种基于 AutoML 思想的自动结构化剪枝的算法框架 AutoCompress,能自动化的去寻找深度模型剪枝中的超参数,去除模型中不同层的参数冗余,替代人工设计的过程并实现了超高的压缩倍率。从而满足嵌入式端上运行深度模型的实时性能需求。

相较之前方法的局限性,该方法提出三点创新性设计:

(1)提出混合型的结构化剪枝维度;

(2)采用高效强大的神经网络剪枝算法 ADMM(交替乘子优化算法)对训练过程中的正则项进行动态更新;

(3)利用了增强型引导启发式搜索的方式进行行为抽样。在 CIFAR 和 ImageNet 数据集的大量测试表明 AutoCompress 的效果显著超过各种神经网络压缩方法与框架。在相同准确率下,实际参数量的压缩相对之前方法最大可以提高超 120 倍。

论文全文:https://arxiv.org/abs/1907.03141

自动化设置深度模型剪枝中的超参数

深度神经网络模型压缩技术成为解决上述问题不可或缺的关键。其中具有代表性的方法 -- 模型权重剪枝(weight pruning)技术可以有效地将大模型压缩,进而高效地进行推理加速。

这其中,结构化剪枝(structured pruning)作为能够真正在平台层面解决硬件执行效率低,内存访问效率差,计算平行度不高问题的合理有效的剪枝维度,受到了学术界与工业界的重视。

然而权重剪枝在算法实现过程中涉及到到大量的超参数设置 -- 例如如何确定模型的压缩维度,或者如何确定模型中每层的压缩比例等等。由于设计空间巨大且需要专业知识指导,人工设计这些超参数的过程冗长且复杂,并且在很大程度上依靠相关人员的参数调节经验。因此,作为一种更加激进的剪枝模式,结构化剪枝技术在算法实现层面面临着更大的挑战。

为解决结构化剪枝中超参数的决策问题,将超参数的设置转变为一种自动化过程将大大提高模型权重剪枝的算法实现效率。在近期的研究中,比如 AMC 等利用了深度增强学习(Deep Reinforcement Learning(DRL))的方法去决策每层的剪枝比例,然而,这种自动化的剪枝方法存在三方面的局限性:

(1)只采用了单一的输出通道(filter)剪枝维度;

(2)为了得到稀疏化模型,其所采用的剪枝方法仅仅是在模型训练过程中引入一个静态的正则项;

(3)更深层次的局限性在于其所采用的基于 DRL 框架的剪枝方法本质上与剪枝问题难以兼容。

但由于 DRL 框架并不适合解决模型权重剪枝的超参数设置问题,AMC 研究的结果也佐证了这一观点,其结果中最高压缩率只有非结构化(non-structured)的 5 倍压缩倍率。

图 1. 自动化超参数决策框架的通用流程,以及性能提升来源

为了改进以上的不足,我们提出了神经网络权重剪枝问题超参数设置自动化过程的通用流程(generic flow),如图 1 所示。整个自动化通用流程主要可以分为 4 步:

步骤 1 为行为抽样,

步骤 2 为快速评估,

步骤 3 为确定决策,

步骤 4 为剪枝操作。

由于超参数的巨大搜索空间,步骤 1 和步骤 2 应该快速进行,因此无法进行再训练(re-training)后去评估其效果。因此根据量级最小的一部分权重直接进行剪枝评估。步骤 3 根据工作抽样和评估的集合对超参数进行决策。步骤 4 利用剪枝核心算法对模型进行结构化剪枝并生成结果。

基于上述通用流程,并针对之前方法的局限性,进一步提出如下三点创新性设计,通过综合现有的深度神经网络与机器学习框架首次实现了目前最高效的深度神经网络自动化结构化剪枝的通用框架 AutoCompress。该框架在滴滴已经得到了实际有效应用。

基于神经网络自动化结构化剪枝框架

三点创新性设计为:

(1)提出混合型的结构化剪枝维度;

(2)采用高效强大的神经网络剪枝算法 ADMM(交替乘子优化算法)对训练过程中的正则项进行动态更新;

(3)利用了增强型引导启发式搜索的方式进行行为抽样。

 图 2. 不同的结构化剪枝策略: 基于卷积核的角度和通用矩阵乘算法(GEMM)的角度

首先,结构化剪枝包含三种剪枝维度,输出通道剪枝(filter pruning),输入通道剪枝(channel pruning)和输出通道形状剪枝(filter shape/column pruning),如图 2 上所示。输出通道剪枝即直接删除一个卷积核。输入通道剪枝为删除每个卷积核对应的输入通道。输出通道形状剪枝为删除每个卷积核上相同位置的权重。下半部分展示了推理过程中卷积层展开的通用矩阵乘法(GEMM)矩阵。其中每行代表一个卷积核(对应 filter pruning),每列对应的是每个卷积核上相同位置的权重(对应 filter shape pruning)。一段连续列则代表一个输入通道(对应 channel pruning)。通过结合了输出通道形状剪枝(filter shape/column pruning)和 输入通道剪枝(filter pruning)两种结构化剪枝维度,剪枝后的模型仍然可以维持一个完整的矩阵,从而可以最大限度地利用硬件结构实现加速。

其次,采用 ADMM 算法,将剪枝问题转化为数学优化问题,在剪枝的同时训练剩余权重。ADMM 可以将原始剪枝问题分解为两个子问题,用传统梯度下降法求解子问题一,并引入一个二次项迭代求解子问题二。在不同量级的神经网络下,ADMM 均取得非常好的训练效果(高精度),同时保持了较高的训练效率(快速收敛)。

最后,采用有效的启发式搜索的方式解决 DRL 框架的局限性。考虑到基于人类经验的启发式搜索可以执行导向搜索(guided search),这是采用启发式搜索的另一个优势。

图 3. AutoCompress 框架示意图

基于上述三点创新性设计,我们搭建了 AutoCompress 框架,如图 3 所示。通过基于启发式搜索算法的自动化代理模块的指导,AutoCompress 框架进行模型自动化剪枝主要分为两个步骤,

步骤 1:通过基于 ADMM 算法的结构化剪枝,得到权重分布结构性稀疏化的模型;

步骤 2:通过网络结构净化(Purification)操作,将 ADMM 过程中无法完全删除的一小部分冗余权重找到并删除。

值得注意的是,这两个步骤都是基于相同的启发式搜索机制。

启发式搜索机制

针对 AutoCompress 中最核心的搜索算法设计,我们利用了搜索算法中的模拟退火算法为搜索算法的核心。举例来讲,给定一个原始模型,我们会设置两种目标函数 -- 根据权重数量设置或根据运算量(FLOPs)设置。

搜索过程进行若干轮,比如第一轮目标为压缩两倍权重数量,第二轮为压缩四倍权重数量。在每一轮搜索过程中,首先初始化一个行为(超参数),然后每次对行为进行一个扰动(超参数的小幅变化)生成新的行为,根据模拟退火算法原理,评估两个行为,如果新的行为评估结果优于原结果则接受该行为,如果新的行为评估结果劣于原结果则以一定概率接受该行为。

每一轮算法中的温度参数 T 会下降,直到 T 下降到某个阈值后即停止搜索,该结果即为图 1 中的步骤 3 输出。最后,根据搜索得到的超参数,对神经网络进行结构化剪枝操作。

表 1. 在 VGG-16 上基于 CIFAR-10 数据集的权重剪枝对比结果。

表 2. 在 ResNet-18 (NISP 和 AMC 结果为 ResNet-50) 上基于 CIFAR-10 数据集的权重剪枝对比结果。

表 3. 在 VGG-16 上基于 ImageNet 数据集的结构化权重剪枝

表 4. 在 ResNet-18/50 上基于 ImageNet 数据集的结构化权重剪枝对比结果。

 

表 5. 在 ResNet-50 上基于 ImageNet 数据集的非结构化权重剪枝对比结果。

表 1,2,3,4,5 展示了 AutoCompress 框架在代表性的深度神经网络和数据集上的剪枝效果。

可以看到,AutoCompress 框架对深度模型压缩效果极为显著,例如 VGG-16 在 CIFAR-10 数据集上,结构化剪枝压缩率高达 52.2 倍,无精度损失,在 Samsung Galaxy S10 智能手机上测试(使用代码生成优化版编译器),其运行速度为 2.7ms。ResNet-18 在 CIFAR-10 数据集上更是达到了 54.2 倍结构化剪枝压缩率无精度损失。

相比之前的方法,如果考虑到 ResNet-18 与 ResNet-50 本身的大小差距(我们使用更小的 ResNet-18),可以在准确率有所上升的情况下比之前的方法减小 120 倍权重参数。在 ImageNet 数据集上,VGG-16 达到了 6.4 倍结构化压缩率,精度损失仅为 0.6%,ResNet-18 达到了 3.3 倍的结构化压缩率,无精度损失;

最后,值得指出的是,AutoCompress 框架也可以应用于非结构化剪枝,其压缩结果使 ResNet-50 在 ImageNet 数据集上可以做到 9.2 倍无精度损失的压缩,更能达到 17.4 倍的压缩率,仅损失 0.7% 的精度。

与其他方法相比,AutoCompress 的效果超过各种神经网络压缩方法与框架。这一研究使得高效率,高精度地获取深度神经网络高压缩率模型成为可能,并且得到的高效神经网络模型可以在嵌入式移动系统中实现实时推理运算。


AutoML&NAS交流群

关注最新最前沿的自动机器学习、神经架构搜索技术,扫码添加CV君拉你入群,(如已为CV君其他账号好友请直接私信)

(请务必注明:NAS)

喜欢在QQ交流的童鞋,可以加52CV官方QQ群:805388940。

(不会时时在线,如果没能及时通过验证还请见谅)


长按关注我爱计算机视觉

性能提升120倍!滴滴东北大学提出自动结构化剪枝压缩算法框架相关推荐

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

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

  2. Nacos 2.0 性能提升十倍,贡献者 80% 以上来自阿里之外

    来源 | 阿里巴巴云原生公众号 3 月 20 日,Nacos 2.0 正式发布.Nacos 是阿里巴巴在 2018 年开源的一个更易于构建云原生应用的动态服务发现.配置管理和服务管理平台,也可以理解为 ...

  3. 天下武功唯快不破:TiDB 在线 DDL 性能提升 10 倍

    作者: TiDB社区小助手 原文来源: https://tidb.net/blog/4f85e64a 导读 随着业务规模和单表容量的增大,DDL 变更耗时越来越长,给 DBA.研发.业务同学带来了越来 ...

  4. SQLite性能提升10倍的Web数据库

    作者 | James Long 译者 | 弯月 出品 | CSDN(ID:CSDNnews) 最近我开发了一款名为absurd-sql的SQLite后端.在这款工具的帮助下,你无需将整个数据库加载到内 ...

  5. 本周AI热点回顾:百度推出全球首个mRNA疫苗不稳定性解决方案、性能提升20倍:英伟达GPU旗舰A100

    01 百度推出全球首个mRNA疫苗不稳定性解决方案LinearDesign 新冠疫情爆发后,RNA设计领域世界知名专家.斯坦福大学生物化学系Rhiju Das教授关注到疫苗研发存在的一个非常棘手的问题 ...

  6. 腾讯云数据库开源再突破:TDSQL PG版查询性能提升百倍

    日前,腾讯云数据库开源产品TDSQL PG版(开源代号TBase)宣布推出重磅升级--经过一年半的打磨,上万张表访问场景下,内存占用节省60%:查询性能提升百倍:SQL语句兼容性增强.同时,大力提升原 ...

  7. 英伟达发布ChatGPT专用GPU,性能提升10倍,还推出云服务,普通企业也能训练LLM...

    Pine 发自 凹非寺 量子位 | 公众号 QbitAI "AI的iPhone时刻已至",英伟达或成最大赢家. 在GTC2023大会上,黄仁勋接连放出大招: 不仅发布了ChatGP ...

  8. 性能提升10倍以上:阿里达摩院成功研发新型存算一体芯片

    清华大数据软件团队官方微信公众号来源:机器之心 本文约1700字,建议阅读5分钟 人脑的特性就是存算一体,神经元在处理任务时具有极高的并行度,并且功耗极低. 近期,阿里巴巴达摩院宣布成功研发新型存算一 ...

  9. t420i升级固态硬盘提升_系统迁移教程:升级SSD后笔记本性能提升两倍?浦科特M9P PLUS 1TB_固态硬盘...

    2020-11-11 19:58:23117点赞289收藏53评论 想攒一台电竞主机.家用主机.酷炫主机无从下手?想省钱又怕性能不达标?值得买帮你打造定制化DIY装机工具,自助全网比价装机,提供最适合 ...

最新文章

  1. FTP的dos命令使用方法
  2. 软考-信息系统项目管理师-立项管理
  3. 重装系统后软件安装 ----一直更新
  4. java jdk最新版本是多少_Linux下一键安装java-jdk任意版本
  5. java反编译软件_安卓强大的逆向软件,媲美MT管理器!
  6. java 数组效率_java数组复制的四种方法效率对比
  7. jquery ajax jsonp跨域调用实例代码
  8. 界面猜拳游戏 java_java猜拳游戏 (3局2胜)
  9. paip.提升安全性-----使用HTTPS SSL
  10. 帮您管好云:阿里云混合云管理平台发布 | 凌云时刻
  11. python中list是链表吗_Python
  12. 三菱gxworks3安装失败_三菱gx works3下载 Gx Works3(三菱PLC编程软件) v1.031h 中文安装版(附安装教程+序列号) 下载-脚本之家...
  13. IOS逆向-LLVM、代码混淆
  14. 知乎热议:35岁,你要逃离北上广?
  15. 初识html及工具的使用
  16. 如何搭建java环境_vscode搭建java环境
  17. csdn竟然还有这种神器!后悔没有早点知道!超好用的csdn插件,别再犹豫了,赶快入手吧!
  18. 微信红包封面免费做了
  19. FFmpeg将mp4转成flv
  20. 智慧物流wms仓储管理系统

热门文章

  1. python ftp服务器限速_python实现ftp服务器
  2. 相机标定基础【1】- 在Visual Station 2019 上搭建OpenCV应用 (1)- 安装配置VS
  3. 将字符串转为16进制数_C语言中的进制互转与数值和字符串互转的混搭玩法
  4. mysql降低高水位_[数据库]数据高水位分析
  5. mysql 多表查询 join on_MySQL多表查询Left Join,Right Join学习笔记
  6. echars x轴单位_如何让echarts中y轴的单位位于数值的右上角
  7. jwt重放攻击_JWT+ASP.NET MVC 时间戳防止重放攻击
  8. android代码怎么打成蓝色,如何将我的Android应用程序的重音颜色从蓝色更改为其他颜色...
  9. 命令行linux iso,linux – 有没有办法从命令行更改.iso文件卷id?
  10. mysql source导入慢,MySQL mysqldump与source导入慢怎么解决