DNN模型实际应用分析

原文:《AN ANALYSIS OF DEEP NEURAL NETWORK MODELS
FOR PRACTICAL APPLICATIONS》

原文下载:https://arxiv.org/abs/1605.07678

本文对近四年内发表在ImageNet上的神经网络模型针在以下几个方面进行比较:准确率、内存使用、参数量、计算量、前向时间、功耗。

本文使用单个central-crop抽样方法对所有的神经网络框架进行重新评估来测得Top-1准确率。对于前向时间以及内存使用方面的评估,使用Torch7神经网络框架(Collobert et al., 2011)配合cuDNN-v5 (Chetlur et al., 2014)以及CUDA-v8。所有的实验都运行在JetPack-2.3 NVIDIA Jetson TX1 board (NVIDIA):64-bit ARM R A57 CPU、1 T-Flop/s 256-core NVIDIA Maxwell GPU、4 GB LPDDR4 shared RAM。采用计算能力有限的TX1是希望能够更清楚地区分出神经网络结构之间的区别。为了测得功耗数据,使用了一台 Keysight 1146B 霍尔效应电流探头以及一台Keysight MSO-X 2024A 200 MHz 数码示波器,这套系统使用Keysight E3645A GPIB可控直流电源供电。

本文对以下神经网络模型进行了比较:

  • AlexNet (Krizhevsky et al., 2012);batch normalised AlexNet (Zagoruyko, 2016);batch normalised Network In Network (NIN) (Lin et al., 2013)
  • ENet (Paszke et al., 2016) for ImageNet (Culurciello, 2016)
  • GoogLeNet (Szegedy et al., 2014)
  • VGG-16 and -19 (Simonyan & Zisserman, 2014)
  • ResNet-18, -34, -50, -101 and -152 (He et al., 2015)
  • Inception-v3 (Szegedy et al., 2015) 以及 Inception-v4 (Szegedy et al., 2016)

测试结果:

1.准确率(Accuracy)

以下图表中我们会使用不同的颜色来区分不同的神经网络架构,同一网络的不同结构会使用同一色系进行表示。

图1:各神经网络Top-1准确率对比图

图2:各神经网络Top-1准确率、参数量、计算量对比图

图1是近四年中提交在ImageNet 挑战赛上的神经网络模型的TOP-1准确率,准确率最低的是发表于2012年的AlexNet,而最新的 ResNet 和 Inception 架构相比其他架构准确率至少高 7%左右。

图2中则是对各神经网络进行了更详细的对比,横纵坐标分别是各个神经网络的运算次数和Top-1准确率,图中每个网络气泡的大小和网络的参数量成正比。图中右下角记录的是每种网络历史最大参数值(从5*10000000 一直到155*10000000的)。从图中可以看到VGG这种网络结构无论是在计算量还是参数量都十分庞大,而除了VGG之外的其他网络则几乎形成了一条有规律的斜线,这表明这些神经网络模型在该数据集上到达一个拐点。

2.前向时间(Inference Time)

图3:各神经网络模型在不同Batch size下的前向时间对比图

从图中可以看到VGG网络要花费0.2s左右才能处理完一张图片,因此这种结构很难胜任那些对实时性有要求的深度学习任务。从图中还可以看到当BN-AlexNet 的Batch size从1增加到64的过程中,处理速度提升了3倍,这是由于它全连接层的弱优化(weak optimisation)导致的。

3.功耗使用情况(POWER)

图4:各神经网络模型在不同Batch size下的功耗使用对比图

从图4中不难发现大多数情况下功耗与Batch大小并没有多少关系。结合图3和图4可以看出AlexNet (batch大小为1)和 VGG(batch大小为2)的低功耗与较慢的前向时间有关。

4.内存使用情况(Memory)

图5:各个神经网络模型在不同Batch size下的内存最高使用情况对比图

图6:各个神经网络模型在不同参数量下的内存最高使用情况对比图(处理一张图片)

图5展示了随着Batch大小的变化对内存的使用情况,起初内存使用的最大值的大小是不变的,随后内存占用情况随着Batch大小的增大而增大,这与网络模型的初始内存分配有,还因为在进行批处理时内存需求会随着图像数量的增加而成比例的增大。由图6可见,那些参数量小于 100 MB的网络,初始内存分配都高于200 MB,而随着参数量的增加数据会以斜率为1.3的线性函数进行变化。

5.运算量(Operations)

图7:各个神经网络模型的前向时间对比图(当Batch size为1和16时)

从图中不难发现神经网络的运算量和前向时间是存在线性相关的关系的,因此针对那些对实时性有要求的应用和计算能力有限的硬件设计神经网络,可以通过控制运算量来满足对实时性的需求。

6.运算量和功耗(OPERATIONS AND POWER )

图8:各个神经网络模型的功耗对比图(当Batch size为1和16时)

从图中可以看到不同的神经网络结构并没有特定的功耗使用规律。当增加Batch的大小以最大化地对资源进行使用时,所有网络的额外消耗大致为 11.8 W,标准偏差为 0.7 W,空闲功率为 1.30W,这是资源完全利用时的最大系统功耗。因此,如果对功耗有要求的时候,例如那些用电池进行供电的设备,可以简单地选择满足最低功耗要求的最慢的架构。

7.准确率和吞吐量( ACCURACY AND THROUGHPUT )

图9:各个神经网络模型在不同帧率下的准确率对比图(当Batch size为1和16时)

从图9中看到在单位时间里准确率和每秒处理图片数量之间存在着非凡(non-trivial)的线性上限。对于给定的帧速率,可以实现的最大准确率与帧速率本身形成线性比例。准确率的线性拟合显示了所有架构的准确率与速度之间的关系。当选定一个推理时间就可以得出在资源被充分利用的条件下理论上可以达到的最大准确率。当功耗固定时就可以进一步得出能耗限定下所能达到的最高准确率,在设计那些在嵌入式设备上运行的神经网络时就可以把这一因素作为参考。

8.参数使用(PARAMETERS UTILISATION )

图10:各神经网络的准确率/参数量对比图

DNN 在利用全部学习能力(参数数量/自由度)方面非常低效。Han在2015 年利用 DNN 的这个缺陷,使用权重剪枝(weights pruning)、量化(quantisation)和变长编码(variable-length symbol encoding)将网络规模减小了50倍。值得注意的是,使用更高效的架构能够产生更紧凑的表征。如图10所示,尽管VGG 比AlexNet准确率更高,但其信息密度更差,这意味着在 VGG 架构中引入的自由度并没有带来准确率上的很大提升。此外,从图10中可以看出,ENet分数最高,仅用了VGG 1/24的参数就获得了state-of-the-art。