一种卷积神经网络加速装置和方法与流程

文档序号:15144106发布日期:2018-08-10 20:14阅读:207来源:国知局

本发明涉及卷积神经网络领域,尤其涉及一种卷积神经网络加速装置和方法。



背景技术:

卷积神经网络(convolutionalneuralnetwork,cnn)是一种前馈神经网络,与传统的bp神经网络相比,具有识别效率高、旋转缩放不变性好等优点,已在数字图像处理及人脸识别等各个领域得到了广泛的应用。

传统卷积神经网络一般由多个交替的卷积层、池化层以及最后的全连接层组成。卷积神经网络可通过反向传播方法将网络损失传递到网络的所有层。参数更新学习过程通过随机梯度下降算法来实现。卷积神经网络与传统神经网络最大的区别在于,其卷积层采用了一种权值共享局部连接网络,而不是传统的权值独立全连接网络,这使得在层数相同的情况下,卷积神经网络的连接数目要远少于传统神经网络。卷积层的二维数据结构使得卷积神经网络非常适合于处理图像数据信息。此外,池化层的加入使得卷积神经网络对输入数据的几何变化(平移、缩放、旋转等)具有一定程度的稳健性。卷积神经网络由于其强大的数据特征提取能力和非线性学习能力,在性能上超越了大多数传统的机器视觉算法。目前在图像分类、目标识别等研究和应用领域,卷积神经网络已经成为主流方法。

然而,基于卷积神经网络的图像处理技术,如图像识别技术,为了从复杂场景中分开并识别出每个物体,需要使用大量的模板对图像进行遍历卷积计算,其数据搬运量大,计算量大导致计算时间长,因此很难实现实时物体识别。

异构计算系统是由主处理器和加速器两种体系结构处理器搭建而成的计算机系统。通过协调地使用性能、结构各异的处理单元,能够满足不同的计算需求,以获取最大总体性能方式完成加速计算。因此,异构计算对以上卷积神经网络计算问题的解决提供了较好的思路。

现有常见的异构计算系统有cpu+gpu和cpu+mic(超多核心)组成异构计算系统等。异构计算系统能够有效地获取高性能计算能力,具有可扩展性好、计算资源利用率高、发展潜力巨大等优点,目前已成为并行/分布计算领域中的研究热点之一。

中国专利申请cn201710641599.0公开了一种异构计算平台与基于异构计算平台的加速方法。在该专利申请中,异构计算平台可包括主机与多个可编程器件,主机与各个可编程器件分别相连。主机用于初始化可编程器件、各个可编程器件的并行调度、为各个所述可编程器件发送计算数据以及获得计算结果。各个可编程器件并行处理分配给自身的计算数据。

主机在完成所述可编程器件的初始化之后,为完成初始化的各个可编程器件发送计算数据;各个可编程器件在收到所述主机发送的计算数据之后,分别结合发送给自身的计算数据进行并行计算,得到计算结果;最后,主机从各个可编程器件获得上述计算结果并进行保存。

在现有卷积神经网络计算中,由于主机和加速器(如可编程器件)的设计目标和计算性能的不同,计算数据的发送和搬运都需要主机来执行,通过大量的寄存器配置为加速器计算进行准备,然后启动加速器,通过中断方式告知主机加速完成,需要花费大量的主机时间和等待时间。此外,完成计算后主机从加速器系统内部存储中获得计算结果,并进行保存也会带来大量的系统时间损耗,从而严重影响了整个异构系统的计算效率。

对于卷积神经网络计算,每一层的输入数据不能直接应用于卷积神经网络,需要主机按照滤波器窗口尺寸抽取对应的二维数据并转换成串行数组。这一过程需要消耗部分主机的算力。输入数据经过处理后,数据量会被放大,放大的倍数以滤波窗的尺寸和步长决定。这会导致对输入数据的带宽要求提高,或者在同等带宽下降低卷积神经网络的吞吐率。

针对现有的利用异构计算系统进行卷积神经网络计算过程中存在的问题,本领域需要一种新型的卷积神经网络加速装置和方法,通过该加速装置和方法,能够减轻主机负担并降低对内存带宽的需求。



技术实现要素:

针对现有技术中存在的问题,在本发明的一个实施例中,提供一种输入数据转换装置,包括:

调度单元,所述调度单元根据输入数据的尺寸/维度及滤波器的尺寸/步长产生控制命令,控制数据搬移单元和行数据扩展单元的行为;

数据搬移单元,根据所述调度单元的命令,主动从系统存储空间中读取原始输入数据;

行数据缓存单元,所述行数据缓存单元用于存储读入的原始输入数据;以及

行数据扩展单元,所述行数据扩展单元每次从所述行数据缓存单元中读出一行原始数据,然后按照滤波窗口的尺寸将行数据扩展为不同滤波窗口中的一行数据。

在本发明的一个实施例中,输入数据转换装置还包括位宽转换单元,所述位宽转换单元将所述行数据扩展单元的扩展数据转换为统一的位宽,并输出到运算单元。

在本发明的一个实施例中,所述行数据扩展单元是多路行数据扩展单元,多路行数据扩展单元同时扩展出多路滤波器窗口行数据。

在本发明的一个实施例中,所述行数据缓存单元存储滤波窗口所需要的n行输入数据。

在本发明的一个实施例中,所述行数据扩展单元从行缓存单元读入n行输入数据中的第一行数据,并扩展出全部滤波器窗口的该行数据;所述行数据扩展单元再从行缓存单元读入下一行数据,并扩展出全部滤波器窗口的该行数据;所述行数据扩展单元重复该动作直至扩展完成滤波器窗口里的所有n行数据;

所述行数据缓存单元存储读入所述n行数据的下一行输入数据替换所述n行输入数据中的第一行数据,作为更新的n行输入数据;

所述行数据扩展单元针对更新的n行输入数据,扩展出滤波器窗口里的所有n行数据。

在本发明的另一个实施例中,提供一种卷积神经网络异构计算系统,包括:

主控单元,主控单元将需要加速器进行处理的原始数据存储在系统存储器中;

加速器,所述加速器包括输入数据转换装置以及运算单元。

在本发明的又一个实施例中,提供一种卷积神经网络异构计算方法,包括:

a)读入滤波窗口所需要的n行输入数据,并存入行数据缓存单元;

b)通过行数据扩展单元从行缓存单元读入所述n行数据中的第一行数据,并扩展出全部滤波器窗口的该行数据;

c)通过行数据扩展单元从行缓存单元读入下一行数据,并扩展出使用该行数据的全部滤波器窗口,重复步骤c)直至扩展完成滤波器窗口里的所有n行数据;

d)将所述n行数据的下一行输入数据读入行数据缓存单元并替换所述n行输入数据中的第一行数据,作为更新的n行输入数据;

e)重复步骤b)和步骤c),以便针对更新的n行输入数据,扩展出滤波器窗口里的所有n行数据。

在本发明的又一个实施例中,通过位宽转换单元将滤波器窗口里的所有n行数据转换成统一的位宽,并输出至运算单元。

在本发明的又一个实施例中,所述输入数据具有多个维度,对于每一个维度,在步骤d)之前,重复步骤a)至步骤c),并产生滤波窗口所需的数据。

在本发明的又一个实施例中,重复步骤d)和步骤e),以便扩展出输入数据中所有行的滤波器窗口数据。

在本发明的又一个实施例中,在步骤a)之前,在输入数据的第一行之前补入一行或多行零,并在输入数据的最后一行之后补入一行或多行零。

通过本发明公开的输入数据转换装置和方法,异构计算系统的加速器可以自行完成卷积神经网络的数据预处理,降低了主控单元的算力要求。本发明公开的输入数据转换装置和方法充分利用了不同滤波器窗口输入数据的空间相关性,将卷积神经网络所需搬运的数据量降低到理论极限值,极大的降低了对内存带宽的需求。此外,在卷积计算过程中,数据搬移的工作完全由加速器主动发起,减轻了主控单元的负担。

附图说明

为了进一步阐明本发明的各实施例的以上和其它优点和特征,将参考附图来呈现本发明的各实施例的更具体的描述。可以理解,这些附图只描绘本发明的典型实施例,因此将不被认为是对其范围的限制。在附图中,为了清楚明了,相同或相应的部件将用相同或类似的标记表示。

