【ISCA17】SCNN:AnAcceleratorforCompressed-sparseConvolutionalNeuralNetworks_一只神秘的大金毛_新浪博客...

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

 

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

 

ABSTRACT

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

 

1 INTRODUCTION

列举一些关键信息。

 

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

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

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

 

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

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

 

探索不同网络的稀疏度:

黄色的三角形对应于weightactivation都为非零的情况,可以看出随着层数加深,相比于只处理稀疏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情况下,都取N1.

按照最简单的处理卷积的顺序(比如使用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

 

 

Kkernel(也对应着Koutput 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)每个wIactivation重用(通过广播结构),每个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中,所以

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值