【ISCA17】SCNN:AnAcceleratorforCompressed-sparseConvolutionalNeuralNetworks

主要设计了一个可以高效处理稀疏化CNN的高效硬件架构,主要思想就是跳过weight和activation中有0的乘法的情况。以达到加速(cycle)和降低功耗的效果。

 

以下按照原文结构,大致概括一下文章的脉络。

 

ABSTRACT

本文设计了一个Sparse CNN (SNN)的加速器硬件架构,通过设计一种压缩的数据流模式,同时探索了weight和activation在硬件中的稀疏性,即跳过含有0的乘法计算,以此可以减少数据交换和存储空间。相对于密集的CNN加速器,分别提高了2.7X和2.3X的性能和功耗。

 

1 INTRODUCTION

列举一些关键信息。

 

SparseCNN的可以被剪枝的weight大约占20%~80% [16, 17].

50-70%的activation被约束到0.

通过对非零数的压缩编码(即引入非零数的index),可以在on-chip RAM上存下更多的有效数据进行运算,减少从DRAM访存的功耗。

 

SCNN是首次同时高效处理weight和activation稀疏的硬件架构。

设计了高效的SCNN dataflow来降低访存(activation stationary)。

 

探索不同网络的稀疏度:

黄色的三角形对应于weight和activation都为非零的情况,可以看出随着层数加深,相比于只处理稀疏weight,仍有很大的优化空间(最后一层可能只有不到50%的非零乘法)

【ISCA17】SCNN:AnAcceleratorforCompressed-sparseConvolutionalNeuralNetworks

【ISCA17】SCNN:AnAcceleratorforCompressed-sparseConvolutionalNeuralNetworks

【ISCA17】SCNN:AnAcceleratorforCompressed-sparseConvolutionalNeuralNetworks
 

 

不同工作对于weight 和 activation 稀疏度的利用:

【ISCA17】SCNN:AnAcceleratorforCompressed-sparseConvolutionalNeuralNetworks
 

 

 

 

3 SCNN DATAFLOW

起了个很难听的名字:

PlanarTiled-InputStationary-CartesianProduct-sparse, or PT-IS-CP-sparse.

相对应该数据流用来处理非稀疏的网络时:PT-IS-CP-dense

先看PT-IS-CP-dense的情况:

 

3.1 PT-IS-CP-dense

 

以一层的卷积层为例:

【ISCA17】SCNN:AnAcceleratorforCompressed-sparseConvolutionalNeuralNetworks

通常的inference情况下,都取N为1.

按照最简单的处理卷积的顺序(比如使用for循环),处理顺序为:N K C W H R S

PT-IS-CP-dense则采用 input-stationary(IS)的计算顺序,即外层循环是整张activation(即 input 数据不流动),为 C W H K R S

 

对于输入数据,需要input buffer 来在片上存储数据,同时由于不能一次处理完所有的input channel,所以需要accumulator buffer来存储中间值 partial sumpsum,而且每个buffer都对应着一个(读取-累加-写入)的操作,用来计算最终的output channel每一个pixel的值。这个acc buffer和adder合起来称之为一个acc unit

 

 

将K个kernel(也对应着K个output channel)拆分成Kc个为一组,共有K/Kc组output-channel groups。每次只存储一个group在片上的weight buffer和accumulation buffer。则这样的子块(sub-volumes)对应的片上缓存为:

【ISCA17】SCNN:AnAcceleratorforCompressed-sparseConvolutionalNeuralNetworks

对应的外部循环顺序为:

K/Kc C W H Kc R S

 

 

讨论对应到并行的硬件结构中的计算流程。

3.1.1 Intra-PE parallelism.  

乘法器的并行化主要对应于CP(笛卡尔积)的过程,其可以最大化spatial reuse。

