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

近年来,人工智能领域发展飞速,无论是在工业界还是学术界,有关人工智能的各种新技术层出不穷,各个科技巨头也在持续发力,在产品和技术上都取得的巨大突破。人工智能(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测试结果–英特尔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 神经计算棒在数据吞吐量方面还需优化。

 

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这一网络结构。

 

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。