包括多个核心处理模块的人工神经网络的处理系统及方法与流程

文档序号:15388078发布日期:2018-09-08 00:48阅读:141来源:国知局

本公开涉及计算机技术领域,尤其涉及一种人工神经网络的处理系统及方法。



背景技术:

在大数据时代,越来越多的设备需要对于真实世界的实时输入进行越来越复杂的处理,如工业机器人、自动驾驶无人汽车以及移动设备等等。这些任务大多数偏向于机器学习领域,其中大部分运算为向量运算或者矩阵运算,具有极高的并行度。相较于传统通用的gpu/cpu加速方案,硬件asic加速器是目前最受欢迎的加速方案,一方面可以提供极高的并行度可以实现极高的性能,另外一方面具有极高的能效性。

常见的神经网络算法中,包括最为流行的多层感知神经网络(multi-layerperceptron,mlp)、卷积神经网络(convolutionalneuralnetwork,cnn)和深度神经网络(deepneuralnetwork,dnn),通常包含多层神经元而每层神经元常常通过特定方式进行组织,如卷积神经网络中按照特征图(featuremap)进行组织。每个输出特征图的处理常常独立于彼此。

神经网络的绝大部分运算为输入神经元到输出神经元的处理,少量运算为不需要输出神经元参与的运算,如非线性运算。神经网络中每层的运算速度深切的影响了神经网络加速器的性能。神经网络加速器中,提升这些运算的并行度,也即加速器的吞吐量,为提升神经网络加速器的性能的主要手段。现有技术中,执行输入神经元到输出神经元的处理的模块通常为单核设计,难以满足神经网络加速器的性能要求。

综上可知,现有技术在实际使用上显然存在不便与缺陷,所以有必要加以改进。



技术实现要素:

针对上述的缺陷,本公开的目的在于提供一种神经网络的处理系统及方法,其在神经网络处理系统中引入多核设计,从而提升神经网络处理系统的运算速度,使得神经网络处理系统性能更高,更加高效。

根据本公开的一个方面,提供了一种人工神经网络的处理系统,包括:多核心处理模块,其包括多个核心处理模块;其中,该多个核心处理模块共同复用输入神经元和/或权值。

在一些实施例中,所述神经网络的处理系统进行处理时,将同一输入神经元分别发送至所述多个核心处理模块,将不同的输入权值分配至不同的核心处理模块,所述多个核心处理模块分别将所述输入神经元和输入权值进行向量内积操作后得到不同的输出神经元。

在一些实施例中,所述多个核心处理模块共同处理同一特征图时,共同复用权值。

在一些实施例中,所述多核心处理模块用于执行神经网络运算中的向量乘加操作。

在一些实施例中,所述的处理系统还包括:至少一片上存储介质,用于存储由神经网络处理系统外部传来的数据或用于存储处理过程中产生的数据;以及至少一alu模块,用于从所述多核心处理模块或所述片上存储介质获取输入数据执行所述多核心处理模块无法完成的非线性运算;其中,所述多个核心处理模块共享所述片上存储介质以及alu模块,或者所述多个核心处理模块具有独立的所述片上存储介质以及alu模块。

在一些实施例中,所述的处理系统还包括:至少一片内地址索引模块,用于执行运算时根据输入的索引映射至正确的存储地址。

在一些实施例中,所述处理过程中产生的数据包括处理结果或中间结算结果。

在一些实施例中,所述神经网络根据多核处理模式进行神经网络划分,包括:从输入神经元划分、输出神经元划分和权值连接划分。

在一些实施例中,所述神经网络的处理系统在执行二维或者多维运算时,将输入特征图分别发送至所述多个核心处理模块,所述多个核心处理模块分别处理一层输出特征图;或所述神经网络的处理系统在执行二维或者多维运算时,将输入特征图分别发送至所述多个核心处理模块,所述多个核心处理模块分别处理同一输出特征图的不同区域;或所述神经网络的处理系统在执行一维运算时,将同一输入分别发送至所述多个核心处理模块,所述多个核心处理模块分别处理不同的输出神经元,所述多个核心处理模块均分别完成当前输出神经元的处理后,所述多核心处理模块再执行新的输入的处理。

