Eyeriss v2:一种灵活的适用于移动设备上的新兴深度神经网络的加速器

telegram专用指定网址:http://www.svpn.live/

本篇文章是MIT团队的一篇Pre-print的论文针对于Eyeriss系列芯片的升级版本在前几期的介绍当中,介绍了Eyeriss一代芯片的架构基本原理萌俊儿i:Eyeriss:适用于深度卷积神经网络的节能型可重构加速器。

57 赞同 · 18 评论文章

在一代中,主要设计采用了数据流思想来完成整个芯片的控制操作,以及提出了RS行固定的数据处理方式,是一种非常经典的设计理念但是在一代的局限上,数据重用是否仍有更高效的方式,以及数据的稀疏性的处理上,仍存在着一定的拓展空间。

Eyeriss v2就是以一代的局限性为出发点,提出了分层网络( hierarchical mesh),以及直接在压缩域中处理权重和激活信息的稀疏数据的方法,更好处理稀疏数据这两个观点,便是支撑本文的两点实质性工作。

在我们平时接触到的设计方法中,有一种十分常见的加速方法便是探究数据的重用由于数据部分的重用性,可以减少从内存中的存取数据的时间,可以达到较高的效率在DNN中,数据重用大致有三种研究方向:输入激活(input activations(iacts)),权重(weights),和部分和(psums)。

基于三个数据重用的方面,可以从两个的角度设计硬件:阵列(array)利用率处理单元(PE)利用率提升阵列(array)利用率:现有的许多DNN加速器的设计依赖于一组预先选择的数据探索提升在PE之中的阵列的并行度,和数据重用。

通常有两种设计:

一种设计是如左图,空间累积阵列架构这种架构的特点是一般数据的权重是固定不变的通过依靠输出和输入通道将操作空间映射到PE阵列上以利用并行性在同一时间,每个iact可以在PE阵列上垂直使用来自不同输出通道的权重重用,而同一行中PE的psum可以在写回全局缓冲区之前在空间上进一步累积在一起。

另一种设计如右图,时间累积阵列架构这种架构的特点一般是数据的输出保持固定它依赖于另一组数据维来实现较高的计算并行性在这种情况下,每个iact仍可在同一列中的不同PE之间垂直重用,而每个权重在同一行中的PE之间水平重用。

提升处理单元(PE)利用率:较低的数据复用率也意味着需要较高的数据带宽以保持PE繁忙如果将用于向PE传送数据的片上网络(NoC)设计用于高空间复用场景,例如广播网络,则带宽不足会导致PE的利用率降低(即,增加停顿周期),从而进一步降低加速器性能。

本文对于此设计的NoC能够在以上情况下提供高带宽,同时仍然能够利用数据重用,具有高度的并行性在探究数据重用的同时,当下的DNN还面临着稀疏性的问题对于此类问题,也有许多的加速方案去处理如在前文解析过的Cambricon-X。

Cambricon-X:一种适应于稀疏神经网络的加速器 等,这种稀疏性的原因大致有几种,一种是使用了ReLU作为激活函数,使得网络种的负值归零还有一种非常常见的原因是许多流行的DNN采用了自动编码器或则GAN。

其中包含解码层使用了大量的0进行插值对于稀疏性的问题一般有两种方式去提高处理效率:可以限制或者跳过MAC的计算,前者减少能量,后者减少处理周期和能量weights和activations可以进行压缩处理以减少数据存储或者数据移动。

前者减少能量,后者减少处理周期和能量Eyeriss 第一代与第二代的架构比较:

如图中可以看出,基本的构成部件没有发生太大的变化,主要区别在于Eyeriss v2使用分层结构,其中PE和GLB被分组为集群,以支持灵活的片上网络(NoC),该网络以低成本将GLB连接到PE相反,原始的Eyeriss在GLB和PE之间使用了平面多播NoC。

该架构的特点是对于每个PE分配了本地使用的GLB而在原始的v1中,是由PE阵列共同使用一个GLB相对比下,在v1版本中,每一个PE的存储数据功能较弱,如果在内部Spad空间不足(具体参照开篇引用的链接),就需要访问外边的Global Buffer,这样的延迟就会比较大。

而在v2中,为每个PE都配置了GLB,再通过2d Mesh网络连接在一起,这样增加了灵活性具体的架构如下图所示:

Eyeriss v2的架构以下是来自于论文中的架构详细介绍:它由以8×2阵列排列的16个PE群集和16个GLB群集组成每个PE群集包含以3×4阵列排列的12个PE每个GLB群集的容量为12 KB,由针对不同数据类型存储的SRAM组成:iacts具有三个存储区,每个存储区为1.5 kB,psum具有四个存储区,每个存储区为1.875 kB。

分层NoC用于连接PE和GLB:PE和GLB群集通过2D网格片上网络连接,该网络由路由器群集组成在每个路由器群集中,分别有3、3和4个路由器分别用于iact,weight和psum在PE群集和路由器群集之间,使用全面NoC将每种数据类型的所有PE连接到路由器。