每次从weightbuffer取出F个weights的向量,从input buffer取I个activation的向量。输入到一个FxI的乘法器array,即两两相乘。每个乘法器的输出,通过并行计算的坐标信息,输出累加到对应的Psum上(即找到对应的accu buffer的位置)

可以带来两个好处:(1)每个w被I个activation重用(通过广播结构),每个activation被F个w重用;(2)每一个乘法输出的psum都是有用的(?),不需要额外的访存和计算

 

3.1.2 Inter-PE parallelism.  

PT(PlanarTiled)对应于PE间的并行化处理。通过将每个大小为WxH的activation拆分成WtxHt的小tile,均摊到每一个PE中。每个PE含有C个channel,共CxWtxHt个数据。

Halo但是卷积的操作模式,会导致在跨tile的过程中,边缘的数据分布在不同的PE中,所以需要对边缘的数据进行额外的处理。提供了两种思路,一种是拆分tile的时候,把边缘重复拆分到相对应的PE中;第二种是在计算后的Psum中,对边缘同样进行计算psum,最后在accu buffer中对边缘的psum进行累加。两种方法的overhead类似,本文采取的是第二种方法,称之为(output halo)

 

下图展示了单个PE的数据流伪代码,包括K个kernel的分块(A&C),取activation和weight的数据矢量(B&D),计算笛卡尔积(E&F),XY是accu buffer的坐标,Kcoord(), Xcoord(), and Y coord() 是计算k,x,y坐标的函数。

【ISCA17】SCNN:AnAcceleratorforCompressed-sparseConvolutionalNeuralNetworks

 

3.2 PT-IS-CP-sparse 

做sparse结构的关键,就是将原来的稀疏的值(包括activation和weight)压缩存储,同时加上其非零位的index。需要用到压缩和decode的处理电路。好处是在高稀疏度的情况下可以显著降低存储数据量(比如35%的稀疏度),同时通过index可以跳过含有零的乘法计算cycle,加速运算速度。

weights按照output-channel group的粒度(Kc×R×S),被划分为压缩的blocks。

activation展昭input-channel的粒度(Wt×Ht ),划分为压缩blocks。

每次访存,weightbuffer取出F个非零值,及其坐标信息;input buffer取出I个非零值及坐标。(但是分配给每个PE的blocks,其数据的稀疏度是不均匀的,总是会遇到PE之间快慢不均等的情况,在PE间交换数据的时候,就要等最慢的PE结束计算才行。)

与Dense 情况不同的是,这里的输出结果的index不是由 状态机 输出的,而是通过 参与计算的非零值的坐标信息进行计算的。所以由输出坐标信息,将FxI的mul array的输出投射到(scatter)输出map(Kc×Wt×Ht output range )不同的地址位,即accumulation buffer必须保持未压缩的状态。

事实上,即使是sparse结构,输出activation在未经过ReLU时,往往也是密集的。

为了更好的适应稀疏的psum累加结构,本文将一整块的 Kc×Wt×Ht Acc Buffer 拆分成分布式的小块 acc buffer array,可以通过crossbar结构作为投射网络进行访存,根据FxI个psum的index,映射到acc banks array。(这里原文讲的有点混乱。我的理解,就是把不管输出的顺序,先存到一个一个小块,然后给每个小块标上坐标,这样最后是一个乱序的output activation存在acc buffer,然后将其压缩存储到output buffer,进行下一层的计算。)

 

 

 

 

4 SCNN ACCELERATOR ARCHITECTURE

4.1 Tiled Architecture

SCNN 加速器,实现PT-IS-CP-sparse数据流,如下图所示,包含了一组简单互连的PE array,每个PE接收多channel的weight和activation,输出多channel的output。

PE间,和最近的8个PE互连,用来交换halo值。

整体的数据流控制由layer sequencer编排,其控制着一个DRAM controller,用于将weight广播到所有PE,activation可以流入或流出(stream to/from PE)。

 

