Cambricon-X: An Accelerator for Sparse Neural Networks

摘要

神经网络(NNs)已被证明在广泛的应用中很有用,例如图像识别,自动翻译和广告推荐。由于不断增加的深层结构,即具有大量神经元和连接(即突触)的多层结构,因此,最新的NN既需要大量计算又需要大量内存。稀疏神经网络已成为减少所需计算量和内存量的有效解决方案。尽管现有的NN加速器能够有效处理密集且规则的网络,但它们无法从突触权重的降低中受益。在本文中,我们提出了一种新型的加速器Cambricon-X,以利用NN模型的稀疏性和不规则性来处理神经网络。效率提高。提出的加速器具有基于PE的架构,该架构包含多个处理元素(PE)。索引模块(IM)可以有效地选择所需的神经元并将其传输到连接的PE,而带宽需求却减少了,而每个PE都以异步方式存储用于本地计算的不规则和压缩突触。凭借16种PE,我们的加速器能够以小尺寸(6.38 mm 2和65 nm的954 mW)实现最高544 GOP / s的速度。在许多代表性的稀疏网络上的实验结果表明,相对于最新的NN加速器,我们的加速器平均可实现7.23倍的加速和6.43倍的节能。

介绍

但是,现有的加速器可能会遭受NN的超大尺寸的困扰,尤其是考虑到NN的尺寸持续增加以提高准确性时。例如,Krizhevsky等人提出的AlexNet。 [15]在2012年,拥有650千个神经元,并且这个数目进一步增加到约100万,如Le等人的报道。 [16],甚至是Coates等人报道的几百万。 [17]在2013年。突触权重的数量甚至更高:[15]为6000万,[16]为10亿,[17]为100亿。由于大量的突触权重需要大量的计算和内存访问,使用现有的NN加速器有效处理大规模神经网络仍然是一个具有挑战性的问题。为解决压倒性神经元和突触的挑战,研究人员提出了许多有效的技术来制造神经元和突触。 NN稀疏(即减少神经元和突触的数量),同时保持原始NN的准确性,包括训练中的辍学[18],稀疏表示[19]-[21]和稀疏性成本函数[19],[ 20],[22]。图1显示了完全连接的MLP(多层感知器)的神经元和突触,以及修剪后的神经元和突触。在稀疏MLP中,由于许多突触的值为零,因此从计算的角度来看,可以删除此类突触。突触修剪后,没有输入或输出连接的神经元也可以删除。因此,稀疏NN中的神经元和突触比原始的密集MLP少得多。最近Han等。 [23]提出了一种修剪技术,可以将突触权重减少约10倍,而精度损失可忽略不计。
在这里插入图片描述
有趣的是,大幅减少突触的数量并不一定会提高现有加速器的性能和能效,这些加速器擅长处理规则和密集的神经网络,但缺乏对不规则和稀疏模型的专门支持。例如,通过使用最新的稀疏库(例如cuSPARSE [24]),我们发现GPU只能处理具有699万个突触权重的稀疏AlexNet,其速度比原始的具有5948万个突触权重的AlexNet快1.78倍。 。先进的NN加速器DianNao [11]甚至根本无法从NN的稀疏中受益,因为所有修剪的突触权重仍必须以零值输入到加速器中,以进行不必要的计算。

我们提出了一种新型加速器,该加速器不仅可以有效地应对原始的密集神经网络,而且还可以有效应对严重修剪的稀疏神经网络。该加速器具有一个基于PE的体系结构,该体系结构由多个处理元素(PE)和一个缓冲区控制器(BC)组成,以利用NN模型的稀疏性和不规则性。具体而言,BC集成了一个有效的索引模块,用于从集中式神经元缓冲区中仅选择所需的神经元,然后将此类神经元传输到带宽需求降低的连接的PE。在接收到此类神经元后,PE可以使用本地存储的压缩突触执行高效计算。此外,由于突触的不规则分布,多个PE可以异步方式工作以提高效率。我们评估了加速器Cambricon-X,它具有许多代表性的NN(包括LeNet-5 [25],AlexNet [15])。和VGG16 [26]等)。与最先进的NN加速器DianNao相比,平均而言,我们的加速器可实现7.23倍的加速和6.43倍的能耗降低,而成本仅为954 mW,消耗的面积为6.38 mm2。而且,与具有稀疏库(即cuSPARSE)的GPU相比,我们的加速器平均可实现10.60倍的加速和29.43倍的能耗降低。与带有稀疏库(即稀疏BLAS [27])的CPU相比,我们的加速器平均可实现144.41倍的加速。

