从十一种神经网络模型横向比较七种深度学习硬件的性能

近年来,人工智能领域发展飞速,无论是在工业界还是学术界,有关人工智能的各种新技术层出不穷,各个科技巨头也在持续发力,在产品和技术上都取得的巨大突破。人工智能(Artificial Intelligence,AI)是一种知识信息处理系统,它的发展可以追述到60年前,但中间因为技术的原因几次沉寂,直到深度神经网络(Deep Neural Networks,DNN)或者称之为深度学习的出现,并伴随着近几年硬件计算能力的增强、技术的发展,再次掀起人们对人工智能领域研究的热潮。深度学习是人工智能的一个重要分支,其概念源于机器学习中的人工神经网络(Artificial Neural Network,ANN),深度学习已被证明是一种可成功用于许多任务的机器学习方法,而它的广泛流行也使其获得了各个硬件厂商的支持,许多科技公司都推出了各自支持深度学习的硬件产品。

这篇文章中,我们选择了七种来自四家厂商的有代表性的深度学习硬件产片,对它们在运行神经网络任务时的性能就行了横向比较,它们分别是:

华为(Huawei):华为麒麟970芯片

英特尔(Intel ):英特尔Movidius神经计算棒英特尔至强处理器 E5-2630

英伟达(NVIDIA):英伟达Jetson Tegra x1英伟达GeForce GTX 1080

苹果(Apple):苹果A10X Fusion、A11 Bionic

之前我们已经对以上设备进行了单独的介绍,并分别使用NPUbench进行了测试,测试结果可以通过点击上面设备名称中的链接进行查看。

我们选择了十一种有代表性的卷积神经网络来对这七种深度学习硬件硬件的实际性能进行测试,分别是LeNet、Network in Network、SqueezeNet、GooLeNet、AlexNet、Inception-BN、ResNet50、ResNet101、ResNet151、VGG16、VGG19。

在对麒麟970芯片的测试中,我们编写了专门的测试程序,程序使用了华为提供的HiAI移动计算平台,我们把十一种神经网络的Caffe格式模型转换成HiAI SDK支持的离线模型,最后在搭载麒麟970芯片的华为Mate 10上运行测试程序来获得测试结果。对苹果A10X Fusion、A11 Bionic的测试中,我们为搭载了这两款芯片的硬件设备iPhone 8 Plus(苹果A11 Bionic),iPad Pro 10.5(苹果A10X Fusion)编写了专门的测试程序,程序使用了苹果的Core ML机器学习框架,我们把十一种神经网络的Caffe格式模型转换成Core ML支持的离线模型,最后在设备上运行测试程序来获得其测试结果。英特尔Movidius神经计算棒的测试数据通过使用英特尔公司提供的Intel Movidius Neural Compute SDK (NCSDK)测得。英伟达Jetson Tegra x1、英伟达GeForce GTX 1080以及英特尔至强处理器 E5-2630的测试数据是使用Caffe神经网络框架测得。

从我们所测得的数据来看,在执行神经网络任务的性能方面,毫无疑问英伟达GeForce GTX 1080显然是这几种硬件中最强的,而表现较差的则是英特尔的志强E5处理器,可以看出,在进行大规模数据运算的时候,相较于CPU平台来说GPU还是有相当大的优势。而在其余硬件中,麒麟970的表现要更好一些,但相比英伟达GeForce GTX 1080来看依然要逊色不少。苹果A10X Fusion、A11 Bionic与英伟达Jetson Tegra x1表现比较接近,英特尔Movidius神经计算棒的表现次之。

NPUbench测试结果-苹果A10X Fusion、A11 Bionic

A10X Fusion、A11 Bionic是苹果公司所推出的两款芯片, A11 Bionic由于搭载了双核架构的神经网络处理引擎(Neural Engine),一经推出便引起了各界的广泛关注。在这篇文章中我们会对这两款芯片以及Core ML框架进行介绍,并对这两款芯片运行神经网络任务时的性能进行测试。

苹果A10X Fusion
图1 苹果A10X Fusion芯片

A10X Fusion是苹果公司设计的64位ARM架构SoC,首次搭载于2017年6月5日发布的iPad Pro系列产品。这款芯片采用了6核CPU:包括3个高频核心和3个低频核心,并搭载了12核GPU图形处理单元。

