AMC: AutoML for Model Compressionand Acceleration on Mobile Devices——移动设备上的模型压缩与加速的AutoML

端侧的弱算力设备上部署深度学习模型往往需要经过一系列轻量化优化处理才能够满足硬件端的算力要求,模型压缩是常用的手段之一,这里AMC尺度主要研究出发点就是高效的模型压缩技术,来加速移动端的模型计算,本文主要是晚上闲暇时间对AMC研究工作的学习记录,感兴趣的话可以参考一下,如果想要进一步了解AMC研究内容详情的话可以自行移步阅读原论文即可,地址在这里,如下所示:

摘要

模型压缩是在计算资源有限和功耗预算紧张的移动设备上高效部署神经网络模型的关键技术。传统的模型压缩技术依赖于手工设计的启发式方法和基于规则的策略,需要领域专家探索大型设计空间,以在模型大小、速度和准确性之间进行权衡,这通常是次优且耗时的。在本文中,我们提出了用于模型压缩的AutoML(AMC),利用强化学习来提供模型压缩策略。这种基于学习的压缩策略在压缩比、准确性保持和解放人力方面优于传统的基于规则的压缩策略。在4倍FLOPs减少的情况下,我们在ImageNet上对VGG-16的准确性比手工设计的模型压缩策略提高了2.7%。我们将这种自动化、一键式的压缩流程应用于MobileNet,在Android手机上实现了1.81倍的测量推理延迟加速,在Titan XP GPU上实现了1.43倍的加速,而ImageNet Top-1准确性仅损失0.1%。

关键词:AutoML 强化学习 模型压缩 CNN加速 移动视觉

1 引言

在机器人、自动驾驶汽车和广告排名等许多机器学习应用中,深度神经网络受到延迟、能耗和模型大小的限制。许多方法通过模型压缩来提高神经网络的硬件效率。模型压缩技术的核心是为每一层确定压缩策略,因为它们具有不同的冗余度,这通常需要手工设计的启发式方法和领域专家来探索大型设计空间,以在模型大小、速度和准确性之间进行权衡。设计空间如此之大,以至于人类的启发式方法通常是次优的,手动模型压缩是耗时的。为此,我们旨在自动找到任意网络的压缩策略,以实现比人工设计的基于规则的模型压缩方法更好的性能。

以前有许多基于规则的模型压缩启发式方法。例如,在第一层中较少剪枝参数,因为第一层提取低级特征并且参数最少;在全连接层中更多剪枝参数,因为全连接层具有最多的参数;在剪枝敏感的层中较少剪枝参数等。然而,由于深度神经网络中的层不是独立的,这些基于规则的剪枝策略是非最优的,并且不能从一个模型转移到另一个模型。神经网络架构正在快速发展,我们需要一种自动化的方式来压缩它们以提高工程师效率。随着神经网络变得更深,设计空间具有指数复杂性,这使得基于贪婪、规则的方法难以解决。因此,我们提出了用于模型压缩的AutoML(AMC),利用强化学习来自动采样设计空间并提高模型压缩质量。图1展示了我们的AMC引擎。在压缩网络时,我们的AMC引擎通过基于学习的策略自动化这一过程,而不是依赖基于规则的策略和经验丰富的工程师。

我们观察到压缩模型的准确性对每一层的稀疏性非常敏感,需要细粒度的动作空间。因此,我们提出了一种连续的压缩比控制策略,使用DDPG代理通过试错学习:惩罚准确性损失,同时鼓励模型缩小和加速。演员-评论家结构也有助于减少方差,促进稳定训练。具体来说,我们的DDPG代理以逐层方式处理网络。对

我们为不同场景提出了两种压缩策略搜索协议。对于延迟关键的AI应用(例如,移动应用、自动驾驶汽车和广告排名),我们提出了资源受限压缩,以在给定的最大硬件资源量(例如,FLOPs、延迟和模型大小)下实现最佳准确性。对于质量关键的AI应用(例如,Google Photos),其中延迟不是硬约束,我们提出了无损准确性压缩,以实现最小的模型且不损失准确性。