在一些实施例中,所述多个核心处理模块均分别完成当前输出特征图的处理后,所述多核心处理模块再执行新的输出特征图处理。

在一些实施例中,所述多核心处理模块的多个核心处理模块之间为同构设计或异构设计。

根据本公开的另一个方面,提供了一种人工神经网络的处理方法,包括:将同一输入神经元分别发送至多个核心处理模块,将不同的输入权值分配至不同的核心处理模块;以及多个核心处理模块分别将输入神经元和输入权值进行向量内积操作后得到不同的输出神经元。

在一些实施例中,所述的处理方法还包括:将输入数据发送至多个核心处理模块,多个核心处理模块执行神经网络运算中的向量乘加操作;以及将输入数据发送至alu模块,alu模块根据所述多个核心处理模块的处理结果或者获取的输入数据执行所述多个核心处理模块无法完成的非线性运算。

在一些实施例中,在将输入数据发送至多个核心处理模块或alu模块之前,还包括:片内地址索引模块根据输入的索引映射至正确的存储地址;根据所述存储地址从片上存储介质中获取输入数据;在多个核心处理模块执行向量乘加操作及alu模块执行非线性运算之后,还包括:将处理过程中产生的数据缓存至所述片上存储介质。

根据本公开的另一个方面,提供了一种神经网络的处理系统,包括:

至少一片上存储介质、用于存储由神经网络处理系统外部传来的数据或用于存储处理过程中产生的数据;

至少一片内地址索引模块、用于执行运算时根据输入的索引映射至正确的存储地址;

由多个核心处理模块组成的多核心处理模块,用于执行神经网络运算中的向量乘加操作;

至少一alu模块,用于从所述多核心处理模块或所述片上存储介质获取输入数据执行所述多核心处理模块无法完成的非线性运算,

其中,所述多个核心处理模块共享所述片上存储介质以及alu模块,或者所述多个核心处理模块具有独立的所述片上存储介质以及alu模块。

根据本公开的处理系统,所述处理过程中产生的数据包括处理结果或中间结算结果。

根据本公开的处理系统,所述神经网络处理系统进行处理时,将同一输入神经元分别发送至所述多个核心处理模块,将不同的输入权值分配至不同的核心处理模块,所述多个核心处理模块分别将所述输入神经元和输入权值进行向量内积操作后得到不同的输出神经元。

根据本公开的处理系统,所述神经网络处理系统在执行二维或者多维运算时,将输入特征图分别发送至所述多个核心处理模块,所述多个核心处理模块分别处理一层输出特征图。

根据本公开的处理系统,所述神经网络处理系统在执行二维或者多维运算时,将输入特征图分别发送至所述多个核心处理模块,所述多个核心处理模块分别处理同一输出特征图的不同区域。

根据本公开的处理系统,所述多个核心处理模块均分别完成当前输出特征图的处理后,所述多核心处理模块再执行新的输出特征图处理。

根据本公开的处理系统,所述神经网络处理系统在执行一维运算时,将同一输入分别发送至所述多个核心处理模块,所述多个核心处理模块分别处理不同的输出神经元,所述多个核心处理模块均分别完成当前输出神经元的处理后,所述多核心处理模块再执行新的输入的处理。

根据本公开的处理系统,所述多核心处理模块的多个核心处理模块之间为同构设计或异构设计。

根据本公开的另一个方面,提供了一种神经网络的处理方法,所述方法包括:

片内地址索引模块根据输入的索引映射至正确的存储地址;

根据所述存储地址从片上存储介质中获取输入数据;

将所述输入数据发送至多核心处理模块或所述alu模块;

所述多核心处理模块执行神经网络运算中的向量乘加操作,所述alu模块根据所述多核心处理模块的处理结果或者从所述从片上存储介质中获取的输入数据执行所述多核心处理模块无法完成的非线性运算;

将处理过程中产生的数据缓存至所述片上存储介质。

