一种神经网络的处理方法、系统的制作方法

文档序号:10570451阅读:167来源:国知局
一种神经网络的处理方法、系统的制作方法
【专利摘要】本发明适用于计算机技术领域,提供了一种神经网络处理系统的处理方法、系统,该神经网络的处理系统包括由多个核心处理模块组成的多核心处理模块、片上存储介质、片内地址索引模块以及ALU模块,多核心处理模块用于执行神经网络运算中的向量乘加操作,ALU模块用于从所述多核心处理模块或片上存储介质获取输入数据执行多核心处理模块无法完成的非线性运算,其中多个核心处理模块共享片上存储介质以及ALU模块,或者多个核心处理模块具有独立的片上存储介质以及ALU模块。本发明在神经网络处理系统中引入多核设计,从而提升神经网络处理系统的运算速度,使得神经网络处理系统性能更高,更加高效。
【专利说明】
一种神经网络的处理方法、系统
技术领域
[0001]本发明涉及计算机技术领域,属于一种神经网络的处理方法、系统。
【背景技术】
[0002]在大数据时代,越来越多的设备需要对于真实世界的实时输入进行越来越复杂的处理,如工业机器人、自动驾驶无人汽车以及移动设备等等。这些任务大多数偏向于机器学习领域,其中大部分运算为向量运算或者矩阵运算,具有极高的并行度。相较于传统通用的GPU/CPU加速方案,硬件ASIC加速器是目前最受欢迎的加速方案,一方面可以提供极高的并行度可以实现极高的性能,另外一方面具有极高的能效性。
[0003]常见的神经网络算法中,包括最为流行的多层感知神经网络(Mu111-LayerPerceptron,MLP)、卷积神经网络(Convolut1nal Neural Network,CNN)和深度神经网络(Deep Neural Network,DNN),通常包含多层神经元而每层神经元常常通过特定方式进行组织,如卷积神经网络中按照特征图(Feature Map)进行组织。每个输出特征图的处理常常独立于彼此。
[0004]神经网络的绝大部分运算为输入神经元到输出神经元的处理,少量运算为不需要输出神经元参与的运算,如非线性运算。神经网络中每层的运算速度深切的影响了神经网络加速器的性能。神经网络加速器中,提升这些运算的并行度,也即加速器的吞吐量,为提升神经网络加速器的性能的主要手段。现有技术中,执行输入神经元到输出神经元的处理的模块通常为单核设计,难以满足神经网络加速器的性能要求。
[0005]综上可知,现有技术在实际使用上显然存在不便与缺陷,所以有必要加以改进。

【发明内容】