尽管可以通过突触修剪大大减少操作(例如浮点运算,触发器或定点运算,ops)和内存访问的数量,但是现有的硬件平台(包括CPU,GPU,FPGA和定制加速器) )由于缺乏对不规则和稀疏NN模型的专用硬件支持,因此无法在性能和能效方面获得很多好处。

因此,上述观察促使建立高效的架构以利用现代神经网络的不规则性和稀疏性。

加速器设计

在这里插入图片描述
A 概述
图4提出了我们的加速器的建议架构,该加速器由控制处理器(CP),缓冲区控制器(BC),两个神经缓冲区(NBin和NBout),直接内存访问模块(DMA)和计算单元组成(CU)包含多个处理元素(PE),例如Tn。所有PE都以胖树拓扑连接,以避免布线拥塞。 BC基于加载的指令(由CP解码)从本地神经元缓冲区中为每个PE选择所需的神经元,并将这些神经元传输到PE以进行有效的本地计算。 BC和多个PE之间的逻辑连接如图5所示。所提出的体系结构的关键特征是BC中的索引单元。共有Tn个索引单元,每个索引单元对应一个PE,用于选择其必要的神经元。

在本设计中,我们使用16位定点算术单元而不是常规的32位浮点单元。主要原因是,如先前的研究[2],[11],[32]所述,由于精度损失可忽略不计,因此16位定点单元的硬件成本明显低于32位浮点单元。 。更具体地说,与台积电65nm技术中的32位浮点乘法器相比,一个16位的截断定点乘法器要小6.10倍,而能源效率要高7.33倍[11]。此外,通过使用16位数据表示,数据总线的宽度将减少一半。

B 计算单元
计算单元设计用于对具有多个PE的神经网络的核心操作(即矢量乘法加法运算)进行有效的计算。图6(a)显示了PE的体系结构,包括一个突触缓冲区(SB)和该PE的神经网络功能单元(PEFU)。 PEFU将来自局部SB的突触和来自BC的神经元作为输入,产生输出神经元,这些神经元将被发送回BC。
在这里插入图片描述

PEFU
PEFU主要用于神经网络中的乘法加法运算。单个PEFU由多个乘法器(例如Tm)和Tm输入加法器树组成,有关PEFU的详细架构,请参见图6(b)。因此,可以与Tn PE同时执行Tn矢量乘法加法运算(Tm•Tm)。为了达到高频,我们将PEFU中的功能单元分为两个阶段:乘法和所有乘法结果的加法。使用Tm输入,所有Tn PE可以同时产生Tn输出神经元。
SB
用于存储分布式突触,在SB的设计过程中存在两个关键问题。第一个是确定SB的适当大小,第二个是在SB中组织突触。

尽管先前的工作建议提供足够大的缓冲区来容纳中等大小的神经网络的所有突触[12],[13],以避免昂贵的片外存储器访问,但我们加速器中的SB并非旨在容纳所有突触。原因是双重的。首先,即使具有稀疏性,突触的总大小也超过了几兆字节,例如,如表I所示,AlexNet约为7 MB,VGG约为10M。其次,我们的加速器旨在支持不同稀疏性的神经网络。级别,包括具有很大突触尺寸的密集网络。因此,设计用于存储所有突触的大SB将招致相当大的延迟,面积和能量损失。实际上,具有最佳大小的SB应该能够隐藏内存访问的延迟,以便使PEFU保持繁忙而无需等待输入数据。在我们当前的实现中,我们在每个PE中部署2KB SB,从而导致总共2×TnKB存储用于突触。因此,每个SB可以在每个周期向PEFU提供Tm数据,即提供一个Tm×16位宽的SRAM。为说明SB中的突触组织,我们使用一个由7个输入神经元和2个输出组成的稀疏网络示例神经元,如图7(a)所示。我们假设该网络仅映射到参数Tm = 4的一个PE,并且我们使用wi,j表示输入神经元#i和输出神经元#j之间的突触权重。连接到不同输出神经元的突触权重通过与Tm(即4)对齐而紧凑地存储在SB中。如图7(b)所示,输出神经元0的两个权重(即w 00和w40)被一一存储在地址0中,而输出神经元1的五个权重(例如w11和w61)被存储在地址0中。后续地址:地址1和2。因此,在计算输出神经元0时,只需读取一次SB,而对于输出神经元1,则需要读取两次。由于不同神经元的突触数量可能彼此显着不同,因此我们允许不同PE中的SB从内存异步加载新数据,以提高整体效率。
在这里插入图片描述

