没有合适的资源?快使用搜索试试~ 我知道了~
阵列12(2021)100101用于异构多精度神经网络的JoseNunez-Yaneza,MohammadHosseinabadyba英国布里斯托尔大学电气和电子工程高级综合和FPGA设计A R T I C L E I N F O保留字:神经网络FPGA量化修剪矩阵乘法加速卷积LSTMA B S T R A C T在本文中,我们提出了硬件加速器创建高层次的合成技术,稀疏和密集矩阵乘法运算。 这些内核可以以不同的精度运行,并被设计为集成在异构CPU-FPGA系统中,用于边缘AI应用。该方法涉及量化稀疏意识的训练,它被应用到一个案例研究,包括人类活动分类。我们首先研究了量化和稀疏性对神经网络准确性的影响,当存在递归层时,卷积层、密集层和递归层对修剪有更好的耐受性。然后,我们提出了硬件加速器,可以在运行时切换精度,并与任何矩阵大小的最大配置在编译时。我们比较了这些加速器在不同精度和稀疏度水平下的性能,并创建了一个性能模型来实现工作负载平衡。结果表明,当稀疏度大于70%时,稀疏矩阵乘子的性能优于稠密矩阵乘子,且当采用更高精度的算法或结构剪枝时,这种改进更为明显.此外,高达99%的稀疏度水平可以保持网络所需的准确度,特别是在部署循环层时。总体而言,稀疏和密集性能之间的平衡取决于矩阵形状、精度、结构修剪和稀疏级别,并且性能建模可以用于平衡异构配置中的并发执行1. 介绍在过去的几年里,来自知名公司和初创企业的用于人工智能深度学习的新型硬件已经进入市场,专注于高能效/性能和低成本。这些设备通常专注于支持网络推理,并在严格的性能和功耗限制下分析传感器位置附近产生的数据。另一方面,GPU仍占主导地位在训练领域[1],尽管一些硬件被优化,用于训练和推理,如Graphcore智能处理单元(IPU)[2]。这些IPU是作为PCIe卡提供的并行混合精度浮点处理器。这些设备的成本和功能意味着它们更适合云部署(如Google TPU),而不是网络边缘。在网络边缘,深度神经网络(DNN)在定制硬件上的实时推 理 与 低 精 度 算 法 和 训 练 框 架 ( 如 8 位 EdgeTPU Google 设 备 和TensorFlow Lite)的相关性越来越大。 除了定制硬件外,基于FPGA的由于它们能够使体系结构适合问题并利用任意精度算术和子字节精度,已经显示出显著的前景。FPGA上的高性能解决方案已经通过低功耗架构和二进制运算获得[4]。挑战在于,这种极端的量化水平可能导致精度下降,并且对于复杂的神经元模型来说,低功耗架构往往是非常资源密集的。这限制了可以部署在小型FPGA设备中的神经网络的大小。 最近[5],有人认为某些神经元层可能更适合积极量化,而其他神经元层可能需要更昂贵的算法,主张多精度算法的优势。一种众所周知的加速神经网络计算的方法是通过数据复制和重组将神经网络层算法映射到大型矩阵乘法运算[6]。本文提出的基于稀疏密集算法和多精度算法的矩阵乘法加速算法可以根据任务的不同选择最优的硬件配置。受这些观察的启发,本文做出了以下贡献:作者:Diane Dunham Drexle Hamido Fujita∗ 通讯作者。电子邮件地址:j.l. bristol.ac.uk(J. Nunez-Yanez),mohammad@hosseinabady.com(M. Hosseinabady)。https://doi.org/10.1016/j.array.2021.100101接收于2021年8月15日;接受于2021年10月8日2021年11月2日网上发售2590-0056/© 2021作者。爱思唯尔公司出版这是CC BY许可下的开放获取文章(http://creativecommons.org/licenses/by/4.0/)。可在ScienceDirect上获得目录列表阵列期刊主页:www.elsevier.com/locate/arrayJ. Nunez-Yanez和M. 侯赛纳巴迪阵列12(2021)1001012• 我们研究了深度量化和修剪对卷积层和递归层的准确性的影响,这些层针对运动检测应用。• 我们为自适应密集和稀疏矩阵计算的多精度算法创建高性能硬件,并为运行时使用开发简单的性能模型• 我们调查的稀疏性,精度,结构修剪和矩阵形状的函数中的阈值水平,其中稀疏硬件是快或慢于密集。• 我们发布了IP开源,以促进在这一领域的进一步研究,https://github.com/eejlny/gemm_spmm本文的组织结构如下。第2节回顾了边缘部署的最先进硬件,显示当前最先进的定制硬件侧重于8位精度和密集矩阵操作。本文还评述了更适合于可重构硬件的混合精度和任意精度,指出稀疏运算器是一个值得研究的领域。第三节介绍了我们的方法和应用问题。第4节研究了有和没有递归层的深度网络修剪和量化的准确性的影响。第五节提出了高性能稠密和稀疏多精度矩阵乘法器的硬件实现方案。第6节比较了这种硬件映射到Zynq 7020设备形式的低成本边缘设备的性能和复杂性。最后,第7节总结了本文,并提出了未来的工作。2. 背景和相关工作在下面的章节中,我们将介绍和概述神经网络硬件和矩阵加速器的2.1. 8/16 bit精密硬件边缘计算被视为与云计算相关的延迟和隐私问题的解决方案,但主要挑战是在受功率和能力限制的计算资源上运行AI工作负载[7]。通常,边缘设备专门用于推理,并支持低精度算术,如8位整数。例如,Gyrfalcon的矩阵处理引擎(MPE)使用内存处理器技术来计算神经网络模型。2803芯片[8]提供24 TOPS/W,最低功耗为700 mW。类似地,Google提供了一个低成本和低功耗版本的Google TPU,称为EdgeTPU[9],可以运行8位精度的专用卷积神经网络。EdgeTPU中的脉动数组大小比云配置小得多,约为64 × 64个多加单元,导致480 MHz时的4TOPS。 FPGA供应商,如Xilinx,也专注于推理,使用Xilinx DPU [10]单元。该单元包含寄存器配置、数据控制器和针对FPGA硬件资源优化的卷积计算模块。封装的调度程序可以将任务分配给多个DPU,并且可以使用Dsight等工具来监控性能。 它使用脉动阵列架构进行矩阵乘法和包装8位运算符到器件DSP块中。英特尔还提供基于FPGA的解决方案,可以通过其OpenVino [11]工具包进行定位,该工具包具有模型优化器和推理引擎作为主要组件。OpenVino使用TensorFlow/Keras等框架将经过训练的网络作为输入,并针对英特尔硬件进行优化,可以是自己的CPU、GPU、FPGA或设备(如NCS2),Myriad Vision ProcessingUnit(VPU)VPU具有16个VLIW通用可编程内核,针对视觉处理工作负载进行了优化,并包括一个神经计算引擎,以加速张量矩阵计算。VLIW内核还支持与深度学习无关的其他算法,尽管目前的OpenVINO工具集只专注于支持递归和卷积神经网络。VPU使用16位浮点运算而不是整数运算。然而,与定点算术相比,这些更复杂的数据类型也意味着在相同的硅尺寸下性能必须更低。2.2. 子字节精度硬件到目前为止,神经网络硬件还不支持亚字节精度,但这一点在配置有任意精度类型的FPGA解决方案中受到了极大的关注。FINN [4]和hls4ml [12]是两个成熟的框架,支持FPGA中的任意精度硬件。hls 4lm已被证明可以实现非常高的性能非常低的延迟问题,如parti- cle碰撞。它使用基于QKERAS库的量化感知训练和修剪,并将生成的配置导出为C++Vivado HLS描述,以便在FPGA中实现。 在[12]中提出的示例神经网络由3个密集层和一个softmax层组成,其精度为14位,其中6位为整数比特.剪枝引入了许多不需要硬件资源的权重设置为零,从而显著降低了低功耗架构的硬件复杂度。修剪不会影响延迟,因为非零权重定义了最长路径,因此网络的深度保持不变。FINN也在Vivado HLS C++的描述中使用了这个概念。它最初专注于在FPGA上支持二值化神经网络,现在已经扩展到任意精度。二值化后的FINN使用XNOR计数阈值数据通路,所有参数存储在片内存储器中,从而获得高性能和低存储成本。FINN有一个流式多层流水线架构,其中每一层都由一个被输入/输出缓冲器包围的计算引擎组成。FINN引擎实现全连接层的矩阵-向量乘积或卷积运算的矩阵-矩阵乘积。每个引擎计算二进制化的乘积,然后与二进制化激活的阈值进行比较。在[6]中使用了类似的二进制化解决方案,其中它最初通过展开和复制输入并重新排列权重将卷积运算转换为矩阵乘法。该系统使用了一个简单的架构,将整个网络映射到一个大型的Zynq设备7z100上。Escherlow架构使用平衡的流水线,使用缓冲器来平滑计算流,并实现非常高的吞吐量。在以前的工作中的限制是低计算的复杂性,这意味着在需要硬件共享之前,只能映射具有很少层和过滤器的小型网络。 在[13]中提出了一种在不使用二进制网络中使用的极端量化的情况下降低复杂性的替代方案。这将可变位宽度分配给层,对于较深的层,精度通常会降低。PE(处理元件)支持位串行乘法,并且权重位与用于补偿位串行架构的较低吞吐量的附加PE串行发送,这比位并行乘法硬件简单得多。在[14]中还探索了使用混合精度硬件的概念,该概念提出了一种调度策略,用于在结合FPGA和CPU的异构系统上分配与传感器数据采集,推理和动作相关的实时任务。 FPGA推理加速器支持从8位到64位的精度,导致调度器需要考虑的计算时间不同。子字节神经网络也已在通用微处理器体系结构中进行了探索。3 pxnet [15]考虑二进制网络,因此输入和权重是二进制值,可以是-1 0 1。它探索了一个称为稀疏二进制化的概念,该概念包括最初训练三元网络(因此值为-1,1和0),然后稀疏化,它增加了零的数量。然后,它将1、-1和0分组,因此有效权重(-1和1)在32位字中对齐,而零在其他32位字中对齐。然后,有效的32位字由-1和1形成,并且需要相乘,而零字可以忽略。所以三元矩阵现在变成了稀疏二元矩阵。与1和−1的乘法可以用XNOR和比特计数编码(而不是正确的乘法)1作为1和−1作为0来完成。开销是将活动权重对齐并分组到32位字是一个限制,这意味着网络的准确性受到影响。他们试图使用置换技术来弥补这一点。 在Tfnet [16]中,重点关注三进制权重和4位输入,J. Nunez-Yanez和M. 侯赛纳巴迪阵列12(2021)1001013思想是提出用单个32位MULT指令执行多个子字节乘法累加操作数有效方法。 该方法将子字节操作数打包成32位操作数,并交换其中一个操作数的字节。执行标准的结果32位乘法的另一个优点是,只要不存在来自低有效位的溢出,高8位就包含子字节分量的点积运算的结果。这种方法的局限性在于,功能是使用无符号数来呈现的,这可能会影响神经网络的准确性,而神经网络受益于使用正权重和负权重,并且打包和解包操作的努力可能会稀释mac指令的减少数量。2.3. 稀疏/密集矩阵硬件稀疏矩阵乘法的应用并不那么频繁 基于FPGA的神经网络硬件。与密集硬件相比,不规则的内存访问代表了硬件加速的开销,并且修剪感知训练必须能够插入大量零而不影响准确性,这种方法才有价值。最近,已经提出了新的实现[17]来支持机器学习领域中的这些操作。这些算法主要利用多核CPU或众核GPU [18,19]。几项研究调查了SpMV在硬件和FPGA上的优化[20这项研究的重点是基于FPGA的高端HPC系统优化外部DRAM数据的不规则内存访问。与本文所做的密集硬件相比,没有人研究多精度支持及其对准确性,性能和复杂性的影响。我们称我们的方法为多精度,因为加速器被设计为由CPU控制,与Zynq设备中的ARM处理器一样。在这种情况下,CPU将矩阵乘法张量串行卸载到加速器,并在不同精度之间逐层切换。当大型模型需要部署在无法同时支持每层硬件Xilinx(https://github.com/Xilinx/gemx/)创建的用于矩阵处理的通用库也针对高端卡,这些通用库专门用于PCIe加速器卡和大型FPGA系列(例如Xilinx Virtex Ultrascale、Xilinx Alveo),不支持本研究中考虑的Zynq 7000等低端设备。另一种针对高端加速器卡的方法在[23]中提出,该方法比较了不同的并行策略,例如应用于矩阵乘法问题的流水线并行、平铺、向量化和脉动架构。本文使用高端Xilinx Alveo加速器卡研究了这些技术,并显示了脉动架构在逻辑和内存的大量资源使用情况其他先前的工作旨在创建针对某些类型的神经网络(如CNN)的优化算术电路[24]。 或LSTM [25]。在这项研究中,我们专注于创建一个具有适合FPGA部署的密集和稀疏硬件乘法器加速器的硬件库,然后可以与标准框架一起使用,例如在ARM CPU上运行的Tensorflow Lite。这个想法是所提出的硬件库可以用作密集/稀疏运算符的计算资源,将矩阵运算的执行从ARM设备移动到诸如Zynq的混合设备上的FPGA。虽然,很明显,可实现的性能将低于定制或纯硬件解决方案,我们的目标是易用性和通用性。我们使用Tensorflow的修剪/量化算法,而不是尝试创建自己的算法。3. 方法和案例研究该方法基于最近对Keras和Tensorflow中添加的量化稀疏性感知训练的支持。Keras是一个用Python编写的高级神经网络API很与TensorFlow很好地集成,以促进神经网络开发。最近,为了简化量化Keras模型的过程,QKeras [26]被提出作为Keras的量化扩展,为执行算术运算的层提供了一个直接替代。这允许Keras模型的量化版本的有效训练。此外,现代Tensorflow库还支持使用多项式衰减等技术对神经网络进行自适应修剪,其中网络逐步修剪到最终稀疏值,并且随着修剪执行到更深层次,训练允许恢复准确性。结合QKERAS的量化功能和Tensorflow的修剪功能,可以研究高度优化的神经模型,减少参数和每个参数的位数。这种量化修剪感知训练库和工具是一种关键的支持技术,可以在不影响准确性的情况下了解这些优化的部署水平。正在考虑的用例应用程序包括一个活动检测系统,该系统使用加速度计和陀螺仪传感器将用户活动分为6个不同的类别:步行、上楼、下楼、坐下、躺下和跑步。所有数据均归一化至范围[-1,1]。加速度计传感器产生三轴加速度(总加速度)和估计的身体加速度,而陀螺仪产生三轴角速度[27]。该模型由卷积、最大池化、LSTM(长短期记忆)、级联以及最后的全连接层组成,如图所示。1,最初在[28]中提出。LSTM是能够学习长期依赖关系的递归层,它们避免了标准递归层在训练过程中典型的梯度消失问题。它们在边缘深度学习加速器中没有得到很好的支持,由于加速器的专用管道,支持要么是正在进行的工作,要么是不可能的。模型的数据是以50 Hz的采样率获得的,根据数据, 设置文档,每个数据样本对应于2.56 s的活动。因此,每个传感器和轴有50*2.56 = 128个样本。有三个轴,因此总共有128 × 3个值形成神经网络的输入。在数据集中的每个活动窗口中有大约25个样本(另一个活动在25个样本之后替换一个活动),因此每个活动窗口对应于大约25*2.56 = 64s。4. 剪枝和量化精度分析量化和修剪的组合具有显著的性能改进的潜力,但是应该最小化对准确性的任何可能的影响。在本节中,我们将考虑从浮点到8位、4位(四进制)和2位(三进制)的量化。 我们专注于2次幂精度,因为我们的硬件加速器支持具有2次幂位宽的AXI通道的通用处理器接口。这简化了如何打包权重和激活以进行数据传输。我们将结果与原始浮点精度进行比较,并且我们还考虑了二进制精度。二值化神经网络在过去几年中受到了极大的关注[29],因为如前所述,乘法和加法运算被简化为简单的XOR运算和位计数,可以在硬件和软件中非常有效地实现。软件中的高效实现需要ISA支持位计数指令,这在一些流行的ISA上不是这种情况,例如Cortex M微控制器中使用的ARMv6,但在其他Cortex A类处理器或RISCV中可用。虽然这是一个活跃的研究领域,并且在二值化神经网络训练方面取得了重大进展,但重要的是要注意,以前的工作表明,二值化网络会显着影响准确性,特别是对于更复杂的问题[16]。这也是我们在本案例研究的以下实验在二进制化网络中,只有两个值存在-1(编码为0)和1编码为1,这意味着修剪不适用,因为权重或激活中没有0另一方面,三元J. Nunez-Yanez和M. 侯赛纳巴迪阵列12(2021)1001014Fig. 1. 运动检测神经网络。图二. 子字节卷积精度分析。或2位网络包括-1,0和1,因此可以修剪和增加权重中0的数量。与二进制网络类似,三进制网络不需要乘法硬件,因为只需要减法和加法。然而,这些操作需要加法和减法,并且比简单的异或位计数更复杂。此外,内存要求基本上从1位到2位加倍。图图2和图3显示了图1的神经网络配置有启用和禁用的LSTM层。纵轴显示修剪从0%(密集)增加到最大可能的99%(99%的权重设置为零)。X轴显示所考虑的每个可能的算术精度的准确度。正如预期的那样,二进制配置不受图三. 子字节LSTM https://www.overleaf.com/projectaccuracy分析。修剪,但也很明显,与其他研究的精度相比,精度明显较低。我们将90%设置为我们想要获得的较低准确度,该图显示这是二值化网络无法实现的垂直箭头表示对于2位、4位和8位精度,精度降低到90%以下的点。这发生在2位的90%修剪、4位的95%很明显,更深的量化导致更低水平的可接受修剪。这是预期的,因为我们从两个参数中删除了信息。图图3显示了当图3中所示的LSTM层时的相同分析。1已启用。该图显示了垂直线的明显位移J. Nunez-Yanez和M. 侯赛纳巴迪阵列12(2021)1001015向右,这表明LSTM层的添加意味着可以以相同的精度支持更高级别的修剪。如果我们观察LSTM层在0%修剪和浮点精度情况下的效果,这是特别有趣的。在这两种情况下,我们看到,对于这个应用程序,LSTM层在全精度和无修剪下的积极影响非常小。另一方面,修剪和低精度网络以更清晰的方式显示了LSTM层的积极影响。例如,使用LSTM层,8位精度网络可以支持修剪到99%,并保持所需的精度高于90%。 我们可以得出结论,LSTM层的添加有助于补偿修剪和量化造成的信息损失5. GEMM和SPMM加速器硬件图4比较了GEMM(通用矩阵乘法)和SPMM(SParse矩阵密集矩阵乘法)硬件中使用的并行性,这些硬件使用了平铺,矢量化和流式处理。5.1. GEMM硬件GEMM非常适合并行计算,因为行和列元素的所有乘法都可以并行进行。 简单的硬件实现将简单地缓冲矩阵A, B在FPGA中,然后它将计算乘法。这是有效的,但它是非常资源密集型的,可以迅速压倒 BRAM和DSP资源可在一个小的设备,如zynq7020考虑在这项工作中。我们的初步研究表明,可能的最大矩阵大小限制在256 × 256个元素左右。另一种方法是只缓冲一行A和一个数字B列,然后并行进行乘法运算,如图所示在GEMM的案子里 并行度由两个值BW和BH定义,值越高意味着更多DSP块并行工作。在该方法中,由一行形成瓦片A和B的多个列,其中BW和BH定义粗略矢量化的量,而精细矢量化在32位字电平,取决于精度。 因此,如果BW值为16并且BH为2,则粗略矢量化的级别为32,并且精细矢量化的精度取决于精度,可以是4、8或16。在每个时钟周期中,来自A行的多个元素由下式定义:BH并行地乘以来自由BW*BH定义的B_block的多个元素,产生BW部分结果,如图所示。五、 BH越大,意味着对内部内存缓冲区的访问越多,因此需要额外的内存分区。我们使用Vivado HLS和C++创建硬件,其中可能的最大矩阵大小由值SN*SM和SM*SP定义,硬件支持将矩阵形状的任意组合相乘到这些值。主要约束是在FPGA中分配的存储器需要足以存储区域BW* SM。有在支持的最大矩阵和所利用的并行度之间进行权衡,该并行度取决于在编译时定义的BW值。在运行时,用户可以部署任何矩阵大小,直到最大值,选择低于这些最大维度的任何矩阵。这在神经网络应用中很重要,因为可以在图1的不同层中看到。1,矩阵尺寸将根据有源层而变化。包装重量和活化在GEMM是简单,我们定义所有接口在32位宽的所有矩阵,所以在一个字有4个8位,8个4位和16个2位的值。例如,将支持的最大矩阵大小设置为2048 × 204832位字允许BW的值为32,这意味着对于8位、4位和2位的不同精度宽度分别并行执行128、256和512次乘法。 注意到 在2位三进制实现中,可以通过减法和加法来处理-1和1的值,并且可以忽略零的值,但是在我们的FPGA硬件中,合成引擎仅使用乘法来运算符,而不是使用if-else方法来定义减法和加法。这种方法支持大矩阵尺寸,在小型FPGA器件中实现可行,如第7节所示。所提出的架构的替代方案是[23]中提出的脉动方法,其可以提供非常高的吞吐量,但它们倾向于以针对更大的设备进行优化。例如,在[23]中使用的收缩方法在Zynq Ultrascale MPSOC ZU9设备上的测试,大约比本研究中使用的Zynq 7020大5-10,表明2048 × 2048整数的矩阵大小需要400%的可用内存资源。分块策略可用于降低这些要求,但在[23]中,这并不容易用于评估间接费用。图6显示了GEMM HLS块使用的接口。2位输入精度可在8位、4位和2位工作模式之间切换。32位输入用于从存储器中为输入矩阵A和B带来打包数据,而输出在输出C中以16位的精度生成非打包数据,以避免可能的溢出。附加输入可用于定义相乘矩阵的形状。5.2. SPMM硬件SPMM硬件基于我们之前在[30]中提出的SPMV加速器的工作,该加速器已扩展为支持稀疏矩阵(权重)和一个密集矩阵(激活)的多精度和全矩阵乘法。SPMV加速器被设计为支持流行的CSR(压缩稀疏行)格式来存储稀疏矩阵,并且它避免了必须缓冲完整的数据块。所述输入矩阵使用流传输的双低架构。组成包括输入级、流映射层、计算级、流映射层和输出级。图8显示了对应于一个线程的硬件的简化视图,以及流缓冲区如何提供对表示稀疏矩阵的col_index、values和row_index数据的顺序访问。计算引擎读取row_index数据并计算每行中的元素数。请注意,每行中的元素数是row_index流中两个相邻索引之间的差值。使用每行中的此数量的元素,计算引擎从col_index和values读取数据。col_index内容用于访问适当的元素在x向量中(即,密集矩阵向量)被预取到本地存储器中。然后x元素与值数据相乘,并在计算引擎内的寄存器中累积。 在完成与行关联的计算之后,结果作为对应的y值发送出去。然后,计算引擎从row_index流中读取下一个元素,准备计算下一个y元素。数据流优化还用于重叠如何在SPMM中处理激活矩阵的多个列流映射层将从其输入缓冲器接收的数据重新格式化并在其输出缓冲器之间分发。计算阶段由多个并行进程或线程组成,在非零输入值的不同区域中并行。 在这项工作中,进程或硬件线程的数量是4,这是Zynq 7020设备中可用的内存和逻辑资源所能支持的最大数量。图图4示出了SPMM的每个硬件线程如何在由全矩阵B和可变大小A形成的瓦片上工作,该可变大小A取决于每个块中存在多少非零。每个硬件线程负责处理相同数量的非零,并且硬件线程之间的工作分配由硬件自动完成。原始硬件的目标是32位浮点精度和矩阵的所有接口A、B和C具有32位宽。我们现在部署整数精度8、4和2比特,这意味着重要的考虑是比特打包。FPGA实现工具不支持具有子字节宽度的硬件AXI接口。观察稀疏矩阵A,我们可以将我们的子字节元素打包成32位元素,但这导致重要的权衡。我们使用的CSR格式意味着任何非零的子字节元素将被打包成一个非零的32位字,J. Nunez-Yanez和M. 侯赛纳巴迪阵列12(2021)1001016见图4。 GEMM平铺矢量化和SPMM平铺流硬件。图五. 主GEMM内核。需要被加速器处理。如果我们遵循这个策略,被稀疏化到99%的子字节矩阵将被转换成压缩的32位字矩阵,其中大多数元素是非零的,将被稀释。两种可能的替代方案是降低矩阵A的打包级别(例如,从32位到8位)或使用结构修剪技术来约束修剪,从而将非零值分组在一起。本研究使用了Tensorflow,它在模型优化扩展中包含了对结构修剪的部分支持,第7节详细介绍了如何使用结构修剪来增加数据路径的宽度并提高性能。矩阵B更容易处理,因为它是一个密集矩阵,所有数据都需要处理,因此我们可以简单地打包成32位宽,以优化AXI接口上的数据传输,类似于GEMM硬件。图7显示了SPMM HLS块使用32位内部架构。2位输入精度可在8位、4位和2位工作模式之间切换。每个硬件线程都有一组接口来访问CSR格式的A矩阵数据。一个接口在到B的硬件线程之间共享密集数据附加接口用于定义稀疏矩阵A中存在的矩阵形状和非零的数量。输出由每个线程以16位精度独立生成,以避免硬件中可能的溢出6. 性能和复杂性分析为了在SPMM和GEMM硬件之间进行公平的比较,我们将两个加速器的最大矩阵大小设置为4096*4096 32位字,并获得耗尽所选FPGA Zynq7020中可用资源的硬件。这意味着由于逻辑、DSP或存储器的限制,进一步的等位性是不可能的。限制进一步并行化的资源可以是DSP块、LUT或BRAM,具体取决于设计。这个最大矩阵大小将GEMM的BW值限制为16。BH的值设置为2,因为更高的BH虽然不增加所需的BRAM的量,但它不能满足时序约束。SPMM的并行进程数设置为4。这立即表明,J. Nunez-Yanez和M. 侯赛纳巴迪阵列12(2021)1001017见图6。 GEMM硬件接口。见图7。 SPMM硬件接口。表1支持的最大矩阵大小。精 度32位8位4位2位尺寸4096 × 409616384 × 1638432768 × 3276865536 ×65536这是GEMM的优势,因为它将能够执行16*2=32并行32位操作。相比之下,SPMM仅限于对多个数据进行4次操作。这些操作中的每一个都乘以4、8或16个值,这取决于精度,因此很明显,较低精度的硬件会导致更高的并行性,从而提高性能。图图9和图10比较了GEMM和SPMM对于多精度实现的资源需求。GEMM实现是BRAM受限的,并且增加并行性级别将导致没有足够的BRAM资源可用于存储矩阵B的活动块。BRAM和LUT限制SPMM,并且由于这两个约束,添加额外的执行单元是不可能的。GEMM表明,当需要支持4位和2位算术时,BRAM利用率显著增加,这是将值映射到内存块的结果,因此可以并行读取。 最后增加的2位算术支持不会导致复杂性的显著增加。SPMM的复杂度主要由数据读取和准备阶段决定,并且计算阶段的复杂度在多精度硬件中保持基本不变。SPMM和GEMM可以相乘的最大矩阵大小取决于有效精度,如表1所示。为了分析性能,我们从第3节的网络的卷积层和LSTM层获得了量化 和 修 剪 的 权 重 和 激 活 数 据 。 我 们 使 用 QKERAS 量 化 器 函 数quantized_bits用于8位和4位精度,三进制用于2位,稀疏性部署为从50%开始的多项式衰减,并且第一个见图8。 线程SPMM硬件。见图9。 GEMM资源分析。步长为0.2*end_step。end_step取决于训练数据的大小,批量大小和训练epoch的数量。 最终稀疏度被定义为值90%、95%和99%。我们使用Python为了转置,重新整形权重数据以获得完整的矩阵。这些完整的矩阵被打包成具有32位值的矩阵,该32位值包含取决于精度的可变数量的权重,并且还被处理以获得由SPMM使用的对应的CSR格式的矩阵。图11比较了GEMM和SPMM硬件作为硬件精度和稀疏度的函数的性能。圆圈表示SPMM和GEMM之间的交叉点。可以看出,SPMM优于GEMM的稀疏水平高于约J. Nunez-Yanez和M. 侯赛纳巴迪阵列12(2021)1001018见图10。 SPMM资源分析。见图11。 Zynq7020中的GEMM与SPMM硬件性能8bit、4bit和2bit精度分别为70%、90%和95%。这表明,随着精度降低,SPMM硬件的性能与GEMM硬件相比降低,这是封装开销的结果。原因在于,在SPMM中,如果1%的数字在打包后是非零的,则这些非零不太可能被打包在一起,因此非零值的数量在很大程度上保持恒定并且与精度无关。其效果是,具有较低精度的硬件效率受益于将值打包成32位字的矩阵B的较少传送,而不是受益于较低数量的操作。在第7节中,我们将研究如何通过部署Tensorflow模型优化扩展中可用的结构修剪来改进这一点。另一方面,GEMM可以很容易地增加32位字中打包值的数量,这意味着在精度较低的情况下,更多的值可以打包在一起,而不会产生开销。GEMM硬件的效率随着传输次数的减少和算术运算次数的减少而在GEMM中,我们可以推断,随着支持的最大矩阵的大小增加,所需的BRAM成比例地增加,这导致必须减少BW值,BW值定义了加速器中存在的计算并行度。另一方面,在一项研究中,SPMM的体系结构意味着性能不受支持的最大大小的影响,而仅受需求的限制以缓冲矩阵B和矩阵A值的一整列。这种组织意味着SPMM在大矩阵尺寸下更有效。大矩阵尺寸在神经网络领域中表现出相关性,特别是对于变压器等新架构[31]。这些高级模型试图使用卷积神经网络和注意力模型来解决长期依赖性问题,并且可以从稀疏算法中受益见图12。 结构修剪对网络精度的影响。7. 结构剪枝优化在前一节中,我们已经确定,与具有较低精度算法的密集硬件相比,由于打包开销,稀疏硬件的性能会降低量化的2位和4位值被打包成32位值,并且打包和修剪策略的性质意味着在许多情况下,在32位包中仅存在一个在GPU中也观察到这种硬件限制,并且已经提出了结构修剪或块稀疏技术来减轻它。在块稀疏中,修剪应用于可以由设计者定义的较粗糙的块大小。本工作中使用的Tensorflow 2.4.1版本支持网络密集层使用的二维权重的在本节中,我们将研究结构修剪的准确性和性能影响我们考虑一个block_size值,它定义了修剪过程中应该使用的块的高度和宽度对于所提出的SPMM架构,最佳块大小是一维的,因为它们确保处理流水线填充有有效的非零值。在三进制2位配置和32位数据路径宽度中,最佳block_size为(16,1)。类似地,quad和byte精度的最佳block_size分别为(8,1)和(4,1)。图图12研究了不同稀疏度水平的附加块稀疏度约束对网络精度的可能影响。我们观察到,对于硬件可以从中受益的block_size,对准确性没有影响,尽管对于会过度约束网络的较大block_size,这可能会显着降低。例如,我们可以在图中观察到,对于字节精度,块不应该高于(4,1),而不会对精度产生负面影响。图图13和14比较了考虑32位和8位打包值时必须由硬件处理的打包非零值的数量。较低的值意味着需要的值较少,由稀疏乘法器硬件处理,从而产生更好的性能。(1,1)情况对应于不使用块稀疏性的配置。在这种情况下,字节精度的活动值的数量对于32位和8位打包情况是相当的。这意味着更宽的数据路径不会带来性能的提高。另一方面,无花果。图13和图14示出了值为(4,1)或更高的块稀疏性显著地减少了必须由SPMM硬件处理的值。如果我们比较8位和32位打包策略的有效值的数量, 我们可以观察到32位打包明显地将待处理的值的数量减少了3-4倍比(1,1)。J. Nunez-Yanez和M. 侯赛纳巴迪阵列12(2021)1001019图13岁 结构修剪对活动8位压缩值的影响。图14个。 结构修剪对活动32位压缩值的影响。最后图图15示出了当部署块稀疏性的该附加约束时的性能以及密集和稀疏硬件。目前,Tensorflow中的结构修剪仅支持Dense 2D层,并且正在将此功能扩展到其他层。所考虑的稀疏性水平对于三进制为90%,对于四进制为95%,对于字节为99%。图15示出了尽管进行了显著的修剪,但是对于(1,1)情况,稀疏硬件优于四进制和字节情况的密集硬件,但是对于三进制情况,情况并非如此。一旦引入结构修剪,所有稀疏配置的性能都优于密集硬件。性能的提高比活动值数量的减少要温和得多。这可以由于将计算与稠密矩阵的加载重叠的架构的低密度性质,用于加载密集矩阵的接口是32位,对于更高级别的稀疏性,它成为限制性能的主要因素8. 性能建模在上一节中,我们为GEMM和SPMM提出了两种优化的架构,并分析了在同一设备中部署它们时的性能。该架构利用粗粒度和细粒度级别的并行性和多个精度级别。总的来说,我们已经观察到SPMM可以优于GEMM,稀疏度高于70%(取决于算术精度)。我们还看到,在建议的架构上部署结构修剪可以显着提高SPMM性能,而对GEMM没有影响。在本节中,我们考虑SoC中有一系列稀疏和密集加速器,我们需要分发工作负载,以便每个计算资源都可以尽可能早地完成任务。工作负载由多个网络图15. 32位硬件的结构修剪性能。图16. 密集的性能依赖关系。层具有不同的形状、稀疏水平和算术精度,因此优选的配置取决于层。影响这种工作负载平衡的变量是:矩阵大小和形状,稀疏水平,结构修剪和算术精度。为了实现工作负载平衡,我们推导出性能模型,可以使用的调度程序来计算最佳细分的工作。我们的目标在获得简单的模型,可用于在运行时分工。可以使用Xilinx工具集中提供的性能评估导出分析模型。然而,这些模型往往低估了内存访问的影响另一种方法是获得测量值并使用多个线性回归进行推导,其中多个自变量。8.1. GEMM模型性能模型由被乘以的矩阵的大小定义。不同的算术精度导致不同级别的32位值的打包,因此精度对性能的影响已经在打包矩阵大小中考虑。为了推导性能模型,我们在图中绘制了不同矩阵数据的执行时间。十六岁该图没有显示任何曲率,表明关系是线性的。另一方面,非平行线表示产品术语或解释变量或自变量之间的相互作用。一般方程如Eq.(一). 我们进行多次测量并解决线性回归问题,以获得系数值A、B和C以及常数D,百分误差为2.86%。���=A×������������������������������������������������������������������J. Nunez-Yanez和M. 侯赛纳巴迪阵列12(2021)10010110图17. 密集模型性能错误。图18. 稀疏模型性能错误。���= 0.020063584 ×���������������������������������+0.000482719 × − 0.043234957���������������������������������(二)图图18示出了该简单模型对于对应于不同大小的矩阵的不同测试点的准确性。观测到的平均百分误差为5.5%。9. 结论和今后的工作在本文中,我们研究了深度修剪和量化对运动检测应用程序的影响,该应用程序使用卷积,LSTM和具有多个头的密集层以及从加速度计捕获的数据。初步结果表明,在深度量化和修剪LSTM层的情况下,在限制精度下降方面非常有效。然后,我们提出了用于低成本FPGA的加速硬件,用于适合执行密集、LSTM和卷积运算的密集和稀疏矩阵多精度乘法器。结果表明,稀疏的硬件不能部署相同级别的并行性的密集硬件在同一级别的资源使用。然而,修剪使稀疏运算符的性能优于密集乘法器。这些硬件加速器与在资源受限设备中部署大型神经网络相关,这些设备不太适合于低功耗模型。在Cowllow模型中,存在用于单个神经元的专用硬件,允许非常高的性能,但具有高硬件要求。此外,在一个卷积模型中,如果某些层需要比其他层更长的处理时间(例如,递归与卷积),整个管道可能会停止。我们的方法适用于混合软件-硬件神经网络,其中标准微处理器选择GEMM
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 5
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Java集合ArrayList实现字符串管理及效果展示
- 实现2D3D相机拾取射线的关键技术
- LiveLy-公寓管理门户:创新体验与技术实现
- 易语言打造的快捷禁止程序运行小工具
- Microgateway核心:实现配置和插件的主端口转发
- 掌握Java基本操作:增删查改入门代码详解
- Apache Tomcat 7.0.109 Windows版下载指南
- Qt实现文件系统浏览器界面设计与功能开发
- ReactJS新手实验:搭建与运行教程
- 探索生成艺术:几个月创意Processing实验
- Django框架下Cisco IOx平台实战开发案例源码解析
- 在Linux环境下配置Java版VTK开发环境
- 29街网上城市公司网站系统v1.0:企业建站全面解决方案
- WordPress CMB2插件的Suggest字段类型使用教程
- TCP协议实现的Java桌面聊天客户端应用
- ANR-WatchDog: 检测Android应用无响应并报告异常
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功