ProxylessNAS
ProxylessNAS
ABSTRACT
可微NAS可以通过网络体系结构的连续表示来降低GPU小时的开销,但存在GPU内存消耗高的问题(随候选集大小线性增长),因此需要利用代理任务(proxy
tasks),例如在较小的数据集上进行训练,或者只使用几个blocks进行学习,或者只是训练几个epoch。这些在代理任务上优化的架构不能保证在目标任务上是最优的。本文提出的ProxylessNAS可以直接学习大规模目标任务和目标硬件平台的体系结构。我们解决了可微NAS的高内存消耗问题,并将计算成本(GPU小时数和GPU内存)降低到与常规训练相同的水平,同时仍然允许大量候选集。在CIFAR-10和ImageNet上的实验证明了该方法的直接性和专业性。在CIFAR-10上,我们的模型仅用570万个参数就达到了2.08%的测试误差,比以前最先进的AmoebaNet-B架构要好,而使用的参数却少了6倍。在ImageNet上,我们的模型比MobileNetV2的top-1准确率高3.1%,同时在测量GPU延迟的情况下,速度快1.2倍。我们还应用ProxylessNAS将硬件的神经架构与直接的硬件度量(例如延迟)进行了专门化,并为有效的CNN架构设计提供了见解。
1 INTRODUCTION
NAS的训练成本是昂贵的,作为权衡,佐夫等人。(2018)建议在代理任务上搜索构建块,例如为较少的时间段进行训练,从较小的数据集(如CIFAR-10)开始,或使用较少的块进行学习。然后,将性能最好的块堆叠起来并传输到大规模目标任务。这种范式在随后的NAS算法中被广泛采用(Liu et al.,2018a;b;Real et al.,2018;Cai et al.,2018b;Liu et al.,2018c;Tan et al.,2018;Luo et al.,2018)。
然而,在代理任务上优化的这些块并不能保证在目标任务上是最优的,特别是在考虑诸如延迟之类的硬件度量时。更重要的是,为了实现可移植性,这种方法只需要搜索少量的架构主题,然后重复地堆叠相同的模式,这限制了块的多样性,从而损害了性能。
在这项工作中,我们提出了一个简单有效的解决方案,称为ProxylessNAS,它直接学习目标任务和硬件上的体系结构,而不是使用代理(图1)。我们还取消了先前NAS工作中重复块的限制(Zoph等人,2018;Liu等人,2018c),并允许学习和指定所有块。为了达到这一目的,我们通过以下方法将架构搜索的计算成本(GPU小时和GPU内存)降低到与常规训练相同的水平。
图1:ProxylessNAS直接优化了目标任务和硬件上的神经网络结构,得益于其直接性和专业性,ProxylessNAS可以获得比以前基于代理的方法更好的结果。在ImageNet上,仅200 GPU小时(比MnasNet少200倍(Tan等人,2018)),我们的移动搜索CNN模型在速度提高1.8倍的同时,达到了与MobileNetv21.4相同的顶级精度水平。
从GPU小时的角度来看,受最近工作的启发(Liu et al.,2018c;Bender et al.,2018),我们将NAS定义为路径级修剪过程(path-level pruning process)。具体来说,我们直接训练一个包含所有候选路径的参数化网络(图2)。在训练过程中,我们显式地引入体系结构参数来学习哪些路径是冗余的,而这些冗余路径在训练结束时被剪枝以得到一个紧凑的优化体系结构。这样,在架构搜索过程中,我们只需要训练一个没有任何元控制器(或超网络)的网络。
然而,天真地包含所有候选路径会导致GPU内存爆炸(Liu et al.,2018c;Bender et al.,2018),因为内存消耗与选择的数量呈线性增长。因此,在GPU内存方面,我们对架构参数(1或0)进行二值化,并在运行时强制只有一条路径处于活动状态,从而将所需的内存减少到训练紧凑模型的相同级别。我们提出了一种基于梯度的方法来训练基于BinaryConnect的这些二值化参数(Courbariaux等人,2015)。此外,为了处理不可微的硬件目标(以延迟为例),在目标硬件上学习专门的网络架构,我们将网络延迟建模为一个连续函数,并将其优化为正则化损失optimize it as regularization loss。此外,我们还提出了一种基于强化的 (Williams,1992) 算法,作为处理硬件指标的替代策略。
在CIFAR-10和ImageNet上的实验中,由于该方法的直接性和专业性,可以获得很强的实验结果。在CIFAR-10上,我们的模型仅用570万个参数就达到了2.08%的测试误差。在ImageNet上,我们的模型达到75.1%的top-1精度,比MobileNetV2(Sandler等人,2018)高3.1%,同时速度提高了1.2倍。我们的贡献可以总结如下:
ProxylessNAS是第一个不需要任何代理就可以直接在大规模数据集(如ImageNet)上学习体系结构的NAS算法,同时仍然允许一个大的候选集,并且消除了重复块的限制。有效地扩大了搜索空间,取得了较好的性能。
我们为NAS提供了一个新的路径级修剪视角(path-level pruning perspective),展示了NAS和模型压缩之间的紧密联系(Han等人,2016)。通过使用路径级二值化(path-level binarization),我们节省了一个数量级的内存消耗。
我们提出了一种新的基于梯度的方法(延迟正则化损失)来处理硬件目标(例如延迟)。给定不同的硬件平台:CPU/GPU/Mobile,ProxylessNAS支持硬件感知的神经网络专门化,这正是针对目标硬件优化的。据我们所知,这是对于不同的硬件结构,研究专门的神经网络结构的第一项工作。
大量实验表明,ProxylessNAS具有直接性和专属性的优势。它在不同硬件平台(GPU、CPU和手机)的延迟限制下,在CIFAR-10和ImageNet上实现了最先进的精度性能。我们还分析了针对不同硬件平台的有效CNN模型的见解,并提出了在不同硬件平台上需要专门的神经网络结构来进行有效推理的意识。
2 RELATED WORK
在NAS中,架构搜索通常被视为一个元学习过程,并引入一个元控制器(如递归神经网络(RNN))来探索给定的架构空间,同时在 内循环训练一个网络,以获得指导性探索的评估。因此,这种方法在计算上很昂贵,特别是在大型任务上,例如ImageNet。
最近一些方法按数量级加快了体系结构搜索,但是,它们需要一个超网络或RNN控制器,主要关注小规模任务(如CIFAR),而不是大规模任务(如ImageNet)。
我们的工作与 One-Shot(Bender et al.,2018)和DARTS(Liu et al.,2018c)最为密切相关,它们都通过将NAS建模为包含所有候选路径的过度参数化网络的单个训练过程来摆脱元控制器(或超网络)。具体来说,One Shot使用DropPath(Zoph et al.,2018)训练过参数化网络,该网络以一定的概率丢弃每条路径。然后使用预先训练过的参数化网络来评估体系结构,通过随机调零路径对体系结构进行采样。DARTS还为每条路径引入一个实值架构参数,并通过标准梯度下降联合训练权重参数和架构参数。然而,它们面临着巨大的GPU内存消耗问题,因此仍然需要利用代理任务。在这项工作中,我们通过路径二值化来解决这两种方法中的大内存问题。
另一个相关主题是网络剪枝(Han et al.,2016),其目的是通过移除不重要的神经元(Han et al.,2015)或通道(Liu et al.,2017)来提高神经网络的效率。与这些工作类似,我们从一个过度参数化的网络开始,然后剪枝冗余部分,以获得优化的架构。区别在于,它们侧重于仅修改层的过滤器 (或单位) 数,但不能改变网络拓扑结构的层级修剪,而我们专注于通过路径级修剪学习有效的网络架构。我们还允许修剪和增加层数。
3 METHOD
我们首先描述了具有所有候选路径的过参数化网络的构造,然后介绍了如何利用二值化的结构参数将训练过参数化网络的内存消耗降低到与常规训练相同的水平。提出了一种基于梯度的二值化结构参数训练算法。最后,我们提出了两种处理不可微目标(如latency)的技术,用于在目标硬件上专门化神经网络。
3.1 CONSTRUCTION OF OVER-PARAMETERIZED NETWORK
把神经网络表示为,其中 表示有向无环图(DAG)中的某条边。让 是N个候选基元操作(如卷积、池化、恒等、零等)的集合。为了构造包含搜索空间中任何体系结构的超参数化网络,我们没有将每条边设置为一个确定的基元操作,而是将每条边设置为一个具有N条并行路径的混合操作(图2),表示为。因此,超参数化网络可以表示为。
图2:学习权重参数和二值化架构参数。
给定输入x,混合操作(mixed operation) 的输出是根据N条通路所形成的。在One-Shot中,是 的和,在DARTS中,是 的加权和,将softmax应用于N个实值体系结构参数,计算权重
如式(1)所示,计算所有N条路径的输出特征映射并将其存储在内存中,而训练compact model 只涉及一条路径。因此,与训练compact model相比, One-Shot和DARTS约需要N倍的GPU内存和GPU小时。在大规模的数据集上,这很容易超过设计空间大的硬件的内存限制。在接下来的部分中,我们将基于路径二值化的思想来解决这个内存问题。
3.2 LEARNING BINARIZED PATH
为了减少内存占用,我们在训练过参数化网络时只保留一条路径。不像(Courbariaux et al.2015)对单个权重进行二值化,我们对整个路径进行二值化。
我们引入N个实值架构参数 ,然后将实值路径权重转换为二进制门:
基于二进制门g,混合运算的输出为:
如等式(3)和图2所示,通过使用二进制门而不是实值路径权重(Liu等人,2018c),在运行时只有一条**路径在内存中处于活动状态,因此训练过参数化网络的内存需求降低到训练紧凑模型的相同水平。这不仅仅是一个数量级的内存节省。
3.2.1 TRAINING BINARIZED ARCHITECTURE PARAMETERS
图2:学习权重参数和二值化架构参数。
图2说明了在over-parameterized network中权重参数和二值化架构参数的训练过程。在训练权值参数时,首先冻结结构参数,对每批输入数据按式(2)随机抽样二值门。 然后通过训练集上的标准梯度下降更新活动(active paths)路径的权重参数(图2左)。当训练架构参数时,权重参数被冻结,然后我们重置(reset)二进制门并在验证集上更新架构参数(图2右侧)。这两个更新步骤以一种交替的方式执行。一旦结构参数的训练完成,我们就可以通过剪枝冗余路径来得到compact architecture。在这项工作中,我们只需选择路径权重最大的路径。
与权重参数不同,架构参数不直接参与计算图,因此无法使用标准梯度下降进行更新。在本节中,我们将介绍一种基于梯度的方法来学习体系结构参数。
在BinaryConnect (Courbariaux et al., 2015)中,实值权值使用梯度w.r.t更新其对应的二进制门。在我们的例子中,类似地,梯度w.r.t.结构参数可以使用 代替 :
其中如果i=j,,否则。由于计算图中涉及到二进制门g,如式(3)所示,可以通过反向传播求得。然而,计算 需要计算和储存。因此,直接使用Eq.(4)来更新架构参数,与训练一个compact model相比,也需要大约N倍的GPU内存。
为了解决这个问题,我们考虑将从N个候选中选择一条路径的任务分解为多个二进制选择任务(multiple binary selection tasks)。直觉是,如果一条路在某个特定的位置上是最好的选择,那么与其他任何一条路相比,它应该是最好的选择。
根据这个思想,在架构参数的更新步骤中,我们首先根据多项分布抽样两条路径,掩盖所有其他路径,就好像它们不存在一样。因此,候选人的数量暂时从N减少到2,而路径权重和二进制门则相应地重置。然后利用式(4)计算出的梯度对这两条采样路径的结构参数进行了更新。**最后,由于路径权重是通过将softmax应用于架构参数来计算的,我们需要通过乘以比率来重新调整这两个更新架构参数的值,以保持未采样路径的路径权重不变。**因此,在每个更新步骤中,一个采样路径被增强(路径权重增加),另一个采样路径被衰减(路径权重减少),而所有其他路径保持不变。这样,不管N的值是多少,在架构参数的每个更新步骤中只涉及两条路径,从而将内存需求降低到训练一个compact model的相同级别。
3.3 HANDLING NON-DIFFERENTIABLE HARDWARE METRICS
在设计有效的硬件神经网络体系结构时,除了准确度之外,延迟(而不是触发器)是另一个非常重要的目标。不幸的是,与使用损失函数的梯度可以优化的精度不同,延迟是不可微的。在这一节中,我们提出了两种算法来处理不可微目标。
3.3.1 MAKING LATENCY DIFFERENTIABLE
为了使延迟可微,我们将网络的延迟建模为神经网络维度的连续函数。 考虑一个带有候选集的混合运算,每个与路径权值 相关联, 表示选择 的概率。因此,我们有一个混合操作(即一个可学习的块)的预期延迟为:
其中是第i个可学习块(learnable block)的期望延迟,表示延迟预测模型, 是 的预测延迟。 相对应于架构参数的梯度可以给出:
图3:通过引入延迟正则化损失使延迟可微。
对于具有混合操作序列的整个网络(图3左),由于这些操作在推理过程中是按顺序执行的,所以网络的期望延迟可以用这些混合操作的期望延迟之和来表示:
(6)
我们通过乘以比例因子(>0)将网络的预期延迟纳入正常损失函数,该因子控制准确性和延迟之间的权衡。 最终的损失函数如下所示(如图3所示)
(7)
代表交叉熵损失。
3.3.2 REINFORCE-BASED APPROACH
作为二进制连接的替代方案,我们还可以利用强化学习来训练二进制权重。考虑一个具有二值化参数a的网络,更新二值化参数的目标是找到使某一报酬最大的最优二值门g,表示为。这里,为了便于说明,我们假设网络只有一个混合操作。因此,根据强化学习(Williams, 1992),我们对二值化参数进行了如下更新:
代表第i个被采样的二进制门,代表根据公式(2)被采样的概率,是根据构成的紧凑模型。因为公式(8)不需要对g可微,因此他可处理不可微目标。一个有趣的观察结果是,Eq.(8)的形式与标准的NAS相似(Zoph & Le, 2017),但它不是一个连续的决策过程,在我们的案例中没有使用RNN元控制器。此外,由于基于梯度的更新和基于增强的更新本质上是对相同的二值化架构参数的两种不同的更新规则,因此可以将它们结合起来形成架构参数的新更新规则。
4 EXPERIMENTS AND RESULTS
我们在两个基准数据集(CIFAR-10和ImageNet)上证明了我们提出的方法对于图像分类任务的有效性。与以往的NAS工作(Zoph等人,2018;Liu等人,2018c)不同,首先在小规模设置下(例如,较少的块)在CIFAR-10上学习CNN块,然后通过重复叠加将学习到的块转移到ImageNet或CIFAR-10上,我们直接学习目标任务(CIFAR-10或ImageNet)上的体系结构目标硬件(GPU、CPU和移动电话),同时允许指定每个块。
4.1 EXPERIMENTS ON CIFAR-10
架构空间。对于CIFAR-10实验,我们使用了Cai等人引入的树结构体系结构空间。(2018b)以金字塔网PyramidNet(Han等人,2017)为骨干4。具体地说,我们用树型结构的单元替换金字塔网络剩余块中的所有3×3卷积层,每个单元的深度为3,每个节点的分支数设置为2(叶节点除外)。有关树形结构架构空间的更多详细信息,请参阅原始论文(Cai等人,2018b)。此外,我们使用两个超参数来控制网络在这个体系结构空间中的深度和宽度,即B和F,它们分别表示每个阶段(总共3个阶段)的块数和最终块的输出通道数。