在GLB群集和路由器群集之间,每个路由器都与GLB群集的特定端口配对,该端口可以读取和写入一个SRAM库或片外I / O在v2中的三种数据的流向如下:将iact从片外读取到GLB群集中,然后根据配置将它们存储到GLB内存中或直接传递到路由器群集。

psum从离开PE群集后,总是存储在GLB内存中最终的输出激活将跳过GLB群集,直接进入芯片外权重不是存储在GLB中,而是传递给路由器群集,最终直接存储在每个PE的SPad中以上是整体架构的简单概述,如果您是非专业读者,可以直接跳转到最后一部分。

接下来将详细介绍文中开始所提及的分层网络( hierarchical mesh):在介绍分层网络之间,首先观看几个在DNN加速中叫为常见的设计:

从左至右,带宽逐渐降低,但是可探索的数据重用方案增强在上图所显示的各种方案中,均在着权衡(trade-off)问题如何设计一种方案可以使得数据重用和带宽均达到一种满意的程度,从而提高DNN所需要的并行性,分层网络的设计如下:。

如上图,分层网络利用了all-to-all网络的优势,通过创建两级层次结构解决了扩展问题all-to-all网络限制在较低级别的群集范围内水平在每个集群中,含有12个PE,这12个PE对应着12个Router(。

经评论更正,这里有10个Router,分为3类不同的功能,每次根据配置选择对应的功能,下同,应为10),这12个router与同一个集群中的所有12个PE均相连在集群层次,每个router与其他集群的router通过Mesh网络连接。

对于该网络可以配置为上述的四个模式,这四个模式提供了不同的数据重用的方案和宽带需求,以匹配运用在各个不同layer的灵活性在高带宽模式下(图b),每个GLB库或片外数据I / O都可以将数据独立地传送到群集中的PE,从而实现单播。

在高复用模式下(图c),可以将来自同一源的数据路由到不同群集中的所有PE,从而实现广播 对于数据重用不能完全利用广播的整个PE阵列的情况,可以根据所需的多播模式采用不同的多播模式,特别是分组多播(图d)和交错多播(图e)。

配置的三种常见的layerb是deep-wise,上面是weight的输入方式,下面的icat激活部分的输入方式常规CONV层(图a):在常规CONV层中,actact和weights都有大量数据重用为了使所有4个PE都在最低带宽要求下忙碌,我们需要来自数据源的2个iact和2个权重(忽略来自SPad的重用)。

在这种情况下,必须将用于iact或weight的HM-NoC配置为分组多播模式,而将另一个配置为交错多播模式深度(DP)CONV层(图b):对于DP CONV层,由于缺少输出通道,几乎无法重复使用iact。

因此,我们只能通过向所有PE广播权重同时获取每个PE的唯一身份来利用权重的重用全连接(FC)层(图c):与DP CONV层相反,FC层通常很少有weights重用,特别是在批次大小受到限制的情况下在这种情况下,iact和权重NoC的模式与前一个交换:权重现在单播到PE,而iact广播到所有PE。

抗投诉节点线路:https://shunjian.cf/

上述是大体上的概述,下面进一步来描述,iact,weight,和psum在NoC当中的详细连接:1)对于input activations:

看到这个图,先去会议以下eyeriss v2整体的架构图每个路由器群集有3个iact路由器,GLB群集中的每个iact SRAM库都与之对应每个用于iact的路由器都有四个源端口(用于接收数据)和四个目的端口(用于传输数据)。

源端口和目标端口中的三个用于接收和传输网格中其他群集的数据,在上图中用粗体箭头突出显示了这些端口;虽然网状网络通常需要四对源端口和目的端口,但我们只需要三对端口,因为我们只有8×2簇,因此可以省略左右的两个端口。

第四个源端口连接到GLB群集以从存储库或芯片外接收数据,而第四个目标端口连接到群集中的所有3×4 PE借助PE群集中的所有网络,来自任何路由器的数据都可以到达同一群集中的任何PE通过配置router中的传播模式,设置每个端口传递的数据以及方向。

2)对于weights的设计:

每个路由器集群有3个权重路由器,集群中PE的每一行都有一个由于Eyeriss v2使用RS数据流,因此可以使用PE内的SPad来利用大量的权重复用,并且仅需要进一步利用水平PE上的空间复用在每个群集中,每个路由器仅需要连接到一行PE。

因此,每个加权路由器具有两个源端口和两个目的端口,其中一对源端口和目的端口用于接收和传输来自相邻群集的权重;二个源端口连接到GLB群集以从片外接收数据,而第二个目标端口连接到群集中的一排PE3)对于psum的设计:

每个路由器群集有4个psum路由器,与GLB群集每个psum SRAM库相对应,或者等效地,每个列一个集群中的PE数量仅允许在垂直方向上跨PE累积psum这是由于以下事实:在行固定数据流中,权重在PE上水平地重用,这使得不可能在PE上水平地累积psum。

因此,由于psum不会水平传递,因此可以删除群集之间的2D网格的水平连接在每个集群中,PE是垂直连接的,并且集群中的每个路由器仅需要将psum从GLB集群中的psum库传输到每个PE列的底部,并从同一PE列的顶部接收更新的psum。