SCNN使用arbitrated bus(仲裁器?总线?)作为控制weight广播的全局网络。DRAM和PE间,点对点的activation输入/输出端口(IA、OA)。

【ISCA17】SCNN:AnAcceleratorforCompressed-sparseConvolutionalNeuralNetworks
 

4.2 Processing Element (PE) Architecture

图6是SCNN PE的结构,包含一个weight buffer、一个input和output RAM(IARAM & OARAM)、一组accumulator buffer(a bank of)、一个乘法阵列(mul array)、一个投射阵列(scatter crossbar)、以及一个后处理电路(PPU,post-processing unit)。

处理第一层的时候,input image是无法压缩的,所以将其部分输入到PE的IARAM,压缩的weight广播到PE buffer。而处理之后的层,则尽可能的将compressed activation存在片上RAM,即由OARAM处理到IARAM,而不写出到DRAM。(后面实验结果,只有VGGNet无法全部存在片上。)

 

每层都有一些参数来配置layer sequencer的控制器,包括weight FIFO,IARAM和OARAM,PPU。

【ISCA17】SCNN:AnAcceleratorforCompressed-sparseConvolutionalNeuralNetworks
 

Input weights and activations. 每个PE带有一个状态机,用来控制输出的psum(?),每当取FxI个值做笛卡尔积,同时其坐标也要参与计算其psum的输出坐标(即在dense的 acc buffer中的位置)。

Accumulation. 得到FxI个psum之后,存到含有A个acc bank的ram array,同时附上index。为了减少列散(hash)时的访存冲突,A设为2xFxI。Acc buffer是双buffer,一部分不断写入psum,另一部分流出到PPU。

Post-processing 当一个output-channel group完成后,即进入PPU进行后处理,包括与邻近PE交换halo数据,计算边界;非线性单元(ReLU);Pooling;dropout;以及压缩结构,输出到output RAM

Compression. 即index的方案。此处采用step的结构,如下图,包括非零值的data vector,以及index vector,第一位是非零值的数量,以及间隔的步长。3维的kernel和activation volume被降维成一维数组。

Index vector的每一位,用4bit来表示,即允许最多15个0的间隔。更大的间隔,则在value中置0作为placeholder.

 

【ISCA17】SCNN:AnAcceleratorforCompressed-sparseConvolutionalNeuralNetworks

 

4.3 Fully-connected Layers

但是SCNN结构无法高效处理全连接层,因为其不是卷积的结构,相当于矩阵点乘,即笛卡尔积的array,数据对于weight不是复用的,每一轮只有几个是有效的乘积。

然后解释了,说现在的大部分网络结构,fc层计算量比较少,是访存瓶颈,所以这里的低效处理是可以接受的。

推荐结合EIE结构处理全连接稀疏的工作。

 

4.4 Temporal Tiling for Large Models

大致讲了大部分网络模型的层都可以存在片上,但VGG的一些层过大,无法全部存在片上,所以SCNN每次处理一层一部分的数据,然后从DRAM回写和访存。相当于在时域上将一层的计算平铺开,在activation 平面上划分成粗粒度的tile,以刚好能填满IARAM。计算得到的output输出到DRAM,下一层计算再从DRAM取出数据。因为边缘仍有小的halo,所以会增加一定的从DRAM的访存次数。

统计下来,在所分析的网络中,72个总层中只有9个在IARAM / OARAM结构中无法完全存下,其都来自VGGNet。对于密集和稀疏体系结构,一个时间片的DRAM访问可以通过将它们与另一个片的计算一起流水线化来隐藏。我们标称的DRAM带宽配置为50 GB / s,可提供足够的带宽来吸收额外的激活流量。只有当DRAM带宽降至4 GB / s左右时,性能才会下降。在这9层中,激活数据传输的每层额外的访存功耗增加的范围为5-62%,平均值为18%。这种开销比较低,并且所有CNN架构都会遇到相似的问题——用于activation的片上RAM;对于不压缩激活的加速器,开销会更高。

 

 