苹果A10X Fusion采用台积电的10nm FinFET工艺制造,晶片面积96.4平方毫米,其最大运行频率大约在2.36GHz,拥有8MB的L2缓存。

苹果A11 Bionic
图2 苹果A11Bionic芯片

A11 Bionic是苹果公司设计的64位ARM架构SoC,搭载于2017年9月12日发布的iPhone 8、iPhone 8 Plus及iPhone X三款智能手机中。这款芯片采用了6核CPU:包括2个高频核心和4个低频核心,六个核心可以同时运行。A11 Bionic 还用上了第一款苹果自主设计的3 核心 GPU。

A11Bionic采用了台积电10nm FinFET工艺制造,晶片尺寸为89.23平方毫米,其最大运行频率大约在2.4GHz,共包含43亿个晶体管,并拥有8MB的L2缓存。
A11Bionic还搭载了了被苹果公司称之为Neural Engine的神经网络专用加速电路模块,据苹果公司官方提供的信息:

“A11 Bionic神经引擎采用多核设计,实时处理速度最高每秒可以达到6000亿次。A11 Bionic神经引擎主要是面向特定机器学习算法、Face ID、Animoji及其它一些特定的功能设计的。”

不过在移动端芯片上集成神经网络加速引擎,苹果并不是第一家,此前高通曾在自家的骁龙820进行过尝试,华为早前推出的麒麟970芯片也宣称内置了自家开发的神经网络加速引擎。

苹果Core ML机器学习框架
图3 苹果CoreML框架

Core ML是苹果公司为开发者提供的机器学习框架,通过使用Core ML框架可以将已经训练好的神经网络模型整合到自己的应用中,从而在应用中实现机器学习的功能,Core ML目前支持的平台有iOS, MacOS,tvOS和 watchOS。据苹果公司官方提供的信息:

“Core ML 允许您将众多机器学习模型类别集成到您的 app 中。 它不但有 30 多种层来支持广泛的深度学习,而且还支持诸如树集成, SVM 和广义线性模型等标准模型。 由于它构建在 Metal 和 Accelerate 等低阶技术之上,Core ML 能无缝地利用 CPU 和 GPU 来提供最大化的性能和效率。 您可以在设备上运行机器学习模型,让数据在过程中无需离开准备接受分析的设备。”

图4 Core ML框架的四层结构

Core ML是一个四层结构的框架,从底向上分别是:

性能框架层:最底层的这一层由Acccelerate and BNNS 以及Metal Performance Shaders两部分组成,前者用于大规模数学计算,后者用于加速GPU、图像渲染。
Core ML层:这一层主要用于导入转换后的神经网络模型,并根据导入的模型自动生成相应的高级代码。
专用机器学习框架层:这一层由三部分组成, Vision 框架主要用于图像视觉分析,NLP 框架用于自然语义分析,GamePlayKit 框架用于评估已经学习到的决策树。
应用层:最上面这一层是基于上述框架所构建起来的应用,在应用层中国可以实现类似于图像分类、语音识别,手写文字理解等功能。

测试结果

为了对这两款芯片运行深度学习任务时的性能进行测试,我们为搭载这两款芯片的设备iPhone 8 Plus以及iPad Pro 10.5寸开发了专门的测试程序,该程序使用了苹果提供的CoreML框架,程序目前内置了11款神经网络的离线模型:LeNet、Network in Network、SqueezeNet、GooLeNet、AlexNet、Inception-BN、ResNet50、ResNet101、ResNet151、VGG16、VGG19,在后续的更新中我们会支持更多的网络模型。这一程序使用50组ImageNet测试集数据来分别测试两款设备使用各神经网络模型时的平均前向推理时间。

测试平台:iPhone 8 Plus(苹果A11 Bionic),iPad Pro 10.5(苹果A10X Fusion)
系统版本:iOS 11.3
开发平台:macOS High Sierra 10.13.4,Xcode 9.3
开发语言:Swift 4.1

图5 iPhone 8 Plus(A11 Bionic),iPad Pro 10.5(A10X Fusion)使用各神经网络时的平均前向推理时间