图1示出根据本发明的一些实施例的异构计算系统100的框图。

图2示出根据本发明的一些实施例的输入数据转换装置200的框图。

图3示出根据本发明的一些实施例的输入数据转换过程的流程图。

图4示出根据本发明的一个实施例的行数据缓存单元400的示意图。

图5示出根据本发明的一个实施例的单路行数据扩展单元的示意图。

图6示出根据本发明的另一个实施例的多路行数据扩展单元的示意图。

具体实施方式

在以下的描述中,参考各实施例对本发明进行描述。然而,本领域的技术人员将认识到可在没有一个或多个特定细节的情况下或者与其它替换和/或附加方法、材料或组件一起实施各实施例。在其它情形中,未示出或未详细描述公知的结构、材料或操作以免使本发明的各实施例的诸方面晦涩。类似地,为了解释的目的,阐述了特定数量、材料和配置,以便提供对本发明的实施例的全面理解。然而,本发明可在没有特定细节的情况下实施。此外,应理解附图中示出的各实施例是说明性表示且不一定按比例绘制。

在本说明书中,对“一个实施例”或“该实施例”的引用意味着结合该实施例描述的特定特征、结构或特性被包括在本发明的至少一个实施例中。在本说明书各处中出现的短语“在一个实施例中”并不一定全部指代同一实施例。

需要说明的是,本发明的实施例以特定顺序对步骤进行描述,然而这只是为了方便区分各步骤,而并不是限定各步骤的先后顺序,在本发明的不同实施例中,可根据具体的流程的调节来调整各步骤的先后顺序。

本发明的实施例提供一种基于异步事件的神经网络异构加速方法和系统。通过本发明的实施例公开的方案,可避免主控cpu在每次运算过程中都要主动去搬移数据和指定操作,从而减少这部分操作所浪费的大量主控cpu有效计算时间。通过这种新方案,将极大提升主控cpu的计算效率,从而实现一种高效的异构计算模式。

卷积计算可看作是加权求和的过程,将图像区域中的每个像素分别与滤波器(即,权矩阵)的每个元素对应相乘,所有乘积之和作为区域中心像素的新值。

滤波器是卷积时使用到的权,用一个矩阵表示,该矩阵与对应的图像区域大小相同,其行、列都是奇数,是一个权矩阵。

卷积计算示例:

3*3的像素区域r与滤波器g的卷积计算:

假设r为3*3的像素区域,滤波器为g:

卷积和=r1g1+r2g2+r3g3+r4g4+r5g5+r6g6+r7g7+r8g8+r9g9。

在本发明的实施例中,卷积运算是通过异构计算系统完成的。图1示出根据本发明的一些实施例的异构计算系统100的框图。在图1所示的实施例中,异构计算系统100包括主控单元110、一个或多个加速器120-1...120-n以及系统存储器130。在下文中,为了简化本说明书的描述,将一个或多个加速器120-1...120-n简称为加速器120。

在本发明的实施例中,主控单元110可以是一个或多个主控中央处理单元(cpu)或者多核cpu中的一个或多个核,其中cpu可包括逻辑运算单元、控制单元和存储单元等。

加速器120可以是一个或多个主控中央处理单元(cpu)、一个或多个图形处理单元(gpu)、一个或多个数字信号处理器(dsp)、一个或多个超多核心(mic)、一个或多个现场可编程门阵列(fpga)和/或执行某一特定功能的专用硬件等等。特定功能的专用硬件可以是专门定制的硬件,用来加速特定类型的计算。

在一些实施例中,主控单元110和加速器120可在同一个硬件上,如各自为同一个多核计算硬件的部分核,又如全部集成至片上系统(soc)平台中相对独立的计算模块等。主控单元110和加速器120通过互连彼此通信,以及与系统存储器进行通信。在其它实施例中,主控单元110和加速器120可分布在不同的地理位置,并且通过有线或无线网络进行通信。例如,主控单元110与加速器120采用共享系统存储器的方式进行通讯,只需要总线支持dma方式就可以完成系统连接。共享系统存储器的连接方式可以是片外的pcie总线结构、capi总线结构、片内的各类片上系统互联例如amba、ocp总线等。