因此,每个psum路由器具有三个源端口和三个目标端口源端口之一用于从北部的相邻路由器群集接收数据,而目的端口之一用于向南部的相邻路由器群集发送数据第二对源端口和目标端口被分配给GLB中的psum库,而第三对目标端口被分配给PE群集的一列中的底部PE,第三源端口被分配给一列中的顶部PE集群。

归一化比较性能:

yeriss v2和Eyeriss v1分别运行三个DNN:AlexNet,GoogLeNet和MobileNet本文还提出了一种对于稀疏数据处理的新方法:压缩的稀疏列(CSC)compressed sparse column

对于数据中的每个非零值,CSC格式记录一个计数值,该计数值指示未压缩数据流中前一个非零值前导零的数量;这类似于游程长度编码(RLC)中的游程长度然后,该计数值可用于计算非零数据之间的地址变化与RLC相比,CSC的另一个优点是它具有一个附加的地址值,该值使数据可以分为多个段(例如,列)以便于处理。

举个例子:

下面对照上图解释一下CSC的经典思想:首先明确,data vector是从【0】开始计算,【11】结束【12】为空保存了12个数值(但是开辟了12+1的空间)count vector和data vector是对应的。

address是从【1】开始计算,这里一共有9个数,分别在【1】-【9】存储如果想获取第二列的数值c,d,0 ,e,那么先到address vector中获取【2】和【2+1】的数值,此处为2和5这里的【【2】,【3】),(也就是[2,5))是。

左闭右开区间将[2,5)代入data vector 获取c,d,e三个数,不含有边界f(5)然后根据count vector对应的三个数0,0,1可得,c和d与之前间隔为0,f与d间隔为1 此时就获取到了c,d,0 ,e.。

PE架构:

通过取两个权重而不是一个权重来计算每个周期具有相同特性的两个MAC操作,即SIMD宽度为2更改在图中的红色文本中指出SIMD要求权重数据SPad的字宽必须为两个字宽,这就是为什么权重数据SPad的大小为96×24b而不是192×12b的原因。

为了确保仅读取非零值,在权重之前读取iact,以使仅当相应的iact非零时才读取非零权重为了处理这些依赖性,同时仍保持吞吐量,使用七个流水线级和五个SPad来实现PE前两个流水线阶段负责从SPad获取非零的iact。

iact地址SPad存储CSC压缩iact的地址向量,该地址向量用于寻址来自保存非零数据向量以及计数向量的iact数据SPad的读取提取非零iact之后,接下来的三个流水线阶段将读取相应的权重类似地,存在一个权重地址SPad,以寻址从权重数据SPad读取的正确的权重列。

流水线的最后两个阶段对获取的非零iact和权重执行MAC计算,然后将更新后的psum发送回psum SPad或从PE发送出去由于iact和weight可以为零或非零,因此存在三种可能的情况:如果iact为零,则CSC格式将确保它不是从spad读取数据,因此不会浪费任何周期。

如果iact不为零,则将从iact中获取其值iact数据SPad并传递到下一个管道阶段–如果存在与非零iact相对应的非零权重,则它们将沿管道向下传递以进行计算由于权重也使用CSC格式编码,因此将跳过零权重。

–如果不存在与非零iact对应的非零权重,则将不会在管道中进一步传递非零iact这可能不一定会在管道中引入气泡,因为如果后续阶段(即权重数据Spad阶段之后)具有多个相应的权重,则仍可以继续计算先前的非零iact。

PE配置的多样性:由于稀疏程度在不同的DNN中有所不同和数据类型,PE还旨在适应各种情况当稀疏度低时在这种情况下,PE可以直接采用未压缩的iact和权重而不是CSC压缩版本,以减少数据流量的开销能效评估:

众所周知TSMC 65nm工艺下:面积:

AlexNet速度:

AlexNet能效提升:

MobileNet的性能比较请见原论文,此处省略。其他设计方案的比较:

结论:由于该领域的大量研究,DNN正在迅速发展然而,由于紧凑型DNN中层形状的广泛变化以及稀疏DNN中数据稀疏性的变化,DNN的当前发展方向也为DNN加速器的设计带来了新的挑战而Eyeriss v2正是这一领域面对挑战的教科书级别的设计,对于刚刚关注此领域的同学们,是一个十分好的学习机会。

Reference:Yu-Hsin Chen,and others,Eyeriss v2: A Flexible Accelerator for Emerging Deep Neural Networks on Mobile Devices.arXiv:1807.07928v2 [cs.DC] 20 May 2019

抗投诉节点线路:https://shunjian.cf/

 分享

本文由网络整理 © 版权归原作者所有

  •  主题颜色

    • 橘色
    • 绿色
    • 蓝色
    • 粉色
    • 红色
    • 金色
  • 扫码用手机访问

本站只提供WEB页面服务,本站不存储、不制作任何视频,不承担任何由于内容的合法性及健康性所引起的争议和法律责任。

若本站收录内容侵犯了您的权益,请附说明联系邮箱,本站将第一时间处理。

© 2024 www.a5fe.com  E-Mail:TG客服:https://t.me/sjkxswkf_bot  

观看记录