SqueezeNext: Hardware-Aware Neural Network Design

Abstract

  • 在嵌入式系统上部署神经网络的主要障碍之一是现有神经网络的大内存和功耗。在这项工作中,我们介绍了SqueezeNext,这是一个新的神经网络架构系列,其设计是通过考虑先前的架构(如SqueezeNet)以及神经网络加速器的仿真结果来指导的。这个新网络能够将AlexNet在ImageNet基准测试中的准确度与112倍以下的参数相匹配,其中一个更深层次的变体能够实现VGG-19精度,仅有440万个参数(比VGG19小31倍)。与MobileNet相比,SqueezeNext还可以实现更好的前5级分类精度,参数减少1.3倍,但避免使用在某些移动处理器平台上无效的深度可分离卷积。
  • 这种广泛的精度使用户能够根据目标硬件上的可用资源进行速度 - 精度权衡。使用嵌入式系统上的功率和推理速度的硬件仿真结果指导我们设计基线模型的变化,与SqueezeNet / AlexNet相比,能量效率提高2.59倍/8.26倍,能量效率高2.25倍/ 7.5倍,没有任何精度降低。

Introduction

  • 深度神经网络已经改变了计算机视觉领域的广泛应用。 这部分可以通过新颖的神经网络架构,更多训练数据的可用性以及训练和推理的更快硬件实现。向基于深度神经网络的解决方案的过渡始于AlexNet [19],它大大赢得了ImageNet的挑战。IMAGENET分类挑战始于2010年,第一个获奖方法的错误率为28.2%,2011年为26.2%。然而,Alexnet的准确度有了明显的提高,误差率为16.4%,比亚军高出10%。AlexNet由五个卷积和三个完全连接的层组成。 该网络共包含6100万个参数。由于网络的这种大尺寸,原始模型必须使用模型并行方法在两个GPU上进行训练,其中过滤器被分发到这些GPU。此外,需要Dropout以避免使用如此大的模型尺寸进行过度配置。 ImageNet分类的下一个重要里程碑是由VGG-Net家族[23]制作的,它专门使用3×3卷积。 这里的主要思想是使用3×3卷积来近似7×7滤波器的接收场,以及更深的网络。但是,具有1.38亿个参数的VGG19的型号尺寸甚至比AlexNet还要大,不适合实时应用。 建筑设计的另一个进步是ResNet系列[9],它结合了1×1和3×3卷积的重复结构以及跳过连接。 通过改变网络的深度,作者展示了多个学习任务的竞争性能。
  • 可以看出,神经网络设计的一般趋势是找到更大更深的模型,以在不考虑内存或功率预算的情况下获得更好的精度。人们普遍认为,新硬件将提供足够的计算能力和内存,以使这些网络能够在嵌入式系统中以实时性能运行。 然而,由于半导体工艺改进导致的晶体管速度的增加已经显着减慢,并且移动处理器似乎不太可能在有限的功率预算下满足计算要求。这已经开辟了几个新的方向,以减少使用压缩[7]的现有神经网络架构的内存占用,或从头开始设计新的小型模型。 SqueezeNet是后一种方法的成功例子[15],它可以实现AlexNet的精确度,无压缩时参数减少50倍,深度压缩减少500倍。基于SqueezeNet [25,26]开发了用于检测和分割等其他应用的模型。 在这个方向上另一个值得注意的工作是DarkNet参考网络[22],它以10倍的参数(28MB)实现了AlexNet的精度,但每个推理图像需要2.8×更小的FLOP。他们还提出了一个名为TinyDarkNet的小型网络,它将AlexNet的性能与仅4.0MB的参数相匹配。另一项值得注意的工作是MobileNet [11],它使用深度卷积进行空间卷积,并且只能通过132万个参数超越AlexNet的性能。后来的工作是ShuffleNet [10],它将这个想法扩展到逐点组卷积以及通道shuffling [10]。 还提出了更紧凑的残余网络版本。 值得注意的工作包括DenseNet [13]及其后续的CondenseNet [12]。
  • 旨在为功耗和内存预算有限的嵌入式应用设计一系列深度神经网络,我们提出了SqueezeNext。使用最小的版本,我们只需0.5万个模型参数即可实现AlexNet的精确度,比AlexNet小112倍(比SqueezeNet小2倍)。此外,我们还展示了网络在宽度和深度方面的变化如何能够涵盖广泛的准确度水平。例如,SqueezeNext的更深变化可以达到VGG-19的基线精度,仅有440万个模型参数。 SqueezeNext使用SqueezeNet架构作为基线,但我们进行了以下更改。
  1. 通过采用两级挤压模块,我们使用更积极的通道减少。 这显着减少了3×3卷积使用的参数总数。
  2. 我们使用可分离的3×3圈来进一步减小模型尺寸,并在挤压模块后移除额外的1×1分支。
  3. 我们使用类似于ResNet架构的元素加法跳过连接[9],它允许我们训练更深的网络而不会消失梯度问题。特别是,我们避免使用DenseNet [13]类型的连接,因为它增加了通道的数量,并且需要连接激活,这在执行时间和功耗方面都是昂贵的。
  4. 我们通过在多处理器嵌入式系统上模拟其性能来优化基线SqueezeNext架构。 仿真结果非常有趣地了解了性能瓶颈所在。