4.5 SCNN Architecture Confguration

虽然SCNN架构可以跨多个维度进行扩展,但表3列出了我们在本文中探讨的SCNN设计的关键参数。 该设计采用8×8阵列的PE,每个PE具有4×4乘法器阵列,以及具有32个bank的累加器缓冲器。在采用16nm技术的PE的合成时钟速度略高于1 GHz时,该设计实现了2个Tera-ops的峰值吞吐量(16位乘法加上24位加)。

Area Analysis.

为了对SCNN架构进行原型设计,我们在可综合的SystemC中设计了一个SCNN PE,然后使用Catapult高级综合(HLS)工具[25,26]生成Verilog RTL。 在此步骤中,我们使用HLS设计约束来优化设计,方法是将不同的存储器结构映射到同步RAM和锁存器阵列,并对设计进行流水线操作以实现全部吞吐量。 然后,我们使用Synopsys Design Compiler执行放置感知逻辑综合,并在TSMC 16nm FinFET技术中获得合成后面积估计。

表4总结了SCNN PE的主要结构的面积。PE区域的重要部分由存储器(IARAM,OARAM,累加器缓冲器)贡献,其占用PE区域的57%,而乘法器阵列仅消耗6%。 IARAM和OARAM体积很大,占PE面积的25%。 与IARAM / OARAM相比,累加器缓冲器虽然尺寸较小,但却存在大量存储(32个存储体),导致其占用面积较大。

【ISCA17】SCNN:AnAcceleratorforCompressed-sparseConvolutionalNeuralNetworks

【ISCA17】SCNN:AnAcceleratorforCompressed-sparseConvolutionalNeuralNetworks
 

 

 

 

 

以下几节大部分是分析,信息量比较大,以翻译为主。

 

5 EXPERIMENTAL METHODOLOGY

CNN performance and power measurements.

为了模拟SCNN架构的性能,我们主要依靠自定义构建的循环级模拟器。 该模拟可跨尺寸参数化,包括处理元件(PE)瓦片的数量,RAM容量,乘法器阵列尺寸(F和I)和累加器缓冲器(A)。 SCNN模拟器由从Caffe Python界面(pycaffe)[4]中提取的修剪权重和稀疏输入激活映射驱动,并一次执行一个网络的每个层。 因此,模拟器精确捕获数据稀疏性的影响及其对SCNN架构内负载平衡的影响。

我们还开发了TimeLoop,这是CNN加速器的详细分析模型,可以探索密集和稀疏架构的设计空间。 TimeLoop可以模拟各种数据流,包括PT-IS-CP稀疏和PT-IS-CP密集,以及表2中描述的数据流.TimeLoop的体系结构参数包括内存层次结构(缓冲区大小和位置) ),ALU计数和分区,以及密集/稀疏硬件支持。 TimeLoop还包括用于片外访问的DRAM带宽和能量模型。 TimeLoop分析输入数据参数,体系结构和数据流,然后计算(1)基于瓶颈分析处理层的周期数,以及(2)ALU操作的计数和对不同缓冲区的访问在内存层次结构中。我们将能量模型应用于从综合建模派生的TimeLoop事件,以计算执行该层所需的总体能量。 TimeLoop还根据综合建模的输入计算加速器的总面积。对于SCNN,区域模型包括可综合SystemC实现的所有元素。对于密集体系结构,使用从SystemC建模派生的主要结构(RAM,ALU和互连)的面积计算面积。

Architecture confgurations.

表5总结了我们探索的主要加速器配置,包括密集加速器和稀疏加速器。所有加速器都使用相同数量的乘法器,以便我们可以将加速器的性能与相同的计算资源进行比较。密集的DCNN加速器仅在密集的权重和激活下运行,并采用称为PT-IS-DP密集的点积数据流。由于减少了累积缓冲区访问,点积对于密集加速器通常是有效的,尽管这是以减少权重和输入激活的空间重用为代价的。

