介绍
深度学习(DL)已经成为分析跨多个领域的数据的主要算法技术,尤其是在视觉理解,语音感知和自动推理方面。DL的应用包括两个步骤:即训练和推理。在训练期间,深度神经网络(DNN)模型使用损失函数和优化过程来最小化训练数据集上的模型误差。在推理期间,训练有素的DNN模型用于对数据点进行分类。
给定DNN推理的等待时间敏感性和能效需求,已提出了一套定制加速器[3],[10],[21],[27],[33]来通过捕获各种形式的数据来有效地运行经过训练的模型重用[10],[28]。但是,用于训练当前和将来模型的正确加速平台仍然是一个悬而未决的问题,这是这项工作的重点。
DL训练过程非常耗费计算资源。OpenAI研究[6]阐明了这一点,该研究表明,培训的计算需求从AlexNet(2012)到AlphaGo Zero(2018)已增长了300,000倍。GPU是目前最流行的用于训练的加速平台。最近的研究集中于在多个GPU节点上并行化大型DNN模型。像Google和Microsoft这样的公司已经建立了自己的专业培训平台,例如云TPU [4]和Brainwave FPGA [14]。
DL训练(和推理)的核心计算组件是GEMM操作[1]。图1a显示了GEMM尺寸(M,N,K)和操作。而图1b示出了示例性尺寸在现代DL工作负载找到。在前向传递过程中,具有完全连接(FC)层和多层感知器(MLP)的DNN自然会映射到GEMM操作,其中MK代表输入,KN代表权重。对于卷积神经网络(CNN),GPU通过Im2Col操作[18]或其他有效的排序操作将conv操作重新映射为GEMM 。在向后通过期间,会发生两个GEMM操作:MN×(KN)T和(MK)T ×MN分别计算输入和权重的误差梯度。
GEMM约占训练期间总计算周期的70%(如我们在第二节中所示);因此是硬件加速的主要目标。最先进的培训加速器使用脉动阵列作为加速GEMM的计算结构-大小从NVIDIA Volta GPU [31]的每个流式多处理器中的微型4×4引擎到大型的单块128×128引擎不等。 Google Cloud TPU [4]。通过将MAC单元互连到紧密耦合的2D网格来构建脉动阵列。通过在阵列的行和列上重用(M,K)或(K,N)矩阵,它们对于运行GEMM是高效的,从而减少了数据访问和指令开销。
随着DNN模型的快速发展,当务之急是设计基本的加速度基础,以保持对未来模型和训练技术的效率。尽管在前进和后退过程中,GEMM仍然是张量展开最喜欢的抽象,但架构师需要意识到以下三种趋势:
许多GEMM由于小批处理和权重分解而具有不规则(或非正方形)尺寸[34]。
GEMM由于修剪而表现出不同程度的重量稀疏性,而由于非线性(如ReLU,汇集和缺失)而表现出稀疏性。非零的数量在整个训练迭代过程中会有所不同(从10%到90%)[48]。
随着AI的普及,DNN模型正在迅速发展,因此选择一组特定的矩阵尺寸或稀疏率来设计加速器是不切实际的。
根据我们的观察,我们为未来的GEMM引擎推荐了三个关键要求。
灵活性: GEMM引擎应该能够有效地运行任意尺寸的矩阵。
稀疏性支持: GEMM引擎需要支持权重和激活方面的非结构性稀疏性,以便充分利用硬件资源。
可扩展性: GEMM引擎需要有效地扩展才能集成到各种加速器中。例如,在将来的TPU中,CPU / GPU中的微小张量内核到大型内核。
不幸的是,最先进的GPU和TPU不能满足某些要求,正如我们稍后将在本教程中讨论的那样。三。GPU [31]在将不规则GEMM分成4×4块并在张量核上进行映射方面提供了一定的灵活性,但增加了跨SM的调度和累积的复杂性。如果GEMM尺寸与物理阵列的尺寸不一致,则TPU是一个较大的非柔性128×128阵列,可能导致计算利用率不足。GPU无法同时利用输入和稀疏性。即使仅存在一种稀疏类型,当前的CUDA库也要求数据类型为FP32并构造稀疏数据。TPU本身不支持稀疏性,因为其严格的内部连接性和每个周期的收缩数据流可防止与至少一个为零的操作数跳过乘法。最后,
在这项工作中,我们演示了一个灵活且可扩展的名为SIGMA的GEMM加速器的微体系结构,该加速器可以处理(a)任意数量的稀疏性,(b)GEMM尺寸中的任意不规则性,同时保证接近全部的计算利用率。SIGMA的主要创新之处是高度灵活的点积引擎(Flex-DPE),它可以通过丰富的互连结构映射任意形状和稀疏分布的GEMM。此外,Flex-DPE使用基于树的拓扑-分别启用O(1)和O(log 2 N)的数据加载和收集时间,而不是
我们的主要贡献如下:
分析现代DL训练工作量,以为加速稀疏,不规则的GEMM提供依据。
一种名为SIGMA的新型加速器,用于处理不规则和非结构化的稀疏GEMM操作。
一种新颖的归约网络,称为转发加法器网络(FAN),用于有效地进行部分和累加。
SIGMA的布局实现,用于可伸缩性和后端分析。
本文的其余部分安排如下:秒。第二部分讨论了现代培训工作量及其GEMM特性。秒 第三部分剖析了最先进的深度学习加速器和设计注意事项。秒 IV提出了SIGMA微体系结构和Sec。V描述了物理实现和硬件成本。秒 VI根据最新技术评估SIGMA的性能。秒 第七节讨论了相关作品,第二节。第八章总结。
DL训练特征
在本节中,我们将分析来自现代深度学习应用程序的GEMM内核形状和稀疏性级别。
目标工作量。对于内核表征练习,我们考虑了三个工作负载:变压器[42],谷歌神经机器翻译(GNMT)[45]和神经协作过滤(NCF)[20]。我们还利用“百度DeepBench” [2],它确定了跨各种CNN / RNN / LSTM遇到的关键GEMM内核。对于Transformer,我们将324百万参数模型[43]与LM1B(十亿字语料库)数据集一起使用。对于GNMT,我们使用WMT-德语-英语数据集评估了最新的8层GNMT模型。
计算基元的时间分解。 图2显示了在NVIDIA V100 GPU上训练GNMT和Transformer时,不同操作的时间分解图[31]。我们观察到大约70%的时间花费在矩阵乘法(MatMul)运算或可以转换为MatMuls的运算上。因此,MatMul是关键的计算原语,可在硬件上加速以加快训练速度。
GEMM形状。变压器,GNMT,NCF和Deep-Bench [2]具有不同大小和形状的矩阵,如图1b所示。培训以不同的批次大小执行,这导致了不同的输入矩阵尺寸。观察到的操作数矩阵的形状从高瘦(行占列为主)到胖子(列占行为主)-这是由于小批量的大小所致。因此,GEMM加速器需要可伸缩性和灵活性,以有效处理较大和不规则的GEMM大小。
GEMM中的稀疏性。由于这项工作的目标不是集中在生成稀疏模型的算法技术上,因此我们采用类似于Zhu等人的修剪方法。[48]通过一种慢速稀疏化技术,该技术在固定的一组修剪步骤中将权重的稀疏性级别从零增加到最终稀疏性级别。
对于具有〜210M参数的GNMT [45],我们以90%的重量稀疏度(接近〜22M参数)获得了接近最新的精度,类似于[48]中概述的结果。修剪应用于编码器和解码器中的嵌入,解码器投影层和所有LSTM层。诸如变压器和ResNet-50之类的工作负载也表现出良好的精度,分别具有约80%和70%的重量稀疏性[15]。DNN模型中的激活稀疏性来自ReLU和辍学层。
稀疏矩阵的处理不当会浪费计算资源,并在内存层次结构中导致零的不必要但昂贵的移动。随着矩阵越来越大且越来越稀疏,稀疏支持的需求变得越来越重要。因此,GEMM加速器需要支持以有效处理重量和激活稀疏性。
GPU和TPU的效率低下
在本节中,我们将演示当前GEMM加速器的低效率,并讨论最终导致我们提出的设计的设计选择。
A. GPU上的不规则和稀疏GEMM
我们测量了具有和没有稀疏性的各种GEMM尺寸的V100 GPU的计算效率。在图3a中,我们为Sec中描述的工作负载运行了一些深度学习MatMul内核(密集,不规则且没有稀疏性)。II在单卡V100 GPU上,并使用FP32和FP16数据类型测量效率。FP16数据类型可以利用V100中的脉动数组(“张量核心”)进行GEMM计算。与FP32版本相比,虽然FP16使用张量内核来提高效率,但由于内核尺寸的不规则性,它们仍只能以峰值效率的一小部分工作。而带有FP16张量芯的密集常规GEMM(2k,2k,2k)可提供高达76%的效率。
We then introduce sparsity to the above MatMul kernels and use NVIDIA cuSPARSE [5] libraries, which support sparse matrices computation. cuSPARSE libraries API currently support only one of the matrices to be sparse with only FP32 data type. In this experiment, we induce random sparsity of 50% and 80% to one of the matrices while keeping the other matrix dense. From Fig. 3b, we observe on average 4x reduction in efficiency compared to the equivalent dense FP32 matrix computation by adding sparsity. We expect the efficiency to decrease further when both matrices are sparse. Current GPU systems cannot efficiently map sparse GEMM computation onto their compute engine when there is no structure in the sparsity, and thus we need to fundamentally re-architect how we design a system that can take advantage of sparse computation to achieve high efficiency for deep learning workloads.
(a) Example GEMM matrices. (b) Mapping comparison between systolic array and SIGMA Flex-DPE for dense regular GEMMs. (c) Dense irregular GEMMs comparison. (d) Sparse irregular GEMMs comparison. (e) Alternative sparse irregular Flex-DPE mapping. (Note: M-str means MK matrix is streaming, N-sta, means KN matrix is stationary, etc.)
B. Irregular and Sparse GEMMs on TPU
Google’s TPUs are a poster-child for large GEMMs due to their 128 × 128 systolic array. However, across a suite of GEMMs from modern DL workloads, we observe that it is common to have less than 50% of the array utilized when running irregular matrices, as we show later in Sec. VI. In addition, systolic arrays cannot inherently address sparsity. The reasons for these inefficiencies are discussed next.
C. GEMMs on Systolic Arrays vs. SIGMA
由于两个固有特征:刚性形状和简单但刚性的互连,收缩式阵列在许多不同情况下都面临利用率不足的问题。在图4中,我们将脉动阵列与SIGMA的Flex DPE的抽象视图进行了对比(稍后将在IV-A节中详细介绍)。图4a显示了三个示例GEMM操作:(i)密集的规则,(ii)密集的不规则和(iii)稀疏的不规则矩阵。图中的阴影框突出显示了每个指标的定量指标,例如利用率,运行时间,多播行为以及SRAM读/写。就本示例而言,假设SIGMA的Flex-DPE在PE和阵列侧面的SRAM之间(图中未显示)具有两个专用网络即可-分销网络和还原网络。这些网络的具体实现将在后面的章节中讨论。四。
密集的常规矩阵。 图4b显示了如何映射密集的规则矩阵。在示例中,我们使用固定的KN矩阵和MK矩阵流数据流(N-sta,M-str)。此数据流的另一个术语是weight-stationary,由Google TPU [23],[37]使用。在每个交叉点生成部分和,并在列上累积。通过将所有KN矩阵映射到其PE上,脉动阵列和Flex-DPE设计能够充分利用其PE。它们之间的主要区别在于(i)脉动阵列以存储和转发方式发送流矩阵,而SIGMA在一个周期内将数据多播到相应的PE,并且(ii)脉动阵列使用线性缩减,而SIGMA使用基于树的约简,正如我们稍后将在Sec中描述的那样。四。
密集的不规则矩阵。 图4c示出了如何映射稠密的不规则矩阵。脉动阵列设计由于其刚性结构而无法充分利用。尽管在密集的不规则KN矩阵中有16个元素,在收缩阵列中有16个PE,但一次只能映射一半的矩阵。这是由于脉动阵列的刚性形状。所有部分金额都通过转发沿一栏累计;同时将另一半稠密的不规则N矩阵映射到收缩阵列会导致功能不正确,因为不应将累加的输出(aA + bI)添加到(aE + bM)中。因此,一旦矩阵的前半部分被计算出来,就必须加载N矩阵的后半部分,这将使计算时间增加一倍以上。相反,Flex-DPE能够一次利用所有PE一次映射所有密集的不规则固定元素。如我们稍后在本节中所描述的,这通过拥有一个灵活的归约网络来实现,该网络可以分别并发地累积两组输出(aA + bI)和(aE + bM)。IV。这不仅提供了运行时优势,而且还提供了能源优势,因为只需读取一次M-matrix并将其通过流传输一次即可。
稀疏的不规则矩阵。 图4d显示了稀疏不规则矩阵的映射方式。收缩阵列不仅会因矩阵不规则而利用不足,而且会因稀疏性而遭受损失。为了保持最终输出的正确性,脉动阵列必须将非零值映射到计算单元上。该限制归因于PE之间的刚性转发网络。由于灵活的分布和归约网络,Flex-DPE设计仅能够映射非零元素。在Flex-DPE中,有两种不同的数据流可实现稀疏计算。图4d中 Flex-DPE的N-sta,M-str数据流仅将非零元素映射到计算上,使其具有100%的固定利用率,使其比脉动阵列更高效。但是,流矩阵可以发送零值元素。这是因为如果存在至少一个需要与之相乘的流值,则将映射所有非零固定元素。
图4e显示了充分利用计算的Flex-DPE 的N-str,M-str数据流(即,无本地重用[10])。通过仅传输必要的乘法对而不使任何值保持不变来完成此操作。我们将在第IV节中提供有关启用该功能的分发和缩减网络体系结构的更多详细信息。对于脉动阵列,等效数据流是不可能的,因为由于其严格的逐周期转发网络,它不允许来自M和N矩阵的向量的任意配对。
分配和减少延迟。从图4b-e中的定量数据中需要注意的另一点是,脉动阵列中的数据加载和累积时间始终与阵列尺寸成比例,而SIGMA的网络允许O(1)分布和O(log 2 N)减少。
摘要。 表I总结了脉动阵列效率低下的原因以及SIGMA如何解决它们。接下来提供建筑细节。
SIGMA架构
SIGMA计算结构中的基本构建块是一个名为“ Flexible Dot Product Engine”(Flex-DPE)的处理器,如第二节所述。IV-A。几个Flex-DPE通过简单的NoC连接在一起,以创建完整的SIGMA计算结构。每个GEMM操作都会保留一组连续的Flex-DPE,以创建一个灵活的点产品单元(Flex-DPU),如第2节所述。IV-B。该存储系统类似于TPU [4],[23]。图8描绘了SIGMA的高级示意图。
A. Flex-DPE的微体系结构
一个k大小的Flex-DPE包含k个乘法器,k- 1个加法器,本地缓冲区,控制单元和灵活的互连。乘法器以逻辑一维结构布置。图5显示了概图。一维底物使我们能够将矩阵矩阵(M * M)乘法作为多个矢量矩阵乘法(V * M)进行,类似于Brainwave [14]。回顾图4,一个k大小的方形脉动阵列具有
1)分销网络:Benes拓扑:
如图4所示,任何GEMM引擎中的分发网络的作用是加载固定矩阵(MN或KN),并传输另一个矩阵。在脉动阵列中,分配网络行为是通过PE之间的水平和垂直转发链接实现的。这会导致k×k脉动阵列的O(k)数据加载时间。
在SIGMA中,我们采用Benes网络[7]来支持图4所示的灵活性。Benes是一个无阻塞N输入N输出多级网络,具有2log(N)+1个级别,每个级别都有N个2×2微小开关。如图5-步骤(iv)所示,这些开关需要两个控制位。一种用于选择垂直输出,另一种用于对角线输出。已经提出了许多Benes路由算法[7],[8],[29]。Benes的非阻塞属性允许任何源与任何目标进行通信,而无需任何中间争用。我们在每个阶段都使用无闩锁开关(时序收敛除外),从而允许在Benes网络上进行O(1)数据通信。我们还支持在Benes网络内进行多播,以避免必须多次从SRAM读取同一数据元素。
(a)前向加法器网络拓扑。(未显示转发链路各阶段的触发器)。(b)i)布局后区域,ii)布局后功率,iii)加速和iv)能量延迟积(EDP)的空间FP32减少互连比较。(c)用于加法器输入和功能的简化FAN路由算法(注意:变量i和adderID等效)。
对于配电网,其他设计选择也是可行的。交叉开关具有与Benes相同的非阻塞行为,并且布线简单得多,但伸缩性不佳(N 2)。诸如总线[10],树[11],[27],蝶形和网状网络[9]之类的阻塞互连由于其较低的电线成本仍然是有效的设计选择,但由于分配延迟的增加会导致性能下降。
2)还原网络:FAN拓扑:
减少点积可通过三种方式实现。
时空缩减: TPU重量平稳脉动阵列实现通过沿列转发进行缩减,对于k×k阵列需要O(k)个周期。所花费的时间与点积的实际大小m无关,后者可能较小。
时间减少: EIE等设计[19]在PE中执行原位减少。所花费的时间仍然像时空一样是线性的,但是等于O(m)-即点积大小。
空间缩减:在SIGMA中,我们实现了基于空间树的缩减,因为它需要一个m尺寸的点积O(log 2 m)个周期。然而,实现这种对数2 m周期缩减的挑战在于,很难将两个大小的非幂次幂映射到传统的二进制加法器树上。假设我们正在尝试在一个八宽度的加法器树上累积三个单独的点积(a0,a1,a2,b0,b1,c0,c1,c2)。按照自然的二叉树拓扑结构,a2-b0和b1-c0到达树时将到达相同的加法器,这在功能上是不正确的。
风扇拓扑。为了解决这个问题,我们提出了一种新颖的加法器树拓扑结构,称为转发加法器网络(FAN),该拓扑将转发链接放置在传统二进制加法器树上不同级别的加法器之间。图6a中显示了32宽FAN的拓扑和变量标签。VecID和adderID从左到右按递增顺序编号,并且每个adderID都有一个对应的adderLvl值。下面是一个伪代码,描述加法器之间的链接连接,以创建2倍功率的FAN。
// 0级的加法器直接连接到vecID
/ //加法器链接从水平开始1
/ for(int i = 0; i <numAdders; i ++)做
int adderID = i; // 他们是一样的
为(int lvl = 1; lvl <= adderLVL [i]; lvl ++)做
与加法器连接:adderID-2ˆ(lvl-1);
与加法器连接:adderID + 2ˆ(lvl − 1);
路由算法。FAN的路由算法如图6c所示。对于每个加法器,如果vecID [adderID]等于vecID [adderID + 1],则启用累加。如果vecID不相等且加法器处于零级,则启用旁路链接。例如,在图6a中,加法器12需要将“ c”和“ d”旁路到下一个加法器电平。从第二个加法器级别开始,每个FP32加法器之前都有一个N至2多路复用器。为了确定选择哪些输入,使用比较器来识别群集区域。
好处和开销。在创建可变大小的点积方面,FAN提供了与MAERI [27]中提出的ART拓扑相似的优势。但是,FAN更轻巧。这是因为MAERI的ART是使用三个输入加法器(两个来自父节点,一个来自同级节点)构建的,这使其变得极为禁止,尤其是在处理FP32数据类型时(通常在DNN训练期间使用)。图6b显示了线性缩减(即时间或时空),ART和FAN之间的性能评估。对于性能计算,我们使用100个固定折痕(需要更换固定元件时),每个折痕尺寸为1000。如图6b-iii所示,取log N随着PE数量的增加,开始下一个折叠之前的N个周期而不是N个周期将显着提高性能。我们的发现表明,相比于ART,512-PE FAN仅具有92%和86%的开销,而线性电源仅具有10%和31%的面积功率开销。与从128-PE开始的线性相比,FAN还具有EDP的优势。采用512-PE时,FAN的EDP分别比线性和ART低45%和34%。根据我们的结果,我们得出结论FAN具有高性能和可扩展性。
B.使用NoC将Flex-DPE组合成Flex-DPU
为了从可用的乘法器中提取最大可能的并行度,SIGMA可以将多个Flex-DPE单元动态组合在一起,形成一个逻辑集合,我们称之为Flex-DPU。一个Flex-DPU负责运行一个GEMM。可以并行调度多个Flex-DPU,以运行多个GEMM。将Flex-DPE连接在一起的NoC类似于诸如Tangram [16]和Simba [39]的平铺加速器体系结构。
每个Flex-DPE的交集处都有一个简单的开关,用于仲裁数据流。这些开关在2D网格中连接在一起。它们在映射GEMM时是静态配置的,并且不需要像常规NoC一样的任何动态路由或流控制。此NoC上的带宽量(即,每个周期可以传输的行/列的唯一元素数)是设计时可配置的参数。
在Flex-DPU中,交换机在Flex-DPE之间转发数据,从而像总线一样提供数据的多播。我们在第二节中用一个例子来描述。IV-E。跨Flex-DPU,这些交换机提供逐跳数据转发,类似于传统的NoC。
C.支持非结构化稀疏
压缩格式。支持稀疏性的主要好处之一是低内存占用;避免零值元素转移,从而节省更多能源。有一些公认的压缩格式,例如CSC,CSR,COO和RLC(行程压缩)。我们在SIGMA中使用位图格式,其中每个元素都有一个对应的位来指示给定元素在对应的矩阵[17],[24],[35],[36]中是零还是非零。图7比较了具有不同稀疏性级别的各种压缩格式的元数据开销。图中的维度和稀疏度反映了我们在工作负载中观察到的情况(请参阅第二节))。在各种稀疏区域中,COO / CSR / CSC的元数据开销会急剧变化。这是因为每个非零元素都需要log 2(维度)位的索引,等等。位图格式具有不变的元数据开销,而与稀疏性无关,这使其对以任意非结构化稀疏性为目标的SIGMA有吸引力。在稀疏性较低的级别上,我们发现位图的占用空间比COO / CSR / CSC低。位图的稀疏率为〜30%至〜70%,其开销可与RLC [10],[19]相比。我们观察到,RLC在稀疏度大于 70%的情况下比Bitmap更好地减少元数据,而在<〜稀疏度则更差稀疏度为30%。我们使用4位(RLC-4)和2位(RLC-2)游程长度评估RLC。通过仅更改前端控制器以确保正确的映射,就可以在SIGMA上支持其他压缩格式。
稀疏控制器。对于每个GEMM,全局控制器确定稀疏矩阵如何解码并映射到SIGMA。控制器对位图元数据进行操作,并计算需要多少个Flex-DPE。内部计数器和表用于确定需要密集计算的索引。我们在Sec中通过演练示例来描述细节。IV-E。
D. SIGMA支持的数据流
SIGMA的柔性基板使其能够支持多种数据流。对于所有工作负载,我们同时使用权重(即KN)固定和输入(即MK)固定数据流(图4d),并选择效率更高的数据流。在这两个数据流中,根据矩阵尺寸和固定矩阵的稀疏性创建动态大小的空间点积。流矩阵的列/行通过广播到固定矩阵的行/列在空间上被重用(在每个乘法器上时间上被重用)。SIGMA还可以运行“无本地重用”(即,图4e中的 MN-str,KN-str数据流))。此数据流可以提供100%的计算利用率,但以需要更高的互连带宽为代价。
E.演练示例
以下步骤(对应于图5)描述了一个示例,该示例显示了SIGMA如何利用位图格式将稀疏的GEMM映射到Flex-DPE上。此处,每个Flex-DPE的乘法器数量(N mult)为四个。
步骤i)收集两个位图压缩矩阵。在此示例中,MK是固定的,而KN是流式的。
步骤ii)跨流位图进行逐行或运算,并将输出存储到REGOR(临时寄存器)。然后,在相应的REGOR行和固定位图列之间进行逐元素AND生成固定位图。
步骤iii)固定位图中的1的数量对应于有用的固定值(N stat)的数量。由于在此示例中N stat为8,N mult为4,因此需要2-Flex-DPE单元来形成单个Flex-DPU。
步骤iv)将固定值单播到乘法器缓冲区。路由很简单,因为所有固定输入数据都是垂直向下传播的。在此示例中,输入总线的带宽为4倍,因此每个周期只能填充一个Flex-DPE。
步骤v)为了为每个Flex-DPE生成源对和目标对,将计数器值分配给固定位流图和流位图中的每个非零元素。对于固定的位图,计数器从0开始,从左上右下递增。当计数器达到N mult -1时,计数器复位,这标志着一个Flex-DPE的结束。计数器值在流式位图中从上至下递增,并在每列的开头重置。然后,流式位图列与对应的固定位图的每一行进行比较。如果两个值均为1,则计数器值存储在Flex-DPE SRC-DEST表中。记录行ID以确定部分和区域。另外,基于是否存在任何非零计算来生成初始输出位图。
步骤vi)根据SRC-DEST表条目生成分发路由位。对于此示例,功能有限的朴素路由算法是用dest-index减去src-index。已经提出了其他路由算法[7],[8]。
步骤vii)最后,将流值从步骤vi中计算出的路由位广播到Flex-DPU中的所有Flex-DPE。为了减少,处理累积ID,然后将其用作FAN中的vecID,如第IV-A2节所述。多播,乘法和归约都是以流水线方式进行的。一旦所有列均已流入并生成了输出,就释放了Flex-DPE单元以用于另一GEMM操作。
Design space exploration for Flex-DPE dimensions (256 Flex-DPE-64 is 256 Flex-DPEs of size 64), with aggregated energy consumption (all workloads) and Performance/Area as metrics.
Implementation
图8比较了128 × 128脉动阵列与SIGMA与128个Flex-DPE(每个大小为128)的后置布线面积和功率。两种设计在SRAM中每个周期具有相同的输入带宽128字。SIGMA的主要开销是高度灵活,无阻塞的分配和减少网络,可导致37.7%的区域开销。但是,SIGMA提供的性能提升(稍后在VI-C节中显示)导致有效TFLOP / Watt 平均提高3.2 倍。从28nm设计扩展到12nm设计时,我们期望功率性能进一步提高7 倍。这基于NVIDIA K20X与NVIDIA T4之间的FP32 FLOP增长,其中计算增长了〜2 ×功率降低约3.5 ×。SIGMA以1周期分布,1周期乘法和1周期降级的方式进行流水线传输。SIGMA的关键路径是分布,但是可以通过进一步流水分布来匹配TPU的最大工作频率,从而使新的关键路径成为FP计算。此外,我们估计具有1024个AND门,1024个OR门,1024个计数器和128个SRC-DEST表的全局控制器消耗大约1.4 mm 2。
对于总共16384个PE,我们进行了设计空间探索,以调整Flex-DPE单元的尺寸,以找到最节能和最节省面积的配置。图9描绘了大小为128的Flex-DPE消耗的能量最少,而大小为512的Flex-DPE的区域效率最高。我们决定使用Flex-DPE-128来匹配TPU的每周期SRAM读取带宽。
评价
A.方法论
目标GEMM。我们使用GEMM尺寸和稀疏GNMT,变压器,NCF和DeepBench模型(在前面所述的训练中观察到秒。II)。输入和重量稀疏度分别为〜10–50%和〜80%。
TPU与SIGMA中添加的渐进功能之间的性能比较。表II描述了图例。SIGMA_F1通过允许不规则尺寸来增加TPU结构的灵活性。(128×128、256×64、512×32,反之亦然)SIGMA_Fl + Sc通过我们提出的归约网络FAN增加了可伸缩性。SIGMA_Fl + Sc + Sp添加了稀疏性支持以提高利用率。
基准加速器。我们比较SIGMA针对国家的最先进的其他促进剂:TPU [4],EIE [19],SCNN [33] ,外太空[32],Eyeriss V2 [11] ,盒装收缩期[26] ,和Cambricon-X [47]。在所有设计中,我们将PE的数量扩展到恒定的16384。SIGMA假设有128个Flex-DPE,每个都有128个MAC,输入SRAM带宽为128×(可以分配的唯一数据元素数量)。为了进行评估,我们允许更大的输入带宽在一个周期内分配更大的流矩阵块。对于稀疏性能,对矩阵和稀疏性的所有组合进行了测试,然后取平均值。大多数稀疏加速器是为推理而设计的,专门用于卷积。我们通过设置相等的输入和过滤器尺寸来扩展它们以运行GEMM。
仿真基础架构。为了评估SIGMA和其他基准的性能,我们开发了一个周期精确的分析模型。该模型基于计算单元的数量,每个计算单元的缓冲区,互连拓扑,输入带宽和数据流来评估性能。使用SCALE-sim [37]对TPU进行建模。
比较指标。 表II定义了我们在评估图中使用的比较指标。
B.表征SIGMA的功能
我们首先要描述SIGMA各种功能的优势,以帮助选择最佳设计点。
数据流比较 图10演示了运行一组代表性的GEMM时数据流的影响。我们观察到,MK-str,KN-str数据流虽然在不浪费计算的情况下是理想的,但总延迟时间却很短。这是因为由于在Flex-DPE中没有重用,它需要极高的带宽(因此需要序列化)。对于其他两个数据流,固定矩阵仅映射非零,获得100%的利用率,而总体效率由流矩阵的稀疏性确定。在评估中,我们同时运行两个数据流并报告性能更高的数据流。
(a)TPU_128 × 128上的矩形收缩压和SIGMA配置的加速和效率,用于密集的工作负载;(b)TPU_128 × 128上的SIGMA 具有不同的输入和权重稀疏性(MK80表示MK矩阵中80%的稀疏性,等等)。
SIGMA功能的好处 图11重新回顾了Sec的讨论。III-C定量地展示了SIGMA与脉动阵列相比的三项主要优势:(i)灵活的尺寸-通过FAN为Flex-DPE中的可变尺寸点产品提供支持;(ii)可扩展的互连,即Benes和FAN ,分别提供O(1)和O(log 2 N)分布和缩减时间,以及(iii)稀疏性支持,仅映射有用的非零数据。
对于密集的常规GEMM(图11中最左侧),SIGMA通过其O(1)分布和O(log 2 N)减少提供了TPU上的加速。(TPU具有O(sqrt N)分布并减少。)SIGMA的网络减少了Add延迟(在表II中定义)。每当需要更换固定矩阵时,所节省的循环次数就会累积。
对于密集的不规则GEMM,如果固定矩阵的边小于MAC数组维,则TPU的利用率不足。在示例中,大小为16–500000的矩阵是固定的;由于尺寸为16的小尺寸,因此128 × 128 TPU的利用率为12.5%。SIGMA通过使用将变量尺寸聚集在一起的丰富互连实现了充分利用。由于利用了更多的PE,因此需要较少的固定矩阵负载迭代。这导致较低的加载,添加和流传输延迟。
对于稀疏的不规则GEMM,需要TPU映射所有固定元素,而SIGMA仅映射非零固定元素。有了稀疏支持,SIGMA可以显示100%的固定利用率。由于利用率和计算效率提高,因此加载和减少数据所需的周期更少。图11显示了两种形式的稀疏不规则GEMM。M-str,N-sta示例受流延迟的支配,这是因为较大的矩阵正在流式传输;而加载延迟在M-sta,N-str中则占主导地位,因为较大的矩阵保持不变并导致更多的折叠迭代。因为稀疏矩阵保持固定,所以M-sta,N-str的计算效率明显更高。
C.性能和能源与TPU
加速。 图12a和图12b分别评估了密集和稀疏的GEMMs性能。在图12a中,我们为TPU使用三个纵横比。例如,512 × 32具有512行,每个行每个周期可以读取一个数据元素。MK或KN矩阵保持不变。对于2048–4096-32 GEMM,K尺寸为32会导致128 × 128和256 × 64 TPU中的利用率不足,但与512 × 128 的列对齐32 TPU,带来巨大的性能提升。SIGMA由于其灵活性而经历了类似的跳跃。当运行1024-16-500000尺寸的GEMM时,TPU的整体效率急剧下降。如果正方形TPU映射固定的KN(500000-16)矩阵,则N的值较低会导致利用率降低87.5%。如果它决定映射MK(1024-500000)固定值,则由于只有16K PE,因此需要大量折叠,这会导致O(N)的大量减少。SIGMA通过创建灵活的尺寸并利用其O(logN)减少结构来加速该GEMM,如表I中所述。在SIGMA中,除小型GEMM(例如2048-1-128)外,总体效率几乎接近100%,在小型GEMM中,较小的尺寸会导致有限带宽带来的加载等待时间占主导。平均而言,由于更高的利用率和更快的降低速度,SIGMA可使密集型GEMM的TPU提速2倍。与TPU中的59%相比,总体平均效率为82%。在图12b中,我们在SIGMA上运行具有不同稀疏性的GEMM。我们观察到,与TPU相比,大约有6 倍的改进,由于映射的零,TPU的平均总体效率低于10%。SIGMA没有映射任何零,并且显示出40%的平均总体效率,这受到流矩阵稀疏性的限制。
能源。在图13中,对于稀疏的工作负载,SIGMA的能源效率和TPU的效率平均比TPU 平均高3 倍和5 倍。尽管SIGMA消耗了两倍的功率(图8),但能量收益却来自〜6 ×加速。未来的工作量会导致更多的稀疏性,因此我们预计能源获取将大大增加。
D.针对稀疏加速器的性能
图14展示了SIGMA在最先进的稀疏加速器上的加速。表III列出了其他加速器的主要效率低下。在所有稀疏加速器中,SIGMA是唯一可以使用任意大小的点积支持完全空间缩减的加速器。对于两个GEMM,我们发现SIGMA比Eyeriss_v2慢,因为后者可以将两个操作数缓存在其本地SRAM中以供进一步重用,而SIGMA仅使一个操作数保持不变,而必须流化其他操作数(即使将来会被重用) )。其他设计(例如EIE)也具有本地SRAM缓冲区,但是我们观察到其PE间通信瓶颈使存储的优势黯然失色。平均而言,我们观察到SIGMA的性能比其他稀疏加速器快3倍。我们测试了矩阵和稀疏度之间的四种组合,并为每个加速器选择了性能最佳的组合。
相关工作
训练。一些先前的工作着眼于关于密集矩阵的训练。吊管机[40]和Neurocube [25]提出了一种基于ReRAM中加速,但并没有解决可扩展性和稀疏。Hypar [41]解决了训练中的缩放问题,并提出了提取并行性的最佳技术。Schuiki等。[38]和刘等。[30]提出了在扩展训练时以记忆方式处理通信问题。ScaleDEEP体系结构是针对DNN培训而开发的,它由许多带有专用内存子系统和互连的处理块组成[44]。但是,这些方法都不能像SIGMA一样同时解决不规则性,稀疏性和可伸缩性。
稀疏性。 表III将SIGMA与最先进的稀疏加速器进行了对比。最近的其他设计包括PermDNN [13],它使用置换对角矩阵来推断结构化稀疏DNN模型。诸如UCNN [21]之类的其他设计通过重复使用点积来利用稀疏性和重量重复性。ExTensor [22]在压缩表示中找到交集,并且仅在有用的密集计算上进行操作。比特战术[12]通过跳过零权重并利用输入的比特级稀疏性来针对推理中的稀疏性。与SIGMA不同,Bit-tactical利用软件中的计划来调整输入和权重。稀疏ReRAM [46]提议使用小型操作单元来利用ReRAM中的权重和激活稀疏性。SIGMA的目标是加速具有非结构化稀疏性的GEMM。
灵活的互连。Eyeriss [10]提出了一种有效的数据流,以利用可重构总线利用卷积重用。MAERI [27]使用基于树的互连进行分配和减少,这启发了SIGMA中的1D Flex-DPE微体系结构。但是,MAERI不处理动态权重和激活稀疏性,而是针对DNN训练中通常使用的低精度CNN(而不是高精度GEMM)进行了优化。Eyeriss v2 [11]也使用专门的NoC来处理稀疏性,但是针对小型移动CNN而非大型GEMM进行了优化。
结论
本文建议SIGMA作为处理新兴的大型,稀疏和不规则GEMM的加速器。SIGMA通过高带宽无阻塞互连结构提供近100%的计算利用率。这种灵活性的开销是通过布局布线设计仔细分析的。对于稀疏的不规则工作负载,我们的实现比TPU设计提高了5.7 ×性能加速。与其他最先进的稀疏加速器相比,我们还观察到了3 倍的性能提升。参考RTL:
致谢
我们感谢Ishwar Bhati和Sasikanth Avancha进行的有益的技术讨论。这项工作由英特尔资助。