根据本公开的处理方法,所述方法还包括:将同一输入神经元分别发送至所述多个核心处理模块,将不同的输入权值分配至不同的核心处理模块,所述多个核心处理模块分别将所述输入神经元和输入权值进行向量内积操作后得到不同的输出神经元。

本公开针对神经网络处理系统的核心处理部分通过提升片上核心处理模块的数目从而提升神经网络算法中的核心运算部分处理速度,使得加速器获得更高的性能。核心处理指的是神经网络算法中占据大部分处理时间的向量乘加操作。从而本公开能够提升神经网络处理系统的运算速度,使得神经网络处理系统性能更高,更加高效。

附图说明

图1是本公开神经网络的处理系统的一种实施例的结构框图;

图2是本公开神经网络的处理系统的另一实施例的结构框图;

图3是本公开一种实施例中神经网络划分的示意图;

图4是本公开另一实施例中神经网络划分的示意图;

图5是本公开又一实施例中神经网络划分的示意图;

图6是本公开神经网络的处理方法的流程图。

具体实施方式

为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开作进一步的详细说明。

需要说明的是,在附图或说明书描述中,相似或相同的部分都使用相同的图号。附图中未绘示或描述的实现方式,为所属技术领域中普通技术人员所知的形式。另外,虽然本文可提供包含特定值的参数的示范,但应了解,参数无需确切等于相应的值,而是可在可接受的误差容限或设计约束内近似于相应的值。此外,以下实施例中提到的方向用语,例如“上”、“下”、“前”、“后”、“左”、“右”等,仅是参考附图的方向。因此,使用的方向用语是用来说明并非用来限制本公开。

如图1所示,本公开提供了一种神经网络的处理系统100,包括至少一片上存储介质10、至少一片内地址索引模块20、多核心处理模块30以及至少一alu(arithmeticlogicunit,算数逻辑单元)模块40。多核心处理模块30包括多个核心处理模块31。其中片内地址索引模块20与片上存储介质10连接,片内地址索引模块20、多核心处理模块30以及alu模块40分别相互连接。多核心处理模块30用于执行神经网络运算中的向量乘加操作,alu模块40用于从多核心处理模块30或片上存储介质10获取输入数据执行多核心处理模块30无法完成的非线性运算,在本实施例中,多个核心处理模块31共享片上存储介质10以及alu模块40。

片上存储介质10,用于存储神经网络处理系统外部传来的数据或用于存储处理过程中产生的数据。该处理过程中产生的数据包括处理过程中产生的处理结果或中间结果。这些结果可能来自加速器的片内核心运算模块,也可能来自其他运算部件,如本公开中alu模块40。该片上存储介质10可以是静态随机存储器(staticrandomaccessmemory,sram),动态随机存储器(dynamicrandomaccessmemory,dram),增强动态随机存取存储器(enhanceddynamicrandomaccessmemory,e-dram),寄存器堆(registerfile,rf)等常见存储介质,也可以是新型的存储器件,如非易失存储器(non-volatilememory,nvm)或者3d存储器件等等。

片内地址索引模块20,用于在执行运算时候根据输入的索引映射至正确的存储地址以将正确的数据送至多核心处理模块30进行处理。从而使得数据和片上存储介质可以正确的交互。这里的地址映射过程包括直接映射,算术变换等。该索引模块可以通过硬件电路(包括但不限于fpga、cgra、专用集成电路asic、模拟电路和忆阻器等)实现。

多核心处理模块30包括多个核心处理模块31,用于执行神经网络运算中的向量乘加操作。具体的,多核心处理模块30完成神经网络算法中的大部分运算,均为线性运算,即乘加操作。每个核心处理模块31的结构可以多种,例如一维pe(processingelement,处理单元)实现方式,二维pe或者多维实现方式。单个核心处理模块31本身不局限于特定实施原则,包括不同的实现方法,如systolic方案,矩阵向量乘加操作符。且多核心处理模块30的多个核心处理模块31之间可以为同构设计或异构设计。该处理模块可以通过硬件电路(包括但不限于fpga、cgra、专用集成电路asic、模拟电路和忆阻器等)实现。

