CN108416436B - 使用多核心处理模块进行神经网络划分的方法及其系统 - Google Patents
使用多核心处理模块进行神经网络划分的方法及其系统 Download PDFInfo
- Publication number
- CN108416436B CN108416436B CN201810249470.XA CN201810249470A CN108416436B CN 108416436 B CN108416436 B CN 108416436B CN 201810249470 A CN201810249470 A CN 201810249470A CN 108416436 B CN108416436 B CN 108416436B
- Authority
- CN
- China
- Prior art keywords
- core processing
- neural network
- processing
- input
- core
- 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.)
- Active
Links
- 238000012545 processing Methods 0.000 title claims abstract description 344
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 114
- 238000000034 method Methods 0.000 title claims abstract description 50
- 210000004205 output neuron Anatomy 0.000 claims abstract description 32
- 210000002364 input neuron Anatomy 0.000 claims abstract description 29
- 238000013461 design Methods 0.000 claims abstract description 17
- 230000008569 process Effects 0.000 claims description 31
- 238000003672 processing method Methods 0.000 claims description 12
- 210000002569 neuron Anatomy 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 22
- 238000000638 solvent extraction Methods 0.000 description 18
- 238000005192 partition Methods 0.000 description 7
- 101100400452 Caenorhabditis elegans map-2 gene Proteins 0.000 description 6
- 101150064138 MAP1 gene Proteins 0.000 description 6
- 238000013527 convolutional neural network Methods 0.000 description 4
- 230000008878 coupling Effects 0.000 description 4
- 238000010168 coupling process Methods 0.000 description 4
- 238000005859 coupling reaction Methods 0.000 description 4
- 238000013507 mapping Methods 0.000 description 4
- 239000011159 matrix material Substances 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000001737 promoting effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7839—Architectures of general purpose stored program computers comprising a single central processing unit with memory
- G06F15/7842—Architectures of general purpose stored program computers comprising a single central processing unit with memory on one IC chip (single chip microcontrollers)
- G06F15/786—Architectures of general purpose stored program computers comprising a single central processing unit with memory on one IC chip (single chip microcontrollers) using a single memory module
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/57—Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computing Systems (AREA)
- Computer Hardware Design (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Data Mining & Analysis (AREA)
- General Health & Medical Sciences (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Image Analysis (AREA)
- Complex Calculations (AREA)
Abstract
本公开提供了一种使用多核心处理模块进行神经网络划分的方法及其系统,其中,人工神经网络的处理系统,包括:多核心处理模块,其包括多个核心处理模块;其中,所述神经网络根据多核处理模式进行神经网络划分,包括:从输入神经元划分、输出神经元划分和权值连接划分。本公开使用多核心处理模块进行神经网络划分的方法及其系统,其在神经网络处理系统中引入多核设计,从而提升神经网络处理系统的运算速度,使得神经网络处理系统性能更高,更加高效。
Description
本公开是2016年4月18日所提出的申请号为201610240416.X、发明名称为《一种神经网络的处理方法、系统》的发明专利申请的分案申请。
技术领域
本公开涉及计算机技术领域,尤其涉及一种人工神经网络的处理系统及方法。
背景技术
在大数据时代,越来越多的设备需要对于真实世界的实时输入进行越来越复杂的处理,如工业机器人、自动驾驶无人汽车以及移动设备等等。这些任务大多数偏向于机器学习领域,其中大部分运算为向量运算或者矩阵运算,具有极高的并行度。相较于传统通用的GPU/CPU加速方案,硬件ASIC加速器是目前最受欢迎的加速方案,一方面可以提供极高的并行度可以实现极高的性能,另外一方面具有极高的能效性。
常见的神经网络算法中,包括最为流行的多层感知神经网络(Multi-LayerPerceptron,MLP)、卷积神经网络(Convolutional Neural Network,CNN)和深度神经网络(Deep Neural Network,DNN),通常包含多层神经元而每层神经元常常通过特定方式进行组织,如卷积神经网络中按照特征图(Feature Map)进行组织。每个输出特征图的处理常常独立于彼此。
神经网络的绝大部分运算为输入神经元到输出神经元的处理,少量运算为不需要输出神经元参与的运算,如非线性运算。神经网络中每层的运算速度深切的影响了神经网络加速器的性能。神经网络加速器中,提升这些运算的并行度,也即加速器的吞吐量,为提升神经网络加速器的性能的主要手段。现有技术中,执行输入神经元到输出神经元的处理的模块通常为单核设计,难以满足神经网络加速器的性能要求。
综上可知,现有技术在实际使用上显然存在不便与缺陷,所以有必要加以改进。
发明内容
针对上述的缺陷,本公开的目的在于提供一种神经网络的处理系统及方法,其在神经网络处理系统中引入多核设计,从而提升神经网络处理系统的运算速度,使得神经网络处理系统性能更高,更加高效。
根据本公开的一个方面,提供了一种人工神经网络的处理系统,包括:多核心处理模块,其包括多个核心处理模块;其中,所述神经网络根据多核处理模式进行神经网络划分,包括:从输入神经元划分、输出神经元划分和权值连接划分。
在一些实施例中,所述神经网络的处理系统在执行二维或者多维运算时,将输入特征图分别发送至所述多个核心处理模块,所述多个核心处理模块分别处理一层输出特征图;或所述神经网络的处理系统在执行二维或者多维运算时,将输入特征图分别发送至所述多个核心处理模块,所述多个核心处理模块分别处理同一输出特征图的不同区域;或所述神经网络的处理系统在执行一维运算时,将同一输入分别发送至所述多个核心处理模块,所述多个核心处理模块分别处理不同的输出神经元,所述多个核心处理模块均分别完成当前输出神经元的处理后,所述多核心处理模块再执行新的输入的处理。
在一些实施例中,所述多个核心处理模块均分别完成当前输出特征图的处理后,所述多核心处理模块再执行新的输出特征图处理。
在一些实施例中,该多个核心处理模块共同复用输入神经元和/或权值。
在一些实施例中,所述神经网络的处理系统进行处理时,将同一输入神经元分别发送至所述多个核心处理模块,将不同的输入权值分配至不同的核心处理模块,所述多个核心处理模块分别将所述输入神经元和输入权值进行向量内积操作后得到不同的输出神经元。
在一些实施例中,所述多个核心处理模块共同处理同一特征图时,共同复用权值。
在一些实施例中,所述多核心处理模块用于执行神经网络运算中的向量乘加操作。
在一些实施例中,所述的处理系统还包括:至少一片上存储介质,用于存储由神经网络处理系统外部传来的数据或用于存储处理过程中产生的数据;以及至少一ALU模块,用于从所述多核心处理模块或所述片上存储介质获取输入数据执行所述多核心处理模块无法完成的非线性运算;其中,所述多个核心处理模块共享所述片上存储介质以及ALU模块,或者所述多个核心处理模块具有独立的所述片上存储介质以及ALU模块。
在一些实施例中,所述的处理系统还包括:至少一片内地址索引模块,用于执行运算时根据输入的索引映射至正确的存储地址。
在一些实施例中,所述处理过程中产生的数据包括处理结果或中间结算结果。
在一些实施例中,所述多核心处理模块的多个核心处理模块之间为同构设计或异构设计。
根据本公开的另一个方面,提供了一种神经网络的处理方法,包括:将输入数据发送至多核心处理模块;以及神经网络根据多核处理模式进行神经网络划分;其中,神经网络划分包括:从输入神经元划分、输出神经元划分和权值连接划分。
在一些实施例中,所述的处理方法还包括:多核心处理模块执行神经网络运算中的向量乘加操作,ALU模块根据所述多核心处理模块的处理结果或者获取的输入数据执行多核心处理模块无法完成的非线性运算。
在一些实施例中,在将输入数据发送至多核心处理模块的步骤之前,还包括:片内地址索引模块根据输入的索引映射至正确的存储地址;以及根据所述存储地址从片上存储介质中获取输入数据;在多核心处理模块执行神经网络运算中的向量乘加操作,ALU模块根据所述多核心处理模块的处理结果或者获取的输入数据执行多核心处理模块无法完成的非线性运算的步骤之后,还包括:将处理过程中产生的数据缓存至所述片上存储介质。
在一些实施例中,在多核心处理模块执行神经网络运算中的向量乘加操作的步骤中,将同一输入神经元分别发送至所述多核心处理模块中的多个核心处理模块,将不同的输入权值分配至不同的核心处理模块,所述多个核心处理模块分别将所述输入神经元和输入权值进行向量内积操作后得到不同的输出神经元。
根据本公开的另一个方面,还提供了一种神经网络的处理系统,包括:
至少一片上存储介质、用于存储由神经网络处理系统外部传来的数据或用于存储处理过程中产生的数据;
至少一片内地址索引模块、用于执行运算时根据输入的索引映射至正确的存储地址;
由多个核心处理模块组成的多核心处理模块,用于执行神经网络运算中的向量乘加操作;
至少一ALU模块,用于从所述多核心处理模块或所述片上存储介质获取输入数据执行所述多核心处理模块无法完成的非线性运算,
其中,所述多个核心处理模块共享所述片上存储介质以及ALU模块,或者所述多个核心处理模块具有独立的所述片上存储介质以及ALU模块。
根据本公开的处理系统,所述处理过程中产生的数据包括处理结果或中间结算结果。
根据本公开的处理系统,所述神经网络处理系统进行处理时,将同一输入神经元分别发送至所述多个核心处理模块,将不同的输入权值分配至不同的核心处理模块,所述多个核心处理模块分别将所述输入神经元和输入权值进行向量内积操作后得到不同的输出神经元。
根据本公开的处理系统,所述神经网络处理系统在执行二维或者多维运算时,将输入特征图分别发送至所述多个核心处理模块,所述多个核心处理模块分别处理一层输出特征图。
根据本公开的处理系统,所述神经网络处理系统在执行二维或者多维运算时,将输入特征图分别发送至所述多个核心处理模块,所述多个核心处理模块分别处理同一输出特征图的不同区域。
根据本公开的处理系统,所述多个核心处理模块均分别完成当前输出特征图的处理后,所述多核心处理模块再执行新的输出特征图处理。
根据本公开的处理系统,所述神经网络处理系统在执行一维运算时,将同一输入分别发送至所述多个核心处理模块,所述多个核心处理模块分别处理不同的输出神经元,所述多个核心处理模块均分别完成当前输出神经元的处理后,所述多核心处理模块再执行新的输入的处理。
根据本公开的处理系统,所述多核心处理模块的多个核心处理模块之间为同构设计或异构设计。
根据本公开的另一个方面,还提供了一种神经网络的处理方法,所述方法包括:
片内地址索引模块根据输入的索引映射至正确的存储地址;
根据所述存储地址从片上存储介质中获取输入数据;
将所述输入数据发送至多核心处理模块或所述ALU模块;
所述多核心处理模块执行神经网络运算中的向量乘加操作,所述ALU模块根据所述多核心处理模块的处理结果或者从所述从片上存储介质中获取的输入数据执行所述多核心处理模块无法完成的非线性运算;
将处理过程中产生的数据缓存至所述片上存储介质。
根据本公开的处理方法,所述方法还包括:将同一输入神经元分别发送至所述多个核心处理模块,将不同的输入权值分配至不同的核心处理模块,所述多个核心处理模块分别将所述输入神经元和输入权值进行向量内积操作后得到不同的输出神经元。
本公开针对神经网络处理系统的核心处理部分通过提升片上核心处理模块的数目从而提升神经网络算法中的核心运算部分处理速度,使得加速器获得更高的性能。核心处理指的是神经网络算法中占据大部分处理时间的向量乘加操作。从而本公开能够提升神经网络处理系统的运算速度,使得神经网络处理系统性能更高,更加高效。
附图说明
图1是本公开神经网络的处理系统的一种实施例的结构框图;
图2是本公开神经网络的处理系统的另一实施例的结构框图;
图3是本公开一种实施例中神经网络划分的示意图;
图4是本公开另一实施例中神经网络划分的示意图;
图5是本公开又一实施例中神经网络划分的示意图;
图6是本公开神经网络的处理方法的流程图。
具体实施方式
为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开作进一步的详细说明。
需要说明的是,在附图或说明书描述中,相似或相同的部分都使用相同的图号。附图中未绘示或描述的实现方式,为所属技术领域中普通技术人员所知的形式。另外,虽然本文可提供包含特定值的参数的示范,但应了解,参数无需确切等于相应的值,而是可在可接受的误差容限或设计约束内近似于相应的值。此外,以下实施例中提到的方向用语,例如“上”、“下”、“前”、“后”、“左”、“右”等,仅是参考附图的方向。因此,使用的方向用语是用来说明并非用来限制本公开。
如图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。
片上存储介质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存储器件等等。
片内地址索引模块20,用于在执行运算时候根据输入的索引映射至正确的存储地址以将正确的数据送至多核心处理模块30进行处理。从而使得数据和片上存储介质可以正确的交互。这里的地址映射过程包括直接映射,算术变换等。该索引模块可以通过硬件电路(包括但不限于FPGA、CGRA、专用集成电路ASIC、模拟电路和忆阻器等)实现。
多核心处理模块30包括多个核心处理模块31,用于执行神经网络运算中的向量乘加操作。具体的,多核心处理模块30完成神经网络算法中的大部分运算,均为线性运算,即乘加操作。每个核心处理模块31的结构可以多种,例如一维PE(processing element,处理单元)实现方式,二维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,将处理过程中产生的数据缓存至片上存储介质。
优选的是,所述方法还包括:将同一输入神经元分别发送至多个核心处理模块,将不同的输入权值分配至不同的核心处理模块,多个核心处理模块分别将输入神经元和输入权值进行向量内积操作后得到不同的输出神经元。
综上所述,本公开针对神经网络处理系统的核心处理部分通过提升片上核心处理模块的数目从而提升神经网络算法中的核心运算部分处理速度,使得加速器获得更高的性能。核心处理指的是神经网络算法中占据大部分处理时间的向量乘加操作。从而本公开能够提升神经网络处理系统的运算速度,使得神经网络处理系统性能更高,更加高效。
以上所述的具体实施例,对本公开的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本公开的具体实施例而已,并不用于限制本公开,凡在本公开的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。
Claims (15)
1.一种人工神经网络的处理系统,包括:多核心处理模块,其包括多个核心处理模块;其中,所述神经网络根据多核处理模式进行神经网络划分,包括:从输入神经元划分、输出神经元划分和权值连接划分;
其中,所述神经网络的处理系统在执行一维运算时,将同一输入分别发送至所述多个核心处理模块,所述多个核心处理模块分别处理不同的输出神经元,所述多个核心处理模块均分别完成当前输出神经元的处理后,所述多核心处理模块再执行新的输入的处理;
其中,所述神经网络的处理系统在执行二维或者多维运算时,将输入特征图分别发送至所述多个核心处理模块,所述多个核心处理模块分别处理同一输出特征图的不同区域。
2.根据权利要求1所述的处理系统,其中,所述神经网络的处理系统在执行二维或者多维运算时,还包括将输入特征图分别发送至所述多个核心处理模块,所述多个核心处理模块分别处理一层输出特征图。
3.根据权利要求2所述的处理系统,其中,所述多个核心处理模块均分别完成当前输出特征图的处理后,所述多核心处理模块再执行新的输出特征图处理。
4.根据权利要求1至3中任一项所述的处理系统,其中,该多个核心处理模块共同复用输入神经元和/或权值。
5.根据权利要求4所述的处理系统,其中,所述神经网络的处理系统进行处理时,将同一输入神经元分别发送至所述多个核心处理模块,将不同的输入权值分配至不同的核心处理模块,所述多个核心处理模块分别将所述输入神经元和输入权值进行向量内积操作后得到不同的输出神经元。
6.根据权利要求4所述的处理系统,其中,所述多个核心处理模块共同处理同一特征图时,共同复用权值。
7.根据权利要求1至6中任一项所述的处理系统,其中,所述多核心处理模块用于执行神经网络运算中的向量乘加操作。
8.根据权利要求1至7中任一项所述的处理系统,还包括:
至少一片上存储介质,用于存储由神经网络处理系统外部传来的数据或用于存储处理过程中产生的数据;以及
至少一ALU模块,用于从所述多核心处理模块或所述片上存储介质获取输入数据执行所述多核心处理模块无法完成的非线性运算;
其中,所述多个核心处理模块共享所述片上存储介质以及ALU模块,或者所述多个核心处理模块具有独立的所述片上存储介质以及ALU模块。
9.根据权利要求8所述的处理系统,还包括:
至少一片内地址索引模块,用于执行运算时根据输入的索引映射至正确的存储地址。
10.根据权利要求8或9所述的处理系统,其中,所述处理过程中产生的数据包括处理结果或中间结算结果。
11.根据权利要求1至10中任一项所述的处理系统,其中,所述多核心处理模块的多个核心处理模块之间为同构设计或异构设计。
12.一种神经网络的处理方法,包括:
将输入数据发送至多核心处理模块;以及
神经网络根据多核处理模式进行神经网络划分;其中,神经网络划分包括:从输入神经元划分、输出神经元划分和权值连接划分;
其中,所述神经网络的处理系统在执行一维运算时,将同一输入分别发送至多个核心处理模块,所述多个核心处理模块分别处理不同的输出神经元,所述多个核心处理模块均分别完成当前输出神经元的处理后,所述多核心处理模块再执行新的输入的处理;
其中,所述神经网络的处理系统在执行二维或者多维运算时,将输入特征图分别发送至所述多个核心处理模块,所述多个核心处理模块分别处理同一输出特征图的不同区域。
13.根据权利要求12所述的处理方法,还包括:
多核心处理模块执行神经网络运算中的向量乘加操作,ALU模块根据所述多核心处理模块的处理结果或者获取的输入数据执行多核心处理模块无法完成的非线性运算。
14.根据权利要求12或13所述的处理方法,其中,
在将输入数据发送至多核心处理模块的步骤之前,还包括:
片内地址索引模块根据输入的索引映射至正确的存储地址;以及
根据所述存储地址从片上存储介质中获取输入数据;
在多核心处理模块执行神经网络运算中的向量乘加操作,ALU模块根据所述多核心处理模块的处理结果或者获取的输入数据执行多核心处理模块无法完成的非线性运算的步骤之后,还包括:
将处理过程中产生的数据缓存至所述片上存储介质。
15.根据权利要求13或14所述的处理方法,其中,在多核心处理模块执行神经网络运算中的向量乘加操作的步骤中,将同一输入神经元分别发送至所述多核心处理模块中的多个核心处理模块,将不同的输入权值分配至不同的核心处理模块,所述多个核心处理模块分别将所述输入神经元和输入权值进行向量内积操作后得到不同的输出神经元。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810249470.XA CN108416436B (zh) | 2016-04-18 | 2016-04-18 | 使用多核心处理模块进行神经网络划分的方法及其系统 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810249470.XA CN108416436B (zh) | 2016-04-18 | 2016-04-18 | 使用多核心处理模块进行神经网络划分的方法及其系统 |
CN201610240416.XA CN105930902B (zh) | 2016-04-18 | 2016-04-18 | 一种神经网络的处理方法、系统 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610240416.XA Division CN105930902B (zh) | 2016-04-18 | 2016-04-18 | 一种神经网络的处理方法、系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108416436A CN108416436A (zh) | 2018-08-17 |
CN108416436B true CN108416436B (zh) | 2021-06-01 |
Family
ID=56838374
Family Applications (4)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810249470.XA Active CN108416436B (zh) | 2016-04-18 | 2016-04-18 | 使用多核心处理模块进行神经网络划分的方法及其系统 |
CN201610240416.XA Active CN105930902B (zh) | 2016-04-18 | 2016-04-18 | 一种神经网络的处理方法、系统 |
CN201810249510.0A Active CN108416437B (zh) | 2016-04-18 | 2016-04-18 | 用于乘加运算的人工神经网络的处理系统及方法 |
CN201810249506.4A Active CN108510064B (zh) | 2016-04-18 | 2016-04-18 | 包括多个核心处理模块的人工神经网络的处理系统及方法 |
Family Applications After (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610240416.XA Active CN105930902B (zh) | 2016-04-18 | 2016-04-18 | 一种神经网络的处理方法、系统 |
CN201810249510.0A Active CN108416437B (zh) | 2016-04-18 | 2016-04-18 | 用于乘加运算的人工神经网络的处理系统及方法 |
CN201810249506.4A Active CN108510064B (zh) | 2016-04-18 | 2016-04-18 | 包括多个核心处理模块的人工神经网络的处理系统及方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11580367B2 (zh) |
CN (4) | CN108416436B (zh) |
WO (1) | WO2017181562A1 (zh) |
Families Citing this family (41)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018058452A1 (zh) * | 2016-09-29 | 2018-04-05 | 北京中科寒武纪科技有限公司 | 一种执行人工神经网络运算的装置和方法 |
JP2018060268A (ja) * | 2016-10-03 | 2018-04-12 | 株式会社日立製作所 | 認識装置および学習システム |
US10261786B2 (en) | 2017-03-09 | 2019-04-16 | Google Llc | Vector processing unit |
CN107086910B (zh) | 2017-03-24 | 2018-08-10 | 中国科学院计算技术研究所 | 一种针对神经网络处理的权重加解密方法和系统 |
US11544545B2 (en) | 2017-04-04 | 2023-01-03 | Hailo Technologies Ltd. | Structured activation based sparsity in an artificial neural network |
US10387298B2 (en) | 2017-04-04 | 2019-08-20 | Hailo Technologies Ltd | Artificial neural network incorporating emphasis and focus techniques |
US11551028B2 (en) | 2017-04-04 | 2023-01-10 | Hailo Technologies Ltd. | Structured weight based sparsity in an artificial neural network |
US11238334B2 (en) | 2017-04-04 | 2022-02-01 | Hailo Technologies Ltd. | System and method of input alignment for efficient vector operations in an artificial neural network |
US11615297B2 (en) | 2017-04-04 | 2023-03-28 | Hailo Technologies Ltd. | Structured weight based sparsity in an artificial neural network compiler |
US11551067B2 (en) | 2017-04-06 | 2023-01-10 | Shanghai Cambricon Information Technology Co., Ltd | Neural network processor and neural network computation method |
CN108694441B (zh) * | 2017-04-07 | 2022-08-09 | 上海寒武纪信息科技有限公司 | 一种网络处理器和网络运算方法 |
WO2018184570A1 (zh) | 2017-04-06 | 2018-10-11 | 上海寒武纪信息科技有限公司 | 运算装置和方法 |
CN108734288B (zh) * | 2017-04-21 | 2021-01-29 | 上海寒武纪信息科技有限公司 | 一种运算方法及装置 |
CN107301456B (zh) * | 2017-05-26 | 2020-05-12 | 中国人民解放军国防科学技术大学 | 基于向量处理器的深度神经网络多核加速实现方法 |
GB2568776B (en) | 2017-08-11 | 2020-10-28 | Google Llc | Neural network accelerator with parameters resident on chip |
CN109729734B8 (zh) | 2017-08-31 | 2020-11-24 | 中科寒武纪科技股份有限公司 | 芯片装置及相关产品 |
WO2019079994A1 (zh) * | 2017-10-25 | 2019-05-02 | 华为技术有限公司 | 核心调度方法和终端 |
CN109064384A (zh) | 2017-10-30 | 2018-12-21 | 上海寒武纪信息科技有限公司 | 物体检测方法及相关产品 |
WO2019114842A1 (zh) | 2017-12-14 | 2019-06-20 | 北京中科寒武纪科技有限公司 | 一种集成电路芯片装置 |
CN109993292B (zh) * | 2017-12-30 | 2020-08-04 | 中科寒武纪科技股份有限公司 | 集成电路芯片装置及相关产品 |
CN110222833B (zh) | 2018-03-01 | 2023-12-19 | 华为技术有限公司 | 一种用于神经网络的数据处理电路 |
CN108764466B (zh) * | 2018-03-07 | 2022-02-11 | 东南大学 | 基于现场可编程门阵列的卷积神经网络硬件及其加速方法 |
CN108509373A (zh) * | 2018-03-19 | 2018-09-07 | 复旦大学 | 一种面向SoC软件研发的全系统模拟平台 |
US12094456B2 (en) | 2018-09-13 | 2024-09-17 | Shanghai Cambricon Information Technology Co., Ltd. | Information processing method and system |
CN109409510B (zh) * | 2018-09-14 | 2022-12-23 | 深圳市中科元物芯科技有限公司 | 神经元电路、芯片、系统及其方法、存储介质 |
WO2020063940A1 (zh) * | 2018-09-29 | 2020-04-02 | 上海寒武纪信息科技有限公司 | 计算装置及相关产品 |
CN111078624B (zh) * | 2018-10-18 | 2022-03-25 | 上海寒武纪信息科技有限公司 | 片上网络处理系统和片上网络数据处理方法 |
CN109542837B (zh) * | 2018-11-30 | 2023-03-24 | 上海寒武纪信息科技有限公司 | 运算方法、装置及相关产品 |
CN110705703B (zh) * | 2019-10-16 | 2022-05-27 | 北京航空航天大学 | 基于脉动阵列的稀疏神经网络处理器 |
KR20210077348A (ko) * | 2019-12-17 | 2021-06-25 | 에스케이하이닉스 주식회사 | 데이터 처리 시스템 및 그 동작 방법 |
CN111339027B (zh) * | 2020-02-25 | 2023-11-28 | 中国科学院苏州纳米技术与纳米仿生研究所 | 可重构的人工智能核心与异构多核芯片的自动设计方法 |
US20210357730A1 (en) * | 2020-05-12 | 2021-11-18 | Alibaba Group Holding Limited | Multi-size convolutional layer background |
CN111695685B (zh) * | 2020-05-12 | 2023-09-26 | 中国科学院计算技术研究所 | 一种面向图神经网络应用的片上存储系统及方法 |
CN111767246B (zh) * | 2020-06-09 | 2024-03-05 | 上海寒武纪信息科技有限公司 | 数据处理方法、相关设备及计算机可读介质 |
US11221929B1 (en) | 2020-09-29 | 2022-01-11 | Hailo Technologies Ltd. | Data stream fault detection mechanism in an artificial neural network processor |
US11811421B2 (en) | 2020-09-29 | 2023-11-07 | Hailo Technologies Ltd. | Weights safety mechanism in an artificial neural network processor |
US11237894B1 (en) | 2020-09-29 | 2022-02-01 | Hailo Technologies Ltd. | Layer control unit instruction addressing safety mechanism in an artificial neural network processor |
US11263077B1 (en) | 2020-09-29 | 2022-03-01 | Hailo Technologies Ltd. | Neural network intermediate results safety mechanism in an artificial neural network processor |
US11874900B2 (en) | 2020-09-29 | 2024-01-16 | Hailo Technologies Ltd. | Cluster interlayer safety mechanism in an artificial neural network processor |
US12248367B2 (en) | 2020-09-29 | 2025-03-11 | Hailo Technologies Ltd. | Software defined redundant allocation safety mechanism in an artificial neural network processor |
US20220188492A1 (en) * | 2020-12-10 | 2022-06-16 | Memryx Incorporated | Chiplet based artificial intelligence accelerators and configuration methods |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101639901A (zh) * | 2009-09-03 | 2010-02-03 | 王连明 | 基于多核技术的前馈神经网络硬件实现方法 |
CN104346622A (zh) * | 2013-07-31 | 2015-02-11 | 富士通株式会社 | 卷积神经网络分类器及其分类方法和训练方法 |
CN105469143A (zh) * | 2015-11-13 | 2016-04-06 | 清华大学 | 基于神经网络动态特征的片上网络资源映射方法 |
CN105488565A (zh) * | 2015-11-17 | 2016-04-13 | 中国科学院计算技术研究所 | 加速深度神经网络算法的加速芯片的运算装置及方法 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5974487A (en) * | 1997-07-14 | 1999-10-26 | Advanced Micro Devices, Inc. | Data transfer network on a chip utilizing a mesh of rings topology |
GB9902115D0 (en) * | 1999-02-01 | 1999-03-24 | Axeon Limited | Neural networks |
JP4243277B2 (ja) * | 2003-08-28 | 2009-03-25 | 株式会社日立超エル・エス・アイ・システムズ | データ処理装置 |
US20100158005A1 (en) * | 2008-12-23 | 2010-06-24 | Suvhasis Mukhopadhyay | System-On-a-Chip and Multi-Chip Systems Supporting Advanced Telecommunication Functions |
US8718978B2 (en) * | 2011-02-28 | 2014-05-06 | Apple Inc. | Performance logging framework |
CN102314614B (zh) * | 2011-10-24 | 2013-06-05 | 北京大学 | 一种基于类共享多核学习的图像语义分类方法 |
US9251116B2 (en) * | 2011-11-30 | 2016-02-02 | International Business Machines Corporation | Direct interthread communication dataport pack/unpack and load/save |
US9143325B2 (en) * | 2012-12-14 | 2015-09-22 | Microsoft Technology Licensing, Llc | Masking with shared random bits |
RU2579958C1 (ru) * | 2014-12-25 | 2016-04-10 | Федеральное государственное бюджетное образовательное учреждение высшего образования "Донской государственный технический университет" | Искусственный нейрон |
CN105095967B (zh) * | 2015-07-16 | 2018-02-16 | 清华大学 | 一种多模态神经形态网络核 |
CN205139973U (zh) * | 2015-10-26 | 2016-04-06 | 中国人民解放军军械工程学院 | 基于fpga器件构建的bp神经网络 |
CN107563497B (zh) * | 2016-01-20 | 2021-03-19 | 中科寒武纪科技股份有限公司 | 用于稀疏人工神经网络的计算装置和运算方法 |
US10445099B2 (en) * | 2016-04-19 | 2019-10-15 | Xiaolin Wang | Reconfigurable microprocessor hardware architecture |
-
2016
- 2016-04-18 CN CN201810249470.XA patent/CN108416436B/zh active Active
- 2016-04-18 CN CN201610240416.XA patent/CN105930902B/zh active Active
- 2016-04-18 CN CN201810249510.0A patent/CN108416437B/zh active Active
- 2016-04-18 CN CN201810249506.4A patent/CN108510064B/zh active Active
- 2016-08-09 US US16/079,525 patent/US11580367B2/en active Active
- 2016-08-09 WO PCT/CN2016/094189 patent/WO2017181562A1/zh active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101639901A (zh) * | 2009-09-03 | 2010-02-03 | 王连明 | 基于多核技术的前馈神经网络硬件实现方法 |
CN104346622A (zh) * | 2013-07-31 | 2015-02-11 | 富士通株式会社 | 卷积神经网络分类器及其分类方法和训练方法 |
CN105469143A (zh) * | 2015-11-13 | 2016-04-06 | 清华大学 | 基于神经网络动态特征的片上网络资源映射方法 |
CN105488565A (zh) * | 2015-11-17 | 2016-04-13 | 中国科学院计算技术研究所 | 加速深度神经网络算法的加速芯片的运算装置及方法 |
Non-Patent Citations (2)
Title |
---|
基于多核处理器的多层感知神经网络设计和实现;朱新召 等;《微电子学与计算机》;20141130;第31卷(第11期);第28-31页 * |
朱新召 等.基于多核处理器的多层感知神经网络设计和实现.《微电子学与计算机》.2014,第31卷(第11期), * |
Also Published As
Publication number | Publication date |
---|---|
CN108510064A (zh) | 2018-09-07 |
US20190087716A1 (en) | 2019-03-21 |
WO2017181562A1 (zh) | 2017-10-26 |
CN108416437A (zh) | 2018-08-17 |
CN105930902B (zh) | 2018-08-10 |
CN108416437B (zh) | 2021-08-03 |
US11580367B2 (en) | 2023-02-14 |
CN105930902A (zh) | 2016-09-07 |
CN108416436A (zh) | 2018-08-17 |
CN108510064B (zh) | 2021-12-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108416436B (zh) | 使用多核心处理模块进行神经网络划分的方法及其系统 | |
US20230325348A1 (en) | Performing concurrent operations in a processing element | |
US20190026626A1 (en) | Neural network accelerator and operation method thereof | |
JP6880160B2 (ja) | 計算装置と計算方法 | |
US20200234124A1 (en) | Winograd transform convolution operations for neural networks | |
CN109447241B (zh) | 一种面向物联网领域的动态可重构卷积神经网络加速器架构 | |
CN111738433B (zh) | 一种可重配置的卷积硬件加速器 | |
JP2020526830A (ja) | 演算アクセラレータ | |
JP2021510219A (ja) | マルチキャストネットワークオンチップに基づいた畳み込みニューラルネットワークハードウェアアクセラレータおよびその動作方式 | |
US10936942B2 (en) | Apparatus and mechanism for processing neural network tasks using a single chip package with multiple identical dies | |
CN111898733A (zh) | 一种深度可分离卷积神经网络加速器架构 | |
CN107632965B (zh) | 可重构的s型运算装置及运算方法 | |
CN107301456A (zh) | 基于向量处理器的深度神经网络多核加速实现方法 | |
US20220083500A1 (en) | Flexible accelerator for a tensor workload | |
US11579921B2 (en) | Method and system for performing parallel computations to generate multiple output feature maps | |
JP2021518591A (ja) | 機械知覚および高密度アルゴリズム集積回路を実装するためのシステムおよび方法 | |
WO2023045446A1 (zh) | 计算装置、数据处理方法及相关产品 | |
US20220083314A1 (en) | Flexible accelerator for a tensor workload | |
US20220284074A1 (en) | Systems and methods for an intelligent mapping of neural network weights and input data to an array of processing cores of an integrated circuit | |
Zeng et al. | Optimizing frequency domain implementation of CNNs on FPGAs | |
WO2021031351A1 (zh) | 一种数据处理系统、方法及介质 | |
Wu et al. | High Efficient Bandwidth Utilization Hardware Design and Implement for AI Deep Learning Accelerator | |
Modiboyina et al. | Accelerating U-Net: A patchwise memory optimization approach for image segmentation | |
CN105718421A (zh) | 一种面向多个粗粒度动态可重构阵列的数据缓存更新系统 | |
WO2022134872A1 (zh) | 数据处理装置、数据处理方法及相关产品 |
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 |