C 缓冲控制器
缓冲区控制器设计用于将必要的神经元转移到PE,协调PE上的计算,以及执行较少的计算密集型操作。图8说明了BC的体系结构,它由一个用于对数据进行索引以基于连接进行计算的模块(索引模块,IM)和BC的专用功能单元(BCFU)组成。首先,基于从指令(例如,存储器访问指令)解码的控制信号从NBin获取输入。然后,从输入中选择所需的神经元并将其转移到每个PE,或者将输入直接输入BCFU。在PE中完成计算后,将收集结果以在BCFU上进行进一步处理,或直接写回NBout。请注意,加速器可以在处理密集的NN时绕过IM,以避免由于IM.Control造成的潜在速度降低。
在这里插入图片描述
BCFU
BCFU主要用于存储要由IM选择的神经元。注意,有Tm这样的单位,因此它可以同时存储Tm神经元。

IM
IM是加速器的关键组件,用于索引稀疏程度不同的稀疏神经网络的所需神经元。我们没有在每个BC上分配索引模块,而是在BC中设计了一个集中式索引模块,仅将索引的神经元转移到PE,这可以大大减少神经缓冲区和PE之间的带宽需求,因为索引后的数据数量很多在稀疏网络中较小。在图9中,基于存储的连接为不同的PE选择了不同的输入神经元。对于PE#0,从所有8个神经元中仅选择两个神经元,即n 0和n4,以在PE上进行计算。

为了实现索引模块,我们研究了两个常用的索引选项,即直接索引和步骤索引。直接索引方法使用每个突触一个比特的二进制字符串,指示是否存在对应的突触,即,“ 1”表示存在,“ 0”表示不存在。逐步索引方法通过使用已存在的突触之间的距离(二进制字符串中的“ 1”)进一步索引直接索引的二进制字符串,即索引表中的每个元素都指示两个已存在的突触之间的距离。

尽管存在其他索引从硬件设计的角度来看,诸如压缩稀疏行(CSR),坐标列表(COO)和压缩稀疏列(CSC)之类的方法相对容易实现。例如,使用良好的CSR / CSC需要两个数组来存储稀疏矩阵的索引,这对于稀疏NN通常稀疏度大于5%的情况而言,存储成本很高(请参见表I)。此外,CSR / CSR索引矩阵的行和列,而我们在加速器中的精心设计的调度则索引了多个神经元,并在一维并行地突触。因此,我们研究了实现高效索引模块的直接索引和步骤索引。

在这里插入图片描述
在直接索引中,直接根据二进制字符串中存在的连接(即1s)从所有输入神经元中选择神经元。稀疏网络示例的二进制字符串如图10(a)所示。我们还在图10(b)中介绍了潜在的硬件实现。索引处理可以详细说明如下。首先,我们将原始二进制字符串中的每个位相加以获得一个累加的字符串,并且累加的字符串中的每个元素都指示相应连接的位置。在执行之间的“ AND”操作后

在分步索引中,基于具有突触的输入神经元之间的距离选择神经元。我们用图11(a)中的步骤索引和图11(b)中的潜在硬件实现来介绍相同的网络示例。索引过程可以详细说明如下。首先,我们依次在索引表中添加数字(例如,图11(b)中的“ 1132”),以获取与当前输出神经元有联系的输入神经元的索引。然后,这些索引用于寻址相应的输入神经元。与直接索引相比,步骤索引中的索引是整数,其宽度取决于NN的稀疏性。