优化后的DCNN-opt架构具有与DCNN相同的配置,但采用两种优化:(1)激活压缩/解压缩,因为它们被转移出DRAM,以及(2)多次ALU选通以节省能量乘数输入为零。DCNN架构配置了2MB的SRAM用于保持层间激活,并且可以为AlexNet和GoogLeNet保留所有这些。

SCNN配置与第4节中描述的体系结构相匹配,并包含总共1MB的IARAM + OARAM。由于激活被压缩,因此该容量使得两个网络的所有激活数据都能够保存在芯片上,而不需要DRAM传输来进行激活。较大的VGGNet要求激活数据传入和传出DRAM。

 

该表的最后一列列出了每个加速器所需的面积;为简单起见,我们仅总计了PE阵列和SRAM组的区域,并省略了PE之间的任何布线区域。由于压缩导致SCNN的互连带宽要求低于密集架构,因此包括密集和稀疏架构的互连区域将在两者之间稍微缩小区域间隙。虽然SCNN具有较小的激活RAM容量,但其较大的尺寸是由于存储的累加器缓冲器,如第4节所述。

【ISCA17】SCNN:AnAcceleratorforCompressed-sparseConvolutionalNeuralNetworks

 

Benchmarks.

 

如第2节所述,我们使用AlexNet和GoogLeNet进行大部分实验。对于GoogLeNet,我们主要关注内部模块中的卷积层[31]。已知VGGNet过度参数化,导致过多的层间激活数据(6 MB或大约4倍最大的GoogLeNet层)。尽管如此,我们使用VGGNet作为大输入数据(例如具有高分辨率图像)的代理,以探索粗粒度时间平铺对加速器架构的影响。我们利用两种不同类型的基准来评估SCNN的效率。首先,我们开发了合成网络模型,我们可以调整权重和激活的稀疏程度。这些合成模型用于探索体系结构对稀疏度参数的敏感性(详见6.1节)。其次,我们使用Han等人提出的CNN修剪算法生成实际的稀疏网络模型。[17],我们在循环级性能模拟中使用它。已修剪的模型已经过重新训练,以达到密集模型提供的相同级别的分类精度,我们使用此修剪后的模型获取后ReLU激活图以将其提供给我们的性能模拟器。

 

 

 

6 EVALUATION

这一节主要讨论SCNN关于数据稀疏度的一些影响。

6.1 Sensitivity to CNN Sparsity

我们首先比较了SCNN,DCNN和DCNN-opt架构的性能和能效,因为我们手动地将GoogLeNet层中的重量和激活密度从100%(完全密集)降低到10%。 图8的X轴同时缩放重量和活化密度。 相对于全密度1.0 / 1.0点,0.5 / 0.5点对应于50%重量密度,50%活化密度和25%的倍增操作。 图8a显示,在全密度下,SCNN仅达到DCNN / DCNN-opt1性能的约79%,因为SCNN的数据流比DCNN的点积数据流更容易受到某些乘法器未充分利用的影响。 随着密度降低至约0.85 / 0.85,SCNN开始表现优于DCNN,最终在最稀薄的评估点达到24倍,密度为0.1 / 0.1。

图8b首先显示DCNN-opt的零门控和DRAM流量压缩的能量优化使其在每个密度级别都能比DCNN更好。尽管这些能量优化对加速器的设计影响很小,但这些能量优化却令人惊讶地有效。在全密度下,由于存储和维护稀疏数据结构的开销,SCNN比密集架构消耗的能量多33%。 SCNN在密度约为0.83 / 0.83时比DCNN更有效,并且在0.6 / 0.6密度下比DCNN-opt更有效。在最稀薄的0.1 / 0.1密度评估点,SCNN消耗DCNN能量的6%和DCNN-opt能量的23%。鉴于图1中网络的密度测量结果,我们预计SCNN(a)在我们检查的几乎所有网络层上都显着优于密集架构,(b)超过DCNN在大多数层上的能量效率,以及(c)与大多数层的DCNN-opt的能源效率保持大致竞争力。

 