在本发明的其它实施例中,主控单元110和加速器120可以不是实体硬件结构,而是虚拟架构中的一个或多个虚拟机。例如,主控单元110可以是主控vm,而加速器120可以是一个或多个客户机vm。

在卷积计算过程中,每一层的输入数据不能直接应用于卷积神经网络,需要按照滤波器窗口尺寸抽取对应的二维数据并转换成串行数组。输入数据经过转换处理后,数据量会被放大,放大的倍数以滤波窗的尺寸和步长决定。

在利用异构计算系统进行卷积神经网络计算过程中,为了减轻主控单元负担,本发明提供一种可以将每一层的原始输入数据转化成的可直接用于卷积神经网络的集成电路。图2示出根据本发明的一些实施例的输入数据转换装置200的框图。可将输入数据转换装置200结合在加速器中。如图2所示,输入数据转换装置200可包括调度单元210、数据搬移单元220、行数据缓存单元230、以及行数据扩展单元240。

调度单元210根据输入数据的尺寸/维度及滤波器的尺寸/步长产生控制命令,控制数据搬移单元和行数据扩展单元的行为。

数据搬移单元220根据调度单元210的命令,主动从系统存储空间中读取对应数量的原始输入数据。

行数据缓存单元230用于暂存读入的原始输入数据,并标记出每一行的行尾位置。

行数据扩展单元240每次从行数据缓存单元中读出一行原始数据,然后按照滤波窗口的尺寸将行数据扩展为不同滤波窗口中的一行数据。为了提高数据带宽,行数据扩展单元可以同时扩展多个滤波窗口的数据。

由于卷积神经网络的不同层的卷积尺寸可能不同,行数据扩展单元输出的行数据有效位宽也会随之变化。所以输入数据转换装置200还可包括位宽转换单元250,将不同的行数据位宽转换为统一的数据位宽供后续运算单元使用。

在下文中,将以尺寸为3x3的滤波器窗口、步长为1,及尺寸为224x224、维度为3的输入数据为例,结合图3来说明本发明的输入数据转换过程的实现步骤。图3示出根据本发明的一些实施例的输入数据转换过程的流程图。

首先,在步骤310,读入滤波窗口所需要的每个维度前n行的输入数据,并存入行数据缓存单元。例如,由于滤波器窗口的尺寸为3x3,所以第一行的滤波窗口需要每个维度前3行的输入数据。图4示出根据本发明的一个实施例的行数据缓存单元400的示意图。如图4所示,在时刻t,每个维度前3行的输入数据被存储在行数据缓存单元中。可根据调度单元的命令,通过数据搬移单元从系统存储空间中读取对应数量的原始输入数据,并将读入的原始输入数据存储在行数据缓存单元中。

接下来,在步骤320,通过行数据扩展单元从行数据缓存单元读入第一行数据,并扩展出全部滤波器窗口的该行数据。例如,行数据扩展单元首先从行缓存单元读入第1行数据,并依次扩展出第1,第2,直至第224个滤波器窗口的第1行数据。图5示出根据本发明的一个实施例的单路行数据扩展单元的示意图。如图5所示,假设单路行数据扩展单元的缓存空间为8,输入的行数据为1,2,3,4,5,6,7,8,在时刻t,单路行数据扩展单元首先扩展出滤波器窗口行数据1,2,3;在时刻t+1,输入的行数据向左移动一位为2,3,4,5,6,7,8,9,单路行数据扩展单元扩展出滤波器窗口行数据2,3,4。

为了提高计算效率,在本发明的另一个实施例中,可以采用多路行数据扩展单元。图6示出根据本发明的另一个实施例的多路行数据扩展单元的示意图。如图6所示,假设多路行数据扩展单元的缓存空间为8,输入的行数据为1,2,3,4,5,6,7,8,在时刻t,多路行数据扩展单元首先扩展出三路滤波器窗口行数据,即,第一路滤波器窗口行数据1,2,3,第二路滤波器窗口行数据2,3,4,第三路滤波器窗口行数据3,4,5;在时刻t+1,输入的行数据向左移动三位为4,5,6,7,8,9,10,11,多路行数据扩展单元扩展出接下来的三路滤波器窗口行数据,即,第一路滤波器窗口行数据4,5,6,第二路滤波器窗口行数据5,6,7,第三路滤波器窗口行数据6,7,8。

本领域的技术人员应该理解,图5和图6所示的行数据扩展单元仅仅本发明的示例实施例,其它缓存空间尺寸和扩展方式的行数据扩展单元也应包含在本发明的保护范围内。

当第一行的数据读出之后,对应的行缓存单元的存储空间可以释放供后续数据使用。例如,如图4所示,当第一行的数据读出之后,在时刻t1,将第四行数据存储到原本用于存放第一行数据的位置。

接下来,在步骤330,通过行数据扩展单元从行数据缓存单元读入下一行数据,并扩展出使用该行数据的全部滤波器窗口。例如,行数据扩展单元从行数据缓存单元读入第2行数据,并依次扩展出第1,第2,直至第224个滤波器窗口的第2行数据。重复此步骤直至完成维度1上滤波器窗口里的所有3行数据。

在步骤340,通过行数据扩展单元对多维数据的其余维度的数据执行步骤320和330,产生所有滤波窗口所需的数据。例如,行数据扩展单元对维度2和维度3的数据依次重复步骤320和330,并产生所有滤波窗口所需的数据。

在步骤350,将下一行的滤波器窗口所需的数据读入行数据缓存单元。例如,第二行的所有滤波器窗口需要原始图像中2-4行的数据,其中2-3行的数据已经存储在数据缓存单元中了,所以只需继续读入每个维度中的第4行的数据,并将其存储在原第一行数据所在的空间以降低存储单元的大小。例如,如图4所示,当第一行的数据读出之后,在时刻t1,将第四行数据存储到原本用于存放第一行数据的位置。

在步骤360,重复步骤320至340,扩展出第二行所有滤波器窗口的数据。

在步骤370,重复步骤350和360,直至完成所有行滤波器窗口所需的数据。例如,在本发明的一些实施例中,当滤波器窗口为3x3时,当滤波器遍历到倒数第二行数据时,滤波器窗口将超出图像范围,为了避免卷积计算后的数据相对于原始数据尺寸缩小,可对原始数据进行补零,例如,可在原始数据的第一行之前补入一行零并在最后一行之后补入一行零。在本发明的其它实施例中,还可在第一行之前补入多行零、在最后一行之后补入多行零、在第一列的左侧补入一列或多列零和/或在最后一列的右侧补入一列或多列零。

任选地,本发明公开的输入数据转换过程还可包括步骤380,在步骤380,行数据扩展单元的扩展数据通过位宽转换单元,转换成统一的位宽,并输出至运算单元。

以上实施例以尺寸为3x3的滤波器窗口、步长为1,及尺寸为224x224、维度为3的输入数据为例对本发明进行了描述,然而,本领域的技术人员应该意识到上述具体的数值仅仅用于说明的目的,因此不应将其理解为限制的含义,本发明公开的装置和方法可应用于各种尺寸和步长的滤波器以及各种尺寸和维度的输入数据。

通过本发明公开的输入数据转换装置和方法,异构计算系统的加速器可以自行完成卷积神经网络的数据预处理,降低了主控单元的算力要求。

本发明公开的输入数据转换装置和方法充分利用了不同滤波器窗口输入数据的空间相关性,将卷积神经网络所需搬运的数据量降低到理论极限值,极大的降低了对内存带宽的需求。

此外,在卷积计算过程中,数据搬移的工作完全由加速器主动发起,减轻了主控单元的负担。

尽管上文描述了本发明的各实施例,但是,应该理解,它们只是作为示例来呈现的,而不作为限制。对于相关领域的技术人员显而易见的是,可以对各个实施例做出各种组合、变型和改变而不背离本发明的精神和范围。因此,此处所公开的本发明的宽度和范围不应被上述所公开的示例性实施例所限制,而应当仅根据所附权利要求书及其等同替换来定义。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1