我们在RTL中实现以上两种索引方法,并在面积和功耗方面将相应的硬件成本与图12中的综合结果进行比较。请注意,两种实现都是并行计算索引的。通过在一个周期中从长度从32到512(即稀疏度从50%到3.12%不等)的数组中选择16个数据,我们发现成本随着稀疏度的增加而增加。此外,在所有评估的数据集上,步骤索引的成本始终小于直接索引的成本。例如,当数据数组的大小为256(在我们的当前实现中也使用此大小)时,步进索引的面积和功效分别比直接索引的面积和幂分别小10%和40%。通过以上调查,我们选择了步骤索引并将其应用于实现IM。在当前设计中,IM能够在每个周期读取Tm×Tm数据,以选择每个PE的输入神经元。
在这里插入图片描述

D. CP
CP旨在通过各种指令高效灵活地控制执行。这些指令用于数据组织,执行协调和内存访问等,它们存储在一个小的指令缓冲区中。为了减轻最终用户的编程负担,我们提供了C ++编译器以生成高效的指令,稍后将对其进行详细说明。

E. NB
NB包括NBin和NBout,分别用于存储输入和输出神经元:从NBin中选择输入神经元,然后将其发送到所有PE进行计算,计算后将输出神经元收集到NBout。 NB中存储的神经元有序排列,而无视稀疏网络的各种连接方式。在当前实现中,我们将IM和NBin之间的数据总线宽度设置为Tm×Tm×16位。因此,每个周期每个PE最多可以选择Tm数据。NBin和NBout的大小对整体性能和能耗至关重要。在研究了不同大小的NB之后,我们发现8KB是在已实现的性能和相关的能耗之间的最佳折衷。因此,在加速器实现中,我们将8KB用于NBin和NBout。请注意,NBin的大小大于SB的大小(用于存储突触,为2KB),因为加速器在为PE选择必要的神经元之前需要存储更多的输入神经元。显然,8KB的NB无法容纳大规模神经网络的所有神经元。 ,因此应采用适当的数据替换策略来减少昂贵的片外存储器访问。仅当NBin中的所有神经元已被处理或NBout已满时,才会访问主存储器以分别加载新的输入神经元或存储计算出的输出神经元。

F.互连和通信互连
我们采用Fat-tree [33]互连拓扑,其特征是在互连层次的顶部附近提供更多数据链接,以连接BC和所有PE,以提高它们之间的数据移动效率。使用Fat-tree互连有两个原因:1)与其他非树互连拓扑相比,使用Fat-tree可以避免由于BC和PE之间的延迟不平衡而导致的关键路径较长,以及2)与其他树相比类似于互连拓扑,胖树可以提供专用连接来缓解网络拥塞,因为发送到不同PE的数据是独立的。片外存储器与片内缓冲器(包括NBin,NBout和SB)之间的数据通信是通过直接存储器访问(DMA)实现的。为了平衡不同PE的执行并避免内存访问的拥塞,我们首先将所需的突触拆分为多个块。然后,在短时间内一次只将一个存储器访问端口分配给一个PE,因此每个PE在该时间段内只能加载几个块。在这种情况下,每个PE将具有一些突触,即使不是全部,也可以在不同的周期执行相应的计算。这种异步计算模式可以通过允许不同的PE在不同的周期进行计算来减少内存拥塞。

实验结果

A.硬件特性
在当前实现中,我们如第III-B节所述选择Tm = Tn = 16,因此加速器由16个PE组成,每个PE具有16个乘法器和一个16进位加法器树。我们在表III中报告了加速器以及重新实现的电脑的特性。请注意,表III中的ALU指的是在计算机上的最后阶段中使用的用于非线性功能的模块,其功能与CTFU相同。通过这种设计,我们的加速器能够达到最高点性能,即每个循环528个定点操作。我们在表IV中列出了加速器的布局特性(包括面积和功耗)。该加速器总共具有56 KB片上SRAM和528个运算符,比电Na 6.38 mm2和3.02 mm2大2.11倍。我们的加速器的总功率只有954毫瓦,比电脑的485毫瓦高了469毫瓦。另外,我们在电脑中获得了1 GHz的频率,略高于0.98 GHz。

在这里插入图片描述