alu模块40,用于从多核心处理模块30或片上存储介质获取输入数据执行核心处理模块无法完成的非线性运算。该模块可以通过硬件电路(包括但不限于fpga、cgra、专用集成电路asic、模拟电路和忆阻器等)实现。在本公开中,多核心处理模块30、alu模块40与片上存储介质10的数据通路包括但不局限于h-tree,或者fat-tree等互联技术。

在本公开中,多个核心处理模块31共同复用部分输入以减少带宽需求,所述神经网络的处理系统100进行处理时,将同一输入神经元分别发送至多核心处理模块30的多个核心处理模块31,而将不同的输入权值分配至不同的核心处理模块31,多个核心处理模块31分别将输入神经元和输入权值进行向量内积(乘加和)操作后得到不同的输出神经元。不同的输出神经元对应不同的权值,也即对于处理不同的输出神经元,输入神经元是相同的,权值则不同。在本公开中,权值大部分情况下不可被多个核心复用,然而在某些情况下,如多个核心共同处理同一个特征图时,权值也可以被复用。

本公开针对神经网络处理系统的核心处理部分通过提升片上核心处理模块的数目从而提升神经网络算法中的核心运算部分处理速度,使得加速器获得更高的性能。核心处理指的是神经网络算法中占据大部分处理时间的向量乘加操作。从而本公开能够提升神经网络处理系统的运算速度,使得神经网络处理系统性能更高,更加高效。

图2是本公开一种神经网络的处理系统的另一实施例的结构框图,其与图1中神经网络的处理系统的区别是,图1中神经网络的处理系统是采用松耦合设计,而图2中神经网络的处理系统采用紧耦合设计。在图2中,神经网络的处理系统200包括多个片上存储介质201,多个片内地址索引模块202,多个核心处理模块203以及多个alu模块204,其中每个核心处理模块203具有单独的输入接口和输入结构,其中alu模块204也被划分可以存在于每个核心中。

在图1中,多个核心处理模块31只完成特定的核心操作,本身不具有更多的功能,多核处理核心共享片上存储介质10和alu模块40。与之相比,在图2的紧耦合设计中,每个核心处理模块203具有自己独立的片上存储介质201和alu模块204。在图1所示的松耦合设计中多个核心可以协同处理,更易实现更高的性能需求,然而每个核缺少灵活性;在如图2所示的紧耦合设计中每个核心具有一定的灵活性,然而由于每个核的独立性也使得多核协同的复杂度更高,使得控制的复杂度增加。松耦合多适用多核同构的设计,紧耦合则多使用于多核异构的设计。

在本公开中,神经网络可以根据多核处理模式设计进行神经网络的划分,其中包括从输入神经元进行划分,输出神经元划分和权值连接进行划分。神经网络的划分是对于神经网络处理模式的分解,并不是将神经网络划分成为独立的子网,也即划分是算法层面的划分,是软件或者编译器完成的操作,其目的是将处理划分成为可以在多个核心处理的多个部分。

图3是本公开一种实施例中神经网络划分的示意图;图4是本公开另一实施例中神经网络划分的示意图;图5是本公开又一实施例中神经网络划分的示意图。

在神经网络的处理中,卷积层是按照特征图进行组织,也即输入是多个图,输出是多个图。在图3中,对于二维或者多维运算,从输出角度可按照每个核处理一层输出特征图进行神经网络划分。图3中包括输入特征图1、输入特征图2、核心处理模块1、核心处理模块2、输出特征图1、输入特征图2,每个特征图为二维矩阵。在进行处理时,将输入特征图1、2分别发送至核心处理模块1、2,核心处理模块1处理输出特征图1,核心处理模块处理输出特征图2,核心处理模块1和核心处理模块2分别处理一层输出特征图。也即,在进行二维或多维处理时,将输入特征图分别发送至多个核心处理模块,多个核心处理模块分别处理一层输出特征图。多个核心处理模块均分别完成当前输出特征图的处理后,多核心处理模块再执行新的输出特征图处理,也即只有当所有的核完成当前的输出特征图处理后才会进行新的特征图处理。

