CN111832714A - 运算方法及装置 - Google Patents
运算方法及装置 Download PDFInfo
- Publication number
- CN111832714A CN111832714A CN201910318642.9A CN201910318642A CN111832714A CN 111832714 A CN111832714 A CN 111832714A CN 201910318642 A CN201910318642 A CN 201910318642A CN 111832714 A CN111832714 A CN 111832714A
- Authority
- CN
- China
- Prior art keywords
- subgraph
- neural network
- operator
- graphs
- operations
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 60
- 238000013528 artificial neural network Methods 0.000 claims abstract description 105
- 238000000638 solvent extraction Methods 0.000 claims abstract description 15
- 238000013138 pruning Methods 0.000 claims description 13
- 125000004122 cyclic group Chemical group 0.000 claims description 9
- 238000010801 machine learning Methods 0.000 claims description 6
- 238000005192 partition Methods 0.000 claims description 5
- 238000004590 computer program Methods 0.000 claims description 3
- 230000008569 process Effects 0.000 description 19
- 238000010586 diagram Methods 0.000 description 14
- 230000015654 memory Effects 0.000 description 9
- 238000005457 optimization Methods 0.000 description 9
- 238000012545 processing Methods 0.000 description 8
- 230000005540 biological transmission Effects 0.000 description 5
- 101100498818 Arabidopsis thaliana DDR4 gene Proteins 0.000 description 3
- 238000004806 packaging method and process Methods 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 238000013135 deep learning Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 239000002245 particle Substances 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- HPTJABJPZMULFH-UHFFFAOYSA-N 12-[(Cyclohexylcarbamoyl)amino]dodecanoic acid Chemical compound OC(=O)CCCCCCCCCCCNC(=O)NC1CCCCC1 HPTJABJPZMULFH-UHFFFAOYSA-N 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000011176 pooling Methods 0.000 description 1
- 230000000630 rising effect Effects 0.000 description 1
- 230000001360 synchronised 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Theoretical Computer Science (AREA)
- Evolutionary Computation (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Neurology (AREA)
- User Interface Of Digital Computer (AREA)
- Feedback Control In General (AREA)
Abstract
本公开涉及一种运算方法及装置,所述方法包括:获取待执行的神经网络运算,所述神经网络运算包括多个运算操作;基于所述多个运算操作划分出满足第一要求的多个运算子图,每个所述运算子图包括至少一个运算操作,所述第一要求包括划分出的多个运算子图中不存在孤立的运算子图,并且划分出的运算子图在与其余的运算操作和运算子图不形成循环运算的情况下,能够包括最多的运算操作;基于划分的所述多个运算子图并行执行所述神经网络运算。本公开实施例可以实现神经网络运算的并行运算。
Description
技术领域
本公开涉及机器学习领域,尤其涉及一种神经网络运算方法、加速器、芯片、电子设备和存储介质。
背景技术
目前,越来越多针对神经网络加速器(如深度学习加速器)的硬件设计被提出,这些加速器在设计上有着各自不同的特点。尽管神经网络框架(如Caffe2,TensorFlow,MXNet)可以通过调用硬件设计者提供的高性能计算库来充分利用底层设备的性能,但同样很难打破算子之间的界限在更大的范围内进一步优化,这需要对底层硬件具备足够充分的知识,更需要底层设备本身具有非常良好的可编程性,而这两点对于快速发展的神经网络加速器都是不实际的。
相关技术中,可以采用上层框架进行神经网络运算的优化工作,例如MXNet中使用CUDA的在线编译方法在运行阶段生成多个算子整体优化后的临时kernel代码。这种方法的问题在于,只能进行简单的优化,并且对于缺乏足够可编程性的加速器难以实现。
发明内容
有鉴于此,本公开提出了一种神经网络运算方法、加速器、芯片、电子设备和存储介质。
根据本公开的一方面,提供了一种神经网络运算方法,包括:
获取待执行的神经网络运算,所述神经网络运算包括多个运算操作;
基于所述多个运算操作划分出满足第一要求的多个运算子图,每个所述运算子图包括至少一个运算操作,所述第一要求包括划分出的多个运算子图中不存在孤立的运算子图,并且划分出的各运算子图在与其余的运算操作和运算子图不形成循环运算的情况下,能够包括最多的运算操作;
基于划分的所述多个运算子图并行执行所述神经网络运算。
在一些可能的实施方式中,所述基于所述多个运算操作划分出满足第一要求的多个运算子图,包括:
基于所述神经网络运算的反向运算顺序,将第一个运算操作确定为初始子图,按照其余运算操作与该初始子图的连接顺序,依次向所述初始子图中加入运算操作;
如果将待加入的运算操作加入至所述初始子图所形成的新的子图与其他运算操作以及运算子图不存在循环运算,则将该待加入的运算操作加入至所述初始子图中形成新的子图,并继续向所述新的子图中加入下一运算操作,直至将待加入的运算操作加入至新的子图后所形成的新的子图与其他运算操作或者运算子图之间存在循环运算,则终止该新的子图的扩展,并将未加入该形成循环运算的待加入运算操作的子图作为一个满足第一要求的第一运算子图;
将与得到的第一运算子图连接的运算操作作为下一个初始子图,并基于该下一个初始子图确定其余满足第一要求的第一运算子图;
基于各第一运算子图确定划分的所述多个运算子图。
在一些可能的实施方式中,在所述基于所述多个运算操作划分出满足第一要求的多个运算子图之前,所述方法还包括:
将所述神经网络运算的多个运算操作中通过加速器以外的电子器件执行的运算操,作为一个第一运算子图。
在一些可能的实施方式中,所述基于所述多个运算操作划分出满足第一要求的多个运算子图,还包括:
将所述多个第一运算子图进一步划分成满足第二要求的多个第二运算子图,所述第二要求包括划分出的第二运算子图中的各运算操作的输入路径和输出路径最多为一个。
在一些可能的实施方式中,将所述多个第一运算子图进一步划分成满足第二要求的多个第二运算子图,包括:
确定所述神经网络运算中各运算操作的输入路径的数量;
如果运算操作的输入路径的数量大于1个,执行该输入路径的剪枝操作。
在一些可能的实施方式中,在一些可能的实施方式中,所述将所述多个第一运算子图进一步划分成满足第二要求的多个第二运算子图,包括:
确定所述神经网络运算中各运算操作的输出路径的数量;
如果运算操作的输出路径的数量大于1个,执行该输出路径的剪枝操作。
在一些可能的实施方式中,所述基于划分的所述多个运算子图执行所述神经网络运算,包括:
按照所述神经网络运算的各运算操作的正向顺序,并行执行各所述运算子图。
根据本公开的第二方面,提供了一种神经网络加速器,其包括:
处理器,其用于执行如第一方面中任意一项所述的方法。
根据本公开的第三方面,提供了一种机器学习芯片,所述机器学习芯片用于执行如第一方面中任意一项所述的方法。
根据本公开的第四方面,提供了一种电子设备,所述电子设备包括如所述如第三方面所述的芯片。
根据本公开的第五方面,提供了一种计算机可读存储介质,所述存储介质中存储有计算机程序指令,所述计算机程序指令被处理器执行时实现第一方面中任意一项所述的方法。
本公开实施例中,通过对神经网络运算进行划分,即对神经网络运算的运算操作进行划分得到多个子运算图,通过并行的执行各子运算图可以方便的实现对加速器执行的运算操作进行优化,同时还能实现下层软件栈的控件优化,以及保证上层框架的调度空间。
根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。
图1示出示出根据本公开一实施例的神经网络运算方法的流程图;
图2示出一种未形成循环运算的运算子图的划分方式;
图3示出形成循环运算的运算子图的划分方式;
图4示出根据本公开实施例的一种神经网络运算方法中步骤S200的流程图;
图5示出的一种神经网络运算图的结构示意图;
图6为与图5所示出的神经网络对应的划分结果示意图;
图7示出根据本公开实施例的一种神经网络运算方法的步骤S203的流程图;
图8示出基于图6获得各第二运算子图的过程示意图;
图9示出根据本公开实施例的一种神经网络运算方法的步骤S203的另一流程图。
具体实施方式
以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
本公开实施例提供了一种神经网络运算方法,其可以应用在加速器上,或者能够执行神经网络运算的模拟运算过程的器件或者设备中,本公开对此不作具体限定。
图1示出根据本公开一实施例的神经网络运算方法的流程图。如图1示,该神经网络运算符方法可以包括:
S100:获取待执行的神经网络运算,所述神经网络运算包括多个运算操作;
S200:基于所述多个运算操作划分出满足第一要求的多个运算子图,每个所述运算子图包括至少一个运算操作,所述第一要求包括划分出的多个运算子图中不存在孤立的运算子图,并且划分出的运算子图在与其余的运算操作和运算子图不形成循环运算的情况下,能够包括最多的运算操作;
S300:基于划分的所述多个运算子图并行执行所述神经网络运算。
本公开实施例可以执行神经网络运算的模拟运算过程,其可以应用到神经网络加速器中,例如可以应用到深度学习加速器中,可以用于优化神经网络运算过程,实现神经网络的加速运算,并可以得到运算结果。
本公开实施例首先可以通过步骤S100获得神经网络运算,该神经网络运算可以包括待执行的多个运算操作,以及运算操作所使用的运算数据、存储地址、内存空间等相关数据,具体可以根据神经网络运算中执行的操作确定,本公开对此不做具体限定。另外,本公开实施例获得的神经网络运算中的各运算操作可以包括向量运算、矩阵运算、加减乘除、卷积、池化、全连接、残差等运算,本公开在此不进行一一举例说明,具体可以根据神经网络的具体情况的不同而具有不同的运算操作。
本公开实施例中,可以对神经网络运算的各个运算操作进行划分,形成多个运算子图,其中每个运算子图可以包括至少一个运算操作。其中,可以根据神经网络的运算过程,通过神经网络运算中各运算操作的连接关系(连接顺序和方向),可以得到表示各运算操作的输入数据和输出数据的路径,即可以确定各运算操作执行运算操作的运算数据的来源,以及运算结果的数据流向。
其中,获取神经网络运算的方式可以包括从其他设备接收神经网络运算,或者可以根据接收的神经网络运算指令中解析出神经网络包括的运算操作,本公开对此不作具体限定。
在获得神经网络运算之后,可以通过步骤S200执行神经网络运算的划分操作,通过该划分操作可以将神经网络运算划分成多个运算子图,其中每个运算子图至少可以包括一个运算操作。通过划分出的各运算子图的运算操作的并行运算,可以加快运算速度,同时减少内存空间的占用,以及提高调度速率。
在一些可能的实施方式中,可以将神经网络运算划分成满足第一要求的多个运算子图,其中第一要求包括划分出的多个运算子图中不存在孤立的运算子图,并且划分出的运算子图在与其余的运算操作和运算子图不形成循环运算的情况下,能够包括最多的运算操作。
下述实施例以按照第一要求划分出的运算子图称为第一运算子图为例进行说明。按照第一要求划分出的各第一运算子图为满足第一要求中的各个要求条件的运算子图。首先,本公开实施例中划分出的各第一运算子图之间是具有连接关系的,并且连接后的各第一运算子图形成原始的神经网络运算。即划分出的第一运算子图中不存在孤立的运算子图,各第一运算子图至少与其余的第一运算子图中的一个第一运算子图连接,并具有数据交互,从而才能使得连接的第一运算子图得到与原始神经网络对应的神经网络运算图相匹配,同时完成相应的运算操作。
另外,本公开实施例中划分出的各第一运算子图之间不能形成循环运算,以及形成的第一运算子图与其他的运算操作也不能形成循环运算。即将划分出的运算子图作为新的运算操作与其余的运算操作或者第一运算子图连接后,不能形成运算闭环(如死循环的状态)。图2示出一种未形成循环运算的运算子图的划分方式。图3示出形成循环运算的运算子图的划分方式。
其中,A表示原始的神经网络运算对应的神经网络运算图,其中,在图2中将运算操作A1、A2、A3划分成一个第一运算子图,而图3中将A1、A2、A3和A4划分成一个第一运算子图B1。对于图2的方式。通过运算操作A1、A2和A3形成的新运算操作B1与运算操作A4、A5和A6之间并未形成循环运算,此时该第一运算子图B1即满足不存在循环运算的要求,同时该新运算操作B1与运算操作A4、A5和A6之间的运算过程能够实现原始神经网络的A的运算操作。反之,在图3中将运算操作A1、A2、A3和A4划分成一个第一运算子图B2,该第一运算子图B2和运算操作A5之间形成了循环运算,此时该第一运算子图B2则不满足不形成循环运算的要求。
另外,本公开实施例中划分出的各第一运算子图和运算操作之间在不形成循环运算的前提下还需要满足包括最多的运算操作,即在向运算子图中添加运算操作时,如果加入的运算操作不会使得该运算子图出现与其他运算操作形成循环运算的情况,则可以继续添加其他运算操作,直至与该运算子图连接的运算操作加入至该子图后均出现循环运算的情况,则可以终止该运算子图的扩展。
通过上述实施例的配置,可以保证通过简单的划分结构形成第一运算子图,即在划分出尽量少的第一运算子图的情况下,完成运算图的划分。
下面详细说明本公开实施例划分第一运算子图的过程。图4示出根据本公开实施例的一种神经网络运算方法中步骤S200的流程图,其中,所述将所述神经网络运算划分成满足第一要求的多个运算子图,可以包括:
S201:基于所述神经网络运算的运算顺序,将所述神经网络运算的第一个运算操作或者最后一个运算操作确定为初始子图,其余运算操作与该初始子图的连接顺序,依次向所述初始子图中加入运算操作;
本公开实施例在执行神经网络运算的运算操作的划分(或者分组)时,可以首先确定初始运算子图,并根据其他运算操作与该初始运算子图的连接顺序加入其余运算操作,形成第一运算子图。
在一些可能的实施方式中,可以直接将神经网络运算的正向运算过程中的起始运算操作作为所述初始运算子图,而后根据正向处理过程中各运算操作的连接顺序确定待加入的各运算操作的顺序。或者在另一些可能的实施方式中,也可以得到神经网络运算的反向运算图,即反向运算过程(与正向运算过程相反),并将该反向运算图的起始运算操作作为所述初始运算操作。其中,该反向运算图即表示神经网络运算图的运算操作的反向操作过程,即与神经网络运算的正向运算过程的数据流向相反的运算图。也就是说,本公开实施例,可以按照神经网络运算的正向运算过程执行运算子图的划分,也可以按照神经网络运算的反向运算过程执行运算子图的划分,本公开对此不作具体限定。由于上述过程为通过对神经网络运算的起始运算操作开始执行运算子图的划分,具有方便运算图的划分的效果。
S202:如果将待加入的运算操作加入至所述初始子图所形成的新的子图与其他运算操作以及运算子图不存在循环运算,则将该待加入的运算操作加入至所述初始子图中形成新的子图,并继续向所述新的子图中加入下一运算操作,直至将待加入的运算操作加入至新的子图后所形成的新的子图与其他运算操作或者运算子图之间存在循环运算,则终止该新的子图的扩展,并将未加入该形成循环运算的待加入运算操作的子图作为一个满足第一要求的第一运算子图;
在一些可能的实施方式中,在根据神经网络运算得到第一运算子图的过程中(步骤S202),本公开实施例可以按照神经网络中各运算操作的连接顺序,将与初始子图连接的运算操作依次的并入至该初始子图中,从而形成包括至少一个运算操作的各第一运算子图。其中按照与该初始子图的连接顺序,将各运算操作依次加入到初始子图中,即加入运算操作的顺序可以按照连接关系的距离远近确定优先级,即与初始子图直接连接的各运算操作优先级最高,同优先级的各运算操作优先级相同,与运算操作距离越远,优先级越低。每次向形成的子图中加入加点时,从直接连接的运算操作中选择一个运算操作加入至子图中,判断是否符合第一要求,如符合,则加入,不符合,则选择其余直接连接的运算操作加入,如果与子图直接连接的运算操作都不符合第一要求,则终止该子图的扩展。
S203:将与得到的第一运算子图连接的下一个运算操作作为下一个初始子图,并基于该下一个初始子图确定其余满足第一要求的第一运算子图;
同步骤S202的过程相同,在获得第一个第一运算子图之后,即可以将与该第一个第一运算子图连接的运算操作作为初始运算子图,如果同时连接多个初始运算操作,则可以将该多个运算操作形成一个初始子图,或者,也可以分别将各运算操作作为初始子图,并分别执行依次加入其它运算操作,验证是否满足第一要求。最终形成各第一运算子图。
S204:基于各第一运算子图确定划分的所述多个运算子图。
在得到各第一运算子图之后可以将得到的各第一运算子图作为最终划分出的各运算子图,或者也可以对第一运算子图执行进一步的优化,得到第二运算子图,并将优化得到的第二运算子图确定为最终的各与神经网络运算图对应的运算子图。
在本公开的一些实施例中,神经网络运算中的一部分运算操作需要结合CPU等辅助器件来来执行相应的运算,例如图5示出的一种神经网络运算图的结构示意图,其中,在加速器执行神经网络运算时,运算操作B3的运算操作需要CPU来辅助执行,此时可以直接将该除了加速器执行运算操作以外的其他运算操作B3从神经网络运算中分离,并将该被分离出的B3运算操作作为一个第一运算子图。即本公开实施例可以将通过所述加速器以外的电子器件执行的运算操作对应的运算操作,从神经网络运算中分离出,并将该分离出的运算操作分别作为一个第一运算子图。而后可以将加速器执行的运算操作对应的运算操作按照上述方式进行划分,得到其余的第一运算子图。
通过上述方式即可以得到满足第一要求的各第一运算子图,如图6所示为与图5所示出的神经网络对应的划分结果,其中划分出了三个第一运算子图B1、B2和B3,该三个第一运算子图之间满足第一要求,并可以并行的执行。
进一步地,本公开实施例在得到满足第一要求的各第一运算子图之后,还可以对各第一运算子图中的各运算操作进行剪枝操作,完成运算子图的进一步划分。本公开实施例中,基于各第一运算子图确定划分的所述多个运算子图,包括:将所述多个第一运算子图进一步划分成满足第二要求的多个第二运算子图,所述第二要求为划分出的包括多个运算操作的第二运算子图中的各运算操作的输入路径和输出路径最多为一个。即,对于包括多个运算操作的第二运算子图,其中,各运算操作的输入和输出路径最多为1个,换句话讲可以将包括多个输入路径或者输出路径的运算操作从第一运算子图中进一步划分出来,形成第二运算子图。第一运算子图的划分为网络下层提供足够的优化空间,为了进一步提高上层框架在异构环境中的调度效率,可以对第一运算子图执行进一步剪枝,来平衡框架的调度效率和软件栈的优化效率。
即,本公开实施例在获得各划分出的满足第一要求的第一运算子图之后,还可以对各第一运算子图执行进一步的划分,使得划分出的第二运算子图满足第二要求。
图7示出根据本公开实施例的一种神经网络运算方法的步骤S203的流程图,其中,所述将所述多个第一运算子图进一步划分成满足第二要求的多个第二运算子图,包括:
S2031:确定所述神经网络运算中各运算操作的输入路径的数量;
本公开实施例中,可以执行输入路径的剪枝操作,其中可以首先确定各第一运算子图中的各运算操作的输入路径的数量,如图5所示出的第一运算子图B3的最下面的运算操作包括两个输入路径,其余均包括一个输入路径。
S2032:如果运算操作的输入路径的数量大于1个,执行该输入路径的剪枝操作。
在确定运算操作的输入路径的数量之后,可以执行输入路径的剪枝,如果一运算操作的输入路径大于1个,则可以将该运算操作分离出来,即将该运算操作的输入路径剪断,形成一个独立的第二运算子图,其余部分也形成第二运算子图。图8示出基于图6获得各第二运算子图的过程。其中,最右侧的运算操作即为基于输入路径的剪枝操作得到的第二运算子图。
图9示出根据本公开实施例的一种神经网络运算方法的步骤S203的另一流程图,其中,所述将所述多个第一运算子图进一步划分成满足第二要求的多个第二运算子图,包括:
S20311:确定所述神经网络运算中各运算操作的输出路径的数量;
同样的,本公开实施例中,可以执行输出路径的剪枝操作,其中可以首先确定各第一运算子图中的各运算操作的输出路径的数量,如图5所示出的第一运算子图B1的最上面的运算操作包括两个输出路径,其余均包括一个输出路径。
S20312:如果运算操作的输出路径的数量大于1个,执行该输出路径的剪枝操作。
在确定运算操作的输出路径的数量之后,可以执行输入路径的剪枝,如果一运算操作的输出路径大于1个,则可以将该运算操作分离出来,即将该运算操作的输出路径剪断,形成一个独立的第二运算子图,其余部分也形成第二运算子图。如图8所示,得到第二运算子图中最左侧的子图为基于输出路径的剪枝操作的到的子图,其余为剩余部分形成的第二运算子图。
基于本公开实施例的上述剪枝操作,可以保证最终得到的第二运算子图在上层框架的调度效率和下层软件栈的优化空间之间取得一个较好的平衡。
通过上述实施例即可以实现神经网络运算子图的划分,形成至少满足第一要求的运算子图,如满足第一要求的第一运算子图,以及基于第一运算子图进一步划分形成的满足第二要求的第二运算子图。
在划分形成各运算子图之后,可以通过并行的执行各运算子图完成神经网络运算,
综上所述,本公开实施例中,通过对神经网络运算进行划分,即对神经网络运算的各运算操作进行划分得到多个子运算图,通过并行的执行各子运算图可以方便的实现对加速器执行的运算操作进行优化,同时还能实现下层软件栈的控件优化,以及还可以提高上层框架的调度空间。
本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
此外,本公开还提供了神经网络加速器、电子设备、机器学习芯片以及计算机可读存储介质、程序,上述均可用来实现本公开提供的任一种神经网络运算方法,相应技术方案和描述和参见方法部分的相应记载,不再赘述。
本公开实施例提供了一种神经网络加速器,其包括:处理器,其用于执行如第一方面中任意一项所述的方法。
本公开实施例还提供了一种机器学习芯片,所述机器学习芯片包括用于执行如第一方面中任意一项所述的方法。
在一些可能的实施方式中,本公开实施例还提供了一种芯片封装结构,其包括了上述芯片。
在一些可能的实施方式中,本公开实施例还提供了一种板卡,其包括了上述芯片封装结构板卡除了包括上述芯片以外,还可以包括其他的配套部件,该配套部件包括但不限于:存储器件、接口装置和控制器件。
所述存储器件与所述芯片封装结构内的芯片通过总线连接,用于存储数据。所述存储器件可以包括多组存储单元。每一组所述存储单元与所述芯片通过总线连接。可以理解,每一组所述存储单元可以是DDR SDRAM(英文:Double Data Rate SDRAM,双倍速率同步动态随机存储器)。
DDR不需要提高时钟频率就能加倍提高SDRAM的速度。DDR允许在时钟脉冲的上升沿和下降沿读出数据。DDR的速度是标准SDRAM的两倍。在一个实施例中,所述存储装置可以包括4组所述存储单元。每一组所述存储单元可以包括多个DDR4颗粒(芯片)。在一个实施例中,所述芯片内部可以包括4个72位DDR4控制器,上述72位DDR4控制器中64bit用于传输数据,8bit用于ECC校验。可以理解,当每一组所述存储单元中采用DDR4-3200颗粒时,数据传输的理论带宽可达到25600MB/s。
在一个实施例中,每一组所述存储单元包括多个并联设置的双倍速率同步动态随机存储器。DDR在一个时钟周期内可以传输两次数据。在所述芯片中设置控制DDR的控制器,用于对每个所述存储单元的数据传输与数据存储的控制。
所述接口装置与所述芯片封装结构内的芯片电连接。所述接口装置用于实现所述芯片与外部设备(例如服务器或计算机)之间的数据传输。例如在一个实施例中,所述接口装置可以为标准PCIE接口。比如,待处理的数据由服务器通过标准PCIE接口传递至所述芯片,实现数据转移。优选的,当采用PCIE 3.0X 16接口传输时,理论带宽可达到16000MB/s。在另一个实施例中,所述接口装置还可以是其他的接口,本申请并不限制上述其他的接口的具体表现形式,所述接口单元能够实现转接功能即可。另外,所述芯片的计算结果仍由所述接口装置传送回外部设备(例如服务器)。
所述控制器件与所述芯片电连接。所述控制器件用于对所述芯片的状态进行监控。具体的,所述芯片与所述控制器件可以通过SPI接口电连接。所述控制器件可以包括单片机(Micro Controller Unit,MCU)。如所述芯片可以包括多个处理芯片、多个处理核或多个处理电路,可以带动多个负载。因此,所述芯片可以处于多负载和轻负载等不同的工作状态。通过所述控制装置可以实现对所述芯片中多个处理芯片、多个处理和或多个处理电路的工作状态的调控。
在一些实施例里,还提供了一种电子设备,其包括了上述板卡。
电子设备包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
在一些实施例里,还提供了一种计算机可读存储介质,所述存储介质中存储有计算机程序指令,所述计算机程序指令被处理器执行时实现如第一方面中任意一项所述的方法。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (10)
1.一种神经网络运算方法,其特征在于,包括:
获取待执行的神经网络运算,所述神经网络运算包括多个运算操作;
基于所述多个运算操作划分出满足第一要求的多个运算子图,每个所述运算子图包括至少一个运算操作,所述第一要求包括划分出的多个运算子图中不存在孤立的运算子图,并且划分出的运算子图在与其余的运算操作和运算子图不形成循环运算的情况下,能够包括最多的运算操作;
基于划分的所述多个运算子图并行执行所述神经网络运算。
2.根据权利要求1所述的方法,其特征在于,所述基于所述多个运算操作划分出满足第一要求的多个运算子图,包括:
基于所述神经网络运算的运算顺序,将所述神经网络运算的第一个运算操作或者最后一个运算操作确定为初始子图,按照其余运算操作与该初始子图的连接顺序,依次向所述初始子图中加入运算操作;
如果将待加入的运算操作加入至所述初始子图所形成的新的子图与其他运算操作以及运算子图不存在循环运算,则将该待加入的运算子图加入至所述初始子图中形成新的子图,并继续向所述新的子图中加入下一运算操作,直至将待加入的运算操作加入至新的子图后所形成的新的子图与其他运算操作或者运算子图之间存在循环运算,则终止该新的子图的扩展,并将未加入该形成循环运算的待加入运算子图的子图作为一个满足第一要求的第一运算子图;
将与得到的第一运算子图连接的下一个运算操作作为下一个初始子图,并基于该下一个初始子图确定其余满足第一要求的第一运算子图;
基于各第一运算子图确定划分的所述多个运算子图。
3.根据权利要求2所述的方法,其特征在于,在所述基于所述多个运算操作划分出满足第一要求的多个运算子图之前,所述方法还包括:
将所述神经网络运算的多个运算操作中通过加速器以外的电子器件执行的运算操作,作为一个第一运算子图。
4.根据权利要求2或3所述的方法,其特征在于,所述基于所述多个运算操作划分出满足第一要求的多个运算子图,还包括:
将所述多个第一运算子图进一步划分成满足第二要求的多个第二运算子图,所述第二要求包括划分出的第二运算子图中的各运算操作的输入路径和输出路径最多为一个。
5.根据权利要求4所述的方法,其特征在于,将所述多个第一运算子图进一步划分成满足第二要求的多个第二运算子图,包括:
确定所述神经网络运算中各运算操作的输入路径的数量;
如果运算操作的输入路径的数量大于1个,执行该输入路径的剪枝操作。
6.根据权利要求4或5所述的方法,其特征在于,所述将所述多个第一运算子图进一步划分成满足第二要求的多个第二运算子图,包括:
确定所述神经网络运算中各运算操作的输出路径的数量;
如果运算操作的输出路径的数量大于1个,执行该输出路径的剪枝操作。
7.一种神经网络加速器,其特征在于,包括:
处理器,其用于执行如权利要求1-6中任意一项所述的方法。
8.一种机器学习芯片,其特征在于,所述机器学习芯片用于执行如权利要求1-6中任意一项所述的方法。
9.一种电子设备,其特征在于,所述电子设备包括如所述权利要求8所述的芯片。
10.一种计算机可读存储介质,所述存储介质中存储有计算机程序指令,其特征在于,所述计算机程序指令被处理器执行时实现权利要求1至6中任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910318642.9A CN111832714B (zh) | 2019-04-19 | 2019-04-19 | 运算方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910318642.9A CN111832714B (zh) | 2019-04-19 | 2019-04-19 | 运算方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111832714A true CN111832714A (zh) | 2020-10-27 |
CN111832714B CN111832714B (zh) | 2023-11-17 |
Family
ID=72911379
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910318642.9A Active CN111832714B (zh) | 2019-04-19 | 2019-04-19 | 运算方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111832714B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112381211A (zh) * | 2020-11-20 | 2021-02-19 | 西安电子科技大学 | 基于异构平台执行深度神经网络的***及方法 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102819664A (zh) * | 2012-07-18 | 2012-12-12 | 中国人民解放军国防科学技术大学 | 一种基于图形处理单元的影响最大化并行加速方法 |
CN103559016A (zh) * | 2013-10-23 | 2014-02-05 | 江西理工大学 | 一种基于图形处理器并行计算的频繁子图挖掘方法 |
CN107329828A (zh) * | 2017-06-26 | 2017-11-07 | 华中科技大学 | 一种面向cpu/gpu异构集群的数据流编程方法和*** |
CN107766932A (zh) * | 2017-10-19 | 2018-03-06 | 珠海格力电器股份有限公司 | 基于神经网络的图像处理方法及装置 |
WO2018052987A1 (en) * | 2016-09-13 | 2018-03-22 | Ohio State Innovation Foundation | Systems and methods for modeling neural architecture |
CN108229678A (zh) * | 2017-10-24 | 2018-06-29 | 深圳市商汤科技有限公司 | 网络训练方法、操作控制方法、装置、存储介质和设备 |
CN108292241A (zh) * | 2015-10-28 | 2018-07-17 | 谷歌有限责任公司 | 处理计算图 |
CN108351983A (zh) * | 2015-10-28 | 2018-07-31 | 谷歌有限责任公司 | 修改计算图 |
CN108549934A (zh) * | 2018-04-25 | 2018-09-18 | 福州瑞芯微电子股份有限公司 | 一种基于自动集群神经网络芯片组的运算方法和装置 |
WO2019001071A1 (zh) * | 2017-06-28 | 2019-01-03 | 浙江大学 | 一种基于邻接矩阵的图特征提取***、图分类***和方法 |
EP3428746A1 (en) * | 2017-07-14 | 2019-01-16 | Siemens Aktiengesellschaft | A method and apparatus for providing an adaptive self-learning control program for deployment on a target field device |
-
2019
- 2019-04-19 CN CN201910318642.9A patent/CN111832714B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102819664A (zh) * | 2012-07-18 | 2012-12-12 | 中国人民解放军国防科学技术大学 | 一种基于图形处理单元的影响最大化并行加速方法 |
CN103559016A (zh) * | 2013-10-23 | 2014-02-05 | 江西理工大学 | 一种基于图形处理器并行计算的频繁子图挖掘方法 |
CN108292241A (zh) * | 2015-10-28 | 2018-07-17 | 谷歌有限责任公司 | 处理计算图 |
CN108351983A (zh) * | 2015-10-28 | 2018-07-31 | 谷歌有限责任公司 | 修改计算图 |
WO2018052987A1 (en) * | 2016-09-13 | 2018-03-22 | Ohio State Innovation Foundation | Systems and methods for modeling neural architecture |
CN107329828A (zh) * | 2017-06-26 | 2017-11-07 | 华中科技大学 | 一种面向cpu/gpu异构集群的数据流编程方法和*** |
WO2019001071A1 (zh) * | 2017-06-28 | 2019-01-03 | 浙江大学 | 一种基于邻接矩阵的图特征提取***、图分类***和方法 |
EP3428746A1 (en) * | 2017-07-14 | 2019-01-16 | Siemens Aktiengesellschaft | A method and apparatus for providing an adaptive self-learning control program for deployment on a target field device |
CN107766932A (zh) * | 2017-10-19 | 2018-03-06 | 珠海格力电器股份有限公司 | 基于神经网络的图像处理方法及装置 |
CN108229678A (zh) * | 2017-10-24 | 2018-06-29 | 深圳市商汤科技有限公司 | 网络训练方法、操作控制方法、装置、存储介质和设备 |
CN108549934A (zh) * | 2018-04-25 | 2018-09-18 | 福州瑞芯微电子股份有限公司 | 一种基于自动集群神经网络芯片组的运算方法和装置 |
Non-Patent Citations (4)
Title |
---|
SHAOLI LIU ET AL.: "Combricon:An instruction set architecture for neural networks", AISCA * |
ZHIHONG ZHANG ET AL.: "Quantum-based subgraph convolutional neural networks", PATCOG * |
赵立永;赵冲冲;时鹏;胡长军;: "半监督二次划分聚类算法及其报表***应用", 小型微型计算机***, no. 03 * |
陈乃金;冯志勇;江建慧;: "用于二维RCA跨层数据传输的旁节点无冗余添加算法", 通信学报, no. 04 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112381211A (zh) * | 2020-11-20 | 2021-02-19 | 西安电子科技大学 | 基于异构平台执行深度神经网络的***及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111832714B (zh) | 2023-11-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110096309B (zh) | 运算方法、装置、计算机设备和存储介质 | |
US11157592B2 (en) | Hardware implementation of convolutional layer of deep neural network | |
CN112214727B (zh) | 运算加速器 | |
CN110096310B (zh) | 运算方法、装置、计算机设备和存储介质 | |
US10884707B1 (en) | Transpose operations using processing element array | |
CN111340201A (zh) | 卷积神经网络加速器及其执行卷积运算操作的方法 | |
CN109284824B (zh) | 一种基于可重构技术的用于加速卷积和池化运算的装置 | |
CN111399911B (zh) | 一种基于多核异构计算的人工智能开发方法及装置 | |
CN111340185A (zh) | 一种卷积神经网络加速方法、***、终端及存储介质 | |
CN103870335A (zh) | 用于信号流编程的数字信号处理器代码的高效资源管理的***和方法 | |
CN111832714B (zh) | 运算方法及装置 | |
CN112631955A (zh) | 数据处理方法、装置、电子设备以及介质 | |
US11467973B1 (en) | Fine-grained access memory controller | |
CN111047005A (zh) | 运算方法、装置、计算机设备和存储介质 | |
CN111353124A (zh) | 运算方法、装置、计算机设备和存储介质 | |
GB2582868A (en) | Hardware implementation of convolution layer of deep neural network | |
CN113988277A (zh) | 用于存算一体芯片的神经网络映射方法、装置、设备 | |
CN111047030A (zh) | 运算方法、装置、计算机设备和存储介质 | |
CN111026440B (zh) | 运算方法、装置、计算机设备和存储介质 | |
CN111338694B (zh) | 运算方法、装置、计算机设备和存储介质 | |
WO2020192587A1 (zh) | 人工智能计算装置及相关产品 | |
CN115344525B (zh) | 一种椭圆曲线点加硬件加速方法及装置 | |
CN111353125B (zh) | 运算方法、装置、计算机设备和存储介质 | |
CN111339060B (zh) | 运算方法、装置、计算机设备和存储介质 | |
CN112395002B (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 |