B.性能
我们在表II列出的所有评估的网络上,将使用不同实现的加速器与CPU,GPU和电脑进行比较。在CPU和GPU上,除了具有用于密集表示的密集库(即CPU-Caffe,GPU-Caffe和GPU-cuBLAS)的实现外,我们还使用用于稀疏表示(例如CPU-稀疏和GPU-cuSparse)。为了公平比较,我们还评估了加速器在密集表示(即Cambricon-X-dense)中的性能。在图14中,我们将上述实现的所有性能数字归一化为用于稀疏表示的加速器。关于密集表示的实施,在评估基准上,我们的加速器平均分别比CPU-Caffe,GPU-Caffe和GPU-cuBLAS快51.55倍,5.20倍和4.94倍(我们的稀疏表示加速器达到151.82倍, 15.32x和13.18x)。关于稀疏表示,我们的加速器平均分别比CPU-Sparse和GPU-Sparse快144.41倍和10.60倍。与点Na相比,我们的加速器仍然可以达到7.23倍的加速,这充分证明了我们加速器的效率。请注意,我们的加速器不仅可以有效地处理稀疏网络,还可以有效地处理密集网络,正如观察所证明的那样,Cambricon-X-dense的速度比点脑快2.46倍。
在这里插入图片描述
为了获得更多有关上述性能优势的见解,我们分别在图15和图16中进一步展示了卷积层和分类器层的性能比较,其中所有性能数字均以稀疏表示形式标准化为加速器的性能数字。 。在图15中,对于卷积层,我们的加速器平均分别比GPU-cuBLAS,GPU-cuSparse和DianNao快8.90倍,7.67倍和8.89倍。在图16中,对于分类器层,我们的加速器平均分别比GPU-cuBLAS,GPU-cuSparse和DianNao快44.28倍,20.07倍和5.99倍。通常,分类器层的加速比卷积层的加速大得多,这是因为在评估基准上,分类器层可实现比卷积层更高的稀疏度(5.23%vs. 22.65%)。通过观察发现,我们的加速器在卷积层和分类器层上分别比Cambricon-X-dense实现了2.51倍和4.84倍的加速,这一点得到了验证。

C.能源
在图17中,我们报告了在所有基准测试中GPU,电脑和加速器的能源比较,其中还包括片外内存访问的能源。与GPU平台相比,我们的加速器在密集和稀疏网络上的能源效率平均分别提高了37.79倍和29.43倍。与电Na相比,我们的加速器在密集和稀疏网络中的能源效率平均提高了6.43倍。我们做了一个有趣的观察,即我们的加速器在GPU和DianNao上实现的最佳能效来自AlexNet。主要原因是AlexNet卷积层中的内核大小大于其他网络的内核大小,这大大提高了内存效率。此外,我们的致密表示加速器的能量比点脑减少了1.70倍,这表明我们的加速器在处理密集网络方面也具有能源效率。我们进一步展示了我们的加速器在所有层,卷积层和分类器层的能量分解在图18中,还显示了密集网络和稀疏网络的结果。我们可以看到,主内存访问消耗了所有层总能量的80%以上,这与Chen等人的研究结果一致。 [11]。显然,由于分类器层的稀疏性,分类器层的存储器访问能量之比比卷积层的存储器访问能量之比高得多(即平均为98.39%对90.63%)。另外,通过比较稀疏网络和密集网络的故障结果,我们可以看到,对于大多数网络,稀疏网络的内存访问能量之比通常高于密集网络(例如,分别为90.63%和87.28%)。卷积层平均)。换句话说,由于稀疏网络的计算强度与密集网络相比较低,因此对于稀疏网络而言,片外存储器访问的能源问题更为严重。
在这里插入图片描述

结论

在本文中,我们提出了一种新型加速器(Cambricon-X),该加速器不仅可以有效应对传统的密集神经网络,而且还可以有效应对修剪的稀疏神经网络。该加速器具有一个基于PE的架构,该架构由BC和多个PE组成。 BC集成了一个索引模块,用于为PE选择必要的神经元。每个PE存储用于本地计算的不规则和压缩突触,并且它们都以异步方式工作。我们的加速器具有6.38 mm2和954 mW的占地面积,能够同时执行16个输出神经元,且它们之间的连接稀疏,最多可产生544 GOP / s。与最先进的神经网络加速器点脑相比,我们的加速器分别实现了7.23倍和6.43倍的出色性能和能效。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值