[0006]针对上述的缺陷,本发明的目的在于提供一种神经网络的处理方法、系统,其在神经网络处理系统中引入多核设计,从而提升神经网络处理系统的运算速度,使得神经网络处理系统性能更高,更加高效。
[0007]为了实现上述目的,本发明提供一种神经网络的处理系统,包括:
[0008]至少一片上存储介质、用于存储由神经网络处理系统外部传来的数据或用于存储处理过程中产生的数据;
[0009]至少一片内地址索引模块、用于执行运算时根据输入的索引映射至正确的存储地址;
[0010]由多个核心处理模块组成的多核心处理模块,用于执行神经网络运算中的向量乘加操作;
[0011 ]至少一ALU模块,用于从所述多核心处理模块或所述片上存储介质获取输入数据执行所述多核心处理模块无法完成的非线性运算,
[0012]其中,所述多个核心处理模块共享所述片上存储介质以及ALU模块,或者所述多个核心处理模块具有独立的所述片上存储介质以及ALU模块。
[0013]根据本发明的处理系统,所述处理过程中产生的数据包括处理结果或中间结算结果O
[0014]根据本发明的处理系统,所述神经网络处理系统进行处理时,将同一输入神经元分别发送至所述多个核心处理模块,将不同的输入权值分配至不同的核心处理模块,所述多个核心处理模块分别将所述输入神经元和输入权值进行向量内积操作后得到不同的输出神经元。
[0015]根据本发明的处理系统,所述神经网络处理系统在执行二维或者多维运算时,将输入特征图分别发送至所述多个核心处理模块,所述多个核心处理模块分别处理一层输出特征图。
[0016]根据本发明的处理系统,所述神经网络处理系统在执行二维或者多维运算时,将输入特征图分别发送至所述多个核心处理模块,所述多个核心处理模块分别处理同一输出特征图的不同区域。
[0017]根据本发明的处理系统,所述多个核心处理模块均分别完成当前输出特征图的处理后,所述多核心处理模块再执行新的输出特征图处理。
[0018]根据本发明的处理系统,所述神经网络处理系统在执行一维运算时,将同一输入分别发送至所述多个核心处理模块,所述多个核心处理模块分别处理不同的输出神经元,所述多个核心处理模块均分别完成当前输出神经元的处理后,所述多核心处理模块再执行新的输入的处理。
[0019]根据本发明的处理系统,所述多核心处理模块的多个核心处理模块之间为同构设计或异构设计
[0020]本发明相应提供一种神经网络的处理方法,所述方法包括:
[0021 ]片内地址索引模块根据输入的索引映射至正确的存储地址;
[0022]根据所述存储地址从片上存储介质中获取输入数据;
[0023]将所述输入数据发送至多核心处理模块或所述ALU模块;
[0024]所述多核心处理模块执行神经网络运算中的向量乘加操作,所述ALU模块根据所述多核心处理模块的处理结果或者从所述从片上存储介质中获取的输入数据执行所述多核心处理模块无法完成的非线性运算;
[0025]将处理过程中产生的数据缓存至所述片上存储介质。
[0026]根据本发明的处理方法,所述方法还包括:将同一输入神经元分别发送至所述多个核心处理模块,将不同的输入权值分配至不同的核心处理模块,所述多个核心处理模块分别将所述输入神经元和输入权值进行向量内积操作后得到不同的输出神经元。
[0027]本发明针对神经网络处理系统的核心处理部分通过提升片上核心处理模块的数目从而提升神经网络算法中的核心运算部分处理速度,使得加速器获得更高的性能。核心处理指的是神经网络算法中占据大部分处理时间的向量乘加操作。从而本发明能够提升神经网络处理系统的运算速度,使得神经网络处理系统性能更高,更加高效。
【附图说明】
[0028]图1是本发明神经网络的处理系统的一种实施例的结构框图;
[0029]图2是本发明神经网络的处理系统的另一实施例的结构框图;
[0030]图3是本发明一种实施例中神经网络划分的示意图;
[0031 ]图4是本发明另一实施例中神经网络划分的示意图;
[0032]图5是本发明又一实施例中神经网络划分的示意图;
[0033]图6是本发明神经网络的处理方法的流程图。
【具体实施方式】
[0034]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0035]如图1所示,本发明提供了一种神经网络的处理系统100,包括至少一片上存储介质10、至少一片内地址索引模块20、多核心处理模块30以及至少一ALU(Arithmetic LogicUnit,算数逻辑单元)模块40。多核心处理模块30包括多个核心处理模块31。其中片内地址索引模块20与片上存储介质10连接,片内地址索引模块20、多核心处理模块30以及ALU模块40分别相互连接。多核心处理模块30用于执行神经网络运算中的向量乘加操作,ALU模块40用于从多核心处理模块30或片上存储介质10获取输入数据执行多核心处理模块30无法完成的非线性运算,在本实施例中,多个核心处理模块31共享片上存储介质10以及ALU模块40 ο
[0036]片上存储介质10,用于存储神经网络处理系统外部传来的数据或用于存储处理过程中产生的数据。该处理过程中产生的数据包括处理过程中产生的处理结果或中间结果。这些结果可能来自加速器的片内核心运算模块,也可能来自其他运算部件,如本发明中ALU模块40。该片上存储介质10可以是静态随机存储器(Static Random Access Memory ,SRAM),动态随机存储器(Dynamic Random Access Memory,DRAM),增强动态随机存取存储器(Enhanced Dynamic Random Access Memory,e_DRAM),寄存器堆(Register file,RF)等常见存储介质,也可以是新型的存储器件,如非易失存储器(Non-Volatile Memory,NVM)或者3D存储器件等等。
[0037]片内地址索引模块20,用于在执行运算时候根据输入的索引映射至正确的存储地址以将正确的数据送至多核心处理模块30进行处理。从而使得数据和片上存储介质可以正确的交互。这里的地址映射过程包括直接映射,算术变换等。该索引模块可以通过硬件电路(包括但不限于FPGA、CGRA、专用集成电路ASIC、模拟电路和忆阻器等)实现。
[0038]多核心处理模块30包括多个核心处理模块31,用于执行神经网络运算中的向量乘加操作。具体的,多核心处理模块30完成神经网络算法中的大部分运算,均为线性运算,SP乘加操作。每个核心处理模块31的结构可以多种,例如一维PE(processing element,处理单元)实现方式,二维PE或者多维实现方式。单个核心处理模块31本身不局限于特定实施原贝IJ,包括不同的实现方法,如systolic方案,矩阵向量乘加操作符。且多核心处理模块30的多个核心处理模块31之间可以为同构设计或异构设计。该处理模块可以通过硬件电路(包括但不限于FPGA、CGRA、专用集成电路ASIC、模拟电路和忆阻器等)实现。
[0039]ALU模块40,用于从多核心处理模块30或片上存储介质获取输入数据执行核心处理模块无法完成的非线性运算。该模块可以通过硬件电路(包括但不限于FPGA、CGRA、专用集成电路AS IC、模拟电路和忆阻器等)实现。在本发明中,多核心处理模块30、ALU模块40与片上存储介质10的数据通路包括但不局限于H-TREE,或者FAT-TREE等互联技术。
[0040]在本发明中,多个核心处理模块31共同复用部分输入以减少带宽需求,所述神经网络的处理系统100进行处理时,将同一输入神经元分别发送至多核心处理模块30的多个核心处理模块31,而将不同的输入权值分配至不同的核心处理模块31,多个核心处理模块31分别将输入神经元和输入权值进行向量内积(乘加和)操作后得到不同的输出神经元。不同的输出神经元对应不同的权值,也即对于处理不同的输出神经元,输入神经元是相同的,权值则不同。在本发明中,权值大部分情况下不可被多个核心复用,然而在某些情况下,如多个核心共同处理同一个特征图时,权值也可以被复用。
[0041]本发明针对神经网络处理系统的核心处理部分通过提升片上核心处理模块的数目从而提升神经网络算法中的核心运算部分处理速度,使得加速器获得更高的性能。核心处理指的是神经网络算法中占据大部分处理时间的向量乘加操作。从而本发明能够提升神经网络处理系统的运算速度,使得神经网络处理系统性能更高,更加高效。
[0042]图2是本发明一种神经网络的处理系统的另一实施例的结构框图,其与图1中神经网络的处理系统的区别是,图1中神经网络的处理系统是采用松耦合设计,而图2中神经网络的处理系统采用紧耦合设计。在图2中,神经网络的处理系统200包括多个片上存储介质201,多个片内地址索引模块202,多个核心处理模块203以及多个ALU模块204,其中每个核心处理模块203具有单独的输入接口和输入结构,其中ALU模块204也被划分可以存在于每个核心中。
[0043]在图1中,多个核心处理模块31只完成特定的核心操作,本身不具有更多的功能,多核处理核心共享片上存储介质10和ALU模块40。与之相比,在图2的紧耦合设计中,每个核心处理模块203具有自己独立的片上存储介质201和ALU模块204。在图1所示的松耦合设计中多个核心可以协同处理,更易实现更高的性能需求,然而每个核缺少灵活性;在如图2所示的紧耦合设计中每个核心具有一定的灵活性,然而由于每个核的独立性也使得多核协同的复杂度更高,使得控制的复杂度增加。松耦合多适用多核同构的设计,紧耦合则多使用于多核异构的设计。
[0044]在本发明中,神经网络可以根据多核处理模式设计进行神经网络的划分,其中包括从输入神经元进行划分,输出神经元划分和权值连接进行划分。神经网络的划分是对于神经网络处理模式的分解,并不是将神经网络划分成为独立的子网,也即划分是算法层面的划分,是软件或者编译器完成的操作,其目的是将处理划分成为可以在多个核心处理的多个部分。
[0045]图3是本发明一种实施例中神经网络划分的示意图;图4是本发明另一实施例中神经网络划分的示意图;图5是本发明又一实施例中神经网络划分的示意图。
[0046]在神经网络的处理中,卷积层是按照特征图进行组织,也即输入是多个图,输出是多个图。在图3中,对于二维或者多维运算,从输出角度可按照每个核处理一层输出特征图进行神经网络划分。图3中包括输入特征图1、输入特征图2、核心处理模块1、核心处理模块
2、输出特征图1、输入特征图2,每个特征图为二维矩阵。在进行处理时,将输入特征图1、2分别发送至核心处理模块1、2,核心处理模块I处理输出特征图1,核心处理模块处理输出特征图2,核心处理模块I和核心处理模块2分别处理一层输出特征图。也即,在进行二维或多维处理时,将输入特征图分别发送至多个核心处理模块,多个核心处理模块分别处理一层输出特征图。多个核心处理模块均分别完成当前输出特征图的处理后,多核心处理模块再执行新的输出特征图处理,也即只有当所有的核完成当前的输出特征图处理后才会进行新的特征图处理。
[0047]在实际应用中,输入特征图、核心处理模块、输出处理模块均可以有多个。下面以2个核(核#1、核#2)、4个输出特征图(输出特征图#1、#2、#3、#4)、4个输入特征图(输入特征图#1、#2、#3、#4)为例说明多核心处理模块的处理方式:处理开始后,核#1负责处理输出特征图#I,核#2负责处理输出特征图#2,输入特征图#I被送入核#I和核#2 (也即共享输入特征图#1),同时相应的权值也被送入核#1和核#2进行处理;当输入特征图#1处理完成后,输入特征图#2被从片上存储读取,送入核#1和核#2进行处理(同样读取权值);当核#1和核#2完成输出特征图#1和#2的处理后,核#1和核#2则开始处理输出特征图#3和#4,也即重复以上的操作过程。
[0048]如图4所示,对于二维或者多维运算,从输出角度也可按照每个核处理一层输出特征图进行神经网络划分。不同的核负责处理同一特征图的不同区域,而输入相应的则被送至每一个核中,权值则根据相应的连接进行读取,这里权值有可能存在复用,如卷积神经网中的卷积层。只有当所有的核完成当前的输出特征图处理后才会进行新的特征图处理。在图4中,输入特征图1、和输入特征图2均送入核心处理模块I和核心处理模块2,核心处理模块I负责处理输出特征图1的区域I和输出特征图2的区域I,核心处理模块2负责处理输出特征图1的区域2和输出特征图2的区域2。从而,在执行二维或者多维运算时,将输入特征图分别发送至多个核心处理模块,多个核心处理模块分别处理同一输出特征图的不同区域,多个核心处理模块均分别完成当前输出特征图的处理后,多核心处理模块再执行新的输出特征图处理。
[0049]如图5所示,对于一维运算,从输出角度按照每个核心处理模块处理输出的一部分进行神经网络划分。每个核负责处理不同的神经元,这里的划分方式则可以多种多样,并不局限于图5所示的划分方法。输入被送至每一个核心处理模块中,权值则根据相应的连接进行读取,只有当所有的核心处理模块完成当前的输出特征图处理后才会进行新的特征图处理。也即神经网络处理系统在执行一维运算时,将同一输入分别发送至多个核心处理模块,多个核心处理模块分别处理不同的输出神经元,多个核心处理模块均分别完成当前输出神经元的处理后,再执行新的输入的处理。
[0050]神经网络划分包括从输入神经元进行划分,输出神经元划分和权值连接进行划分。本发明按照输出神经元进行划分,输出神经元需要多个甚至全部输入神经元参与处理,而输出神经元的处理多数情况下彼此独立。按照输出神经元划分可以复用输入神经元,降低带宽需求,从而使得加速器更加高效。
[0051]图6是本发明一种神经网络的处理方法的流程图,该方法包括:
[0052]步骤S601,片内地址索引模块根据输入的索引映射至正确的存储地址;
[0053]步骤S602,根据存储地址从片上存储介质中获取输入数据;
[0054]步骤S603,将输入数据发送至多核心处理模块或所述ALU模块;
[0055]步骤S604,多核心处理模块执行神经网络运算中的向量乘加操作,ALU模块根据多核心处理模块的处理结果或者从片上存储介质中获取的输入数据执行多核心处理模块无法完成的非线性运算;
[0056]步骤S605,将处理过程中产生的数据缓存至片上存储介质。
[0057]优选的是,所述方法还包括:将同一输入神经元分别发送至多个核心处理模块,将不同的输入权值分配至不同的核心处理模块,多个核心处理模块分别将输入神经元和输入权值进行向量内积操作后得到不同的输出神经元。
[0058]综上所述,本发明针对神经网络处理系统的核心处理部分通过提升片上核心处理模块的数目从而提升神经网络算法中的核心运算部分处理速度,使得加速器获得更高的性能。核心处理指的是神经网络算法中占据大部分处理时间的向量乘加操作。从而本发明能够提升神经网络处理系统的运算速度,使得神经网络处理系统性能更高,更加高效。
[0059]当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
【主权项】
1.一种神经网络的处理系统,其特征在于,包括: 至少一片上存储介质、用于存储由神经网络处理系统外部传来的数据或用于存储处理过程中产生的数据; 至少一片内地址索引模块、用于执行运算时根据输入的索引映射至正确的存储地址; 由多个核心处理模块组成的多核心处理模块,用于执行神经网络运算中的向量乘加操作; 至少一 ALU模块,用于从所述多核心处理模块或所述片上存储介质获取输入数据执行所述多核心处理模块无法完成的非线性运算, 其中,所述多个核心处理模块共享所述片上存储介质以及ALU模块,或者所述多个核心处理模块具有独立的所述片上存储介质以及ALU模块。2.根据权利要求1所述的处理系统,其特征在于,所述处理过程中产生的数据包括处理结果或中间结算结果。3.根据权利要求1所述的处理系统,其特征在于,所述神经网络的处理系统进行处理时,将同一输入神经元分别发送至所述多个核心处理模块,将不同的输入权值分配至不同的核心处理模块,所述多个核心处理模块分别将所述输入神经元和输入权值进行向量内积操作后得到不同的输出神经元。4.根据权利要求3所述的处理系统,其特征在于,所述神经网络的处理系统在执行二维或者多维运算时,将输入特征图分别发送至所述多个核心处理模块,所述多个核心处理模块分别处理一层输出特征图。5.根据权利要求3所述的处理系统,其特征在于,所述神经网络的处理系统在执行二维或者多维运算时,将输入特征图分别发送至所述多个核心处理模块,所述多个核心处理模块分别处理同一输出特征图的不同区域。6.根据权利要求4或5所述的处理系统,其特征在于,所述多个核心处理模块均分别完成当前输出特征图的处理后,所述多核心处理模块再执行新的输出特征图处理。7.根据权利要求3所述的处理系统,其特征在于,所述神经网络的处理系统在执行一维运算时,将同一输入分别发送至所述多个核心处理模块,所述多个核心处理模块分别处理不同的输出神经元,所述多个核心处理模块均分别完成当前输出神经元的处理后,所述多核心处理模块再执行新的输入的处理。8.根据权利要求1所述的处理系统,其特征在于,所述多核心处理模块的多个核心处理模块之间为同构设计或异构设计。9.一种神经网络的处理方法,其特征在于,所述方法包括: 片内地址索引模块根据输入的索引映射至正确的存储地址; 根据所述存储地址从片上存储介质中获取输入数据; 将所述输入数据发送至多核心处理模块或所述ALU模块; 所述多核心处理模块执行神经网络运算中的向量乘加操作,所述ALU模块根据所述多核心处理模块的处理结果或者从所述片上存储介质中获取的输入数据执行所述多核心处理模块无法完成的非线性运算; 将处理过程中产生的数据缓存至所述片上存储介质。10.根据权利要求9所述的处理方法,其特征在于,所述方法还包括: 将同一输入神经元分别发送至所述多个核心处理模块,将不同的输入权值分配至不同的核心处理模块,所述多个核心处理模块分别将所述输入神经元和输入权值进行向量内积操作后得到不同的输出神经元。
【文档编号】G06F15/78GK105930902SQ201610240416
【公开日】2016年9月7日
【申请日】2016年4月18日
【发明人】杜子东, 郭崎, 陈天石, 陈云霁
【申请人】中国科学院计算技术研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1