AMC:移动设备上模型压缩和加速的AutoML

本文出自论文:AMC: AutoML for Model Compression and Acceleration on Mobile Devices,提出了针对模型压缩的AutoML,利用强化学习方法来采样设计空间,极大地提高了模型压缩质量。

模型压缩是一种有效的技术,可以在计算资源受限和能耗预算紧张的移动设备上有效部署神经网络模型。传统的模型压缩技术依赖于手动选择特征和要求领域专家探索大的设计空间,保证模型大小、速度和精度之间的权衡,这种方法通常是次优的和消耗时间的。本文,我们提出了针对模型压缩的AutoML,称为AMC,它利用强化学习方法来有效地采样设计空间,能够提高模型压缩质量。我们在没有人力作用的情况下,以一种完全自动化的方式获得了先进的模型压缩效果。在4倍浮点数计算量减少的情况下,在ImageNet上的VGG-16模型下,我们获得了比手动调整模型压缩方法更好的2.7%精度提升。我们应用这个自动化方法到MobileNet-V1下,然后获得了GPU下1.53倍的加速,和Android手机下1.95倍的加速,并且几乎无精度损失。



一、简介

  1. 模型压缩技术的核心是当每一层有不同的冗余时来决定它们的压缩策略,传统方法是手动探索大的设计空间来保证模型大小、加速和精度之间的权衡。这个设计空间如此大以致于人工启发式通常是次优的和耗时的,为此我们旨在为一个随机网络自动化地找到压缩策略,从而获得比人工策略更好的性能。
  2. 我们发现压缩模型的精度对于每一层的稀疏度非常敏感,要求一个细粒度的动作空间。因此,我们提出来一个连续的压缩比控制策略,使用一个DDPG代理通过尝试和误差去学习(惩罚精度损失,同时鼓励模型收缩和加速),而不是在离散空间中搜索。这个actor-critic结构也有助于减少差异,有利于稳定的训练。特别地,DDPG代理使用一种layer-wise的方式来处理网络,对于每一层 L t L_t Lt,代理接收到一个层嵌入 s t s_t st来对层的有用特征进行编码,然后它输出一个明确的压缩比 a t a_t at。在层 L t L_t Lt使用 a t a_t at被压缩后,代理移动到下一层 L t + 1 L_{t+1} Lt+1。所有压缩层的剪枝模型的验证精度在没有微调的情况下进行评估,这是微调精度的一个有效代表。这个简单的近似方式可以提高搜索时间,而不必要对模型进行再训练,并提供高质量搜索结果。在策略搜索过程结束后,最好的探索模型被进行微调来获得最好的性能。AMC描述
  3. 我们针对不同的情形提出了两种压缩策略搜索协议。对于延迟关键型AI应用程序(手机APP、自动驾驶汽车和广告排名),我们提出了资源受限压缩方式,在给定最大数量的硬件资源(浮点数、延迟和模型大小)下来获得最好的精度。对于质量关键型AI应用程序(Google Photos),该类程序的延迟并不是一个硬性约束,我们提出来一个精度保证压缩方式,在无精度损失情况下获得最小的模型。对于前一种方式,我们限制了搜索空间,其动作空间(修剪比例)被限制,从而使代理下的压缩模型总是在资源预算下。对于后一种方式,我们定义了一个关于精度和硬件资源的奖励函数,在不伤害模型精度的情况下能够探索压缩限制。

二、相关工作

  1. CNN压缩和加速:压缩、量化和特殊的卷积实现可以加速神经网络。张量分解将权重分解成权重较轻的部分,例如使用缩短的SVD方法来加速全连接层。通道剪枝从特征映射中移除冗余的通道。这些方法的常见问题是如何决定每一层的稀疏比例。
  2. 神经架构搜索和AutoML:NAS旨在搜索可迁移网络块,并且它的性能胜过许多人工设计的结构,N2N将强化学习方法融合到通道选择中。与先前的工作比较,AMC方法优化了延迟和精度,要求一个简单的非RNN控制器,可以使用较少的GPU时间来做快速探索,同时也支持连续的动作空间。

三、方法

  1. 我们训练了一个强化学习代理来预测动作并给出稀疏性,然后执行剪枝过程。我们在剪枝后和微调前来对其精度进行评估,从而作为一个最终精度的有效表示。最后我们通过鼓励更小的、更快的和更精确的模型来更新代理。

  2. 问题定义:模型压缩通过减少深度神经网络每一层的参数和计算量来实现。这里有两种修剪策略:细粒度修剪和结构化修剪。细粒度修剪旨在剪去权重张量中的不重要的单个元素,但会导致不规则的稀疏样式。粗粒度结构化修剪旨在剪去权重张量中的整个规则区域。这里我们研究结构化修剪方法,收缩每个卷积层和全连接层的输入通道。对于一个权重张量( n × c × k × k n\times c\times k \times k n×c×k×k),n,c是输出和输入通道数,k是核大小。对于细粒度修剪,稀疏度定义为0元素数量与所有元素数量的比,表示为 z e r o s / ( n × c × k × h ) zeros/(n\times c\times k \times h) zeros/(n×c×k×h),对于通道修剪,我们收缩其权重张量为 n × c ′ × k × k ( w h e r e c ′ < c ) n\times c'\times k \times k\quad(where \quad c'<c) n

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值