本文旨在利用神经结构搜索(NAS)来优化模型的推理延迟。为了实现这一目标,建立了一个分布式NAS系统来在一个新的搜索空间上进行搜索,将NAS优化模型命名为
GPUNet
,它在推断延迟和准确性方面建立了一个新的SOTA Pareto前沿。在1ms内,
GPUNet
比EfficientNet-X
和FBNetV3
快2倍,而且精度更高。GPUNet
在COCO检测任务上在延迟和准确性上始终优于EfficientNet-X
和FBNetV3
。所有这些数据都验证了NAS系统在处理不同的设计任务方面是有效且通用的。通过这个NAS系统,作者扩展了GPUNet
,以覆盖广泛的延迟目标,这样DL从业者就可以在不同的场景中直接部署模型。
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中的搜索空间。
3.2 通过推理延迟分层网络
图5
为了设计由推理延迟划分的网络,选择直接度量搜索空间中网络的延迟。因为搜索空间的大小呈指数级大,通过从它中采样数百万个网络来近似搜索空间。采样技术对于捕获搜索空间的真实分布至关重要,这里使用Sobol序列,其优点在图5中很简单。采样是一种低成本的操作,可以在一分钟内获得数百万个样本。
具有挑战是测量采样网络的延迟。由于TensorRT已经主导了MLPerf推理基准,而又希望度量由TensorRT优化的推理延迟。然而,TensorRT需要几分钟来构建测量的推理引擎,这使得测量所有采样网络不可行。
作者通过增加每一层的延迟来近似一个网络的延迟。虽然搜索空间呈现了1030个网络,但这些层的配置却很有限,例如,在例子中是104个网络。因此,可以通过构建一个以输入数据形状和Layer配置作为关键的延迟表来显著加快延迟测量的速度。
给定一个网络,通过Layer的迭代来查找延迟。如果表中不存在一个Layer,则只对它进行基准测试,并在表中记录它的延迟。最后,网络延迟是所有Layer的延迟之和。
图4
从图4可以看出,表估计延迟接近网络的实际延迟,表估计平均高于实际端到端测量值75µs。因为整个网络比单层有更多的层融合机会。对∼104层进行基准测试仍然是一项昂贵的任务,在多gpu上并行管理延迟表,以加快从几周到几天的进程。
3.3 GPUNet的整体架构
3.4 为什么GPUNet这么快?
(1)、Mixed types of activation
图6显示,GPUNet
在RELU
和Swish
之间切换,但EfficientNet
和FBNet
在所有层中都使用了Swish
。图3.A表明,Swish
大大增加了延迟。GPUNet
的一些层使用RELU
来减少其他机会以提高精度的延迟,例如,更大的滤波器。
(2)、Fewer expansions in IRB
图3.C显示,通过将所有IRB
的expansions从1增加到6,网络延迟几乎增加了一倍。expansions是搜索空间的一部分,所以一些GPUNet
层往往有较小的expansions来节省延迟。
(3)、Wider and Deeper
在一个阶段中的过滤器(宽)和层数(深)是搜索空间的一部分。由于混合激活的延迟节省和较少的expansions,GPUNet
趋向于比FBNet
和EfficientNet
更宽更深。
在同一精度组,FBNetV3-B
遵循16→24→40→72→120→183→224,EfficientNet-B2
遵循32→16→24→48→88→120→208→352,但GPUNet-1
比FBNetV3-B
和EfficientNet-B2
的模式24→64→96→160→288→448。
此外,GPUNet-2
有33层,比FBNetV3-F
多2层,比EfficientNet-B3
多5层。众所周知,更深网络和更宽的网络具有更好的准确性;因此,GPUNet
的准确性在每一组内都优于Baseline。
(4)、Larger Resolution
GPUNet-(1和2)
的分辨率分别比EfficientNet-B2
和EfficientNet-B3
大32和64,比FBNetV3-B
和FBNetV3-F
分别大72和120。使用大分辨率通常可以提高精度;因此,GPUNet
显示出比Baseline更好的精度和更高的FLOPS
。
3实验
分类任务
检测任务
原文:GiantPandaCV
推荐阅读
- 统一CE Loss与Focal Loss,PolyLoss用1行代码+1个超参完成超车!!!
- 开放集合目标检测任务 Open-set Detection
- 【TVM 三代优化巡礼】在X86上将普通的矩阵乘法算子提速90倍
更多嵌入式AI技术干货请关注嵌入式AI专栏。欢迎添加极术小姐姐微信(id:aijishu20)加入嵌入式AI技术交流群,请备注研究方向。