脉动阵列

脉动阵列是一个比较古老的概念,早在1982年就有了,可是,最近google的TPU采用了这个结构,脉动阵列又火了起来。我也是从今年新入职了一家公司后才接触到的,对比之前自己设计的AI架构,脉动阵列确实有很多优势。所以本文从传统AI计算架构和脉动阵列的对比来说明脉动阵列的设计方法和优势。

 

卷积运算

在正式介绍AI硬件架构前,简单讲一下卷积运算。因为卷积运算在CNN中发挥着重要作用,也是CNN中计算量最大的步骤。比如对于一个8x5大小的图像,用3x3卷积核进行卷积,首先将图像补充到10x7大小,然后移动3x3卷积核,得到卷积后的图像。

用公式表示这种运算为:

QQ截图20190127205326.png

在神经网络中有大量的卷积运算,在每一层网络中,有M个输入图片(称之为feature map,对应着一个输入通道),N个输出feature map(N个输出通道),M个输入会分别进行卷积运算然后求和,获得一幅输出map。那么需要的卷积核数量就是M*N。经过仔细观察和思考,可以看出每个卷积核会被M个图片共享,脉动阵列正是利用了共享数据。

算法E.png

非脉动计算架构

这是我最开始考虑的一种方案,主要思想是在输入和输出通道上实现并行运算。就针对上述例子(3x4卷积层),使用12个运算通道,每个通道完成卷积运算和累加,然后每3个通道完成求和,得到一个输出map。如下图:

QQ截图20190127205030.png

假设feature map为x(I,j),卷积核为W(3x3),那么PE中乘积和累加可以表示为:

q1.png

输出通道结果可以表示为:

q2.png

非脉动结构feature map的fanout比较大,上述中同一个feature map被三个PE共用,fanout为3,如果输入通道更大那么fanout会更大,大的fanout会影响FPGA时序。同时完成卷积运算后需要在输入通道之间增加额外的加法树。同时对于不同层输入输出通道数不一样,加法树就会变得很复杂。而接下来我们看到脉动阵列具有灵活的配置以及较好的时序性。

脉动阵列

针对上述的方案是否能够进行改进呢?可以首先想到能不能去除加法树,将输入通道的求和也使用累加来实现。那就变成只有一个PE完成卷积运算以及不同通道的求和。但是一个PE却降低了并行度,那么可以想到增加串行的PE数量来增加输入并行度,即演变为一列PE来实现输入通道求和。由于PE排序上的空间限制,导致后边一个PE的计算相比于前一个PE要有1个周期延时,如果将数据从从PE间的移动打一拍,那正好可以在第二个PE计算出来的同时完成和前一个PE的求和,这就是脉动的关键所在。

QQ截图20190127205541.png

增加多列脉动结构,就构成了脉动矩阵,比如针对上述网络层,就增加4列,那么就是一个3X4矩阵阵列。因为每一列使用相同的feature map,那么可以将feature map数据灌入的方向从沿着列改到沿着行。其中Wij是卷积核,i对应输入通道序号,j对应输出通道序号。脉动阵列每一个相邻PE之间有一个时钟周期延时,x1,x2,x3进入PE的时间也延时一个周期,输出数据也相差一个周期,但是整个计算实现了流水同步。并行度也在3x4=12。

QQ截图20190127205244.png

脉动阵列的fanout只有1,同时没有了加法树的复杂结构,而且不同层结构对脉动矩阵结构没有强依赖,可以通过数据输入顺序来调整对脉动结构的适配。

THE END

本文对比了脉动阵列和非脉动阵列的特点,脉动阵列具有较小的fanout,占用较少的资源。同时还能适配不同形式的计算。

在看点一下 大家都知道

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值