Partial Order Pruning: for Best Speed/Accuracy Trade-off in Neural Architecture Search
- 给定最大可接受的延迟( latency)下,我们可以达到的最高精度是什么?
- 符合确定的精度要求下,我们可以期望的最低推理延迟是多少?
- 我们是第一批研究网络结构搜索的速度和精度平衡问题的人。通过对搜索空间进行偏序剪枝(Partial Order),我们的“偏序剪枝”可以有效地提高搜索速度和精度的权衡。
- 我们提出了若干种在嵌入式设备TX2上达到高精度和快推理速度的DF网络。在ImageNet验证集上,我们的DF1和DF2A网络的准确率超过了ResNet18/50,并且推理延迟分别降低了43%和39%。
- 我们将提出的算法应用于搜索一个分割网络的解码器架构。使用DF主干网络,我们在GPU端和嵌入式端TX2上都达到了实时并且state-of-the-art的效果。在GTX 1080Ti上,DF1-Seg网络在2014*2048的分辨率下,达到106.4FPS,mIoU 74.1%的效果;在TX2上,DF1-Seg网络在1280*720(720p)的分辨率下达到21.8FPS。
搜索空间(Search Space)
本文在搜索空间(search space)中提供一个通用的网络架构,如下图Figure2. 这个通用的网络结构包含6个stage,stage1~5中各自有一个stride=2的下采样,stage6使用一个全局平局池化( global average pooling)和全连接层来得到最终的预测结构。stage1和2负责在大分辨率下提取低层的特征,但是这部分的计算量比较大。由于我们是要得到一个搞笑的网络,因此我们在stage1和2中只使用1个卷积层,如Conv1和Conv2,我们发现这种情况下也可以达到很好的精度。对于stage3,4,5,每个stage依次包含L,M,N个residual block,其中L,M,N是整数。不同的L,M,N,可以得到不同的网络深度。第s个stage的第i个residual block的宽度(即通道数)记为延时估计(Latency Estimation)
不同的深度(block的数量)和不同的宽度(每个block的通道数)组成了所有可能的结构。这些所有的网络结构的时间分布可能是非常短的时间到正无穷。但是我们只关心延迟在特定范围内(即延时大于Tmin,小于Tmax)的网络结构。我们使用TensorRT库提供的分析器来获取网络层级别的延迟。我们发现一个具有相同配置(如输入输入的尺寸)的block的延迟也是一样的。因此我们构造了查找表偏序假设(Partial Order Assumption)
偏序(partial order)是定义在一个集合上的二元关系。它意味着集合里某些元素对(x,y),一个元素x先于其他y的排序,用x < y 表示。这里,“partial”表明并不是所有元素对需要具有可比性。 在本文的搜索空间中的网络结构中也存在这种偏序(partial order)关系。本文网络结构中的偏序关系如下图Figure 4所示。 如果x与y的宽度相同,但是x比y更浅( shallower),或者如果x与y深度相同,但是x比y更窄( narrower),那么借助上述的理论,我们就可以说在顺序上x在y的前面,记为x 下面的Table1表格展示了本文搜索出来的网络与热门网络的对比。
上述公式(1)假设在顺序上当x在y的前面时,x的准确率和延迟均低于y。这个假设可能对非常深的网络(如具体上百层的网络)不成立,但是本文中由于使用的是小网络,作者实验后是满足上述假设的。
Partial Order Pruning
本文的网络结构搜索算法的目标是:在每一个非常小的延迟范围[T, T + δt]内,找出最高准确率的那个网络结构。
其中, δt是一个很短的时间范围,比如是0.1ms。
本文搜索算法如下:
其中,表示延迟在[Tmin, Tmax]之间的网络结构集合。
这部分的细节请查看原始paper。
实验部分
本文在 Nvidia Jetson TX2和GTX 1080Ti这两个硬件平台上进行实验。
作者训练了200多个网络,实验结果如下图Figure 7所示。在整体训练结束后,取出两个限制条件下最优的结构重新训练,获得最高精度,即下图中的DF1和DF2。将DF2中的basic block替换成bottleneck block后,即为网络DF2A。
本文搜索出来的DF系列的网络结构如下:
基于我们搜索结果,我们观察到如下几点: