专利名称:面向卷积神经网络的DSP紧缩字乘法方法及系统
专利类型:发明专利
专利申请号:CN202110802058.8
专利申请(专利权)人:上海交通大学
权利人地址:上海市闵行区东川路800号
专利发明(设计)人:莫志文,杜培栋,郭梦原,王琴,景乃锋
专利摘要:本发明提供了一种面向卷积神经网络的DSP紧缩字乘法方法及系统,设计出一种基于FPGA上DSP资源实现的紧缩字乘法计算模式。紧缩字乘法即利用数据量化的低比特优势,在一个DSP内部实现多个四比特乘法,提高资源的利用效率。此外,由于FPGA对DSP单元之间的级联进行了专门优化,因此本发明又利用DSP单元的级联实现了紧缩字乘累加,即完成多次紧缩字乘法并累加后,再从紧缩字乘积中提取出运算结果。本发明充分利用了DSP的特性,提高了DSP的利用效率,有利于系统能效比的优化。
主权利要求:
1.一种面向卷积神经网络的DSP紧缩字乘法方法,其特征在于,所述方法包括如下步骤:步骤S1:将乘累加单元的四个输入,两个权重和两个输入激活值通过移位‑加法模块分别打包;
步骤S2:以紧缩字的形式作为DSP的操作数;
步骤S3:使用DSP同时完成乘法操作;
步骤S4:从DSP的输出结果中提取乘法操作的计算结果,完成卷积乘累加后的四个部分和;将部分和作进一步的累加操作,完成完整的卷积运算;
所述步骤S1中权重为两个4bits,输入激活值为两个4bits;
所述步骤S3中使用一个DSP完成四个乘法操作。
2.根据权利要求1所述的面向卷积神经网络的DSP紧缩字乘法方法,其特征在于,所述步骤S2中操作数的个数为两个。
3.根据权利要求1所述的面向卷积神经网络的DSP紧缩字乘法方法,其特征在于,所述方法用于实现卷积神经网络中乘累加运算在FPGA上的高效映射;同一个输入激活值需要和两个不同的权重相乘,视为输出通道并行,且并行度为2;同一个权重需要和两个不同的激活值相乘,视为卷积窗并行,并行度也为2。
4.根据权利要求1所述的面向卷积神经网络的DSP紧缩字乘法方法,其特征在于,每个乘法的计算结果在紧缩字乘积中占11bits,在完成多次乘累加操作后再进行计算结果的提取。
5.一种面向卷积神经网络的DSP紧缩字乘法系统,其特征在于,所述系统包括如下模块:模块M1:将权重和输入激活值分别打包;
模块M2:以紧缩字的形式作为DSP的操作数;
模块M3:使用DSP同时完成乘法操作;
模块M4:从DSP的输出结果中提取乘法操作的计算结果,完成卷积乘累加后的四个部分和;将部分和作进一步的累加操作,完成完整的卷积运算;
所述模块M1中权重为两个4bits,输入激活值为两个4bits;
所述模块M2中操作数的个数为两个;
所述模块M3中使用一个DSP完成四个乘法操作。
6.根据权利要求5所述的面向卷积神经网络的DSP紧缩字乘法系统,其特征在于,所述系统用于实现卷积神经网络中乘累加运算在FPGA上的高效映射;同一个输入激活值需要和两个不同的权重相乘,视为输出通道并行,且并行度为2;同一个权重需要和两个不同的激活值相乘,视为卷积窗并行,并行度也为2。
7.根据权利要求5所述的面向卷积神经网络的DSP紧缩字乘法系统,其特征在于,每个乘法的计算结果在紧缩字乘积中占11bits,在完成多次乘累加操作后再进行计算结果的提取。 说明书 : 面向卷积神经网络的DSP紧缩字乘法方法及系统技术领域[0001] 本发明涉及卷积神经网络的技术领域,具体地,涉及面向卷积神经网络的DSP紧缩字乘法方法及系统。背景技术[0002] 神经网络技术是人工智能的一个重要分支。大量神经元通过互联,形成类似人脑的层级结构,这个层级结构便是神经网络,一般由输入层、输出层和若干隐含层构成。[0003] 神经网络精度高、学习能力强,在图像语音识别、模式识别等领域有着广泛且重要的应用。神经网络种类较多,有BP神经网络、卷积神经网络(CNN)、循环神经网络(RNN)等。其中,卷积神经网络由于其权重共享、提取区域特征等特性在图像识别领域有着重要的地位。在大规模视觉挑战赛(ILSVRC)中,图像识别的最好成绩都是由卷积神经网络相关算法创造的。[0004] 然而,卷积神经网络是计算密集型和参数密集型的模型,对硬件的计算能力和储存能力都提出了很高的要求。又考虑到应用的实时性和安全性的要求,模型的前向推断往往被部署于靠近数据源头的边缘端。边缘端是能量受限和资源受限的系统,这给卷积神经网络在边缘端高效执行带来了挑战。如何在保证模型精度的前提下,提高吞吐率,降低功耗和资源使用,成为业界最为关注的话题。[0005] 为了突破卷积神经网络在边缘端部署的瓶颈,目前的研究热点主要集中在算法和硬件设计两个方面:在算法层面,在保证精度或者仅存在很小精度损失的前提下,对原始模型进行压缩,如模型量化将权重和激活值进行低比特量化;在硬件层面,实现符合卷积神经网络运算模式的高效专用加速度设计,满足边缘端部署的要求。其中,FPGA支持细粒度设计,可重构性较好,便于各类卷积神经网络模型的快速部署。[0006] 卷积神经网络的核心运算(即乘累加操作)常被映射到FPGA上的DSP单元中。但是,FPGA平台上的DSP支持27bits×18bits的乘法,若权重和激活值均量化为四比特,卷积计算中仅需要执行4bits×4bits的乘法。在这种情况下,如果不采用专门的硬件设计,EDA工具通常会把硬件描述语言中的一个乘法操作映射到一个DSP上,造成DSP资源的极大浪费,不仅影响加速器的能效比,而且使DSP资源成为网络在边缘端部署的制约条件。[0007] 在公开号为:CN101976044A的专利文献中公开了一种基于神经网络的风电系统建模及DSP实现方法。该方法通过分析风力发电系统和神经网络的工作机理,确定其输入和输出信号;其输入信号包括风速和浆距角,输出信号有功率,风轮转速和风轮扭矩,利用BP神经网络与风力发电系统结合,通过建立BP神经网络模型,把隐层数设为足够大可以达到任意的训练精度确定每层的权值,能很好地拟合建模对象的性能;同时为了实现其应用的可能性。[0008] 因此,我们提出了紧缩字乘法的计算模式,将多个低比特乘法映射到一个DSP单元中,提高硬件资源的利用率和模型部署的能效比。发明内容[0009] 针对现有技术中的缺陷,本发明的目的是提供一种面向卷积神经网络的DSP紧缩字乘法方法及系统。[0010] 根据本发明提供的一种面向卷积神经网络的DSP紧缩字乘法方法,所述方法包括如下步骤:[0011] 步骤S1:将乘累加单元的四个输入,两个权重和两个输入激活值通过移位‑加法模块分别打包;[0012] 步骤S2:以紧缩字的形式作为DSP的操作数;[0013] 步骤S3:使用DSP同时完成乘法操作;[0014] 步骤S4:从DSP的输出结果中提取乘法操作的计算结果,完成卷积乘累加后的四个部分和;将部分和作进一步的累加操作,完成完整的卷积运算。[0015] 优选地,所述步骤S1中权重为两个4bits,输入激活值为两个4bits。[0016] 优选地,所述步骤S2中操作数的个数为两个。[0017] 优选地,所述步骤S3中使用一个DSP完成四个乘法操作。[0018] 优选地,所述方法用于实现卷积神经网络中乘累加运算在FPGA上的高效映射;同一个输入激活值需要和两个不同的权重相乘,视为输出通道并行,且并行度为2;同一个权重需要和两个不同的激活值相乘,视为卷积窗并行,并行度也为2。[0019] 优选地,每个乘法的计算结果在紧缩字乘积中占11bits,在完成多次乘累加操作后再进行计算结果的提取。[0020] 本发明还提供一种面向卷积神经网络的DSP紧缩字乘法系统,所述系统包括如下模块:[0021] 模块M1:将权重和输入激活值分别打包;[0022] 模块M2:以紧缩字的形式作为DSP的操作数;[0023] 模块M3:使用DSP同时完成乘法操作;[0024] 模块M4:乘法操作的计算结果由DSP的输出结果中提取。[0025] 优选地,所述模块M1中权重为两个4bits,输入激活值为两个4bits;[0026] 所述模块M2中操作数的个数为两个;[0027] 所述模块M3中使用一个DSP完成四个乘法操作。[0028] 优选地,所述系统用于实现卷积神经网络中乘累加运算在FPGA上的高效映射;同一个输入激活值需要和两个不同的权重相乘,视为输出通道并行,且并行度为2;同一个权重需要和两个不同的激活值相乘,视为卷积窗并行,并行度也为2。[0029] 优选地,每个乘法的计算结果在紧缩字乘积中占11bits,在完成多次乘累加操作后再进行计算结果的提取。[0030] 与现有技术相比,本发明具有如下的有益效果:[0031] 1、本发明利用模型量化后低位宽的特性,基于现场可编程门阵列(FPGA)的数字信号处理单元(DSP),设计了紧缩字乘法的计算模式,用以提高卷积神经网络在边缘端部署的能效比;[0032] 2、本发明充分利用了DSP的特性,提高了DSP的利用效率,有利于系统能效比的优化;[0033] 3、本发明提出的卷积运算链路可以充分利用FPGA内部的优化电路,便于布局布线,有利于改善性能和功耗。附图说明[0034] 通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:[0035] 图1为本发明的流程图;[0036] 图2为本发明紧缩字乘法运算流程图;[0037] 图3为本发明基于DSP的一维卷积运算链路结构。具体实施方式[0038] 下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。[0039] 本发明提供一种面向卷积神经网络的DSP紧缩字乘法方法,紧缩字乘法的计算模式即将两个4bits权重和两个4bits输入激活值分别打包,以紧缩字的形式作为DSP的两个操作数,从而使用一个DSP同时完成四个乘法操作。四个乘法操作的计算结果可由DSP的输出结果中提取。[0040] 参照图1和图2,,将一个4bits输入激活值a0左移22位后与另一个4btis激活值a1相加,作为DSP的一个操作数;将一个4bits权重w0左移11位后与另一个4btis权重w1相加,作为DSP的另一个操作数。则与图1相对应,DSP执行的乘法操作如公式(1)所示,其中P表示乘法操作的结果。[0041] P=(a0<<22+a1)(w0<<11+w1)[0042] =(w1a1)+(w0a1<<11)+(w1a0<<22)+(w0a0<<33)(1)[0043] 由于有符号的4bits权重与无符号的4bits输入激活值的乘积为8bits,又考虑到补码对以上运算流程的影响,可按照公式(2)所示,从紧缩字乘积P中进行位选提取四个乘法操作的计算结果,即P[10:0]、P[21:11]+P[10]、P[32:22]+P[21]和P[43:33]+P[32]。[0044][0045] 基于以上的计算模式,同一个输入激活值需要和两个不同的权重相乘,可以视为输出通道并行,且并行度为2;同一个权重需要和两个不同的激活值相乘,可以视为卷积窗并行,并行度也为2。因此,紧缩字乘法的计算模式实现了卷积窗并行和输出通道并行两种并行方案的组合,总并行度为4。[0046] 每个乘法的计算结果在紧缩字乘积中占11bits,又考虑到4bits乘法的乘积仅为8bits,因此可以在完成多次乘累加操作后再进行计算结果的提取,则公式(1)和公式(2)可改写为公式(3)和公式(4),其中 分别表示第i组输入中的第一个输入激活值、第二个输入激活值、第一个权重和第二个权重。[0047][0048][0049] 式中,N为累加的乘积数目。在当前计算模式下,N的取值范围推导如下:[0050] 一个m位的有符号数的范围是[‑2m‑1,2m‑1‑1],一个m位的无符号数的范围是[0,2m‑m‑1 m m‑1 m1],则其乘积范围是[‑2 (2‑1),(2 ‑1)(2‑1)]。N个这样的乘积累加后的取值范围是[‑m‑1 m m‑1 mN2 (2‑1),N(2 ‑1)(2‑1)],又如公式(4)所示,由于补码的影响,在紧缩字乘积里其实际m‑1 m m‑1 m取值范围是[‑N2 (2 ‑1)‑1,N(2 ‑1)(2‑1)‑1]。若要将其表示为一个q位的有符号数,则需满足公式(5)。[0051][0052] 基于以上分析,本发明提出了基于DSP的一维卷积运算链路结构。参照图3,通过独立的加法器完成两个权重数据的打包,两个输入激活值的打包则由DSP内部的27bits预加器实现;数据打包完成后,利用DSP内部的乘法器完成紧缩字乘法操作;随后,利用DSP内部的累加器将紧缩字乘积与上一级DSP输出的部分和累加,得到新的部分和作为下一级DSP的输入。待完成整个链路的累加后,按照公式4完成紧缩字乘积的拆分,得到4个部分和,作为模块的输出。[0053] 该结构可以充分利用DSP内部的资源,将紧缩字乘法的大部分操作映射到DSP内部,减少了FPGA上逻辑资源的使用。此外,FPGA内部的DSP以阵列的方式排布,且FPGA对DSP单元之间的级联进行了专门优化,因此采用本发明提出的卷积运算链路可以充分利用FPGA内部的优化电路,便于布局布线,有利于改善性能和功耗。[0054] 此外,为了进一步提高吞吐率,本发明在运算链路中引入流水线结构,流水线级数等于DSP单元的数量N。由于卷积运算的运算量巨大,流水线启动和冷却的时钟周期可忽略不计,因此在实际分析中可近似等效为N个DSP单元并行,实现卷积核内乘法并行或者输入通道并行的并行方案。从三维卷积的角度分析,卷积核内乘法并行和输入通道并行的共性较多,考虑到后续数据流的设计,本发明采用一维卷积运算链路实现输入通道并行。结合紧缩字乘法实现的并行方案,一维卷积运算链路可同时实现并行度为2的卷积窗并行,并行度为2的输出通道并行和并行度为N的输入通道并行。[0055] 针对卷积神经网络中的乘累加操作,本发明利用数据量化的低比特优势,设计了紧缩字乘法的计算模式,在一个DSP内部实现多个四比特乘法。本发明又利用FPGA内部针对DSP链路的特有结构实现了紧缩字乘累加。该设计充分利用了DSP的特性,提高了DSP的利用效率,有利于系统的并行度和能效比的优化。[0056] 本发明还提供一种面向卷积神经网络的DSP紧缩字乘法系统,所述系统包括如下模块:[0057] 模块M1:将权重和输入激活值分别打包;权重为两个4bits,输入激活值为两个4bits。[0058] 模块M2:以紧缩字的形式作为DSP的操作数;操作数的个数为两个。[0059] 模块M3:使用DSP同时完成乘法操作;使用一个DSP完成四个乘法操作。[0060] 模块M4:乘法操作的计算结果由DSP的输出结果中提取。[0061] 系统用于实现卷积神经网络中乘累加运算在FPGA上的高效映射;同一个输入激活值需要和两个不同的权重相乘,视为输出通道并行,且并行度为2;同一个权重需要和两个不同的激活值相乘,视为卷积窗并行,并行度也为2。每个乘法的计算结果在紧缩字乘积中占11bits,在完成多次乘累加操作后再进行计算结果的提取。[0062] 本发明利用模型量化后低位宽的特性,基于现场可编程门阵列(FPGA)的数字信号处理单元(DSP),设计了紧缩字乘法的计算模式,用以提高卷积神经网络在边缘端部署的能效比;充分利用了DSP的特性,提高了DSP的利用效率,有利于系统能效比的优化;提出的卷积运算链路可以充分利用FPGA内部的优化电路,便于布局布线,有利于改善性能和功耗。[0063] 本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统及其各个装置、模块、单元以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统及其各个装置、模块、单元以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同功能。所以,本发明提供的系统及其各项装置、模块、单元可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置、模块、单元也可以视为硬件部件内的结构;也可以将用于实现各种功能的装置、模块、单元视为既可以是实现方法的软件模块又可以是硬件部件内的结构。[0064] 以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。
专利地区:上海
专利申请日期:2021-07-15
专利公开日期:2024-07-26
专利公告号:CN113568597B