模型优化算法——AutoSlim

AutoSlim是一种one-shot模型优化方法,通过训练slimmable model确定每一层通道数以达到最佳精度。它基于nonuniform US-Net,解决了网络slimming问题,降低了使用剪枝技术的复杂度。在ImageNet上,AutoSlim能在保持精度的同时优化FLOPs或latency。

概述

AutoSlim是一种one-shot模型优化方法,只要给定网络类型(如MobileNet-v1,ResNet50),给定限制条件(如Flops、latency等),就能自动决定每一层的通道数,以达到最优的模型精度。该优化方法打破了人工设计模型的“half size, double channel”的假设,解决了需要人为评估模型每一层敏感度,人为设置剪枝层/剪枝层类型的痛点,降低了使用剪枝技术的门槛和学习成本。

AutoSlim的算法流程图如下:

628ec65255800c0b4a4c362c6ccae2db.png

  1. 需要给出一个网络结构

  2. 训练一个slimmable model作为supernet,这里的slimmable model是指nonuniform universally slimmable networks,即所有层的通道不是通过一个统一的width ratio来进行调节。训练的epochs数大约为常规训练的20%-50%。

  3. 在验证集上,采用贪婪的方式,使用已训练好的supernet进行前向推理,迭代评估,最后找到满足限制条件,同时精度降低最小的网络,这个网络成为子网。更具体的说,greedily slim是指在一次迭代中,将每一层的通道进行分组,每一组是一个channel bin,尝试剪去每一层的最后一个channel bin,查看前向推理精度,精度最高的那层剪去最后一个channel bin,如此循环,直到满足限制条件。通过分组的方式可以减小搜索空间。

  4. 重新训练一个或多个子网。

该算法基于一个假设:作为supernet的slimmable model可以作为已知通道配置的独立训练的网络的精度评估器。

slimmable networks原理

AutoSlim在slimmable networks的基础上发展起来,具体见[1][2]。下面我们先简单介绍一下slimmable networks和universally slimmable networks。

slimmable networks

最初的slimmable networks使用switchable BN进行训练,不同的子网使用不同的BN,在训练完成后,supernet只能支持指定的多个width ratio。这种slimmable networks称为S-Net。S-Net的训练目标是所有switch下,模型精度平均是最优的。slimmable networks的训练算法如下:

df0885e9cbb551dbbb7a16b2a94deaa3.png

说明:在调用loss.backward()时,梯度如果不清零,会反向传播,并进行累加,调用optimizer.step(),会根据累加的梯度更新网络参数。optimizer.zero grad()负责对梯度清零。

之所以使用switchable BN,主要为解决不同子网结构时,共享BN带来的统计信息的不一致的问题。在训练的时候是没有问题的,因为使用的是当前batch的均值,方差。但是在推理时,如果不使用switchable BN,不同的子网结构统计的均值,方差的不同,如果共享BN,统计出来的均值方差是不准确的。switchable BN本质是不同switch的网络私有化BN。下图是训练和推理slimmable networks的曲线。左侧是switch切换到最大时的训练误差。右侧是在不同的switch下验证集下的测试误差。可以看出来,不管是普通的训练方式还是使用switchable BN的训练方式,训练误差是一致的(左图),但是如果不使用switchable BN,测试误差会很高(右图,放大的区域,naive training)。如果使用switchable BN训练slimmable networks,那不管是训练还是测试误差,都能保持稳定。

282b251d39b81bce6a59451cc02cfe2f.png

下表是slimmable networks用在MobileNet v1,MobileNet v2, ShuffleNet,ResNet-50,在ImageNet数据集上的测试结果,表中,S-表示slimmable models。可以发现slimmable networks能够提供和独立训练的网络相当的性能。值得注意的是,slimmable networks在一些情况下还会改善网络的性能。比如S-MobileNet v1在1.0×时,比独立训练的网络精度提高0.6%,S-MobileNet v1在0.25×时比独立训练的网络精度提高3.3%,作者猜测这样显著的性能提升是因为训练slimmable networks时的联合训练和权重共享,其间隐含着大模型向小模型的知识迁移,即隐含着一个知识蒸馏的过程。