在实际应用中,输入特征图、核心处理模块、输出处理模块均可以有多个。下面以2个核(核#1、核#2)、4个输出特征图(输出特征图#1、#2、#3、#4)、4个输入特征图(输入特征图#1、#2、#3、#4)为例说明多核心处理模块的处理方式:处理开始后,核#1负责处理输出特征图#1,核#2负责处理输出特征图#2,输入特征图#1被送入核#1和核#2(也即共享输入特征图#1),同时相应的权值也被送入核#1和核#2进行处理;当输入特征图#1处理完成后,输入特征图#2被从片上存储读取,送入核#1和核#2进行处理(同样读取权值);当核#1和核#2完成输出特征图#1和#2的处理后,核#1和核#2则开始处理输出特征图#3和#4,也即重复以上的操作过程。

如图4所示,对于二维或者多维运算,从输出角度也可按照每个核处理一层输出特征图进行神经网络划分。不同的核负责处理同一特征图的不同区域,而输入相应的则被送至每一个核中,权值则根据相应的连接进行读取,这里权值有可能存在复用,如卷积神经网中的卷积层。只有当所有的核完成当前的输出特征图处理后才会进行新的特征图处理。在图4中,输入特征图1、和输入特征图2均送入核心处理模块1和核心处理模块2,核心处理模块1负责处理输出特征图1的区域1和输出特征图2的区域1,核心处理模块2负责处理输出特征图1的区域2和输出特征图2的区域2。从而,在执行二维或者多维运算时,将输入特征图分别发送至多个核心处理模块,多个核心处理模块分别处理同一输出特征图的不同区域,多个核心处理模块均分别完成当前输出特征图的处理后,多核心处理模块再执行新的输出特征图处理。

如图5所示,对于一维运算,从输出角度按照每个核心处理模块处理输出的一部分进行神经网络划分。每个核负责处理不同的神经元,这里的划分方式则可以多种多样,并不局限于图5所示的划分方法。输入被送至每一个核心处理模块中,权值则根据相应的连接进行读取,只有当所有的核心处理模块完成当前的输出特征图处理后才会进行新的特征图处理。也即神经网络处理系统在执行一维运算时,将同一输入分别发送至多个核心处理模块,多个核心处理模块分别处理不同的输出神经元,多个核心处理模块均分别完成当前输出神经元的处理后,再执行新的输入的处理。

神经网络划分包括从输入神经元进行划分,输出神经元划分和权值连接进行划分。本公开按照输出神经元进行划分,输出神经元需要多个甚至全部输入神经元参与处理,而输出神经元的处理多数情况下彼此独立。按照输出神经元划分可以复用输入神经元,降低带宽需求,从而使得加速器更加高效。

图6是本公开一种神经网络的处理方法的流程图,该方法包括:

步骤s601,片内地址索引模块根据输入的索引映射至正确的存储地址;

步骤s602,根据存储地址从片上存储介质中获取输入数据;

步骤s603,将输入数据发送至多核心处理模块或所述alu模块;

步骤s604,多核心处理模块执行神经网络运算中的向量乘加操作,alu模块根据多核心处理模块的处理结果或者从片上存储介质中获取的输入数据执行多核心处理模块无法完成的非线性运算;

步骤s605,将处理过程中产生的数据缓存至片上存储介质。

优选的是,所述方法还包括:将同一输入神经元分别发送至多个核心处理模块,将不同的输入权值分配至不同的核心处理模块,多个核心处理模块分别将输入神经元和输入权值进行向量内积操作后得到不同的输出神经元。

综上所述,本公开针对神经网络处理系统的核心处理部分通过提升片上核心处理模块的数目从而提升神经网络算法中的核心运算部分处理速度,使得加速器获得更高的性能。核心处理指的是神经网络算法中占据大部分处理时间的向量乘加操作。从而本公开能够提升神经网络处理系统的运算速度,使得神经网络处理系统性能更高,更加高效。

以上所述的具体实施例,对本公开的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本公开的具体实施例而已,并不用于限制本公开,凡在本公开的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。

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