我们通过约束动作空间(每一层的剪枝比率)来实现资源受限压缩,使得代理压缩的模型始终低于资源预算。对于无损准确性压缩,我们定义了一个奖励函数,该函数是准确性和硬件资源的函数。通过这个奖励函数,我们能够在不损害模型准确性的情况下探索压缩的极限。

为了展示广泛的通用适用性,我们在多个神经网络上评估了我们的AMC引擎,包括VGG、ResNet和MobileNet,我们还测试了从分类到目标检测的压缩模型的泛化能力。广泛的实验表明,AMC比手工设计的启发式策略提供了更好的性能。对于ResNet-50,我们将专家调整的压缩比从3.4倍推到5倍,且没有损失准确性。此外,我们将MobileNet的FLOPs减少了2倍,达到了70.2%的top-1准确性,这在比0.75 MobileNet更好的帕累托曲线上,并且在Titan XP上实现了1.53倍的加速,在Android手机上实现了1.95倍的加速。

2 相关工作

CNN压缩与加速

通过压缩来加速神经网络的工作有很多。量化和特殊的卷积实现也可以加速神经网络。张量分解将权重分解为轻量级的部分,例如,提出了使用截断SVD加速全连接层;Jaderberg等人提出了将层分解为1×3和3×1;Zhang等人提出了将层分解为3×3和1×1。通道剪枝从特征图中去除冗余通道。这些方法的一个共同问题是如何确定每一层的稀疏比率。

神经架构搜索和AutoML

许多工作通过强化学习和遗传算法搜索模型,大大提高了神经网络的性能。NAS旨在搜索可转移的网络块,其性能超过了许多手工设计的架构。Cai等人提出了通过网络变换加速探索。受此启发,N2N将强化学习集成到通道选择中。在表1中,我们展示了AMC引擎的几个优点。与以前的工作相比,AMC引擎优化了准确性和延迟,需要一个简单的非RNN控制器,可以用更少的GPU小时进行快速探索,并且还支持连续动作空间。

3 方法

我们在图1中展示了用于模型压缩的AutoML(AMC)引擎的概述。我们的目标是自动找到每一层的冗余度,由稀疏性表征。我们训练一个强化学习代理来预测动作并给出稀疏性,然后执行剪枝。我们在剪枝后但微调前快速评估准确性,作为最终准确性的有效代理。然后我们通过鼓励更小、更快和更准确的模型来更新代理。

问题定义

模型压缩通过减少深度神经网络中每一层的参数数量和计算量来实现。剪枝分为两类:细粒度剪枝和结构化剪枝。细粒度剪枝旨在剪枝权重张量中的单个不重要元素,能够在不损失准确性的情况下实现非常高的压缩率。然而,这种算法导致稀疏模式不规则,需要专门的硬件如EIE进行加速。粗粒度/结构化剪枝旨在剪枝权重张量中的整个规则区域(例如,通道、行、列、块等)。剪枝的权重是规则的,可以直接使用现成的硬件和库加速。在这里,我们研究结构化剪枝,缩小每个卷积和全连接层的输入通道。

使用强化学习的自动化压缩

AMC利用强化学习在动作空间中进行高效搜索。这里我们介绍强化学习框架的详细设置。

3.2.1 状态空间

3.2.2 动作空间

大多数现有工作使用离散空间作为粗粒度动作空间(例如,{64,128,256,512}{64,128,256,512}表示通道数量)。粗粒度动作空间对于高准确性模型架构搜索可能不是问题。然而,我们观察到模型压缩对稀疏比率非常敏感,需要细粒度的动作空间,导致离散动作数量爆炸(第4.2节)。这种大动作空间难以高效探索。离散化还会丢弃顺序:例如,10%的稀疏性比20%更激进,比30%更激进得多。

因此,我们提出使用连续动作空间a∈(0,1]a∈(0,1],这使得压缩更细粒度和准确。

3.2.3 DDPG代理

如图1所示,代理接收层LtLt​的嵌入状态stst​,然后输出一个稀疏比率作为动作atat​。底层以atat​(四舍五入到最近的可用分数)使用指定的压缩算法(例如,通道剪枝)进行压缩。然后代理移动到下一层Lt+1Lt+1​,并接收状态st+1st+1​。在完成最后一层LTLT​后,在验证集上评估剪枝模型的奖励准确性并返回给代理。为了快速探索,我们在不微调的情况下评估奖励准确性,这是微调准确性的良好近似(第4.1节)。

我们使用深度确定性策略梯度(DDPG)进行连续控制压缩比,这是一种离策略演员-评论家算法。对于探索噪声过程,我们使用截断正态分布:

搜索协议

3.3.1 资源受限压缩

通过限制动作空间(每一层的稀疏比率),我们可以准确地达到目标压缩比。我们使用以下奖励:

此奖励不提供模型大小减少的激励,因此我们通过另一种方式实现目标压缩比:限制动作空间。以细粒度剪枝为例:我们在前几层允许任意动作aa;当我们发现即使压缩所有后续层也无法满足预算时,开始限制动作aa。算法3.3.1说明了过程。(对于通道剪枝,代码会更长但类似,因为移除层LtLt​的输入通道也会移除相应的输出通道,减少两层的参数/FLOPs)。再次注意,我们的算法不仅限于约束模型大小,还可以替换为其他资源,如FLOPs或移动设备上的实际推理时间。根据我们的实验,代理没有低于预算的激励,可以准确地达到目标压缩比。

3.3.2 无损准确性压缩