图5是iPhone 8 Plus(A11 Bionic),iPad Pro 10.5(A10X Fusion)使用50张ImageNet测试集图片来测试各神经网络的平均前向推理时间。在这些网络模型中LeNet网络输出的分类数为10,Inception-BN输出分类数是21841,其余神经网络输出分类数都为1000。

从图中可以看出,这两种设备在使用LeNet时平均执行一次前向推理的时间最短,平均前向推理时间都在2.5ms左右,而在使用Inception-BN这一网络模型时前向推理时间都是最长,其中iPad Pro 10.5(苹果A10X Fusion)平均一次前向推理时间为624.775ms,iPad Pro 10.5(苹果A10X Fusion)平均一次前向推理时间更是达到了753.314ms,执行前向推理过程的时间仅次于Inception-BN的是ResNet-152,ResNet-152的网络结构中包含了大量的卷积层,而Inception-BN网络模型包含了69个卷积层,可见两种设备在运行卷积运算时的性能还有待提高。所以,如果你的应用对图像识别的实时性有需求的时候,针对这两款设备,你可能需要选择那些规模比较小的神经网络模型,如SqueezeNet,Network in Network等,才能使图像的识别速度达到每秒30帧左右的这样一个比较流畅的水平。

不难发现,在使用同一测试程序的情况下,iPad Pro 10.5(A10X Fusion)运行深度学习任务的性能要始终好于iPhone 8 Plus(A11 Bionic),而值得注意的是A11 Bionic是内置神经网络加速引擎的一款芯片,根据测试结果,我们推测苹果可能并没有开放神经网络加速引擎的能力给第三方的应用程序,而只是如官方所说的A11 Bionic神经引擎主要是面向Face ID、Animoji及其它一些特定的功能设计的。

测试结果截图
图6 iPad Pro 10.5(A10X Fusion)真机运行测试程序时的截图
图7 iPhone 8 Plus(A11 Bionic)真机运行测试程序时的截图

NPUbench测试结果–华为麒麟970芯片

图1华为麒麟970芯片
图1华为麒麟970芯片

麒麟970芯片是华为海思推出的一款使用台积电10nm工艺打造的芯片。在配置方面,这款芯片包含了8颗核心,其中4颗为高性能的ARM公版A73 架构,最高主频 2.4GHz,4颗位低功耗的ARM公版A53 架构,最高主频 1.8GHz。麒麟970集成NPU用于处理深度学习任务,并采用了HiAI移动计算架构。华为公司对HiAI移动计算架构的介绍是:

“HiAI是面向移动终端的AI计算平台。其中HiAI API是移动计算平台中的人工智能计算库,该计算库面向人工智能应用程序开发人员,让开发者便捷高效地编写在移动设备上运行的人工智能应用程序。”

为了测试麒麟970在处理深度学习任务时的表现,我们为Kirin970芯片开发了测试程序,该程序使用了HiAI移动计算平台(面向移动终端的AI计算平台)。该程序目前内置了11款神经网络的离线模型:LeNet、Network in Network、SqueezeNet、GooLeNet、AlexNet、Inception-BN、ResNet50、ResNet101、ResNet151、VGG16、VGG19。在后续的更新中我们还会支持更多的神经网络模型。

该程序提供了三种方法对麒麟970芯片进行测试:
模式一(Gallery):从图库中选择一张图片,测试处理一张图片的前向时间以及分类准确率。
模式二(Take Photo):使用摄像头拍摄一张照片,测试处理一张图片的前向时间以及分类准确率。
模式三(ImageNet Test):使用50张ImageNet图片来测试神经网络模型的平均前向时间。

测试结果:

测试平台:华为mate10手机。
测试平台配置:麒麟970芯片、4GB内存、64GB存储。
测试平台版本:Android8.0.0、EMUI8.0.0。

图2各神经网络模型在麒麟970上平均一次前向时间表现

图2是麒麟970芯片使用50张ImageNet图片测得的各个神经网络的平均前向时间。其中LeNet网络可以输出的分类数为10,Inception-BN输出分类数是21841,其余神经网络输出分类数都为1000。

从图2中可以看到,使用LeNet时平均执行一次前向推理时间最短,仅为6.865ms,而平均一次前向推理时间最长的是VGG19,达到了173.56ms,而在使用Network in Network、SqueezeNet和GooLeNet这些神经网络执行一次前向推理的时间都要少于使用AlexNet时所用的时间。

