CN115994561A - 卷积神经网络加速方法、系统、存储介质、装置及设备 - Google Patents
卷积神经网络加速方法、系统、存储介质、装置及设备 Download PDFInfo
- Publication number
- CN115994561A CN115994561A CN202310279563.8A CN202310279563A CN115994561A CN 115994561 A CN115994561 A CN 115994561A CN 202310279563 A CN202310279563 A CN 202310279563A CN 115994561 A CN115994561 A CN 115994561A
- Authority
- CN
- China
- Prior art keywords
- convolution
- calculation
- splicing
- weight
- feature map
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Complex Calculations (AREA)
Abstract
本发明提供了一种卷积神经网络加速方法、系统、存储介质、装置及设备,涉及神经网络技术领域,方法包括:卷积神经网络加速方法,包括以下步骤:对卷积神经网络进行无符号整数量化,得到量化后的特征图和卷积核;将卷积核分解为多个条形卷积核,并根据卷积原理相应将特征图分解为多个特征图组;将条形卷积核中多个权重进行拼接,得到拼接权重,并将对应的特征图组中多个激活值进行拼接,得到拼接激活值;将拼接权重与拼接激活值输入至无符号乘加计算单元进行乘加计算,得到计算结果,并且直到特征图的所有激活值计算完成,基于所有计算结果得到完整卷积结果。本发明有效提高了加速器的计算资源利用率,提升了卷积计算的效率。
Description
技术领域
本发明涉及神经网络技术领域,尤其涉及一种卷积神经网络加速方法、系统、存储介质、装置及设备。
背景技术
近年来,卷积神经网络在计算机视觉领域取得了巨大的成功,例如,图像分类、目标检测、图像分割等。然而,随着神经网络的发展,网络的准确率越来越高,但网络的参数量也越来越大,如此庞大的参数量使得卷积神经网络的硬件实现变得困难,量化是一种常用压缩技术,它可以减少存储资源消耗和加快推理速度。
卷积神经网络中最主要的操作为乘加操作,目前大多数硬件加速器的乘加计算单元具有高位宽的特点(例如32位或64位),而神经网络通常被量化为8比特或更少的比特,当用高位宽的乘加单元计算神经网络的乘加操作时,乘加单元的大多数位宽都没有被利用,浪费了宝贵的计算资源。神经网络量化发展迅速,数据可以被量化为更少的位宽,当处理更低的位宽或内置的乘加单元位宽更宽时,浪费变得更加严重。
例如在FPGA(Field Programmable Gate Array,现场可编程门阵列)中的DSP(乘加单元)是执行乘加操作的重要且稀缺资源,不同提供商的DSP设计方案不同,但都有一个共同的特性——大位宽。有提供商架构中的DSP48E2模块内部有一个18×27bit(比特)的乘法器,一个27bit的预加法器和一个48bit的累加器。神经网络领域的应用通常会对数据做8位或以下的量化压缩,这对于DSP48E2这样的DSP模块,会造成超过一半的位宽没有得到利用。为了能够利用DSP大位宽的特性,可以在单个DSP模块中封装进多个并行乘法,例如一个DSP可以计算两个8bit乘法,其中被乘数是共享的。这些封装打包并行计算方法大多基于有符号整数,不但需要有符号数乘法器和一些额外的硬件资源用于数据的打包组合,而且需要对计算结果进行纠错。此外,普通打包计算的方法没有利用乘法在垂直方向相加的特性和卷积操作中存在加法的特性,对计算资源的利用率还有提升空间。
针对现有硬件加速器大位宽乘加单元和神经网络量化后的低位宽数据不匹配,导致需要消耗更多资源的问题,目前尚未有有效的解决方法。
发明内容
有鉴于此,本发明的目的在于提出一种卷积神经网络加速方法、系统、存储介质、装置及设备,用以解决现有技术中硬件加速器大位宽乘加单元和神经网络量化后的低位宽数据不匹配,导致需要消耗更多资源的问题。
基于上述目的,本发明提供了一种卷积神经网络加速方法,包括以下步骤:
对卷积神经网络进行无符号整数量化,得到量化后的特征图和卷积核;
将卷积核分解为多个条形卷积核,并根据卷积原理相应将特征图分解为多个特征图组;
将条形卷积核中多个权重进行拼接,得到拼接权重,并将对应的特征图组中多个激活值进行拼接,得到拼接激活值;
将拼接权重与拼接激活值输入至无符号乘加计算单元进行乘加计算,得到计算结果,并且直到特征图的所有激活值计算完成,基于所有计算结果得到完整卷积结果。
在一些实施例中,将卷积核分解为多个条形卷积核包括:
对卷积核在长度或宽度方向上进行分解,得到多个条形卷积核。
在一些实施例中,对卷积核在长度或宽度方向上进行分解,得到多个条形卷积核包括:
将卷积核在长度或宽度方向上分解为一维数据,得到多个一维卷积核。
在一些实施例中,方法还包括:
依次按照多个条形卷积核并行、多个输入通道并行、多个输出通道并行以及特征图的多行或多列输出并行的方式对特征图进行卷积计算。
在一些实施例中,将条形卷积核中多个权重进行拼接,得到拼接权重,并将对应的特征图组中多个激活值进行拼接,得到拼接激活值进一步包括:
基于下述公式计算得到拼接权重和拼接激活值:
其中,p表示允许拼接的最多权重数,q表示允许拼接的最多激活值数,P表示无符号乘加计算单元的权重输入端的位宽,Q表示无符号乘加计算单元的激活值输入端的位宽,E表示当前权重拼接时的左移位数,g表示保护位的位宽,M表示输入通道的并行数量。
在一些实施例中,方法还包括:
将当前权重的位宽、对应的当前激活值的位宽及保护位的位宽相加,得到左移位数。
在一些实施例中,基于下述权重符号转化公式计算得到权重:
w`: [-2n-1, 2n-1-1]->w: [0, 2n-1] -2n-1
其中,w`表示量化后的有符号数权重,w表示量化后的无符号整数的权重,->为指向结构体成员运算符,n为正整数。
在一些实施例中,方法还包括:
离线进行权重符号转化公式的计算,并通过加速器将量化后的无符号整数的权重进行存储。
在一些实施例中,方法还包括:
针对卷积神经网络的多个卷积层,为每个卷积层单独分配计算引擎,以实现多个卷积层的并行计算。
在一些实施例中,方法还包括:
基于每个卷积层的总计算量与层内并行度的比值得到每个卷积层计算的时钟周期数。
在一些实施例中,方法还包括:
将特征图的行数、列数、输入通道数、输出通道数以及卷积核的尺寸相乘,得到总计算量。
在一些实施例中,方法还包括:
将每个卷积层计算过程中输入通道的并行数量、输出通道的并行数量、条形卷积核的并行数量、允许拼接的最多权重数及允许拼接的最多激活值数相乘,得到层内并行度。
在一些实施例中,基于所有计算结果得到完整卷积结果包括:
将所有计算结果相加,得到完整卷积结果。
本发明的另一方面,还提供了一种卷积神经网络加速系统,包括:
量化模块,配置用于对卷积神经网络进行无符号整数量化,得到量化后的特征图和卷积核;
分解模块,配置用于将卷积核分解为多个条形卷积核,并根据卷积原理相应将特征图分解为多个特征图组;
拼接模块,配置用于将条形卷积核中多个权重进行拼接,得到拼接权重,并将对应的特征图组中多个激活值进行拼接,得到拼接激活值;以及
计算模块,配置用于将拼接权重与拼接激活值输入至无符号乘加计算单元进行乘加计算,得到计算结果,并且直到特征图的所有激活值计算完成,基于所有计算结果得到完整卷积结果。
本发明的又一方面,还提供了一种计算机可读存储介质,存储有计算机程序指令,该计算机程序指令被处理器执行时实现上述方法。
本发明的又一方面,还提供了一种加速装置,包括存储器和处理器,存储器中存储有计算机程序,该计算机程序被处理器执行时执行上述方法。
本发明的再一方面,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该计算机程序被处理器执行时执行上述方法。
本发明至少具有以下有益技术效果:
本发明的卷积神经网络加速方法,通过对卷积神经网络进行无符号整数量化,将特征图的激活值和卷积核的权重均量化为无符号整数,并将卷积核分解为条形卷积核来匹配无符号乘加计算单元,并将多个权重和多个激活值分别拼接,使该大位宽的无符号乘加计算单元可以一次性对多个权重和多个激活值进行乘加计算,有效解决了现有技术中大位宽的乘加计算单元只能对一个权重和一个激活值进行乘加计算导致资源浪费的问题,有效提高了计算资源利用率,提升了加速器卷积计算的效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。
图1为根据本发明实施例提供的卷积神经网络加速方法的示意图;
图2为根据本发明实施例提供的有符号数和无符号数打包进行乘加计算的对比示意图;
图3为根据本发明实施例提供的Ultranet卷积神经网络的结构示意图;
图4为根据本发明实施例提供的图2中有符号数运算纠错部分的结构示意图;
图5为根据本发明实施例提供的3×3大小的卷积核与3×3大小的特征图的分解结构示意图;
图6为根据本发明实施例提供的3×3大小的卷积核与4×4大小的特征图的分解结构示意图;
图7为根据本发明实施例提供的拼接打包及并行计算卷积的示意图;
图8为根据本发明实施例提供的L×M×N个DSP组成的计算引擎的并行计算示意图;
图9为根据本发明实施例提供的卷积神经网络加速系统的示意图;
图10为根据本发明实施例提供的实现卷积神经网络加速方法的计算机可读存储介质的示意图;
图11为根据本发明实施例提供的执行卷积神经网络加速方法的计算机设备的硬件结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。
需要说明的是,本发明实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称的非相同的实体或者非相同的参量,可见“第一”“第二”仅为了表述的方便,不应理解为对本发明实施例的限定。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备固有的其他步骤或单元。
基于上述目的,本发明实施例的第一个方面,提出了一种卷积神经网络加速方法的实施例。图1示出的是本发明提供的卷积神经网络加速方法的实施例的示意图。如图1所示,本发明实施例包括如下步骤:
步骤S10、对卷积神经网络进行无符号整数量化,得到量化后的特征图和卷积核;
步骤S20、将卷积核分解为多个条形卷积核,并根据卷积原理相应将特征图分解为多个特征图组;
步骤S30、将条形卷积核中多个权重进行拼接,得到拼接权重,并将对应的特征图组中多个激活值进行拼接,得到拼接激活值;
步骤S40、将拼接权重与拼接激活值输入至无符号乘加计算单元进行乘加计算,得到计算结果,并且直到特征图的所有激活值计算完成,基于所有计算结果得到完整卷积结果。
本发明实施例的卷积神经网络加速方法,通过对卷积神经网络进行无符号整数量化,将特征图的激活值和卷积核的权重均量化为无符号整数,并将卷积核分解为条形卷积核来匹配无符号乘加计算单元,并将多个权重和多个激活值分别拼接,使该大位宽的无符号乘加计算单元可以一次性对多个权重和多个激活值进行乘加计算,有效解决了现有技术中大位宽的乘加计算单元只能对一个权重和一个激活值进行乘加计算导致资源浪费的问题,有效提高了计算资源利用率,提升了加速器卷积计算的效率。
在一些实施例中,基于下述权重符号转化公式计算得到权重:
w`: [-2n-1, 2n-1-1]->w: [0, 2n-1] -2n-1
其中,w`表示量化后的有符号数权重,w表示量化后的无符号整数的权重,->为指向结构体成员运算符,n为正整数。
在一些实施例中,方法还包括:离线进行权重符号转化公式的计算,并通过加速器将量化后的无符号整数的权重进行存储。
具体地,卷积神经网络中的特征图经过激活函数激活后,激活值全为非负数,容易量化为无符号正整数,非对称量化需要额外的转换操作才能获得正确结果,不利于实现高吞吐量,因此采用更简单有效的对称量化方式,经过量化后,所有激活值a量化为m比特非负整数。
目前,卷积核权重通常包含正数和负数,无法像激活值一样直接将权重量化为非负无符号整数,在进行卷积计算时,采用有符号数权重存在以下3个缺点:(1)由于有符号数的存在,需要采用有符号数乘法器,有符号数乘法器比无符号数乘法器更复杂;(2)对有符号数进行拼接需要使用加法,不能使用简单的拼接,需要消耗更多的资源:(3)打包的有符号数在进行乘法计算后,需要对结果进行纠错。通过以下例子来说明有符号数打包计算的缺点:
图2示出了有符号数和无符号数打包进行乘加计算的对比示意图。如图2所示,假设要打包2个2bit有符号数乘数w0=2’b01(十进制的1)和w1=2’b11(十进制的-1),w0和w1之间有3个0,由于是有符号数,只能使用加法w0<<5+w1=7’b0000001+7’b1111111=7’b0011111,若采用拼接{w0,3{0},w1}则得到7’b0100011,要打包的两个无符号被乘数a0=2’b01(十进制1) ,a1=2’b10(十进制2),加法打包操作为a1<<5+a0=7’b1000001, 拼接操作为{a1,3{0},a0}=7’b1000001,想要得到三个结果a1w0、a0w0+a1w1、a0w1。将打包后的数做乘法,结果如图1所示,当w0和w1为有符号数时,采用拼接得到结果是完全错误的,无论使用拼接还是移位加法,打包的目的都是得到w0×25+w1,在进行加法操作时需要根据w1的符号位对w1进行扩展,当w1为负数时,拼接操作不能直接实现 w0×25+w1。当w0和w1为有符号数时,采用加法操作进行打包,得到的乘法结果需要纠错,纠错操作为所需bit段加低一bit的值,这个误差在计算乘法时符号位引起的。如图2右侧所示,当w0和w1为正数时,w0×25+w1={w0,3{0},w1}= w0<<5+w1,简单的拼接操作就可以实现打包,且乘法的计算结果是正确的,不存在符号位污染,直接可以截取到正确的输出结果。
为了后续采用更简单的无符号数乘法计算,需要将有符号数权重w`转换为无符号数w,具体转换过程如下:
w`: [-2n-1, 2n-1-1]->w: [0, 2n-1] -2n-1
其中,->为指向结构体成员运算符,用处是使用一个指向结构体或对象的指针访问其内成员。
以上有符号值域转化为无符号值域,权重w`已知,因此转换操作可以离线进行,这不会产生运行时间成本,加速器可以直接存储转换后的非负值整数权重。根据下式可知,利用无符号数w替代有符号数w`进行计算时精度几乎无损,且仅需要无符号数乘法器即可,移位操作和减法操作在电路中比有符号数需要的纠错电路更容易实现,消耗资源更少。
aw`=a(w-2n-1)=aw-a2n-1= aw –a<<(n-1)
图3示出了Ultranet卷积神经网络的结构示意图。如图3所示,以Ultranet卷积神经网络(无人机目标检测网络)为例,Ultranet包含8层3×3卷积,一层逐点卷积,4个最大池化层,最后利用一个识别器进行目标检测,共有约210k个权重参数,处理一张320×160的图片需要约200M次乘加操作,在训练过程中进行量化,即一边量化一边训练,这样可以在低比特数据精度下保证高准确率,激活值被量化为4bit无符号数,权重被量化为4bit有符号数。
图4示出了图2中有符号数运算纠错部分的结构示意图。如图4所示,在用有符号数进行运算时,如果是正数不需要纠错,如果是负数则需要根据符号位进行纠错处理,而无符号数不需要纠错,因此对权重进行从有符号域转换到无符号域的转换(w`: [-8, 7] ->w:[0, 15] -8),网络最终在无人机目标检测数据集上实现了0.703的IoU(一个测量标准)。
在一些实施例中,将卷积核分解为多个条形卷积核包括:对卷积核在长度或宽度方向上进行分解,得到多个条形卷积核。
在一些实施例中,对卷积核在长度或宽度方向上进行分解,得到多个条形卷积核包括:将卷积核在长度或宽度方向上分解为一维数据,得到多个一维卷积核。
具体地,将方形k×k卷积核分解为k个1×k的条形卷积核,每个条形卷积核当做一维卷积核进行处理。方形卷积核是卷积神经网络普遍采用的卷积核形状,这也是卷积神经网络中最常用的卷积核之一,由于要采用打包并行计算的计算方法,因此需要方形卷积核进行分解,方形k×k卷积核分解为k个1×k的条形卷积核,分解为k条卷积核,将每个条形卷积核分别进行卷积计算后的结果相加即为最终结果,不会对准确率有任何影响。
图5示出了3×3大小的卷积核与3×3大小的特征图的分解结构示意图。图6示出了3×3大小的卷积核与4×4大小的特征图的分解结构示意图。如图5-6所示,为了简单说明分解卷积核和计算方法,无填充(padding),将3×3卷积核分解为3个条形的1×3卷积核,分别计算3个条形卷积核的卷积结果,然后相加可以得到3×3卷积核的卷积结果,两种计算方法得到的结果相同。
在一些实施例中,将条形卷积核中多个权重进行拼接,得到拼接权重,并将对应的特征图组中多个激活值进行拼接,得到拼接激活值进一步包括:
基于下述公式计算得到拼接权重和拼接激活值:
其中,p表示允许拼接的最多权重数,q表示允许拼接的最多激活值数,P表示无符号乘加计算单元的权重输入端的位宽,Q表示无符号乘加计算单元的激活值输入端的位宽,E表示当前权重拼接时的左移位数,g表示保护位的位宽,M表示输入通道的并行数量。
在一些实施例中,方法还包括:将当前权重的位宽、对应的当前激活值的位宽及保护位的位宽相加,得到左移位数。
在一些实施例中,方法还包括:依次按照多个条形卷积核并行、多个输入通道并行、多个输出通道并行以及特征图的多行或多列输出并行的方式对特征图进行卷积计算。
具体地,按照条形卷积核的卷积方式进行卷积计算,其中一个多比特位宽的无符号数乘法计算单元可以一次性打包并行计算多个量化为低比特位宽正整数卷积乘加操作且无须纠错,多条卷积核并行、多个输入通道并行,多个输出通道并行,多行或多列输出并行来提高并行度。
每个计算单元可以打包计算多个卷积的乘加操作,将多个量化的激活值进行组合, 将多个量化的权重进行组合,两者的组合方向要相反,例如激活值的组合为a0<<qE +a1<<(q-1)E + aq或 {a0, … , (E-m){0}, a1, (E-m){0} , a2},权重的组合为wp<<pE +…+ w2<<2E + w1<<E + w0或 {wp, … , w2, (E-n){0}, w1, (E-n){0}, w0},<<为移位操作,E是组合时左移的位数,同时也是输出中每一段结g果的位宽,需要保证没有溢出和相邻输出段之间没有重叠部分,E=m+n+g,g为保护位的位宽。当权重为无符号数时才可以使用拼接操作也可以采用移位和加法来组合w0、w1、w2,但是当权重为有符号数时只能用加法组合w0、w1、w2,拼接操作要比移位和加法操作更简单,消耗更少资源。然后将拼接后的激活值与权重输入乘法器的输入端进行打包计算,由于激活值和权重都是无符号数不需要根据符号位进行纠错,当权重是有符号数时需要根据符号位进行纠错,截取乘法器输出结果中相应的比特位进行与下次计算结果中相应的比特位相加可以得到正确的完整卷积结果,这样依次计算完成所有的激活值。输入权重位宽n,输入激活值位宽为m,乘法器的两个输入端位宽分别为P和Q,保护位的位宽为g,允许打包的最大权重数和最大激活值数分别为p和q,输入通道并行性为M,它们之间的关系如下:
图7示出了拼接打包及并行计算卷积的示意图。如图7所示,Ultranet卷积神经网络的权重和激活值被量化为4比特无符号数,直接采用简单的拼接操作,而不采用移位加法操作。一个条形卷积核有三个参数,DSP48E2(一种无符号数乘加计算单元)的输入端口为27×18比特,如图7中(a)所示,3个权重打包拼接为一个数据,将2个激活值拼接为一个数据,考虑到输入通道维度的叠加和神经网络的容错性,假设保护位的位宽g为3,E为11,在一个DSP48E2内部实现一行卷积核并行和2个输出像素点并行。然后将拼接后的激活值与权重输入乘法器的输入端进行打包计算,拼接的权重输入到DSP的27位的输入端口,拼接的激活值输入到DSP的18位的输入端口,如图7中(b)所示,首先计算a0,a1,然后计算a2,a3,依次计算完所有输入像素点,在输入特征图有0填充的情况下,第一次计算得到第33-43比特为无效数据,22-32比特为第一个输出像素的结果,第0-10比特和第11-21为两个输出像素点的中间结果,分别与第二次计算(a2,a3)结果的22-32和33-43比特相加可以得到两个像素点。第二次计算的结果0-10比特和第11-21为两个输出像素点的中间结果,分别与第三次计算(a2,a3)结果的22-32和33-43比特相加可以得到两个像素点,依次进行可以得到所有的输出像素点。最后一次输出可以得到3个像素点,第11-21比特为最后一个像素点的结果。
L个这样的计算单元可以并行计算L个条形卷积核(L在本实施例中取3),M×N×L个计算单元并行可以计算M个输入通道、N个输出通道和L个条形卷积核,R×M×N×L个计算单元可以实现R×2行或R×2列并行(R在本实施例中取1)、M个输入通道并行、N个输出通道并行和L个条形卷积核并行。图8示出了L×M×N个DSP组成的计算引擎的并行计算示意图。如图8所示,实现了L行卷积核并行、2个输出像素点并行、M个输入通道并行、N个输出通道并行。
在一些实施例中,基于所有计算结果得到完整卷积结果包括:将所有计算结果相加,得到完整卷积结果。
具体地,累加以上实施例中对应通道的部分得到最终的输出特征图。由于加速器计算和存储资源有限,一次只能计算部分输入通道对应的中间输出结果,无法一次得到输出像素点的最终结果,需要循环多次,对多个中间结果进行累加得到最终的输出像素点,首先完成输入通道维度的循环和3条卷积核循环,这样可以尽快得到完整的输出结果,然后完成行维度循环和输出通道维度,可以得到一行完整的输出,最后完成列维度循环,得到完整的输出特征图。
在一些实施例中,方法还包括:针对卷积神经网络的多个卷积层,为每个卷积层单独分配计算引擎,以实现多个卷积层的并行计算。
在一些实施例中,方法还包括:基于每个卷积层的总计算量与层内并行度的比值得到每个卷积层计算的时钟周期数。
在一些实施例中,方法还包括:将特征图的行数、列数、输入通道数、输出通道数以及卷积核的尺寸相乘,得到总计算量。
在一些实施例中,方法还包括:将每个卷积层计算过程中输入通道的并行数量、输出通道的并行数量、条形卷积核的并行数量、允许拼接的最多权重数及允许拼接的最多激活值数相乘,得到层内并行度。
具体地,计算卷积神经网络的所有卷积层得到最终的网络输出。加速器采用流架构模式对整个网络进行计算,每一层都有一个单独的计算引擎负责计算,不同层间实现并行计算,提高整个加速器的并行性和吞吐量。采用流计算架构时,整体吞吐量会受到最小层吞吐量的制约,计算最慢的层成为整个加速器的计算瓶颈,为了保证数据流的不堵塞和溢出,其它层的算例都不能被充分利用。因此需要平衡层间的吞吐量,使每一层的计算时间相近,从而让数据流畅的在层间流通,为了平衡层间的吞吐量,每一层的计算引擎的并行性如下表1所示,每一层的运行时间几乎相同。
表1 每一层的并行性设置和计算所需时钟周期数表
如表1所示,由于第0层的输入为特征图为RGB(颜色系统)图片,是8比特数据,无法利用一个DSP计算6个乘法,因此使用普通的一个DSP计算两个乘法的计算策略,计算所需时钟周期数=总计算量(Fh×Fw×Ci×Co×9)/层内并行度(2×M×N×9)。第1层到第7层采用本发明上述实施例提出的一个DSP计算6个乘法的并行策略,每一层的计算周期数=总计算量(Fh×Fw×Ci×Co×9)/层内并行度(6×M×N×L)。最后一层为逐点卷积,卷积核大小为1×1且输出通道为36,与前面的层不成比例,难以实现相同的计算周期数,但是最后一层的计算量非常小,远小于前面的层,仅用较少的计算资源即可实现较高并行度,因此选择了4个输入通道并行,2个输出通道并行,所需周期数为57600=(Fh×Fw×Ci×Co×9)/ (M×N),小于前面层的102400个周期,不会成为瓶颈。
下表2展示了本发明实施例的加速效果,以及与当前先进的Ultranet加速方法的对比结果。如表2所示,其它方法的FPS(Frames Per Second,每秒传输帧数)在200-300之间,本发明实施例的FPS超过2000,推理速度提升7-10倍,识别一张图片所消耗的能量仅为0.7mJ,不到其它方法的十分之一,本发明实施例设计的加速器性能有较大提升。
表2 加速效果对比表
本发明实施例的第二个方面,还提供了一种卷积神经网络加速系统。图9示出的是本发明提供的卷积神经网络加速系统的实施例的示意图。如图9所示,一种卷积神经网络加速系统包括:量化模块10,配置用于对卷积神经网络进行无符号整数量化,得到量化后的特征图和卷积核;分解模块20,配置用于将卷积核分解为多个条形卷积核,并根据卷积原理相应将特征图分解为多个特征图组;拼接模块30,配置用于将条形卷积核中多个权重进行拼接,得到拼接权重,并将对应的特征图组中多个激活值进行拼接,得到拼接激活值;以及计算模块40,配置用于将拼接权重与拼接激活值输入至无符号乘加计算单元进行乘加计算,得到计算结果,并且直到特征图的所有激活值计算完成,基于所有计算结果得到完整卷积结果。
本发明实施例的第三个方面,还提供了一种计算机可读存储介质,图10示出了根据本发明实施例提供的实现卷积神经网络加速方法的计算机可读存储介质的示意图。如图10所示,计算机可读存储介质3存储有计算机程序指令31。该计算机程序指令31被处理器执行时实现上述任意一项实施例的方法。
应当理解,在相互不冲突的情况下,以上针对根据本发明的卷积神经网络加速方法阐述的所有实施方式、特征和优势同样地适用于根据本发明的卷积神经网络加速系统和存储介质。
本发明实施例的第四个方面,还提供了一种加速装置,包括存储器和处理器,该存储器中存储有计算机程序,该计算机程序被该处理器执行时实现上述任意一项实施例的方法。
该加速装置中的处理器可以是FPGA(Field Programmable Gate Array,现场可编程逻辑门阵列)、NPU(一般指嵌入式神经网络处理器)等。
本发明实施例的第五个方面,还提供了一种计算机设备,包括如图11所示的存储器402和处理器401,该存储器402中存储有计算机程序,该计算机程序被该处理器401执行时实现上述任意一项实施例的方法。
如图11所示,为本发明提供的执行卷积神经网络加速方法的计算机设备的一个实施例的硬件结构示意图。以如图11所示的计算机设备为例,在该计算机设备中包括一个处理器401以及一个存储器402,并还可以包括:输入装置403和输出装置404。处理器401、存储器402、输入装置403和输出装置404可以通过总线或者其他方式连接,图11中以通过总线连接为例。输入装置403可接收输入的数字或字符信息,以及产生与卷积神经网络加速系统的用户设置以及功能控制有关的键信号输入。输出装置404可包括显示屏等显示设备。
存储器402作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本申请实施例中的卷积神经网络加速方法对应的程序指令/模块。存储器402可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储卷积神经网络加速方法的使用所创建的数据等。此外,存储器402可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器402可选包括相对于处理器401远程设置的存储器,这些远程存储器可以通过网络连接至本地模块。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
处理器401通过运行存储在存储器402中的非易失性软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例的卷积神经网络加速方法。
最后需要说明的是,本文的计算机可读存储介质(例如,存储器)可以是易失性存储器或非易失性存储器,或者可以包括易失性存储器和非易失性存储器两者。作为例子而非限制性的,非易失性存储器可以包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦写可编程ROM(EEPROM)或快闪存储器。易失性存储器可以包括随机存取存储器(RAM),该RAM可以充当外部高速缓存存储器。作为例子而非限制性的,RAM 可以以多种形式获得,比如同步RAM(DRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据速率SDRAM(DDRSDRAM)、增强SDRAM(ESDRAM)、同步链路DRAM(SLDRAM)、以及直接Rambus RAM(DRRAM)。所公开的方面的存储设备意在包括但不限于这些和其它合适类型的存储器。
本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。为了清楚地说明硬件和软件的这种可互换性,已经就各种示意性组件、方块、模块、电路和步骤的功能对其进行了一般性的描述。这种功能是被实现为软件还是被实现为硬件取决于具体应用以及施加给整个系统的设计约束。本领域技术人员可以针对每种具体应用以各种方式来实现的功能,但是这种实现决定不应被解释为导致脱离本发明实施例公开的范围。
以上是本发明公开的示例性实施例,但是应当注意,在不背离权利要求限定的本发明实施例公开的范围的前提下,可以进行多种改变和修改。根据这里描述的公开实施例的方法权利要求的功能、步骤和/或动作不需以任何特定顺序执行。此外,尽管本发明实施例公开的元素可以以个体形式描述或要求,但除非明确限制为单数,也可以理解为多个。
应当理解的是,在本文中使用的,除非上下文清楚地支持例外情况,单数形式“一个”旨在也包括复数形式。还应当理解的是,在本文中使用的“和/或”是指包括一个或者一个以上相关联地列出的项目的任意和所有可能组合。上述本发明实施例公开实施例序号仅仅为了描述,不代表实施例的优劣。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本发明实施例公开的范围(包括权利要求)被限于这些例子;在本发明实施例的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,并存在如上的本发明实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。因此,凡在本发明实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明实施例的保护范围之内。
Claims (17)
1.一种卷积神经网络加速方法,其特征在于,包括以下步骤:
对卷积神经网络进行无符号整数量化,得到量化后的特征图和卷积核;
将所述卷积核分解为多个条形卷积核,并根据卷积原理相应将所述特征图分解为多个特征图组;
将所述条形卷积核中多个权重进行拼接,得到拼接权重,并将对应的特征图组中多个激活值进行拼接,得到拼接激活值;
将所述拼接权重与所述拼接激活值输入至无符号乘加计算单元进行乘加计算,得到计算结果,并且直到所述特征图的所有激活值计算完成,基于所有计算结果得到完整卷积结果。
2.根据权利要求1所述的方法,其特征在于,将所述卷积核分解为多个条形卷积核包括:
对所述卷积核在长度或宽度方向上进行分解,得到多个条形卷积核。
3.根据权利要求2所述的方法,其特征在于,对所述卷积核在长度或宽度方向上进行分解,得到多个条形卷积核包括:
将所述卷积核在长度或宽度方向上分解为一维数据,得到多个一维卷积核。
4.根据权利要求1所述的方法,其特征在于,还包括:
依次按照多个条形卷积核并行、多个输入通道并行、多个输出通道并行以及所述特征图的多行或多列输出并行的方式对所述特征图进行卷积计算。
5.根据权利要求1所述的方法,其特征在于,将所述条形卷积核中多个权重进行拼接,得到拼接权重,并将对应的特征图组中多个激活值进行拼接,得到拼接激活值进一步包括:
基于下述公式计算得到所述拼接权重和所述拼接激活值:
其中,p表示允许拼接的最多权重数,q表示允许拼接的最多激活值数,P表示所述无符号乘加计算单元的权重输入端的位宽,Q表示所述无符号乘加计算单元的激活值输入端的位宽,E表示当前权重拼接时的左移位数,g表示保护位的位宽,M表示输入通道的并行数量。
6.根据权利要求5所述的方法,其特征在于,还包括:
将所述当前权重的位宽、对应的当前激活值的位宽及所述保护位的位宽相加,得到所述左移位数。
7. 根据权利要求1所述的方法,其特征在于,基于下述权重符号转化公式计算得到所述权重:
w`: [-2n-1, 2n-1-1]-> w: [0, 2n-1] -2n-1
其中,w`表示量化后的有符号数权重,w表示量化后的无符号整数的所述权重,->为指向结构体成员运算符,n为正整数。
8.根据权利要求7所述的方法,其特征在于,还包括:
离线进行所述权重符号转化公式的计算,并通过加速器将量化后的所述无符号整数的所述权重进行存储。
9.根据权利要求1所述的方法,其特征在于,还包括:
针对所述卷积神经网络的多个卷积层,为每个卷积层单独分配计算引擎,以实现所述多个卷积层的并行计算。
10.根据权利要求9所述的方法,其特征在于,还包括:
基于所述每个卷积层的总计算量与层内并行度的比值得到所述每个卷积层计算的时钟周期数。
11.根据权利要求10所述的方法,其特征在于,还包括:
将所述特征图的行数、列数、输入通道数、输出通道数以及所述卷积核的尺寸相乘,得到所述总计算量。
12.根据权利要求10所述的方法,其特征在于,还包括:
将所述每个卷积层计算过程中输入通道的并行数量、输出通道的并行数量、条形卷积核的并行数量、允许拼接的最多权重数及允许拼接的最多激活值数相乘,得到所述层内并行度。
13.根据权利要求1所述的方法,其特征在于,基于所有计算结果得到完整卷积结果包括:
将所述所有计算结果相加,得到所述完整卷积结果。
14.一种卷积神经网络加速系统,其特征在于,包括:
量化模块,配置用于对卷积神经网络进行无符号整数量化,得到量化后的特征图和卷积核;
分解模块,配置用于将所述卷积核分解为多个条形卷积核,并根据卷积原理相应将所述特征图分解为多个特征图组;
拼接模块,配置用于将所述条形卷积核中多个权重进行拼接,得到拼接权重,并将对应的特征图组中多个激活值进行拼接,得到拼接激活值;以及
计算模块,配置用于将所述拼接权重与所述拼接激活值输入至无符号乘加计算单元进行乘加计算,得到计算结果,并且直到所述特征图的所有激活值计算完成,基于所有计算结果得到完整卷积结果。
15.一种计算机可读存储介质,其特征在于,存储有计算机程序指令,所述计算机程序指令被处理器执行时实现如权利要求1-13任意一项所述的方法。
16.一种加速装置,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述计算机程序被所述处理器执行时执行如权利要求1-13任意一项所述的方法。
17.一种计算机设备,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述计算机程序被所述处理器执行时执行如权利要求1-13任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310279563.8A CN115994561B (zh) | 2023-03-22 | 2023-03-22 | 卷积神经网络加速方法、系统、存储介质、装置及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310279563.8A CN115994561B (zh) | 2023-03-22 | 2023-03-22 | 卷积神经网络加速方法、系统、存储介质、装置及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115994561A true CN115994561A (zh) | 2023-04-21 |
CN115994561B CN115994561B (zh) | 2023-06-16 |
Family
ID=85995268
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310279563.8A Active CN115994561B (zh) | 2023-03-22 | 2023-03-22 | 卷积神经网络加速方法、系统、存储介质、装置及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115994561B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117130395A (zh) * | 2023-10-27 | 2023-11-28 | 珠海市思高技术有限公司 | 一种基于神经网络的流量控制方法和相关设备 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109409514A (zh) * | 2018-11-02 | 2019-03-01 | 广州市百果园信息技术有限公司 | 卷积神经网络的定点运算方法、装置、设备和存储介质 |
CN111091183A (zh) * | 2019-12-17 | 2020-05-01 | 深圳鲲云信息科技有限公司 | 一种神经网络加速系统和方法 |
CN112418388A (zh) * | 2019-08-23 | 2021-02-26 | 中兴通讯股份有限公司 | 一种实现深度卷积神经网络处理的方法及装置 |
CN112580793A (zh) * | 2020-12-24 | 2021-03-30 | 清华大学 | 基于时间域存内计算的神经网络加速器及加速方法 |
CN113298245A (zh) * | 2021-06-07 | 2021-08-24 | 中国科学院计算技术研究所 | 一种基于数据流架构的多精度神经网络计算装置以及方法 |
CN114154631A (zh) * | 2021-11-30 | 2022-03-08 | 长沙行深智能科技有限公司 | 一种基于fpga的卷积神经网络量化实现方法以及装置 |
US20220113943A1 (en) * | 2020-12-11 | 2022-04-14 | Beijing Baidu Netcom Science Technology Co., Ltd. | Method for multiply-add operations for neural network |
CN115238863A (zh) * | 2022-07-19 | 2022-10-25 | 西安交通大学 | 一种卷积神经网络卷积层的硬件加速方法、系统及应用 |
-
2023
- 2023-03-22 CN CN202310279563.8A patent/CN115994561B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109409514A (zh) * | 2018-11-02 | 2019-03-01 | 广州市百果园信息技术有限公司 | 卷积神经网络的定点运算方法、装置、设备和存储介质 |
CN112418388A (zh) * | 2019-08-23 | 2021-02-26 | 中兴通讯股份有限公司 | 一种实现深度卷积神经网络处理的方法及装置 |
CN111091183A (zh) * | 2019-12-17 | 2020-05-01 | 深圳鲲云信息科技有限公司 | 一种神经网络加速系统和方法 |
US20220113943A1 (en) * | 2020-12-11 | 2022-04-14 | Beijing Baidu Netcom Science Technology Co., Ltd. | Method for multiply-add operations for neural network |
CN112580793A (zh) * | 2020-12-24 | 2021-03-30 | 清华大学 | 基于时间域存内计算的神经网络加速器及加速方法 |
CN113298245A (zh) * | 2021-06-07 | 2021-08-24 | 中国科学院计算技术研究所 | 一种基于数据流架构的多精度神经网络计算装置以及方法 |
CN114154631A (zh) * | 2021-11-30 | 2022-03-08 | 长沙行深智能科技有限公司 | 一种基于fpga的卷积神经网络量化实现方法以及装置 |
CN115238863A (zh) * | 2022-07-19 | 2022-10-25 | 西安交通大学 | 一种卷积神经网络卷积层的硬件加速方法、系统及应用 |
Non-Patent Citations (3)
Title |
---|
JIANXIN GUO ET.AL: "Bit-width Adaptive Accelerator Design for Convolution Neural Network", 《2018 IEEE INTERNATIONAL SYMPOSIUM ON CIRCUITS AND SYSTEMS (ISCAS)》, pages 1 - 5 * |
张慧明;: "基于多核的卷积神经网络加速方法与系统实现", 集成电路应用, no. 05, pages 16 - 19 * |
陈煌;祝永新;田犁;汪辉;封松林;: "基于FPGA的卷积神经网络卷积层并行加速结构设计", 微电子学与计算机, no. 10, pages 91 - 94 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117130395A (zh) * | 2023-10-27 | 2023-11-28 | 珠海市思高技术有限公司 | 一种基于神经网络的流量控制方法和相关设备 |
CN117130395B (zh) * | 2023-10-27 | 2023-12-29 | 珠海市思高技术有限公司 | 一种基于神经网络的流量控制方法和相关设备 |
Also Published As
Publication number | Publication date |
---|---|
CN115994561B (zh) | 2023-06-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11698773B2 (en) | Accelerated mathematical engine | |
US20230325348A1 (en) | Performing concurrent operations in a processing element | |
CN110458279B (zh) | 一种基于fpga的二值神经网络加速方法及系统 | |
EP3499428A1 (en) | Method and electronic device for convolution calculation in neutral network | |
CN111667051B (zh) | 适用边缘设备的神经网络加速器及神经网络加速计算方法 | |
TWI684141B (zh) | 人工神經元中以非零封包加速乘法運算的裝置及方法 | |
US10445638B1 (en) | Restructuring a multi-dimensional array | |
CN107145939B (zh) | 一种低计算能力处理设备的计算机视觉处理方法及装置 | |
CN106445471A (zh) | 处理器和用于在处理器上执行矩阵乘运算的方法 | |
EP3499427A1 (en) | Method and electronic device for convolution calculation in neutral network | |
CN108733348B (zh) | 融合向量乘法器和使用其进行运算的方法 | |
CN105892989B (zh) | 一种神经网络加速器及其运算方法 | |
CN108229671B (zh) | 一种降低加速器外部数据存储带宽需求的系统和方法 | |
EP3355247A1 (en) | A method of operating neural networks, corresponding network, apparatus and computer program product | |
CN109767000A (zh) | 基于Winograd算法的神经网络卷积方法及装置 | |
CN115994561B (zh) | 卷积神经网络加速方法、系统、存储介质、装置及设备 | |
CN111768458A (zh) | 一种基于卷积神经网络的稀疏图像处理方法 | |
CN110109646A (zh) | 数据处理方法、装置和乘加器及存储介质 | |
CN111709415B (zh) | 目标检测方法、装置、计算机设备和存储介质 | |
CN111008691B (zh) | 一种权值和激活值都二值化的卷积神经网络加速器架构 | |
CN109598335B (zh) | 一种二维卷积脉动阵列结构及实现方法 | |
CN110580522A (zh) | 卷积计算方法及相关设备 | |
CN114138231B (zh) | 执行矩阵乘法运算的方法、电路及soc | |
CN109558944B (zh) | 基于可配置卷积层的卷积神经网络的算法优化方法及装置 | |
US11467973B1 (en) | Fine-grained access memory controller |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |