一种规模可扩展的卷积神经网络加速系统与方法与流程

专利2022-06-29  73


本发明属于人工智能技术领域,涉及神经网络运算性能的提升,特别涉及一种规模可扩展的卷积神经网络加速系统与方法。



背景技术:

近年来,卷积神经网络因其优越的性能而广泛部署在物联网智能终端,自动驾驶以及数据中心。依靠大量的训练数据,网络算法可应用于图像分类与检测、人机博弈以及自然语言处理等诸多领域。

但是随着卷积神经网络结构变得复杂而且深度不断增加,网络计算量也随之而增大,导致通用硬件平台计算效率较低或者功耗较大等问题,人们开始设计专用硬件来加速卷积神经网络的计算。各种规模和结构的卷积加速器的设计层出不穷,其中软硬件协作的方式加快了设计效率并使系统更加通用且可灵活配置。

作为前馈网络,卷积神经网络为分层结构,最主要的则是卷积层的计算。卷积操作用来提取图像特征,由于卷积核共享权重,每一层的神经元只与上一层部分神经元相连接。其中卷积操作最主要的算子为乘加计算,可设计专用的乘加模块来并行实现。同时,还可以通过数据复用和分块技术来提高卷积加速器的性能。

卷积神经网络采用了局部感受域和共享参数两个重要概念,计算量和参数量大大低于全连接结构的网络。其中,当前层的神经元并非和前一层所有的神经元连接,而只与局部感受域中的神经元连接。这种局部感受域称之为卷积核,卷积核作为一个滑动窗口在整个输入图像中以一定步长由上至下、从左到右移动扫描,并将相应的数据加权求和,从而得到当前层所有神经元的结果。

卷积操作是将该层卷积核及其窗口对应的输入特征映射相乘并累加到一起得到输出结果的过程,比如卷积核尺寸k=3时,则需要将3*3=9个相乘得到的积累加为1个输出数据。同时,随着卷积网络计算从前往后的进行,卷积层的输入特征映射的通道数会逐渐增大,因此计算一个输出结果除了将窗口对应的乘积累加还需要将所有通道累加的结果再次进行累加,比如通道数c=256时,则需要将256个乘加操作的结果累加为1个输出数据。最后,每个卷积层不止一个卷积核,而且这些结果无需累加,因此输出特征映射也会有相应的通道数,比如卷积核数量n=512,对应的输出特征映射通道数则为512个。

为了解决模型线性不可分问题,在卷积操作后加入激活函数给网络加入非线性因素。目前常见的激活函数多为类于relu形式的非饱和函数,如relu函数和leakyrelu函数。这种函数解决了饱和函数如sigmoid在网络训练时梯度消失的问题,而且计算形式相对比较简单,在卷积神经网络中广泛使用。

因此,卷积操作的核心分为乘加计算、累加计算和激活函数计算,这些计算都可以设计专用电路来实现。但是卷积加速模块的设计一旦确定,无论运行的网络规模大小以及硬件资源多少,该电路的并行规模便已经确定。如果需要扩展需要额外修改和设计对应的系统,因此带来较大的开销和额外的设计时间。而且如果是单独的卷积加速器,则只能执行特定的卷积神经网络,并不支持更新的网络中的部分计算,灵活性较差。



技术实现要素:

为了克服上述现有技术的缺点,本发明的目的在于提供一种规模可扩展的卷积神经网络加速系统与方法,可以极大程度减少因扩展规模而带来的额外开销,从而部署在不同硬件平台。同时软硬件协作的方式通用性较好,可以支持不同的卷积神经网络。相对其他电路,该方法实现具有通用性和可扩展性。

为了实现上述目的,本发明采用的技术方案是:

一种规模可扩展的卷积神经网络加速系统,包括处理器和至少一个卷积加速核,其特征在于,单个卷积加速核主要包括计算阵列、控制器和片上缓存,在扩展规模时,只需增加卷积加速核的数量,修改处理器上运行的程序,其它硬件模块无需更改。即,可以增加多个卷积加速核来提高该系统的规模和计算性能。

所述计算阵列采用流水线形式,每个计算阵列单元包括供输入特征映射和权重数据依次通过的乘加阵列、累加器和激活函数模块;每个计算阵列单元中,所述乘加阵列用于将特征映射和权重相乘并累加得到结果,所述累加器用于在控制器的控制下将前一级乘加阵列得到的结果与已有的片上缓存输入数据对应地累加到一起;所述控制器决定每一次卷积计算的循环次数以及是否需要累加或者激活,并给出片上缓存的使能信号和地址信息,从而使得不同卷积层的卷积计算得到正确的结果;所述片上缓存用来存储特征映射、权重以及中间结果数据。

所述控制器根据卷积计算流程给出控制信号,所述累加器仅将卷积核窗口不同位置得到的结果和不同通道卷积核得到的结果累加到一起。

所述乘加阵列的规模决定卷积加速核的规模,每个乘加阵列由若干个级联的乘加器组成,或者,每个乘加阵列采用乘法阵列和加法树的结构,所述累加器由选择器、加法器和sram构成,所述激活函数模块实现relu、leakyrelu和bypass三种操作。

所述激活函数模块分成两部分,第一级根据控制信号将上一级累加器的结果和卷积核偏置相加,第二级则根据配置信号选择一个激活函数通路,控制信号和配置信号均由控制器根据卷积计算流程和网络配置产生并提供,其中relu数据通路根据结果的正负来决定输出原数或者0;leakyrelu数据通路中,当结果为正则输出原数,当结果为负则将原数乘以一个系数输出;bypass操作则对数据通路产生的结果不作处理直接输出。

所述控制器基于分块技术和循环次序优化技术,使得网络的计算尽可能减少数据在片上缓存与片外内存之间的传输,从而提高片上缓存上数据的复用率以及计算阵列的利用率。

所述控制器的控制信息由处理器通过axi总线给出,所述处理器为arm处理器或riscv处理器,所述卷积加速核集成于soc中,其中各模块与处理器之间采用axi总线连接,卷积计算之外的其他计算,在不影响卷积加速的情况下用处理器来执行。

所述规模的扩展方法为:扩大计算阵列,并根据实际情况,有选择地扩展特征映射和权重的片上缓存。

本发明还提供了基于所述规模可扩展的卷积神经网络加速系统的方法,在卷积神经网络加速系统中,处理器运行网络程序,当遇到卷积计算时,调用对应的api函数以便让卷积加速核来执行操作,api函数包括数据重组函数、配置函数以及数据传输函数;其中,所述数据重组函数将数据排列方式按照卷积加速核所需要的格式重组;所述配置函数控制卷积加速核有序地执行一次分块的卷积操作;所述数据传输函数将片外内存中的数据传输至片上缓存,或者将片上缓存中得到的最终结果传输回片外缓存。

所述格式重组包括:

在卷积加速核中,输入特征映射按照分块技术和优化的循环次序依次存储通道、宽度和高度的数据,对应的卷积核权重和偏置同样重组为数量、通道、宽度和高度的数据;卷积加速核的输出特征映射结果返回至处理器前,将数据重组为处理器所需要的格式,即依次存储宽度、高度和通道的数据;

所述配置函数中,对需要配置控制器的寄存器,在每个卷积层开始计算之前,处理器将该卷积层的参数传输至控制器,所述参数包括输入特征映射的尺寸和通道数,卷积核的尺寸、通道数和个数以及激活函数的类型。

与现有技术相比,本发明的有益效果是:

(1)卷积神经网络最主要的运算为卷积,而卷积操作的本质为乘加计算和激活函数计算。这些计算采用专用电路来实现,无论在性能和功耗上相比处理器皆有较大的提升。卷积神经网络加速系统的加速器用于加速卷积计算,经过对网络结构与细节的分析,设计专用的数据流结构并采用分块技术以及重组卷积循环次序方法,提高片上缓存的数据复用率,从而减少加速器与内存之间的数据传输。编写可运行于处理器上的网络代码,通过调用已实现的卷积加速核api函数加速卷积,控制和其他计算由处理器完成,从而实现对卷积神经网络的加速。

(2)因为不同的卷积神经网络规模大小不同,而且硬件平台资源大小也不一样,如果卷积计算阵列的规模固定,则无法很好的移植到不同的平台上。为了加速器有更好的通用性和可扩展性,本发明提出了规模可扩展的卷积神经网络加速系统,当扩大卷积计算阵列规模时,片上缓存不会等倍的扩大,而且控制器无需修改,一定程度上有很大的资源复用。而且这种软硬件协作的方式可以更好的支持各种网络算法,同时可以比较方便的移植到不同资源fpga器件或者asic芯片平台,具有很好的灵活性。

附图说明

图1是本发明卷积加速核的基本结构示意图。

图2是一个h*w=4*4的乘加阵列结构示意图。

图3是本发明激活函数模块的电路图。

图4是本发明卷积神经网络加速系统的结构示意图。

图5是本发明实施例中4倍规模的卷积神经网络加速系统结构示意图。

具体实施方式

下面结合附图和实施例详细说明本发明的实施方式。

随着卷积神经网络不断加深,卷积计算量越来越大,但由于卷积有一定的规律,因此可以实现并行计算。而激活函数同样可用专用电路来加速,支持的激活函数模块主要为relu以及leakyrelu函数。

基于此,本发明一种规模可扩展的卷积神经网络加速系统,主要包括处理器和卷积加速核等模块,卷积加速核至少有一个,在扩展规模时,只需增加卷积加速核的数量,修改处理器上运行的程序,其它硬件模块无需更改。即,可以增加多个卷积加速核来提高该系统的规模和计算性能。

卷积加速核主要包括计算阵列,控制器以及片上缓存。计算阵列的设计采用流水线形式,在每个计算阵列单元中,输入特征映射和权重数据依次通过乘加阵列、累加器和激活函数模块,其结构框图如图1所示。控制器按照分块技术和优化的循环次序的方法来设计,使得网络的计算可以减少数据在片上缓存与片外内存之间的传输。

下面对各模块进行详细介绍。

(1)乘加阵列

乘加阵列的规模决定了卷积加速核的规模,参考图2,例如阵列规模h*w=4*4,可实现16的并行计算,即一次可以进行4路通道的输入特征映射和4个卷积核权重的卷积计算。每1行(单个乘加阵列中的一行)乘加的功能为将各自得到的部分积累加得到一个结果,此处4行的阵列则得到4个结果。也可以采用乘法阵列和加法树的结构,能够得到相同的结果。

(2)累加器

累加器的功能为将前一级乘加阵列得到的结果与已有的片上缓存输入数据对应地累加到一起。该模块可由选择器、加法器和sram构成。并非所有的乘加阵列的结果都需要累加,这取决于卷积计算的位置。控制器根据卷积计算流程给出正确的控制信号,累加器将卷积核窗口不同位置得到的结果和不同通道卷积核得到的结果累加到一起,累加结果输出至下一级激活函数模块。

(3)激活函数模块

由于卷积神经网络中大多为relu以及leakyrelu两种激活函数,同时又为了整个系统可以支持其他的激活函数操作,因此该模块实现了relu、leakyrelu和bypass三种操作,结构如图3所示。该模块分成两部分,第一级根据控制信号将上一级累加器的结果和卷积核偏置相加,第二级则根据配置信号选择一个激活函数通路。同样地,控制和配置信号由控制器提供,其根据卷积计算流程和网络配置产生。其中relu数据通路根据结果的正负来决定输出原数或者0;leakyrelu数据通路中,当结果为正则输出原数,当结果为负则将原数乘以一个系数(如0.125)输出;bypass操作则对数据通路产生的结果不作处理直接输出。

(4)控制器

为了适应不同卷积层之间参数的不同,如卷积核的尺寸和步长、每层输入特征映射的通道数量和卷积核的数量等,必须要有一个控制器来决定每一次卷积计算的循环次数以及是否需要累加或者激活。控制器还需要给出片上缓存的使能信号和地址信息,从而使得不同卷积层的卷积计算得到正确的结果。同时为了提高片上缓存上数据的复用率以及计算阵列的利用率,采用分块技术、循环次序优化等方法,这些方法都需要在控制器的控制下有序完成。其中分块技术即将特征映射分为若干个子块;循环次序优化技术即按照有利于片上缓存存储的方式进行卷积计算。控制器的控制信息可由处理器通过axi总线给出。

(5)片上缓存

片上缓存用来存储特征映射、权重以及中间结果数据。首先从ddr中导入数据,将数据输入到计算阵列单元,然后临时存储由计算阵列单元产生的中间结果以及最终结果,最后将最终结果的数据导出到ddr。片上缓存的存在,减少了卷积加速核与内存之间的数据传输,从而提高计算性能并降低功耗。

(6)处理器

为了能够运行一个完整的卷积神经网络程序,需要搭建一个带有处理器的卷积神经网络加速系统。将计算阵列、控制器和片上缓存等模块集成到soc中,其中各模块与处理器之间采用axi总线连接,系统的结构框图如图4所示。卷积加速核已经实现了卷积计算的加速,但卷积神经网络还有其他很多计算,因此运行一个完整的网络需要更多的硬件结构来实现。而处理器带加速器的系统相对更加通用且可扩展。其他的计算可以在不影响卷积加速的情况下用处理器来执行。

在卷积神经网络加速系统中处理器运行网络程序,当遇到卷积计算时,则需要调用对应的api函数以便让卷积加速核来执行操作。其中所需要的api函数有数据重组函数、配置函数以及数据传输函数等。数据重组函数功能为将数据排列方式按照卷积加速核所需要的格式重组。在卷积加速核中,输入特征映射的数据需要按照分块技术和优化的循环次序依次存储通道、宽度和高度的数据,对应的卷积核权重和偏置同样需要数据重组为数量、通道、宽度和高度的数据。同时卷积加速核返回的输出特征映射结果返回至处理器前,同样需要将数据重组为处理器所需要的格式,即依次存储宽度、高度和通道的数据。配置函数功能则是控制卷积加速核有序地执行一次分块的卷积操作。在每个卷积层开始计算之前,处理器将该卷积层的参数传输至控制器数据传输函数将片外内存中的数据传输至片上缓存,或者将片上缓存中得到的最终结果传输回片外内存。

为了适应不同规模的卷积神经网络以及便于快速地移植到不同资源大小的硬件平台上,卷积神经网络加速系统设计时需要考虑到规模可扩展。考虑到扩展规模时可以复用已有资源,当规模扩大时,资源利用率不会等倍的扩大。例如之前阵列规模n*h*w=1*16*16(h、w分别为计算阵列的列和行,n为计算阵列的数量),当扩大为4倍时,阵列由256变为1024个,峰值计算性能提升4倍。控制器无需修改,同时片上缓存资源仅需要扩展为之前的2倍。扩展的过程无需太多的修改,可以根据fpga资源的大小和所要设计的asic芯片面积等情况来选择卷积加速核的数量。

经过上述分析,本发明设计了单个的卷积加速核,其中包括乘加阵列,累加器和激活函数的设计。其中可以支持不同卷积核尺寸的操作,并且支持各种类于relu形式的激活函数。同时,考虑到通用性和规模可扩展性,可以将该卷积神经网络加速系统快速地扩展为2倍,4倍或者8倍,从而可以灵活地部署在不同规模的硬件资源上。

本发明以阵列规模n*h*w=4*16*16为例,给出在fpga上运行卷积神经网络vgg16的完整过程。4倍规模是在单倍的基础上扩展得到的,4倍卷积神经网络加速系统的结构框图如图5所示。

(1)图5给出了当计算阵列规模扩大为4倍时,卷积神经网络加速系统的结构框图。在单倍卷积加速核的基础上,将已有的系统扩展,计算阵列的规模为之前的4倍,片上缓存只需扩大为之前的2倍,而卷积的控制器和处理器等模块不变。这样的设计既可以保证系统的并行度更高,也可以快速地部署到更大的平台上。

(2)当卷积神经网络加速系统为4倍规模时,fpga中其工作频率和单倍规模的系统一样都可以达到300mhz,同时软件上经过少量的改动后运行同一个vgg16网络,在卷积计算时间统计中,4倍规模系统可以比之前快4倍。同时计算资源利用率为之前的4倍,而逻辑和存储资源利用率大约为之前的2倍。

(3)卷积神经网络加速系统扩展的规模越大,硬件资源的复用程度越高。比如扩展为8倍规模时,逻辑和存储资源的利用率只需大约为单倍规模的3倍即可实现。

(4)如果设计的电路规模不可扩展,每次在扩大计算阵列时,则需要重新设计控制器,需要重新仿真与验证,花费时间较长,代价也比较大。而规模可扩展的设计方法则可以根据网络规模的大小以及硬件资源的需求灵活地选择合适的规模,无论在时间上还是系统可靠性上都是很好的选择。

本发明提供了上述的规模扩展方法,而在已有系统的设计基础上,还可以有其他形式的扩展,例如保持其他的缓存不变,只扩展权重的片上缓存。同时,本发明实现的是以arm处理器加卷积加速模块的系统,而运行卷积神经网络的控制和部分计算的处理器还可以替换为riscv处理器。


技术特征:

1.一种规模可扩展的卷积神经网络加速系统,包括处理器和至少一个卷积加速核,其特征在于,单个卷积加速核主要包括计算阵列、控制器和片上缓存,在扩展规模时,只需增加卷积加速核的数量,修改处理器上运行的程序,其它硬件模块无需更改。

2.根据权利要求1所述规模可扩展的卷积神经网络加速系统,其特征在于,所述计算阵列采用流水线形式,每个计算阵列单元包括供输入特征映射和权重数据依次通过的乘加阵列、累加器和激活函数模块;每个计算阵列单元中,所述乘加阵列用于将特征映射和权重相乘并累加得到结果,所述累加器用于在控制器的控制下将前一级乘加阵列得到的结果与已有的片上缓存输入数据对应地累加到一起;所述控制器决定每一次卷积计算的循环次数以及是否需要累加或者激活,并给出片上缓存的使能信号和地址信息,从而使得不同卷积层的卷积计算得到正确的结果;所述片上缓存用来存储特征映射、权重以及中间结果数据。

3.根据权利要求2所述规模可扩展的卷积神经网络加速系统,其特征在于,所述控制器根据卷积计算流程给出控制信号,所述累加器仅将卷积核窗口不同位置得到的结果和不同通道卷积核得到的结果累加到一起。

4.根据权利要求2所述规模可扩展的卷积神经网络加速系统,其特征在于,所述乘加阵列的规模决定卷积加速核的规模,每个乘加阵列由若干个级联的乘加器组成,或者,每个乘加阵列采用乘法阵列和加法树的结构,所述累加器由选择器、加法器和sram构成,所述激活函数模块实现relu、leakyrelu和bypass三种操作。

5.根据权利要求4所述规模可扩展的卷积神经网络加速系统,其特征在于,所述激活函数模块分成两部分,第一级根据控制信号将上一级累加器的结果和卷积核偏置相加,第二级则根据配置信号选择一个激活函数通路,控制信号和配置信号均由控制器根据卷积计算流程和网络配置产生并提供,其中relu数据通路根据结果的正负来决定输出原数或者0;leakyrelu数据通路中,当结果为正则输出原数,当结果为负则将原数乘以一个系数输出;bypass操作则对数据通路产生的结果不作处理直接输出。

6.根据权利要求1所述规模可扩展的卷积神经网络加速系统,其特征在于,所述控制器基于分块技术和循环次序优化技术,使得网络的计算尽可能减少数据在片上缓存与片外内存之间的传输,从而提高片上缓存上数据的复用率以及计算阵列的利用率。

7.根据权利要求1所述规模可扩展的卷积神经网络加速系统,其特征在于,所述控制器的控制信息由处理器通过axi总线给出,所述处理器为arm处理器或riscv处理器,所述卷积加速核集成于soc中,其中各模块与处理器之间采用axi总线连接,卷积计算之外的其他计算,在不影响卷积加速的情况下用处理器来执行。

8.根据权利要求1所述规模可扩展的卷积神经网络加速系统,其特征在于,所述规模的扩展方法为:扩大计算阵列,并根据实际情况,有选择地扩展特征映射和权重的片上缓存。

9.基于权利要求1所述规模可扩展的卷积神经网络加速系统的方法,其特征在于,在卷积神经网络加速系统中,处理器运行网络程序,当遇到卷积计算时,调用对应的api函数以便让卷积加速核来执行操作,api函数包括数据重组函数、配置函数以及数据传输函数;其中,所述数据重组函数将数据排列方式按照卷积加速核所需要的格式重组;所述配置函数控制卷积加速核有序地执行一次分块的卷积操作;所述数据传输函数将片外内存中的数据传输至片上缓存,或者将片上缓存中得到的最终结果传输回片外缓存。

10.根据权利要求9所述方法,其特征在于,所述格式重组包括:

在卷积加速核中,输入特征映射按照分块技术和优化的循环次序依次存储通道、宽度和高度的数据,对应的卷积核权重和偏置同样重组为数量、通道、宽度和高度的数据;卷积加速核的输出特征映射结果返回至处理器前,将数据重组为处理器所需要的格式,即依次存储宽度、高度和通道的数据;

所述配置函数中,对需要配置控制器的寄存器,在每个卷积层开始计算之前,处理器将该卷积层的参数传输至控制器,所述参数包括输入特征映射的尺寸和通道数,卷积核的尺寸、通道数和个数以及激活函数的类型。

技术总结
一种规模可扩展的卷积神经网络加速系统,包括处理器和至少一个卷积加速核,单个卷积加速核主要包括计算阵列、控制器和片上缓存,在扩展规模时,只需增加卷积加速核的数量,修改处理器上运行的程序,其它硬件模块无需更改。即,可以增加多个卷积加速核来提高该系统的规模和计算性能,本发明还提供了基于所述规模可扩展的卷积神经网络加速系统的方法,可以极大程度减少因扩展规模而带来的额外开销,从而部署在不同硬件平台。同时软硬件协作的方式通用性较好,可以支持不同的卷积神经网络。相对其他电路,该方法具有通用性和可扩展性。

技术研发人员:何虎;赵烁
受保护的技术使用者:清华大学
技术研发日:2020.01.19
技术公布日:2020.06.05

转载请注明原文地址: https://bbs.8miu.com/read-52620.html

最新回复(0)