通过调整奖励函数,我们可以准确地找到不损失准确性的压缩极限。我们观察到ErrorError与log⁡(FLOPs)log(FLOPs)或log⁡(#Param)log(#Param)成反比。基于此,我们设计了以下奖励函数:

4 实验结果

对于细粒度剪枝,我们剪枝权重最小的元素。卷积层的最大稀疏比率amaxamax​设置为0.8,全连接层的amaxamax​设置为0.98。对于通道剪枝,我们使用最大响应选择(根据幅度剪枝权重),并在剪枝过程中保留批量归一化层。所有层的最大稀疏比率amaxamax​设置为0.8。注意,手动上限amaxamax​仅用于加快搜索,可以使用amax=1amax​=1,结果相似。我们的演员网络μμ有两个隐藏层,每个隐藏层有300个单元。最终输出层是一个sigmoid层,将动作限制在(0,1)(0,1)范围内。我们的评论家网络QQ也有两个隐藏层,每个隐藏层有300个单元。动作包含在第二个隐藏层中。我们使用τ=0.01τ=0.01进行软目标更新,以64为批量大小和2000为回放缓冲区大小训练网络。我们的代理首先以恒定噪声σ=0.5σ=0.5探索100个回合,然后以指数衰减噪声σσ利用300个回合。

CIFAR-10和分析

我们在CIFAR-10上进行了广泛的实验,并全面分析了我们的AMC,以验证两种搜索协议的有效性。CIFAR数据集包含50k训练和10k测试的32×3232×32小图像,分为十个类别。我们将训练图像分为45k/5k训练/验证。准确性奖励在验证图像上获得。我们的方法在计算上是高效的:RL可以在单个GeForce GTX TITAN Xp GPU上在1小时内完成搜索。

4.1.1 FLOPs受限压缩

我们在CIFAR-10上进行了FLOPs受限的实验,使用通道剪枝。我们将我们的方法与三种经验策略进行了比较:均匀策略将压缩比均匀设置,浅层和深层策略分别积极剪枝浅层和深层。根据不同网络的稀疏性分布,可以选择不同的策略。

在表2中,我们展示了使用奖励RerrRerr​准确找到剪枝50%的Plain-20和ResNet-56的稀疏比率,并与经验策略进行了比较。我们大大优于经验策略。AMC找到的最佳剪枝设置与手工设计的启发式方法不同。它学习了一个瓶颈架构。

4.1.2 无损准确性压缩

通过使用RParamRParam​奖励,我们的代理可以自动找到压缩的极限,具有最小的模型大小且几乎没有性能损失。如表2所示,我们在CIFAR-10上使用细粒度剪枝压缩ResNet-50。我们获得的结果具有高达60%的压缩比,并且在验证集和测试集上的准确性甚至更高,这可能是由于剪枝的正则化效果。

由于我们的奖励RParamRParam​专注于ErrorError,同时提供非常小的压缩激励,它更喜欢高性能模型且无害的压缩。为了缩短搜索时间,我们使用验证准确性而不进行微调来获得奖励。我们相信,如果奖励是微调后的准确性,代理应该更积极地压缩,因为微调后的准确性更接近原始准确性。

4.2.1 加速策略探索

微调剪枝模型通常需要很长时间。我们观察到预微调准确性与后微调准确性之间存在相关性。如表2所示,获得更高验证准确性的策略相应地具有更高的微调准确性。这使我们能够在不微调的情况下预测最终模型准确性,从而实现高效和更快的策略探索。

验证集和测试集是分开的,我们仅使用验证集在强化学习期间生成奖励。此外,压缩模型具有更少的参数。如表2所示,测试准确性和验证准确性非常接近,表明没有过拟合。

ImageNet

在ImageNet上,我们使用训练集中的3000张图像来评估奖励函数,以防止过拟合。在整个实验中,延迟以224×224224×224输入进行测量。

4.2.2 推动细粒度剪枝的极限

细粒度剪枝方法基于单个连接剪枝神经网络,以在权重和激活中实现稀疏性,能够实现更高的压缩比,并且可以通过专用硬件加速。然而,它需要迭代剪枝和微调过程以达到良好的性能,并且单次剪枝而不重新训练会大大损害预测准确性。

为了解决这个问题,我们遵循设置进行4次迭代剪枝和微调实验,其中全模型的整体密度在每次迭代中设置为[50%,35%,25%[50%,35%,25%和20%]20%]。对于每个阶段,我们运行AMC以在给定整体稀疏性的情况下确定每一层的稀疏比率。然后对模型进行剪枝并按照常见协议微调30个epoch。通过这个框架,我们能够将ImageNet上ResNet-50的专家调整压缩比从3.4倍推到5倍,而不会损失性能(原始ResNet50的[top-1, top-5]准确性=[76.13%, 92.86%]; AMC剪枝模型的准确性=[76.11%, 92.89%])。每个阶段每一层的密度如图3所示。峰值和波峰显示RL代理自动学习以更大的稀疏性剪枝3×3卷积层,因为它们通常具有更大的冗余;而以较低的稀疏性剪枝更紧凑的1×1卷积。每个块的密度统计如图4所示。我们可以发现AMC的密度分布与人类专家的结果有很大不同,表明AMC可以充分探索设计空间并以更好的方式分配稀疏性。

4.2.2 与启发式通道减少的比较

在这里,我们将AMC与现有的最先进的通道减少方法进行了比较:FP、RNP和SPP。所有方法都提出了启发式策略来设计每一层的剪枝比率。FP提出了敏感性分析方案,通过评估单层剪枝的准确性来估计每一层的敏感性。RNP将所有卷积通道分组为4组,并训练RL代理根据输入图像决定4组。然而,动作空间非常粗糙(每层只有4个动作),无法减少模型大小。SPP对每一层应用PCA分析,并将重建误差作为敏感性度量来确定剪枝比率。这种分析基于单层,未能考虑层之间的相关性。我们还与原始通道剪枝论文(表3中的CP)进行了比较,其中VGG-16的稀疏比率由人类专家仔细调整(conv5被跳过,conv4和剩余层的稀疏比率为1:1.5)。剪枝VGG-16的结果如表3所示。与我们的CIFAR-10实验一致,AMC优于所有启发式方法,且无需任何人工劳动。

除了VGG-16,我们还在现代高效的神经网络MobileNet和MobileNet-V2上测试了AMC。由于这些网络已经非常紧凑,进一步压缩它们更加困难。减少模型通道的最简单方法是使用均匀通道缩减,即使用宽度乘数以固定比率均匀减少每一层的通道。MobileNet和MobileNet-V2展示了不同乘数和输入大小的性能,我们将我们的剪枝结果与相同计算量的模型进行了比较。我们发现我们的方法始终优于均匀基线。即使对于当前最先进的高效模型设计MobileNet-V2,AMC仍然可以在相同计算量下提高其准确性(表3)。MobileNet的帕累托曲线如图5a所示。

4.2.2 加速移动推理

近年来,移动推理加速引起了人们的关注。AMC不仅可以优化FLOPs和模型大小,还可以优化推理延迟,直接使移动开发者受益。对于所有移动推理实验,我们使用TensorFlow Lite框架进行计时评估。

我们剪枝MobileNet,这是一个由深度卷积和点卷积层组成的高度紧凑的网络,并测量我们能提高其推理速度的程度。以前使用手工策略剪枝MobileNet会导致显著的准确性下降:将MobileNet剪枝到75.5%的原始参数会导致67.2%的top-1准确性,甚至比原始0.75 MobileNet(61.9%的参数,68.4%的top-1准确性)更差。然而,我们的AMC剪枝策略显著提高了剪枝质量:在ImageNet上,AMC剪枝的MobileNet以285 MFLOPs实现了70.5%的Top-1准确性,而原始0.75 MobileNet以325 MFLOPs实现了68.4%的Top-1准确性。如图5a所示,手工策略在2倍FLOPs减少下略微优于原始MobileNet。然而,通过AMC,我们显著提高了帕累托曲线,改善了原始MobileNet的准确性-MACs权衡。

通过将FLOPs替换为延迟,我们可以从FLOPs受限搜索变为延迟受限搜索,并直接优化推理时间。我们的实验平台是Google Pixel 1,搭载高通骁龙821 SoC。如图5b所示,我们在相同准确性下大大减少了MobileNet的推理时间。我们还与基于启发式的策略进行了比较,AMC在准确性和延迟之间取得了更好的权衡。此外,由于AMC使用微调前的验证准确性作为奖励信号,而需要每步后进行局部微调,AMC在策略搜索中更高效,需要的GPU小时更少。

我们在表4中展示了剪枝模型的详细统计数据。使用0.5倍FLOPs和0.5倍推理时间的模型进行了分析和展示。对于0.5倍FLOPs设置,我们在Google Pixel 1手机上实现了1.81倍的加速,对于0.5倍FLOPs设置,我们准确实现了1.95倍的加速,这与实际的2倍目标非常接近,表明AMC可以直接优化推理时间并实现准确的加速比。对于1×1卷积,我们实现了2.01倍的加速,但对于深度卷积,加速不显著,这是由于计算与通信比率较小。AMC压缩模型还消耗更少的内存。在GPU上,我们也实现了高达1.5倍的加速,这比手机上少,因为GPU比手机具有更高的并行性。

泛化能力

我们在PASCAL VOC目标检测任务上评估了AMC的泛化能力。我们使用压缩的VGG-16(来自第4.2节)作为Faster R-CNN的主干。在表5中,AMC在相同压缩比下比最佳手工剪枝方法提高了0.7%的mAP[0.5, 0.95]。AMC甚至比基线提高了0.5%的mAP。我们假设这种改进是由于RL代理找到的最佳压缩策略也起到了有效的正则化作用。

5 结论

传统的模型压缩技术使用手工特征,并需要领域专家探索大型设计空间,在模型大小、速度和准确性之间进行权衡,这通常是次优且耗时的。在本文中,我们提出了用于模型压缩的AutoML(AMC),利用强化学习自动搜索设计空间,大大提高了模型压缩质量。我们还设计了两种新颖的奖励方案,分别进行资源受限压缩和无损准确性压缩。在Cifar和ImageNet上,MobileNet、MobileNet-V2、ResNet和VGG的令人信服的结果表明,压缩模型从分类到检测任务具有良好的泛化能力。在Google Pixel 1移动手机上,我们将MobileNet的推理速度从8.1 fps推到16.0 fps。AMC促进了移动设备上高效深度神经网络的设计。

猜你喜欢

转载自blog.csdn.net/Together_CZ/article/details/143485536