SqueezeNext Design

  • 已经发现,网络中的许多过滤器包含冗余参数,在某种意义上,压缩它们不会损害准确性。 基于这种观察,已经有许多成功的尝试来压缩训练有素的网络[17,17,21,29]。然而,这些压缩方法中的一些需要可变的位宽ALU以便有效地执行。为了避免这种情况,我们的目标是设计一个小型网络,可以从头开始训练,只需要很少的模型参数。 为此,我们使用以下策略:
  • 除了低秩结构之外,Ci和Co的乘法因子显着增加了每个卷积层中的参数数量。 因此,减少输入通道的数量会减小网络规模。 一种想法是使用深度可分离卷积来减少这种乘法因子,但由于算术强度低,这种方法在某些嵌入式系统上表现不佳。另一个想法是在SqueezeNet架构中使用的[15],其中作者在3×3卷积之前使用了挤压层来减少输入通道的数量。 在这里,我们使用后一种方法的变体,使用两级挤压层,如图1所示。在每个SqueezeNext块中,我们使用两个瓶颈模块seach将通道大小减少2倍,然后是 两个可分离的卷积。 我们还采用了最终的1×1扩展模块,进一步减少了可分离卷积的输出通道数量。
  • 在AlexNet的情况下,大多数网络参数都在完全连接的层中,占总模型大小的96%。 后续网络(如ResNet或SqueezeNet)仅包含一个完全连接的层。 假设输入的大小为H×W×Ci,则最后一层的完全连接层将包含H×W×Ci×L参数,其中L是标签的数量(ImageNet为1000)。 SqueezeNext包含一个最终的瓶颈层,可将输入通道大小减小到最后一个完全连接的层,从而大大减少了模型参数的总数。 这个想法也被用在Tiny DarkNet中以减少数量参数[22]。