在不考虑功耗的情况下,相比较于其他神经网络处理器,在执行一次前向推理过程的时间方面,麒麟970的表现要优于英伟达Jetson Tegra x1和英特尔Movidius神经计算棒,当然它性能表现跟高性能GPU英伟达GeForce GTX 1080相比还有一定的差距。

测试结果截图:
图3NPUbench测试各神经网络运行50张ImageNet图片后的成绩
图4NPUbench测试各神经网络处理一张图片时的前向时间以及分类准确率

 

 

NPUbench测试结果–英特尔至强处理器 E5-2630

图1英特尔® 至强® 处理器

至强处理器 E5-2630 v4是英特尔公司的一款处理器,主要供服务器使用。它采用14nm工艺制造,处理器基本频率2.20GHZ,最大睿频频率为3.10GHZ,采用25M高速缓存,包含了10个独立中央处理核心,总线速度为8 GT/s QPI。我们把NPUbench部署到该CPU上来测试其性能并观察其cache命中率的情况。

图2 英特尔® 至强® 处理器 E5-2630 v4使用各神经网络模型时的前向推理时间构成图

图2是NPUbench在该处理器上使用不同神经网络模型时前向推理时间的构成情况。不难看出LeNet-5执行一次分类的时间要远小于其他神经网络,仅使用了1.14458ms。而消耗时间最长的则是ResNet-152这一神经网络模型,共使用了1395.53 ms,这其中执行卷积层所使用的时间占总时间的85%。类似的,在其他网络模型上也可以看到,卷积操作占用了相当大部分的执行时间,可见CPU在计算卷积运算时效率较低。

图3 英特尔® 至强® 处理器 E5-2630 v4执行各神经网络模型时的cache命中情况和机器指令执行情况

图2是NPUbench在该处理器上运行不同神经网络模型时的cache命中、未命中的次数组成图,以及机器指令数目/处理器时钟数这一比值的曲线,这一比值越大说明该神经网络模型更能够充分利用处理器的性能。在各网络模型中,命中率最高的是GoogLeNet,命中率为92%,命中率最低的则是Sequence to Sequence,命中率为82.4%,其他网络模型的命中率普遍在88.8%左右。在处理器性能利用方面,各神经网络的表现都很相近,比值一般都在2.4左右,其中表现最差的是LeNet-5,机器指令数目/处理器时钟数比值为1.36,最高的是SqueezeNet,比值为2.77,其次为Deep Hand、Inception-BN network。

NPUbench–神经网络模型

NPUbench测试工具包含的八种神经网络模型:

网络模型名称
发布时间
数据集
神经网络风格
应用领域
LeNet-5[1]
1998MNIST
Convolutional, Fully-Connected
Hand written digits recognition
AlexNet[2]
2012ImageNet
Convolutional, Fully-Connected
Image classification
GoogLeNet[3]
2014ImageNet
Convolutional, Fully-Connected
Image classification
ResNet -152[4]
2015ImageNet
Convolutional, Fully-Connected
Image classification
Sequence to Sequence[5]
2015MSVD
LSTMs
Generate captions for videos
Fully Convolutional Networks[6]
2015PASCAL VOCConvolutionalSemantic Segmentation
Inception-BN network[7]
2015ImageNetConvolutional, Fully-Connected
Image classification
Holistically-Nested Edge Detection[8]2015BSDS500Convolutional
Edge Detection

表1:NPUbench包含的神经网络模型

NPUbench使用神经网络结构解析法来确定测评工具中所包含的神经网络模型:网络结构解析法通过选择多种结构参数来对神经网络的网络结构进行描述,每一个网络模型的网络结构都被抽象为一组向量,再把这所有三十组向量使用主成分分析以及相似性分析两种方法进行分析计算,同时还考虑到了每种神经网络模型的使用热度和权威性,最终确定了八种有代表性、多样性的神经网络模型组成NPUbench测试工具。

NPUbench测试工具还包括八种神经网络所使用的数据集,分别是:MNIST[9],ImageNet[10],Pascal[11],MSVD[12],BSDS500[13]。

 

