1简介
长期以来,神经网络的进展已经与实际部署脱离。深度学习的研究人员致力于发明新的构建块,而DL工程师在现实任务中部署这些构建块,煞费苦心地重新组合它们,以找到满足设计要求的架构。
大多数情况下可以简化这些需求,以在特定的延迟预算内找到目标设备(例如,gpu)上性能最好的架构。虽然在神经网络设计方面有许多令人兴奋的进展,如残差连接、倒置残差块(IRB)和注意力,但部署这些网络设计仍然具有挑战性;这也是本文需要解决的问题。
为了缓解DL研究和实际部署之间的差距,本文提出了一套优化的卷积神经网络,根据每种图形处理器的优化推理延迟(例如,TensorRT或OpenVINO的后处理)分级。具体来说提供了一个模型表,其中的一个条目是模型优化的结果,从最大化精度到GPU推断延迟的限制。该表格使DL工程师能够根据设计要求直接查询优化的神经体系结构,以加快昂贵模型的定制过程。
作者使用神经结构搜索(NAS)来设计这个表中的模型。最近,NAS在许多任务中自动化网络架构设计方面显示出了良好的结果。因此,NAS可以是一个方便的工具,因为需要为不同的GPU的许多延迟限制设计许多模型。当模型准备好进行建模时,测量后处理的张量延迟,即,包括量化、层/张量融合、kerenl挖掘和其他系统侧模型优化。最后,为NVIDIA GPU产品设计了模型,以供社区广泛采用。
作者构建了一个新的分布式NAS系统来实现目标。本文的NAS由3个模块组成:
- 搜索空间:按照预定义的模式提供网络
- 评估模块:基于先验信息提出期望的网络
- 搜索方法:通过训练或SuperNet的评估来返回被提议网络的性能
本文的搜索空间通过将卷积层
、IRBs
和EfficientNet
中使用的Fused-IRBs
叠加在一起构建网络。本文的搜索空间也是迄今为止最全面的,包括filter numbers
(#filters),kernel sizes
,层数
(#layers)或IRBs
(#IRBs)以及输入分辨率
。
在IRBs
或Fused-IRBs
中还研究了有或没有Squeeze-Excitation (SE)
、expansion ratio
以及activation type
。所有这些因素都被认为是影响延迟和准确性的主要因素。
因此,这个搜索空间能够更好地利用准确性和延迟,例如,在NASNet
中固定的filter模式和在FBNetV3
中固定的激活函数以及SE
;通过搜索还可以在EfficientNet
中找到比固定expansion ratio
更好的策略。
为了支持如此复杂的搜索空间,选择通过训练来评估网络候选。尽管这种方法比SuperNet
方法昂贵得多,但这种评估在对架构进行排名时更加准确。
在为搜索空间构建SuperNet
时可以避免许多尚未解决的问题,例如,支持多种类型的激活、激活/停用SE和可变 filter sizes。作者构建了一个client-server-style
的分布式系统来应对计算挑战,在实验中,它已经健壮地扩展到300 A100 GPU(40个DGX-A100节点)。最后,采用LA-MCTS指导下的贝叶斯优化(BO)作为搜索方法。
图1
将经过NAS优化的CNN命名为GPUNet
, GPUNet
在延迟和准确性方面建立了一个新的SOTA Pareto前沿,如图1所示。使用TensorRT测量GPUNet
的延迟,所以GPUNet
对DL实践者是直接可重用的。特别是,GPUNet-1
比FBNetV3-B
和EfficientNet-X-B2-GPU
快近2倍,精度比FBNetV3-B
和EfficientNet-X-B2-GPU
分别高出0.5%。
作者还在COCO检测任务上验证了GPUNet
, GPUNet
的性能始终优于EffecentNet-x
和FBNetV3
。所有这些数据验证了NAS系统在设计各种任务时是有效的和通用的。
2GPUNet
首先,搜索算法从搜索空间中选择网络,并使用评价方法评价其性能。然后,搜索算法通过利用所有被评估的网络精度对,在下一次迭代中改进其决策。
图2
NAS由2个阶段组成:
- 通过推理延迟对网络进行分类;
- 在延迟组内的网络上执行NAS以优化准确性。
在第一阶段(图2.A),使用Sobol采样,均匀地从高维搜索空间中提取网络候选,使用延迟查找表近似网络延迟,然后将网络分类为子搜索空间,如网络<0.5ms。通过从延迟查找表中总结每一层的延迟来近似推断延迟。延迟表使用输入数据形状和图层配置作为确定图层延迟的关键。
在第二阶段(图2.B),贝叶斯优化使用一个子空间,在子空间的延迟范围内寻找性能最好的网络。作者构建了一个client-server-style
分布式框架来执行NAS。该搜索算法在服务器上运行,为client
提供网络服务。经过训练后,client
将返回准确性和网络。
2.1 搜索空间
搜索空间规定了候选网络的一般结构,本文的搜索空间受到EffecentNet
的启发。请注意,本文的搜索框架是通用的,可以支持各种搜索空间,例如,为视觉任务设计ViT
或MLP
。尽管ViT
最近彰显出了出色的性能,但这里关注的是ConvNet
,因为它是当前TensorRT
支持最好的,它对gpu
上的快速推理执行关键的性能优化。
表1
表1展示了本文中使用的搜索空间的详细信息。搜索空间由8个阶段组成。在这里,搜索每个阶段的配置,阶段中的层共享相同的配置。
- 前两个阶段是利用卷积搜索Head结构。
- 受
EffecentNet v2
的启发,2和3阶段使用了Fused-IRBs
。但观察到用Fused-IRBs
替代其余的IRBs
后,延迟增加。 - 从第4阶段到第7阶段,使用
IRBs
作为基本层。
#Layers显示了阶段#Layers的范围,例如,在阶段4的[3,10]意味着阶段可以有3到10个
IRBs
。#Filters显示了阶段中各层的Filters范围。搜索空间还调整了Squeeze-Excitation (SE)
、expansion ratio
以及activation type
等。最后,在步长为32时,输入图像的尺寸由224增加到512。
图3
搜索空间的合理性
与之前的工作不同,本文的搜索是由准确性和TensorRT优化推理延迟指导的。在一个好的实验设计中,应该找出与设计目标最相关的因素,即快速准确的网络。表1展示了发现的几个影响延迟和准确性的突出因素。这里提供实证数据:
#Layers and Filters:
从已发表的结果中获得的大量证据表明,深度或广度的网络比浅层或狭窄的网络性能更好,而添加#Layers或增加Filters会拖慢推理。#Layer和Filters是准确性和延迟的必要设计选择。
Activation
过去的许多研究表明,良好的激活函数设计可以显著提高ImageNet上的最终精度,而图3.A显示使用ReLU
的网络可以比使用PReLU
快4倍。通常,激活函数是内存绑定操作。而TensorRT在层融合中支持ReLU
、Sigmoid
和Tanh
,这就解释了速度差距。因此,激活函数的选择是延迟和准确性权衡的一个重要因素。
Expansion
IRB
或Fusion-IRB
使用1x1卷积在内部扩展通道大小,Expansion控制内部通道的大小。MobileNet的论文声称,更大的通道扩张将有助于提高网络的容量和表现力。
作者的演示结果也与MobileNet相一致。例如,将Expansion从6减少到2后,网络的精度在ImageNet top-1上下降了4个点,而增加Expansion会带来不可忽视的成本(图3.C)。这些数据表明,Expansion是搜索的一个重要因素。
Kernel
大卷积核可以增大感受野,提高精度。尽管如此,它也增加了延迟(图3.D),这在搜索空间中验证了kernel大小的选择。
SE
Squeeze-Excitation是由2017年ILSVRC获奖作品引入的,比前一年提高了25%。添加SE后,图3显示延迟明显增加。这证明SE是搜索空间中的一个因素。
Image Resolution
EffecentNet
清楚地展示了通过增加分辨率来提高精度的方法,如图3所示。B显示延迟也显著增加。因此,寻找输入图像的分辨率,以获得更好的准确性和延迟折衷。
网络和搜索空间表示
现在有了搜索空间的大致情况;接下来是找到体现设计的适当表现形式。使用一个整数向量对从表1中描述的搜索空间采样的网络进行编码。向量的长度为41,表2详细描述了每个数字表示的超参数。
阶段1和阶段0有相同的滤波器数,我们只搜索前3x3卷积(阶段0)的滤波器大小。因为在一个共享配置阶段,我们使用6的整数表示filter size
、kernel size
、expansion ratio
、是否使用SE
,激活的类型
,以及2-7阶段的IRB数量
。因此,网络是表2中描述的向量的一个实例,每个数字的范围共同定义了表1中的搜索空间。