这里的零门控(zero-gating),指的是在输入有0的情况下,关闭乘法器。

【ISCA17】SCNN:AnAcceleratorforCompressed-sparseConvolutionalNeuralNetworks
 

6.2 SCNN Performance and Energy

Performance.

我们将SCNN的性能与基准的密集DCNN加速器和表示性能上限的oracular SCNN设计(SCNN(oracle))进行比较。 SCNN(oracle)的性能是通过将基于笛卡尔积的卷积(第3节)所需的乘法运算数除以1,024(我们检查的架构中的乘数的数量)得出的。 图9总结了SCNN与密集CNN加速器提供的加速比。 总的来说,SCNN在AlexNet,GoogLeNet和VGGNet的所有层面上始终优于DCNN设计,分别实现了平均2.37倍,2.19倍和3.52倍的网络性能改进。

SCNN与SCNN(oracle)之间的性能差距在网络的后续层中扩展,即图9的x轴上的最右边的层.SCNN遭受导致该间隙的两种形式的低效率。 首先,分配给每个PE的工作集在后面的层(例如,IC_5b)中比在早期层(例如,IC_3a)中趋向于更小。 因此,在后面的层中分配足够的非零激活和权重以充分利用PE的乘法器阵列变得困难。 换句话说,当层没有足够的有用工作来完全填充向量化算术单元时,SCNN可能遭受PE内碎片。

 

第二个不足源于PT-IS-CP稀疏数据流分区在PE阵列中工作的方式,这可能导致PE之间的负载不平衡。 负载不平衡导致利用不足,因为对应于下一个输出通道组Kc + 1的工作只能在PE完成当前输出通道组Kc之后开始。 PE在输出信道组的边界处有效地执行PE间同步屏障,这可能导致早期的PE在等待落后时空闲。

【ISCA17】SCNN:AnAcceleratorforCompressed-sparseConvolutionalNeuralNetworks

 

图10定量地演示了乘法器阵列中的PE内碎片。 GoogLeNet的最后两个初始模块中的碎片很严重,平均乘数利用率低于20%。 在该层中,初始模块内的六个卷积子层中的三个具有1×1的滤波器大小,导致在输出信道组内最多具有8个非零权重,其Kc值为8.尽管如此。 后面的层通常占整个执行时间的一小部分,因为输入激活量(即,H×W×C)在各层之间逐渐减小。

 

图10的右y轴通过显示在PE间屏障处等待的循环的分数来证明PE上的负载不平衡的影响。 尽管PE间全局障碍和PE内部碎片阻止了SCNN达到SCNN(oracle)提供的类似加速,但它仍然在我们检查的三个CNN上提供了比DCNN平均2.7倍的网络性能提升。

【ISCA17】SCNN:AnAcceleratorforCompressed-sparseConvolutionalNeuralNetworks

 

Energy-effciency.

图11比较了三个网络中三个加速器架构的能量。 平均而言,DCNN-opt比DCNN提高了2.0倍的能效,而SCNN的效率提高了2.3倍。 SCNN的有效性在各层之间变化很大,具体取决于层密度,相比DCNN提高0.89倍至4.7倍,比DCNN-opt提高0.76倍至1.9倍。 输入层(如VGGNet_conv1_1和AlexNet_conv1)通常会对稀疏体系结构提出挑战,因为它们的输入激活密度为100%。 在这种情况下,SCNN结构(如交叉开关和分布式累积RAM)的开销掩盖了较少的算术运算和数据移动带来的任何好处。

 