[1] Y. LeCun, L. L. Bottou, Y. Bengio, and P. Haffner, “Gradient-Based Learning Applied to Document Recognition,” Proceedings of the IEEE, vol. 86, no. 11, pp. 2278– 2324, 1998.

[2]A. Krizhevsky, G. E. Hinton, I. Sutskever, and G. E. Hinton, “ImageNet Classification with Deep Convolutional Neural Networks,” Advances In Neural Information Processing Systems, pp. 1–9, 2012.

[3]C. Szegedy, W. Liu, Y. Jia, P. Sermanet, S. Reed, D. Anguelov, D. Erhan, V. Vanhoucke, and A. Rabinovich. ”Going deeper with convolutions”. Technical report, arXiv: 1409.4842, 2014.

[4]K. He, X. Zhang, S. Ren, and J. Sun, “Deep residual learning for image recognition” in arXiv: 1506.01497, 2015.

[5]S. Venugopalan, M. Rohrbach, J. Donahue, T. Darrell, R. Mooney, K. Saenko. “Sequence to Sequence – Video to Text”.The IEEE International Conference on Computer Vision (ICCV) 2015.

[6] Jonathan Long, Evan Shelhamer, Trevor Darrell, “Fully Convolutional Models for Semantic Segmentation”. CVPR 2015.

[7] Sergey Ioffe and Christian Szegedy, “Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift”, in arXiv: 1502.03167,2015.

[8] Xie, Saining and Tu, Zhuowen. “Holistically-Nested Edge Detection”. Proceedings of IEEE International Conference on Computer Vision, 2015.

[9] Y. LeCun, L. Bottou, Y. Bengio, and P. Haffner. “Gradient-based learning applied to document recognition.” Proceedings of the IEEE, 86(11):2278-2324, November 1998.

[10] J. Deng, W. Dong, R. Socher, L.-J. Li, K. Li and L. Fei-Fei, “ImageNet: A Large-Scale Hierarchical Image Database”. IEEE Computer Vision and Pattern Recognition (CVPR), 2009.

[11] Roozbeh Mottaghi, Xianjie Chen, Xiaobai Liu, Nam-Gyu Cho, Seong-Whan Lee, Sanja Fidler, Raquel Urtasun, Alan Yuille. “The Role of Context for Object Detection and Semantic Segmentation in the Wild”. IEEE Conference on Computer Vision and Pattern Recognition (CVPR), 2014

[12] Jun Xu,Tao Mei,Ting Yao,Yong Rui.” MSR-VTT: A Large Video Description Dataset for Bridging Video and Language”, IEEE International Conference on Computer Vision and Pattern Recognition (CVPR),2016.

[13] P. Arbelaez, M. Maire, C. Fowlkes and J. Malik.” Contour Detection and Image Segmentation”. IEEE TPAMI, Vol. 33, No. 5, pp. 898-916, May 2011.

NPUbench–评估指标以及使用方法

NPUbench评估指标:

性能指标  MAC/S

Multiply and Accumulate operations per Second,即每秒执行乘加操作的数量,这一指标主要用于度量NPU在计算性能方面的表现。

功耗指标 MAC/S/W

Multiply and Accumulate operations per Second per Watt,即每秒每瓦执行乘加操作的数量,这一指标主要用于度量NPU在能耗方面的表现。

NPUbench使用方法:

首先把NPUbench评测套件中适合待测神经网络处理器的神经网络模型部署到待测神经网络处理器上,NPUbench在运行时有两种模式可以选择:第一种模式是将Batch参数设置为1,从而会记录神经网络处理器处理一个Batch数据时的性能,第二种模式是把Batch参数设置到最大,尽可能的达到待测神经网络处理器的性能极限,这一模式是用来记录NPU的最大吞吐性能。运行NPUbench后,根据所选择的模式请按照下表中的记录模板对待测神经网络处理器的性能表现进行记录。

指标单位
网络名称文字
准确率百分比
执行时间
执行功耗瓦特

模式一记录模板

指标单位
网络名称文字
Batch 大小数字
准确率 百分比
执行时间
执行功耗瓦特

模式二记录模板

需要注意的是在使用过程中为了保证测试过程的公平性,首先使用者必须保证不会更改任何神经网络结构描述文件以及神经网络模型中的数据。其次NPUbench要求所记录的结果必须都是准确率不低于该神经网络模型标准准确率的1%的那些性能数据。

