CN117576125A - 一种神经网络计算图的分割方法、装置、设备及存储介质 - Google Patents
一种神经网络计算图的分割方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN117576125A CN117576125A CN202410058689.7A CN202410058689A CN117576125A CN 117576125 A CN117576125 A CN 117576125A CN 202410058689 A CN202410058689 A CN 202410058689A CN 117576125 A CN117576125 A CN 117576125A
- Authority
- CN
- China
- Prior art keywords
- graph
- nodes
- calculation
- sub
- calculation graph
- 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
- 238000004364 calculation method Methods 0.000 title claims abstract description 173
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 76
- 238000000034 method Methods 0.000 title claims abstract description 58
- 230000011218 segmentation Effects 0.000 title claims abstract description 25
- 230000004927 fusion Effects 0.000 claims abstract description 65
- 230000015654 memory Effects 0.000 claims abstract description 52
- 238000012545 processing Methods 0.000 claims abstract description 52
- 238000004590 computer program Methods 0.000 claims description 13
- 230000005540 biological transmission Effects 0.000 claims description 11
- 238000004891 communication Methods 0.000 claims description 8
- 238000004422 calculation algorithm Methods 0.000 claims description 6
- 238000000638 solvent extraction Methods 0.000 claims description 5
- 230000008569 process Effects 0.000 description 15
- 238000010586 diagram Methods 0.000 description 7
- 238000013473 artificial intelligence Methods 0.000 description 4
- 238000013135 deep learning Methods 0.000 description 4
- 238000012549 training Methods 0.000 description 4
- 235000019800 disodium phosphate Nutrition 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000018109 developmental process Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 230000005236 sound signal Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003062 neural network model Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000002243 precursor Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/10—Segmentation; Edge detection
- G06T7/11—Region-based segmentation
-
- 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/0464—Convolutional networks [CNN, ConvNet]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T5/00—Image enhancement or restoration
- G06T5/50—Image enhancement or restoration using two or more images, e.g. averaging or subtraction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/20—Special algorithmic details
- G06T2207/20021—Dividing image into blocks, subimages or windows
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/20—Special algorithmic details
- G06T2207/20084—Artificial neural networks [ANN]
-
- 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)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开一种神经网络计算图的分割方法、装置、设备及存储介质,涉及神经网络技术领域,能够实现对任意的神经网络计算图进行子图切分。具体方案包括:获取待分割的计算图;根据各节点的处理类型为计算图中的各个节点标记对应的设备标识,得到标记后的第一计算图,设备标识用于指示各节点的执行设备;针对第一计算图中具有相同设备标识的节点,根据子网络结构模板以及各相邻节点之间的融合代价进行节点融合,得到融合后的第二计算图;针对第二计算图,根据各执行设备对应的内存对第二计算图进行分割,得到分割后的目标计算图,目标计算图中包括多个子计算图;根据各个子计算图对应的设备标识,将各个子计算图部署至分布式设备上进行并行处理。
Description
技术领域
本申请涉及神经网络技术领域,尤其涉及一种神经网络计算图的分割方法、装置、设备及存储介质。
背景技术
人工智能近年得到迅速发展,在图像分类、检测、视频和语音处理等领域取得良好的应用效果,并且依然具备广阔的发展前景。神经网络是人工智能应用的核心,深度学习神经网络算法是其中最常见的一种神经网络模型。深度学习神经网络的工作负载特征是计算和数据密集。训练神经网络所需的训练以及后续推理所需参数则通常为M至GB字节数量级。由于常规计算机,甚至单个专用服务器无法提供如此高的算力并配备足够内存,因此越来越多的神经网络训练和推理在专门的神经网络平台上被分布式执行。
分布式执行需要对神经网络的计算图进行切分,并将切分后的子图部署到合适的处理设备上,以提高神经网络的推理速度。目前针对神经网络计算图的切分方案只适合简单的算子链式相连的神经网络计算图,而越来越多的神经网络计算图包含更复杂的算子连接依赖关系,这些都涉及非链式的神经网络计算图。因此,如何对任意的神经网络计算图进行子图切分成为亟待解决的问题。
发明内容
本申请提供一种神经网络计算图的分割方法、装置、设备及存储介质,能够实现对任意的神经网络计算图进行子图切分。
为达到上述目的,本申请采用如下技术方案:
本申请实施例第一方面,提供了一种神经网络计算图的分割方法,该方法包括:
获取待分割的计算图,所述计算图中包括多个节点以及多个节点之间的边,所述节点中包括计算单元,所述边用于指示计算间的依赖关系;
根据各所述节点的处理类型为所述计算图中的各个节点标记对应的设备标识,得到标记后的第一计算图,所述设备标识用于指示各所述节点的执行设备;
针对所述第一计算图中具有相同设备标识的节点,根据预定义的子网络结构模板以及各相邻节点之间的融合代价进行节点融合,得到融合后的第二计算图;
针对所述第二计算图,根据各所述执行设备对应的内存对所述第二计算图进行分割,得到分割后的目标计算图,所述目标计算图中包括多个子计算图;
根据各个子计算图对应的设备标识,将各个子计算图部署至对应的分布式设备上进行并行处理。
在一种可能的实现方式中,所述根据各所述节点的处理类型为所述计算图中的各个节点标记对应的设备标识,包括:
获取当前计算场景对应的执行设备,以及各所述执行设备对应的设备标识,根据各所述节点的处理类型为各所述节点匹配对应的执行设备,并将各所述执行设备的设备标识标记至对应的节点。
在一种可能的实现方式中,所述根据预定义的子网络结构模板以及各相邻节点之间的融合代价进行节点融合,得到融合后的第二计算图,包括:
遍历所述第一计算图,针对所述第一计算图中具有相同设备标识的节点,将符合所述子网络结构模板的节点进行融合,得到融合后的中间计算图;
针对所述中间计算图中具有相同设备标识的节点,根据各相邻节点之间的融合代价进行节点融合,得到融合后的第二计算图。
在一种可能的实现方式中,所述针对所述第一计算图中具有相同设备标识的节点,将符合所述子网络模板的节点进行融合之前,所述方法包括:
根据当前计算场景,预定义多个子网络结构,并将配置的多个子网络结构作为所述子网络结构模板。
在一种可能的实现方式中,所述根据各相邻节点之间的融合代价进行节点融合,得到融合后的第二计算图,包括:
针对所述中间计算图中具有相同设备标识的节点,获取各所述相邻节点之间的数据传输量和通信带宽;
利用贪心算法根据各所述相邻节点之间的数据传输量和通信带宽,确定出各相邻节点之间的融合代价,以及根据各所述融合代价确定出融合路径,所述融合路径包括待融合的节点和边;
根据所述融合路径对所述中间计算图进行融合,得到融合后的第二计算图。
在一种可能的实现方式中,所述针对所述第二计算图,根据各所述执行设备对应的内存对所述第二计算图进行分割,包括:
获取各所述执行设备对应的运行内存,并获取所述第二计算图中的各子计算图所需的处理内存;
遍历所述第二计算图,若所述第二计算图中的子计算图所需的处理内存大于对应的执行设备的运行内存,则对所述第二计算图中的子计算图进行分割。
在一种可能的实现方式中,所述将各个子计算图部署至对应的设备上进行处理,包括:
获取所述目标计算图中可并行处理的目标子计算图,为所述目标子计算图开设多个线程来并行处理。
本申请实施例第二方面,提供了一种神经网络计算图的分割装置,该装置包括:
获取模块,用于获取待分割的计算图,所述计算图中包括多个节点以及多个节点之间的边,所述节点中包括计算单元,所述边用于指示计算间的依赖;
处理模块,用于根据各所述节点的处理类型为所述计算图中的各个节点标记对应的设备标识,得到标记后的第一计算图,所述设备标识用于指示各所述节点的执行设备;
融合模块,用于针对所述第一计算图中具有相同设备标识的节点,根据预定义的子网络结构模板以及各相邻节点之间的融合代价进行节点融合,得到融合后的第二计算图;
分割模块,用于针对所述第二计算图,根据各所述执行设备对应的内存对所述第二计算图进行分割,得到分割后的目标计算图,所述目标计算图中包括多个子计算图;
部署模块,用于根据各个子计算图对应的设备标识,将各个子计算图部署至对应的分布式设备上进行并行处理。
本申请实施例第三方面,提供了一种电子设备,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时实现本申请实施例第一方面中的神经网络计算图的分割方法。
本申请实施例第四方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现本申请实施例第一方面中的神经网络计算图的分割方法。
本申请实施例提供的技术方案带来的有益效果至少包括:
本申请实施例提供的神经网络计算图的分割方法,通过获取待分割的计算图,该计算图中包括多个节点以及多个节点之间的边,其中,节点中包括计算单元,边用于指示计算间的依赖,然后根据各所述节点的处理类型为所述计算图中的各个节点标记对应的设备标识,得到标记后的第一计算图,所述设备标识用于指示各所述节点的执行设备,再针对所述第一计算图中具有相同设备标识的节点,根据预定义的子网络结构模板以及各相邻节点之间的融合代价进行节点融合,得到融合后的第二计算图,以及针对所述第二计算图,根据各所述执行设备对应的内存对所述第二计算图进行分割,得到分割后的目标计算图,所述目标计算图中包括多个子计算图,最后根据各个子计算图对应的设备标识,将各个子计算图部署至对应的分布式设备上进行并行处理,这样可以实现对任意的神经网络计算图进行子图切分,进而可以提高神经网络的处理效率。
附图说明
图1为本申请实施例提供的一种神经网络计算图的分割方法的流程图一;
图2为本申请实施例提供的一种神经网络计算图的分割过程的示意图;
图3为本申请实施例提供的一种神经网络计算图的分割方法的流程图二;
图4为本申请实施例提供的一种子计算图的执行过程的示意图;
图5为本申请实施例提供的一种神经网络计算图的分割装置的结构图;
图6为本申请实施例提供的一种电子设备的内部结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
以下,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本公开实施例的描述中,除非另有说明,“多个”的含义是两个或两个以上。
另外,“基于”或“根据”的使用意味着开放和包容性,因为“基于”或“根据”一个或多个条件或值的过程、步骤、计算或其他动作在实践中可以基于额外条件或超出的值。
人工智能近年得到迅速发展,在图像分类、检测、视频和语音处理等领域取得良好的应用效果,并且依然具备广阔的发展前景。神经网络是人工智能应用的核心,深度学习神经网络算法是其中最常见的一种神经网络模型。深度学习神经网络的工作负载特征是计算和数据密集。训练神经网络所需的训练以及后续推理所需参数则通常为M至GB字节数量级。由于常规计算机,甚至单个专用服务器无法提供如此高的算力并配备足够内存,因此越来越多的神经网络训练和推理在专门的神经网络平台上被分布式执行。
分布式执行需要对神经网络的计算图进行切分,并将切分后的子图部署到合适的处理设备上,以提高神经网络的推理速度。目前针对神经网络计算图的切分方案只适合简单的算子链式相连的神经网络计算图,而越来越多的神经网络计算图包含更复杂的算子连接依赖关系,这些都涉及非链式的神经网络计算图。因此,如何对任意的神经网络计算图进行子图切分成为亟待解决的问题。
为了解决上述问题,本申请实施例提供了一种神经网络计算图的分割方法,如图1所示,该方法包括以下步骤:
步骤101、获取待分割的计算图,所述计算图中包括多个节点以及多个节点之间的边,所述节点中包括计算单元,所述边用于指示计算间的依赖关系。
神经网络的计算图由节点(nodes)和边(edges)组成,节点表示操作符Operator,或者称之为算子,边表示计算间的依赖关系,实线表示有数据传递依赖。
步骤102、根据各所述节点的处理类型为所述计算图中的各个节点标记对应的设备标识,得到标记后的第一计算图,所述设备标识用于指示各所述节点的执行设备。
其中,执行设备可以为CPU、AI加速芯片、DSP和FPGA等,其中,AI加速芯片可以包括GPU和NPU。
可选的,所述根据各所述节点的处理类型为所述计算图中的各个节点标记对应的设备标识的过程可以为:
获取当前计算场景对应的执行设备,以及各所述执行设备对应的设备标识,根据各所述节点的处理类型为各所述节点匹配对应的执行设备,并将各所述执行设备的设备标识标记至对应的节点。具体如图2(a)所示。
上述过程可以根据计算场景的不同获取不同的执行设备。或者根据当前场景下的执行设备,根据各所述节点的处理类型为各所述节点匹配对应的执行设备。例如,可以将复杂控制逻辑的节点标记CPU的设备标识,将数据信号、图像信号和音频信号的节点标记DSP的设备标识,将卷积运算和矩阵运算的节点标记GPU的设备标识。
可以理解的是,CPU适用于处理具有复杂控制逻辑的过程,DSP适用于处理数据信号、图像信号和音频信号,GPU适用于处理卷积运算和矩阵运算。
在实际执行过程中,可以定义一个json的配置文件,该配置文件中可以包括:config = { 'cpu': [], 'gpu':[],'npu':[],'fpga':[]},[]这样的配置函数,配置函数里面可以动态配置网络节点的类型需要在哪些设备上跑,然后第一步先给网络每个节点标记上对应的执行设备。
上述标记过程,仅仅是根据粗略的根据各个节点的处理类型,为各所述节点匹配对应的执行设备。
步骤103、针对所述第一计算图中具有相同设备标识的节点,根据预定义的子网络结构模板以及各相邻节点之间的融合代价进行节点融合,得到融合后的第二计算图。
可以理解的是,由于神经网络模型中计算密集型算子和访存密集型算子都是相伴出现,因此针对不同的执行设备配置相应的多算子匹配模式来将此类算子进行融合聚类会大量减少读写内存的次数,如图2(b)所示加速器A上模板匹配目标算子op1(计算密集型)和op2(访存密集型)以及加速器B上模板匹配目标算子op1(计算密集型)和op2(访存密集型),原始计算图转换为图2(b),图2(b)中匹配到的多算子转换为融合单算子,随后它会被映射为对应执行设备的执行指令。然后根据各相邻节点之间的融合代价,得到融合后的第二计算图。
步骤104、针对所述第二计算图,根据各所述执行设备对应的内存对所述第二计算图进行分割,得到分割后的目标计算图,所述目标计算图中包括多个子计算图。
根据具体的执行设备的内存以及该节点的处理内存的情况对第二计算图进行分割,或者是根据执行设备的内存以及该执行设备包括的节点个数对第二计算图进行分割。例如,加速器内存限制不超过2N个算子。
上述分割过程如图2(c)到图2(d)所示,也就是将原本(c)中由4N+1个算子组成的子图切分为只有2N+1个算子的新的子图以及有2N个算子的子图。
步骤105、根据各个子计算图对应的设备标识,将各个子计算图部署至对应的设备上进行处理。
本申请实施例提供的神经网络计算图的分割方法,通过获取待分割的计算图,该计算图中包括多个节点以及多个节点之间的边,其中,节点中包括计算单元,边用于指示计算间的依赖,然后根据各所述节点的处理类型为所述计算图中的各个节点标记对应的设备标识,得到标记后的第一计算图,所述设备标识用于指示各所述节点的执行设备,再针对所述第一计算图中具有相同设备标识的节点,根据预定义的子网络结构模板以及各相邻节点之间的融合代价进行节点融合,得到融合后的第二计算图,以及针对所述第二计算图,根据各所述执行设备对应的内存对所述第二计算图进行分割,得到分割后的目标计算图,所述目标计算图中包括多个子计算图,最后根据各个子计算图对应的设备标识,
将各个子计算图部署至对应的分布式设备上进行并行处理,这样可以实现对任意的神经网络计算图进行子图切分,进而可以提高神经网络的处理效率。
可选的,上述步骤103根据预定义的子网络结构模板以及各相邻节点之间的融合代价进行节点融合,得到融合后的第二计算图的过程可以为:
遍历所述第一计算图,针对所述第一计算图中具有相同设备标识的节点,将符合所述子网络结构模板的节点进行融合,得到融合后的中间计算图;
针对所述中间计算图中具有相同设备标识的节点,根据各相邻节点之间的融合代价进行节点融合,得到融合后的第二计算图。
具体的,首先定义子网络结构模板,该子网络结构模板如Conv + Sum + ReLU所示,也就是说,可以根据当前计算场景动态设定子网络结构模板。随后在整个计算图中采用BFS广度优先搜索遍历整个计算图节点,针对第一计算图中具有相同设备标识的节点,查找Conv + Sum + ReLU子网络图结构,每增加一条边e(如Conv2D->Sum),完成一次BFS搜索并寻找下一个算子目标(如ReLU),直到找到一个完成的子网络图结构,并存储下来。然后继续在计算图中进行BFS遍历,重复上述过程,直到整个第一计算图遍历完成。
在第一计算图中找到与子网络结构模板相同的目标子网络结构后,会将该目标子网络结构中的第一个算子的输入和最后一个算子的输出作为合并后算子的输入和输出,中间的数据算子之间的拷贝操作得以减少,整个计算图中的相应的模式匹配后的算子会被一个优化后的统一融合算子代替,因此这样就减少了中间的内存读写操作。
可选的,上述针对所述第一计算图中具有相同设备标识的节点,将符合所述子网络模板的节点进行融合之前,所述方法包括:
根据当前计算场景,预定义配置多个子网络结构,并将预定义的多个子网络结构作为所述子网络结构模板。具体的子网络结构模板可以根据当前的计算场景进行灵活配置。
在实际执行过程中,通过配置子网络结构模板,例如 pattern= {subgraph:'Conv'-'Sum'-'PRelu', device: xxx}, 当然这个pattern可以自己定义多个, 然后patern会存放到pattern_table里,然后拿着这个pattern去遍历计算图找对应的pattern和device匹配的子图然后记录下来。
可选的,如图3所示,上述根据各相邻节点之间的融合代价进行节点融合,得到融合后的第二计算图的过程可以为:
步骤301、针对所述中间计算图中具有相同设备标识的节点,获取各所述相邻节点之间的数据传输量和通信带宽;
步骤302、利用贪心算法根据各所述相邻节点之间的数据传输量和通信带宽,确定出各相邻节点之间的融合代价,以及根据各所述融合代价确定出融合路径,所述融合路径包括待融合的节点和边;
步骤303、根据所述融合路径对所述中间计算图进行融合,得到融合后的第二计算图。
可以理解的是,针对上述融合后的中间计算图,只是定义当前执行设备的算子列表,将不同执行设备支持的算子在计算图中做好标记,但这样往往会造成原始计算图被四分五裂为多个执行设备的子图,但是执行设备的子图之间存在一些执行设备不支持的算子时,就会带来不同执行设备之间的数据传输、启动开销,为了解决这些问题,可以利用贪心策略中的最近临点策略将连续且同一执行设备支持的算子且算子的前驱支持的执行设备相同的算子进行合并为一个子图区域,这样可以减少不同执行设备之间的数据传输、加速器启动开销。具体如图2(c)。
可选的,上述步骤104针对所述第二计算图,根据各所述执行设备对应的内存对所述第二计算图进行分割的过程可以为:
获取各所述执行设备对应的运行内存,并获取所述第二计算图中的各子计算图所需的处理内存;
遍历所述第二计算图,若所述第二计算图中的子计算图的处理内存大于对应的执行设备的运行内存,则对所述第二计算图中的子计算图进行分割。
此外,还根据执行设备的内存以及该执行设备包括的节点个数对第二计算图进行分割。例如加速器内存限制不超过2N个算子。
上述分割过程如图2(c)到图2(d)所示,也就是将原本(c)中由4N+1个算子组成的子图切分为只有2N+1个算子的新的子图以及有2N个算子的子图。
可选的,上述步骤105中将各个子计算图部署至对应的设备上进行处理,包括:
获取所述目标计算图中可并行处理的目标子计算图,为所述目标子计算图开设多个线程来并行处理。
分割完的子图在运行时态大致分为了可并行子图和不可并行子图,可并行子图可以独立加载子图参数并在后续的获得并行调度,不可并行子图调度器会利用依赖队列控制子图之间的执行,具体如图4所示。子图运行通过CPU线程池分配给每一个子图的工作线程资源,来完成可并行子图的并行运算。
本申请实施例提供的神经网络计算图的分割方法,通过不同执行设备支持列表、代价策略、多算子模式匹配融合等动态配置方式,针对非链式的神经网络计算图拆分问题,在充分考虑硬件执行设备的内存和支持特性下,对原神经网络计算图合理进行了子网络的拆分,每个部分的子网络可并行运行在不同的加速器上,加速神经网络的推理速度。
相对于目前只适合简单的算子链式相连的神经网络计算图的子图分割且没有针对不同加速器进行动态的子图分配策略的弊端,本发明可以对神经网络计算图中包含更复杂的算子连接依赖关系的算子进行子网络分割。本发明的技术优点包括:执行设备的算子支持列表、代价策略、多算子模式匹配融合等动态配置方式,针对非链式的神经网络计算图拆分问题,在充分考虑硬件加速器的内存和支持特性下,对原神经网络计算图进行了子网络动态拆分。
如图5所示,本申请实施例还提供了一种神经网络计算图的分割装置,该装置包括:
获取模块11,用于获取待分割的计算图,所述计算图中包括多个节点以及多个节点之间的边,所述节点中包括计算单元,所述边用于指示数据传输;
处理模块12,用于根据各所述节点的处理类型为所述计算图中的各个节点标记对应的设备标识,得到标记后的第一计算图,所述设备标识用于指示各所述节点的执行设备;
融合模块13,用于针对所述第一计算图中具有相同设备标识的节点,根据预定义的子网络结构模板以及各相邻节点之间的融合代价进行节点融合,得到融合后的第二计算图;
分割模块14,用于针对所述第二计算图,根据各所述执行设备对应的内存对所述第二计算图进行分割,得到分割后的目标计算图,所述目标计算图中包括多个子计算图;
部署模块15,用于根据各个子计算图对应的设备标识,将各个子计算图部署至对应的分布式设备上进行并行处理。
在一个实施例中,处理模块12具体用于:
获取当前计算场景对应的执行设备,以及各所述执行设备对应的设备标识,根据各所述节点的处理类型为各所述节点匹配对应的执行设备,并将各所述执行设备的设备标识标记至对应的节点。
在一个实施例中,融合模块13具体用于:
遍历所述第一计算图,针对所述第一计算图中具有相同设备标识的节点,将符合所述子网络结构模板的节点进行融合,得到融合后的中间计算图;
针对所述中间计算图中具有相同设备标识的节点,根据各相邻节点之间的融合代价进行节点融合,得到融合后的第二计算图。
在一个实施例中,融合模块13还用于:
根据当前计算场景,预定义多个子网络结构,并将预定义的多个子网络结构作为所述子网络结构模板。
在一个实施例中,融合模块13具体用于:
获取各所述相邻节点之间的数据传输量和通信带宽;
将各所述相邻节点之间的数据传输量和通信带宽输入至预定义的贪心算法中,确定各所述相邻节点之间的融合代价;
若两个相邻节点的融合代价满足预定义条件,则将两个相邻节点进行融合,得到融合后的第二计算图。
在一个实施例中,分割模块14具体用于:
获取各所述执行设备对应的运行内存,并获取所述第二计算图中的各子计算图所需的处理内存;
遍历所述第二计算图,若所述第二计算图中的子计算图的处理内存大于对应的执行设备的运行内存,则对所述第二计算图中的子计算图进行分割。
在一个实施例中,部署模块15具体用于:
获取所述目标计算图中可并行处理的目标子计算图,为所述目标子计算图开设多个线程来并行处理。
本实施例提供的神经网络计算图的分割装置,可以执行上述神经网络计算图的分割方法实施例,其实现原理和技术效果类似,在此不再多加赘述。
关于神经网络计算图的分割装置的具体限定可以参见上文中对于神经网络计算图的分割方法的限定,在此不再赘述。上述神经网络计算图的分割装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于电子设备的处理器中,也可以以软件形式存储于电子设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
本申请实施例提供的神经网络计算图的分割方法的执行主体可以为电子设备,该电子设备可以为计算机设备、终端设备、服务器或服务器集群,本申请实施例对此不作具体限定。
图6为本申请实施例提供的一种电子设备的内部结构示意图。如图6所示,该电子设备包括通过系统总线连接的处理器和存储器。其中,该处理器用于提供计算和控制能力。存储器可包括非易失性存储介质及内存储器。非易失性存储介质存储有操作系统、计算机程序和数据库。该计算机程序可被处理器所执行,以用于实现以上各个实施例提供的神经网络计算图的分割方法的步骤。内存储器为非易失性存储介质中的操作系统和计算机程序提供高速缓存的运行环境。
本领域技术人员可以理解,图6中示出电子设备的内部结构图,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的电子设备的限定,具体的电子设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
本申请另一实施例中,还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现如本申请实施例的神经网络计算图的分割方法的步骤。
本申请另一实施例中,还提供一种计算机程序产品,该计算机程序产品包括计算机指令,当计算机指令在神经网络计算图的分割装置上运行时,使得神经网络计算图的分割装置执行上述方法实施例所示的方法流程中神经网络计算图的分割方法执行的各个步骤。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件程序实现时,可以全部或部分地以计算机程序产品的形式来实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机执行指令时,全部或部分地产生按照本申请实施例的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或者数据中心通过有线(例如同轴电缆、光纤、数字用户线(digitalsubscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可以用介质集成的服务器、数据中心等数据存储设备。可用介质可以是磁性介质(例如,软盘、硬盘、磁带),光介质(例如,DVD)、或者半导体介质(例如固态硬盘(solid state disk,SSD))等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种神经网络计算图的分割方法,其特征在于,所述方法包括:
获取待分割的计算图,所述计算图中包括多个节点以及多个节点之间的边,所述节点中包括计算单元,所述边用于指示计算间的依赖关系;
根据各所述节点的处理类型为所述计算图中的各个节点标记对应的设备标识,得到标记后的第一计算图,所述设备标识用于指示各所述节点的执行设备;
针对所述第一计算图中具有相同设备标识的节点,根据预定义的子网络结构模板以及各相邻节点之间的融合代价进行节点融合,得到融合后的第二计算图;
针对所述第二计算图,根据各所述执行设备对应的内存对所述第二计算图进行分割,得到分割后的目标计算图,所述目标计算图中包括多个子计算图;
根据各个子计算图对应的设备标识,将各个子计算图部署至对应的分布式设备上进行并行处理。
2.根据权利要求1所述的方法,其特征在于,所述根据各所述节点的处理类型为所述计算图中的各个节点标记对应的设备标识,包括:
获取当前计算场景对应的执行设备,以及各所述执行设备对应的设备标识,根据各所述节点的处理类型为各所述节点匹配对应的执行设备,并将各所述执行设备的设备标识标记至对应的节点。
3.根据权利要求1所述的方法,其特征在于,所述根据预定义的子网络结构模板以及各相邻节点之间的融合代价进行节点融合,得到融合后的第二计算图,包括:
遍历所述第一计算图,针对所述第一计算图中具有相同设备标识的节点,将符合所述子网络结构模板的节点进行融合,得到融合后的中间计算图;
针对所述中间计算图中具有相同设备标识的节点,根据各相邻节点之间的融合代价进行节点融合,得到融合后的第二计算图。
4.根据权利要求3所述的方法,其特征在于,所述针对所述第一计算图中具有相同设备标识的节点,将符合所述子网络结构模板的节点进行融合之前,所述方法包括:
根据当前计算场景,预定义多个子网络结构,并将预定义的多个子网络结构作为所述子网络结构模板。
5.根据权利要求3所述的方法,其特征在于,所述根据各相邻节点之间的融合代价进行节点融合,得到融合后的第二计算图,包括:
针对所述中间计算图中具有相同设备标识的节点,获取各所述相邻节点之间的数据传输量和通信带宽;
利用贪心算法根据各所述相邻节点之间的数据传输量和通信带宽,确定出各相邻节点之间的融合代价,以及根据各所述融合代价确定出融合路径,所述融合路径包括待融合的节点和边;
根据所述融合路径对所述中间计算图进行融合,得到融合后的第二计算图。
6.根据权利要求1所述的方法,其特征在于,所述针对所述第二计算图,根据各所述执行设备对应的内存对所述第二计算图进行分割,包括:
获取各所述执行设备对应的运行内存,并获取所述第二计算图中的各子计算图所需的处理内存;
遍历所述第二计算图,若所述第二计算图中的子计算图所需的处理内存大于对应的执行设备的运行内存,则对所述第二计算图中的子计算图进行分割。
7.根据权利要求1所述的方法,其特征在于,所述将各个子计算图部署至对应的设备上进行处理,包括:
获取所述目标计算图中可并行处理的目标子计算图,为所述目标子计算图开设多个线程来并行处理。
8.一种神经网络计算图的分割装置,其特征在于,所述装置包括:
获取模块,用于获取待分割的计算图,所述计算图中包括多个节点以及多个节点之间的边,所述节点中包括计算单元,所述边用于指示计算间的依赖;
处理模块,用于根据各所述节点的处理类型为所述计算图中的各个节点标记对应的设备标识,得到标记后的第一计算图,所述设备标识用于指示各所述节点的执行设备;
融合模块,用于针对所述第一计算图中具有相同设备标识的节点,根据预定义的子网络结构模板以及各相邻节点之间的融合代价进行节点融合,得到融合后的第二计算图;
分割模块,用于针对所述第二计算图,根据各所述执行设备对应的内存对所述第二计算图进行分割,得到分割后的目标计算图,所述目标计算图中包括多个子计算图;
部署模块,用于根据各个子计算图对应的设备标识,将各个子计算图部署至对应的分布式设备上进行并行处理。
9.一种电子设备,其特征在于,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时实现权利要求1至7任一项所述的神经网络计算图的分割方法。
10.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1至7任一项所述的神经网络计算图的分割方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410058689.7A CN117576125B (zh) | 2024-01-16 | 2024-01-16 | 一种神经网络计算图的分割方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410058689.7A CN117576125B (zh) | 2024-01-16 | 2024-01-16 | 一种神经网络计算图的分割方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117576125A true CN117576125A (zh) | 2024-02-20 |
CN117576125B CN117576125B (zh) | 2024-04-16 |
Family
ID=89890443
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410058689.7A Active CN117576125B (zh) | 2024-01-16 | 2024-01-16 | 一种神经网络计算图的分割方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117576125B (zh) |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111062467A (zh) * | 2019-12-18 | 2020-04-24 | 开放智能机器(上海)有限公司 | 一种应用于ai异构编译器的自动切分神经网络子图方法 |
CN111260019A (zh) * | 2020-02-18 | 2020-06-09 | 深圳鲲云信息科技有限公司 | 神经网络模型的数据处理方法、装置、设备及存储介质 |
WO2022022670A1 (zh) * | 2020-07-31 | 2022-02-03 | 北京灵汐科技有限公司 | 神经网络计算图的处理方法、装置及处理设备 |
CN114139684A (zh) * | 2021-12-02 | 2022-03-04 | 脸萌有限公司 | 图神经网络生成方法、装置、系统、介质以及电子设备 |
CN114283099A (zh) * | 2020-09-21 | 2022-04-05 | 华为技术有限公司 | 一种图处理的方法,系统以及装置 |
CN114841322A (zh) * | 2022-05-17 | 2022-08-02 | 北京灵汐科技有限公司 | 神经网络计算图的处理方法及处理装置 |
CN114881214A (zh) * | 2022-05-17 | 2022-08-09 | 北京灵汐科技有限公司 | 神经网络计算图的处理方法及处理装置 |
CN115829006A (zh) * | 2022-12-20 | 2023-03-21 | 北京地平线信息技术有限公司 | 神经网络模型的编译方法、装置、电子设备和存储介质 |
CN115965065A (zh) * | 2022-12-23 | 2023-04-14 | 中国科学技术大学 | 一种模型计算方法、装置及设备 |
CN116166405A (zh) * | 2023-04-21 | 2023-05-26 | 北京燧原智能科技有限公司 | 异构场景下的神经网络任务调度策略确定方法及装置 |
CN116187391A (zh) * | 2021-11-24 | 2023-05-30 | 华为技术有限公司 | 神经网络模型的处理方法及装置 |
CN117271101A (zh) * | 2023-11-22 | 2023-12-22 | 上海燧原科技有限公司 | 一种算子融合方法、装置、电子设备及存储介质 |
-
2024
- 2024-01-16 CN CN202410058689.7A patent/CN117576125B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111062467A (zh) * | 2019-12-18 | 2020-04-24 | 开放智能机器(上海)有限公司 | 一种应用于ai异构编译器的自动切分神经网络子图方法 |
CN111260019A (zh) * | 2020-02-18 | 2020-06-09 | 深圳鲲云信息科技有限公司 | 神经网络模型的数据处理方法、装置、设备及存储介质 |
WO2022022670A1 (zh) * | 2020-07-31 | 2022-02-03 | 北京灵汐科技有限公司 | 神经网络计算图的处理方法、装置及处理设备 |
CN114283099A (zh) * | 2020-09-21 | 2022-04-05 | 华为技术有限公司 | 一种图处理的方法,系统以及装置 |
CN116187391A (zh) * | 2021-11-24 | 2023-05-30 | 华为技术有限公司 | 神经网络模型的处理方法及装置 |
CN114139684A (zh) * | 2021-12-02 | 2022-03-04 | 脸萌有限公司 | 图神经网络生成方法、装置、系统、介质以及电子设备 |
CN114841322A (zh) * | 2022-05-17 | 2022-08-02 | 北京灵汐科技有限公司 | 神经网络计算图的处理方法及处理装置 |
CN114881214A (zh) * | 2022-05-17 | 2022-08-09 | 北京灵汐科技有限公司 | 神经网络计算图的处理方法及处理装置 |
CN115829006A (zh) * | 2022-12-20 | 2023-03-21 | 北京地平线信息技术有限公司 | 神经网络模型的编译方法、装置、电子设备和存储介质 |
CN115965065A (zh) * | 2022-12-23 | 2023-04-14 | 中国科学技术大学 | 一种模型计算方法、装置及设备 |
CN116166405A (zh) * | 2023-04-21 | 2023-05-26 | 北京燧原智能科技有限公司 | 异构场景下的神经网络任务调度策略确定方法及装置 |
CN117271101A (zh) * | 2023-11-22 | 2023-12-22 | 上海燧原科技有限公司 | 一种算子融合方法、装置、电子设备及存储介质 |
Non-Patent Citations (1)
Title |
---|
朱虎明;李佩;焦李成;杨淑媛;侯彪;: "深度神经网络并行化研究综述", 计算机学报, no. 08, 19 January 2018 (2018-01-19) * |
Also Published As
Publication number | Publication date |
---|---|
CN117576125B (zh) | 2024-04-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
RU2442210C2 (ru) | Способы и устройства для осуществления операций по дереву каналов | |
Chu et al. | Confidence-based work stealing in parallel constraint programming | |
CN108958796A (zh) | 业务请求处理方法及装置、业务请求处理系统 | |
CN113220457A (zh) | 模型部署方法、模型部署装置、终端设备及可读存储介质 | |
US9400767B2 (en) | Subgraph-based distributed graph processing | |
CN111062467B (zh) | 一种应用于ai异构编译器的自动切分神经网络子图方法 | |
CN110233802B (zh) | 一种构建一主链多侧链的区块链架构的方法 | |
CN112543918A (zh) | 神经网络切分方法、预测方法及相关装置 | |
WO2022062529A1 (zh) | 用于分布式数据处理的并行决策系统及其方法 | |
Parter et al. | Local-on-average distributed tasks | |
CN111355696A (zh) | 一种报文识别方法、装置、dpi设备及存储介质 | |
CN115293340B (zh) | 数据同步处理方法、装置、计算设备和存储介质 | |
CN115240048A (zh) | 面向图像分类的深度学习的算子定位融合方法及装置 | |
CN117785490B (zh) | 一种图神经网络模型的训练架构、方法、系统及服务器 | |
CN117576125B (zh) | 一种神经网络计算图的分割方法、装置、设备及存储介质 | |
CN116723143A (zh) | 一种基于流量亲和性的网络靶场资源分配方法与系统 | |
CN116933841A (zh) | 算子融合方法及装置、电子设备、计算机可读介质 | |
CN116128525A (zh) | 一种基于模式前缀共享的多模式图匹配查询方法及装置 | |
CN112100446B (zh) | 搜索方法、可读存储介质和电子设备 | |
CN113051080A (zh) | 一种计算图执行方法、装置及异构平台 | |
CN115408427A (zh) | 用于数据搜索的方法、装置及设备 | |
CN117056068B (zh) | ETL中JobEngine任务拆分方法 | |
CN112486615B (zh) | 基于拓扑路径的决策流执行方法、装置、设备及存储介质 | |
CN111260038B (zh) | 卷积神经网络的实现方法、装置、电子设备及存储介质 | |
CN107291535A (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 |