这些结果表明,虽然直接的DCNN-opt架构无法提高性能,但它在中等稀疏网络层上实现良好的能源效率方面非常有效。 尽管如此,SCNN在我们的基准网络中平均能量更高,同时提供了超过DCNN和DCNN-opt的巨大性能优势。

【ISCA17】SCNN:AnAcceleratorforCompressed-sparseConvolutionalNeuralNetworks
 

6.3 PE Granularity

如6.2节所述,跨PE全局障碍和PE内乘法器阵列碎片都可能导致SCNN性能下降。 我们通过进行以下灵敏度研究来量化这两个因素对系统性能的影响。假设加速器有1,024个乘法器,我们将片上PE的总数从64(8×8个PE,每个PE 16个乘法器)下调到4(2×2个PE,每个PE 256个乘法器)。显然,具有4个PE的SCNN可以比具有64个PE的SCNN更好地维持全局障碍的影响。但是,4 PE配置也更容易受到PE内部碎片的影响,因为每个PE现在必须处理更大的工作集以充分利用数学单元。在GoogLeNet上进行评估时,具有64个PE的SCNN比使用4个PE的SCNN实现11%的加速,因为它在使用数学阵列方面做得更好(平均59%的数学使用率与35%相比)。我们观察到AlexNet和VGGNet的类似趋势,得出的结论是,对于使用PT-IS-CP稀疏数据流的系统范围性能,解决PE内部碎片比PE间障碍更为关键。

 

6.4 Effects of Weight and Activation Sparsity

虽然图1显示在激活和修剪的权重中稀疏性很大,但是隔离稀疏性的影响提供了对不同加速器架构的权衡。 我们从第6.1节开始对源自SCNN设计的两种架构进行密度扫描实验。 SCNN-SparseA架构仅利用激活中的稀疏性,并且在精神上与Cnvlutin类似[1] .SCNN-SparseW架构仅利用权重的稀疏性,并且在精神上与Cambricon-X类似[34]。

表6列出了这些新架构的特征以及我们的基准SCNN,DCNN和DCNN-opt架构。 这些五种体系结构共同涵盖了稀疏体系结构的广泛设计空间,并且还包含了先前研究中所述的稀疏性类型,如表2所述。但是,由于数据流,缓冲区大小/组织和实现选择的显着差异 (例如使用eDRAM),我们评估的架构无法准确地代表那些先前的提议。

 

图12表明,在整个密度范围内,SCNN在性能和能量方面始终优于SCNN-SparseA和SCNN SparseW配置。唯一的例外是,在非常高的密度水平(重量/活化密度大于0.9 / 0.9),SCNN-SparseA的能量效率稍高,因为去除管理稀疏权重的开销。笛卡尔积周围的输入固定时间循环使这些架构在过滤IARAM访问时非常有效,导致IARAM消耗不到总能量的1%。在SCNN中更频繁地访问权重FIFO,导致权重FIFO消耗大约总能量的6.7%。因此,删除SCNN-SparseA中的权重编码开销显示出比移除SCNN SparseW中的激活编码开销更大的益处。然而,随着密度的降低,输入静止环的滤波优势相对于重量FIFO开始减小。在密度为0.8 / 0.8时,SCNN-SparseW超过SCNN-SparseA的能量效率,最终在0.1 / 0.1时达到2.5倍的优势。对于标称密度为0.4 / 0.4,SCNN分别在SCNN-SparseW和SCNN-SparseA上实现了1.7×和2.6×的性能优势; SCNN分别比SCNN-SparseW和SCNN-SparseA实现1.6倍和2.1倍的能效优势。

【ISCA17】SCNN:AnAcceleratorforCompressed-sparseConvolutionalNeuralNetworks

【ISCA17】SCNN:AnAcceleratorforCompressed-sparseConvolutionalNeuralNetworks
 

 

你可能感兴趣的:(【ISCA17】SCNN:AnAcceleratorforCompressed-sparseConvolutionalNeuralNetworks)