NPUbench测试结果–英特尔Movidius 神经计算棒

图1:英特尔的Movidius 神经计算棒

英特尔的Movidius 神经计算棒(NCS,Neural Compute Stick )是一款基于USB接口的深度学习设备,它能为那些边缘设备提供神经网络任务加速功能,它的处理能力来自Movidius视觉处理单元(VPU),VPU仅需要1瓦特的功耗就能进行每秒万亿次浮点运算,并且NCS拥有12颗SHAVE处理核心用于加速神经网络任务。

我们把NPUbench部署在Movidius神经计算棒上,由于NCS支持的神经网络结构有限,NPUbench包含的部分神经网络模型无法运行在NCS上,因此我们还部署了其他的神经网络模型作为参考。

图2:英特尔Movidius 神经计算棒在使用不同SHAVE核时的前向时间
图3: 英特尔Movidius神经计算棒的前向时间组成(使用12颗SHAVE核)

NCS可以使用不同数量的SHAVE处理单元来运行神经网络任务,而使用SHAVE处理单元的数量会直接影响神经网络模型的表现,从图2我们可以看出在使用最多12个处理核心的时候,所有的网络模型都达到了最好的性能。而需要注意的是NCS在运行ResNet-152的时候最多只能使用四颗处理单元,从图中我们可以看到ResNet网络的表现对于SHAVE处理单元的数量十分敏感。ResNet-152网络大部分的运算操作都是卷积操作,随着使用处理单元数量的增加,该网络的前向性能表现几乎是以近两倍的趋势不断提升,同样对处理单元数量敏感的还有Inception-BN网络模型,而Inception-BN网络模型包含了69个卷积层,由图3我们可以看到Inception-BN超过83%的前向时间都用于处理卷积运算,它的网络深度仅次于ResNet-152,可见SHAVE处理单元对于卷积操作的运算时间有着十分直接的影响。

图4: 英特尔Movidius 神经计算棒的平均数据处理性能(使用12颗SHAVE核)
图5: 英特尔Movidius神经计算棒的功耗情况(使用12颗SHAVE核)

图4和图5分别是英特尔Movidius 神经计算棒在同时使用12颗SHAVE处理核心时的平均吞吐量组成情况以及功耗情况,从图中可以看到大多数的神经网络在执行全连接层的时候吞吐量最高,因为全连接在一个神经网络中更像是一个分类器,这种网络从用于将学习到的“分布式特征”映射到样本标记空间中,所以运行到这一层的时候会涉及到大量的数据处理操作,自然就会使得吞吐量增高,可见英特尔Movidius 神经计算棒在数据吞吐量方面还需优化。

 

国内外相关工作

今年来,深度学习神经网络芯片的测评指标与方法研究已经引起了学术界和产业界的高度重视,最近也涌现出一些用于对深度学习神经网络芯片进行评估和比较的工具和方法:

来自麻省理工学院的研究人员曾为了评估自己的Eyeriss[1]系列深度学习神经网络芯片而提出了一套测评套件,希望能够对不同的深度学习神经网络芯片进行评估和比较。这一测评套件中包括四个神经网络模型:AlexNet, VGG, GoogLeNet 和ResNet,以及相应的测试数据集:ImageNet数据集。他们的测评指标主要包括两个方面:可以对神经网络模型算法进行评估,测评的指标包括神经网络图片分类准确率、网络结构信息、权重的数量、乘加运算的数量等等,它也可以对深度学习神经网络芯片的性能进行评估,指标包括能效水平、存储带宽等等。但是作为一款测评深度学习神经网络芯片的工具来说,它的测评套件中所包含的神经网络模型极其有限,并且网络风格单一:都只是卷积类型的神经网络,并不适用于当前神经网络结构日新月异的当下。并且该测评套件中提出的测评指标数量也十分有限,并不能全面的对深度学习神经网络芯片进行评估。