Hardware Performance Simulation

  • 到目前为止,硬件架构已被设计为固定神经网络的最佳选择,例如SqueezeNet。 但是,正如我们稍后讨论的那样,可以从硬件仿真结果中获得重要的见解。 这又可以用于修改神经网络架构,以便在推理和功耗方面获得更好的性能,而不会引起泛化损失。 在本节中,我们首先解释了如何在移动/嵌入式系统的假设神经网络加速器上模拟网络性能,然后讨论如何改变基线模型以获得更好的硬件性能。
  • 神经网络加速器是一个领域特定的处理器,旨在加速神经网络推理和/或训练任务。 它通常具有大量称为处理单元(PE)的计算单元以及存储器和互连的分层结构,以利用卷积层中固有的大规模并行性和数据可重用性。
  • Eyeriss [2]根据要在存储器层次结构的最低级别重用的数据类型,引入了基于空间架构对神经网络加速器进行分类的数据分类。 这与卷积层的六个循环的顺序有关,如算法1.1所示。在我们的模拟器中,我们考虑执行卷积的两个选项:权重固定(WS)和输出固定(OS)。WS是许多值得注意的神经网络加速器中最常用的方法[4,3,6,18,1]。对于WS方法,每个PE加载卷积滤波器并在输入的所有空间位置执行卷积。一旦迭代了所有空间位置,PE将加载下一个卷积滤波器。在该方法中,滤波器权重存储在PE寄存器中。 Fora H×W×Ci输入特征映射,以及Co K×K×Ci卷积(whereCo是滤波器的数量),执行过程如下。 PE将卷积参数中的单个元素加载到其本地寄存器,并将其应用于整个输入激活。然后,它移动到下一个元素,依此类推。对于多个PE,我们将其分解为Pr×Pc处理器的2D网格,其中Pr维度分解通道,Pc维度分解输出特征映射Co,如图4所示。总之,在WS模式中整个PE阵列保持权重张量的Pr×Pc子矩阵,并对一系列输入激活矢量进行矩阵向量乘法。
  • 在OS方法中,每个PE一次仅对输出激活映射的一个像素起作用。 在每个周期中,它应用将对该输出像素做出贡献的卷积部分,并累积结果。 一旦完成了该像素的所有计算,PE就会移动到新的像素上。 在多个PE的情况下,每个处理器仅处理来自多个通道的不同像素。 总之,在OS模式中,整个阵列随时间计算输出特征图的Pr×Pc块。 在每个周期中,计算相应像素所需的新输入和权重被提供给每个PE。 有多种方法可以执行OS方法。 这些包括单输出通道多输出像素(SOC-MOP),多输出通道 - 单输出像素(MOC-SOP)和多输出通道多输出像素(MOC-MOP)[2]。 这里我们使用SOC-MOP格式。
  • 采用权重固定(WS)数据流的加速器旨在通过重复使用卷积滤波器的权重进行多次激活来最小化卷积参数的存储器访问。 另一方面,使用输出静止(OS)数据流的加速器被设计成通过累加对应于相同输出激活超时的部分和来最小化输出激活的存储器访问。 因此,x和y循环形成WS数据流中的最内循环,而c,i和j循环形成OS数据流中的最内循环。 两种数据流都显示出具有3×3或更大滤波器的卷积层的良好性能。 然而,移动和嵌入式神经网络架构的最近趋势是轻量级构建块的广泛采用,例如。 1×1卷积,具有有限的并行性和数据可重用性。
  • 加速器一次一层地处理神经网络,并且每层使用提供更好的推理速度的操作模式。 层的内存占用范围从几十千字节到几兆字节。 如果图层的内存容量要求大于全局缓冲区的大小,则将平铺应用于算法1中卷积的x,y,c和k循环。平铺循环的顺序和大小为 通过使用考虑了推断速度和DRAM访问次数的成本函数来选择。
  • 性能估计器计算处理每个层所需的时钟周期数,并对所有结果求和。 PE阵列和全局缓冲区消耗的周期是通过对内部数据路径和控制逻辑的时序建模来计算的,并且DRAM访问时间通过使用两个数字来估算,即延迟和有效带宽,假设为100 周期分别为16GB / s。 对于能量估计,我们使用类似于[2]的方法,但考虑到参考加速器的结构,组件的标准化能量成本略有修改。

Conclusions

  • 在这项工作中,我们介绍了SqueezeNext,这是一个新的神经网络架构系列,能够以112×更少的参数实现AlexNet的前5个性能。 SqueezeNext架构的更深层次变化超过了VGG-19的精度,参数减少了31倍。 MobileNet是一个非常新颖的移动应用网络,但SqueezeNext能够超过MobileNet的前5个精度1.6%,参数减少1.3倍。 SqueezeNext在不使用深度可分离卷积的情况下实现了这一点,这对于某些移动过程体系结构来说是麻烦的。基线网络包括一个两级瓶颈模块,用于减少空间卷积的输入通道数量,使用低级别可分离卷积以及扩展模块。我们还将输入通道的数量限制为完全连接的层,以进一步减少模型参数。通过在真实神经网络加速器的PE阵列上模拟模型的硬件性能并在功率和推理周期计数方面报告结果,可以实现基线架构的更有效变化。使用每层仿真分析,我们提出了基线模型的不同变化,不仅可以实现更好的推理速度和功率能耗,而且还具有更好的分类精度,模型尺寸的增加可以忽略不计。神经网络设计与神经网络加速器架构上的性能建模之间的紧密耦合对于获得我们的结果至关重要。这使我们能够设计出一种新型网络,与SqueezeNet / AlexNet相比,能够快速提高2.59倍/8.26倍,节能2.25倍/ 7.5倍,而不会降低精度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值