73bb299ecf0aa7afe58b3b741063b0e4.png

universally slimmable networks

由于S-Net只能在训练时指定的若干个switch之间切换,为了解决这个问题,后续又提出了universally slimmable networks ,可以在指定的width范围内的任意width之间进行切换,简称 US-Net。主要的改进有3点:

  1. 训练supernet时使用普通的BN,进行BN共享,在训练完成后,使用训练数据集(对ImageNet,随机采样1000图片即可)进行BN校准:此时模型处于eval模式,BN处于train模式。

  2. 使用三明治法则(sandwich rule)解决了高效训练US-Net的问题。训练US-Net一个自然的方式是在每个迭代中累加或平均多个subnet的loss。采样的子网越多,训练出的网络性能应该越好。但是这样会消耗巨大的计算资源。三明治法则指明了子网采样的最优方式,在网络性能和计算资源之前取得一个平衡,具体说来,三明治法则是指在训练的每个迭代中,训练n个subnet,其中一个是最小宽度,一个最大宽度,还有(n-2)个随机宽度。n一般取4。

  3. 使用原地蒸馏(inplace distillation)提升了US-Net的整体训练精度。原地蒸馏是指用最大宽度的模型的输出和数据集的label取交叉熵作为loss进行反向传播,然后最大宽度的模型作为其他宽度模型的老师,用其输出作为soft label和其他宽度的输出分别取交叉熵进行反向传播,这样的蒸馏就叫原地蒸馏。

训练US-Net的算法如下:

741d5899dc87bdfbd0f34f27a5c2dbec.png

说明:在最大宽度的子网loss反向传播后,输出与其他宽度的子网输出求loss,就不需要梯度的反向传播了。

下图是US-MobileNet v2与I-Net,S-Net的性能对比。可以看出,平均来看,US-net的性能优于S-net,和I-net(独立训练的网络,网络通过width-ratio调整大小)

3458e81a665d6959ab483a6d6dcb2c2c.png

下图是三明治法则取不同下边界的扩展实验。可以看出,宽度的下边界非常重要。US-Net的性能是构建于下边界的基础上。

4c8ab2602d796148761366bf487f38eb.png

nonuniform US-Net

US-Net中, width ratio用于一个模型的所有层。nonuniform US-Net是指模型中,每一层的width ratio是独立的,不需要像US-Net一样,所有层用同一个ratio,这样每一层裁剪后,需要相同通道数的层就会出现通道数不一致的问题。这是nonuniform US-Net需要解决的问题。Autoslim中使用的正是nonuniform US-Net。

深度学习网络是天生就可以进行network slimming吗

看下图,就知道答案是否定的。一个独立训练好的深度学习网络I-Net(即没有用slimming network的方法训练supernet的网络),即使进行了BN校准,它在不同width下的推理精度也是很差的。slimming network之所以有效,除了对BN进行处理,还有就是权重的共享和联合训练,这点至关重要。

76634685b3a7d944076340589da5005b.png

AutoSlim在ImageNet上的效果

AutoSlim在ImageNet上的效果见下表。论文作者分别对FLOPs为200M、300M、500M的网络和重型模型(基本上是基于ResNet-50的模型)进行了测试。从一系列的实验结果可见,在相同的FLOPs下,AutoSlim搜索出的网络在精度上和I-Net相当或更高,不少网络在latency上更具优势。

d8ef85968c8785a746719be7a2d528d8.png

好了,有关AutoSlim的介绍就到这里了。期待大家继续支持和关注Adlik的Github仓库。

00dd8d70541f31633ecc67c530f54d28.png

AdlikGithub仓库

参考文献:

【1】J. Yu, L. Yang, N. Xu, J. Yang, and T. Huang, “Slimmable neural networks,” arXiv preprint arXiv:1812.08928,2018. 2,3, 5, 6, 7

【2】J. Yu and T. Huang, “Universally slimmable networks and improved training techniques,” arXiv preprint arXiv:1903.05134, 2019. 2, 3, 5, 7

【3】J. Yu and T. Huang,   "AutoSlim: Towards One-Shot Architecture Search for Channel Numbers",   arXiv:1903.11728

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Linux基金会AI&Data基金会

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值