DeepBench[2]是百度深度学习研究院针对自己的DeepSpeech深度学习智能语音识别平台而提出的一款深度学习神经网络芯片的测试集。该工具把深度学习平台看成是一个三层的结构:深度学习框架层、神经网络实现库层、硬件层。DeepBench还把神经网络分解成不同的基本操作,每一个基本操作又配置了不同的参数。DeepBench希望能找出在执行某一基本运算时,哪一款深度学习神经网络芯片能达到最优的性能。DeepBench的局限是十分明显的:首先,该测评套件只使用基本运算来作为测评的工具,然而神经网络中层与层之间是需要进行数据传输的,相互之间有着十分紧密的联系,把神经网络差分成单独的基本运算来作为测试集,并不能反映出深度学习神经网络芯片在整个神经网络结构上的性能。其次,DeepBench使用了中间层神经网络实现库层来测评不同的硬件,这也就意味着使用DeepBench进行测评所得到的硬件性能结果是受到了神经网络实现库层的影响,并不能代表硬件本身的实际性能,并且,DeepBench所提出的评测指标只有执行一次前向或反向过程的时间这一项,并不能全面的对深度学习神经网络的性能进行描述。

Fathom[3]是由哈佛大学的研究学者所提出的一组神经网络模型套件,该套件中包括了八款神经网络模型:MemNet、seq2seq、AlexNet、VGG、ResNet、autoenc、DeepSpeech、Deepq。并且他们提出了一套方法,来对这八款神经网络模型进行分析和比较,分析八款神经网络模型的运算操作组成,对八款神经网络模型的运算操作组成相似度进行比较,并且分析了八款神经网络模型在进行并行优化时所存在的瓶颈。他们把八款神经网络模型进行封装,并提供统一的接口,希望Fathom能成为量化神经网络硬件或系统好坏的标准。 Fathom虽然提出了一套比较完整的方法来对网络模型进行比较,但是在测评深度学习神经网络芯片时,它仍存在以下不足:1.Fathom并没有对其他类型(如反卷积,下采样类型)的神经网络进行分析。2. Fathom提供的测评指标只有延迟时间,并不适合对深度学习神经网络芯片进行全面的评估。3. Fathom测评的目标,主要还是针对CPU或者GPU平台,它并没有针对深度学习神经网络芯片提出一套完整、公正的测评指标和方法。

国内外虽然在深度学习神经网络芯片测评指标与方法研究方面有很多工作,但针对设计一款公正、全面的深度学习神经网络芯片测试集这一具体目标而言,依然面临下面两个重要需求:(1)一套全面、公平的深度学习神经网络芯片测评指标;(2)一套完整、公开的深度学习神经网络芯片测评方法。

[1]http://eyeriss.mit.edu/benchmarking.html

[2]https://svail.github.io/DeepBench/

[3]https://fathom.readthedocs.io/en/latest/

 

NPUbench测试结果–英伟达GeForce GTX 1080

图1:英伟达GeForce GTX 1080

英伟达GeForce GTX 1080是一款高性能的GPU,采用了16nm工艺、全新Pascal架构。它配有2560个CUDA核心,使用了256位8 GB GDDR5X内存,我们把NPUbench运行在这款设备上来看它的性能表现。

图2:英伟达GeForce GTX 1080 的前向时间组成

图2是在这款GPU上运行NPUbench的前向时间的构成情况,最终的测试结果与英伟达Jetson Tegra x1比较相似,ResNet-152进行一次前向过程所需要的时间要远高于NPUbench中的其他网络模型,它在卷积操作和BatchNorm操作上花费了大部分的时间,而仅次于ResNet-152的是Inception-BN网络模型,从表中我们也可以看到大部分的神经网络模型一次前向的时间几乎都花费在了卷积层以及全连接层之上。

 

NPUbench测试结果–英伟达Jetson Tegra x1

图1:英伟达Jetson Tegra x1

英伟达Jetson Tegra x1是一款嵌入式的开发平台,它配有256颗CUDA核心,使用TSMC 20nm SoC制造工艺,使用64位的LPDDR4内存,能够提供每秒超过一万亿次的浮点运算性能,我们把NPUbench全部部署到此设备上来测试其性能。

图2: 英伟达Jetson Tegra x1的性能及功耗图

图2是NPUbench在这台设备上的前向时间构成图以及平均功耗,从图中可以看到ResNet-152要比其他网络消耗更多的时间,而消耗更多功耗的则是Sequence to Sequence这一网络结构。