CN113886092A - 一种计算图执行方法、装置及相关设备 - Google Patents
一种计算图执行方法、装置及相关设备 Download PDFInfo
- Publication number
- CN113886092A CN113886092A CN202111479916.6A CN202111479916A CN113886092A CN 113886092 A CN113886092 A CN 113886092A CN 202111479916 A CN202111479916 A CN 202111479916A CN 113886092 A CN113886092 A CN 113886092A
- Authority
- CN
- China
- Prior art keywords
- operator
- combination
- initial
- graph
- hierarchical
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 54
- 238000004364 calculation method Methods 0.000 claims abstract description 93
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 68
- 238000012545 processing Methods 0.000 claims abstract description 50
- 230000008569 process Effects 0.000 claims abstract description 22
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 claims abstract description 18
- 238000003860 storage Methods 0.000 claims abstract description 14
- 238000012216 screening Methods 0.000 claims description 22
- 238000004590 computer program Methods 0.000 claims description 9
- 238000001914 filtration Methods 0.000 claims 1
- 230000009286 beneficial effect Effects 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 25
- 238000005457 optimization Methods 0.000 description 16
- 238000013135 deep learning Methods 0.000 description 7
- 238000004891 communication Methods 0.000 description 6
- 230000001934 delay Effects 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 238000012827 research and development Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000003062 neural network model Methods 0.000 description 2
- 238000004904 shortening Methods 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 230000001427 coherent effect Effects 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5094—Allocation of resources, e.g. of the central processing unit [CPU] where the allocation takes into account power or heat criteria
-
- 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/08—Learning methods
-
- 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/10—Interfaces, programming languages or software development kits, e.g. for simulating neural networks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Mathematical Physics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本申请公开了一种计算图执行方法,包括获取目标计算图;利用预设分层算法对所述目标计算图进行分层,获得最优算子分层组合;按照预设分级策略对所述最优算子分层组合中的各算法分层进行分级,获得各流水分级;按照流水分级等级,对属于同一流水分级的各算子分层进行串行处理,对各所述流水分级进行串行处理,获得运算结果;其中,各所述流水分级处于流水并行运行状态。应用本申请所提供的技术方案,可以在计算图调度过程中实现负载均衡,提高资源利用率。本申请还公开了一种计算图执行装置、计算机设备及计算机可读存储介质,均具有上述有益效果。
Description
技术领域
本申请涉及深度学习技术领域,特别涉及一种计算图执行方法,还涉及一种计算图执行装置、计算机设备及计算机可读存储介质。
背景技术
随着深度学习的发展,神经网络模型越来越复杂,计算量越来越大,如何更加高效的执行整个计算图的重要性不断提高。在不同场景下,对数据处理的实时性都具有很高的要求,整个计算图中算子的执行顺序对性能有着至关重要的影响。目前传统深度学习框架中对计算图执行调度的优化也层出不穷。
目前,各种深度学习框架中计算图执行调度通常有顺序调度和贪心调度。顺序调度策略首先把算子按照依赖顺序和优先度排好序,然后每次只调度一个算子。贪心调度采用并行调度的方式,在资源条件足够时,只要算子满足调度的条件就会被调度。顺序调度每次只调度一个算子会存在严重的资源浪费。贪心调度每次都调度可以调度的算子,但是不同时间被调度的算子数量是不同的,这种情况会导致在不同的阶段存在资源竞争或者资源浪费,调度策略存在着严重的不平衡。可见,这两种算法都没有考虑算子间调度的并行和负载均衡,存在资源利用率低,性能不高等缺点。
例如,参考图1和图2,图1为本申请所提供的一种计算图示意图,图2为采用贪心调度策略对图1所示计算图进行调度的示意图,第一阶段同时调度(a)(b)(c)算子,此时调度任务较多,设备利用率达到95%,任务之间会存在严重的资源竞争,第三阶段只调度一个算子,此时调度任务较少,无法充分利用设备,利用率只有10%。
因此,如何在计算图调度过程中实现负载均衡,提高资源利用率是本领域技术人员亟待解决的问题。
发明内容
本申请的目的是提供一种计算图执行方法,该计算图执行方法可以在计算图调度过程中实现负载均衡,提高资源利用率;本申请的另一目的是提供一种计算图执行装置、计算机设备及计算机可读存储介质,均具有上述有益效果。
第一方面,本申请提供了一种计算图执行方法,包括:
获取目标计算图;
利用预设分层算法对所述目标计算图进行分层,获得最优算子分层组合;
按照预设分级策略对所述最优算子分层组合中的各算法分层进行分级,获得各流水分级;
按照流水分级等级,对属于同一流水分级的各算子分层进行串行处理,对各所述流水分级进行串行处理,获得运算结果;其中,各所述流水分级处于流水并行运行状态。
优选的,所述利用预设分层算法对所述目标计算图进行分层,获得最优算子分层组合,包括:
确定所述目标计算图中的首算子节点;
基于所述首算子节点,对所述目标计算图进行遍历,获得所有初始算法分层组合;
按照预设指标筛选策略,从所有所述初始算法分层组合中确定初始最优算子分层组合,以及所述初始最优算子分层组合对应的指标值;
若所述指标值低于计算图指标值,则将所述初始最优算子分层组合中的每个算子分层作为所述目标计算图,并返回所述确定所述目标计算图中的首算子节点的步骤,直至所述指标值不低于所述计算图指标值,获得所述最优算子分层组合。
优选的,所述指标值具体为计算耗时,则所述按照预设指标筛选策略,从所有所述初始算法分层组合中确定初始最优算子分层组合,包括:
从所有所述初始算法分层组合中筛选所述计算耗时取值最小的初始算法分层组合作为所述初始最优算子分层组合。
优选的,所述预设分级策略具体为:
所有流水分级的资源利用率之和不超过预设阈值;
其中,所述流水分级的资源利用率的确定过程包括:
确定所述流水分级中各算法分层的资源利用率;
将取值最大的资源利用率作为所述流水分级的资源利用率。
优选的,通过concat_split算子连接相邻的两级流水分级,则所述对各所述流水分级进行串行处理,包括:
通过所述concat_split算子接收前一流水分级的输出结果,并将所述输出结果输入后一流水分级进行处理。
第二方面,本申请还公开了一种计算图执行装置,包括:
获取模块,用于获取目标计算图;
分层模块,用于利用预设分层算法对所述目标计算图进行分层,获得最优算子分层组合;
分级模块,用于按照预设分级策略对所述最优算子分层组合中的各算法分层进行分级,获得各流水分级;
计算模块,用于按照流水分级等级,对属于同一流水分级的各算子分层进行串行处理,对各所述流水分级进行串行处理,获得运算结果;其中,各所述流水分级处于流水并行运行状态。
优选的,所述分层模块包括:
首节点确定单元,用于确定所述目标计算图中的首算子节点;
计算图便利单元,用于基于所述首算子节点,对所述目标计算图进行遍历,获得所有初始算法分层组合;
组合筛选单元,用于按照预设指标筛选策略,从所有所述初始算法分层组合中确定初始最优算子分层组合,以及所述初始最优算子分层组合对应的指标值;
迭代分层单元,用于若所述指标值低于计算图指标值,则将所述初始最优算子分层组合中的每个算子分层作为所述目标计算图,并返回所述确定所述目标计算图中的首算子节点的步骤,直至所述指标值不低于所述计算图指标值,获得所述最优算子分层组合。
优选的,所述组合筛选单元具体用于从所有所述初始算法分层组合中筛选所述计算耗时取值最小的初始算法分层组合作为所述初始最优算子分层组合。
第三方面,本申请还公开了一种计算机设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如上所述的任一种计算图执行方法的步骤。
第四方面,本申请还公开了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的任一种计算图执行方法的步骤。
本申请所提供的一种计算图执行方法,包括获取目标计算图;利用预设分层算法对所述目标计算图进行分层,获得最优算子分层组合;按照预设分级策略对所述最优算子分层组合中的各算法分层进行分级,获得各流水分级;按照流水分级等级,对属于同一流水分级的各算子分层进行串行处理,对各所述流水分级进行串行处理,获得运算结果;其中,各所述流水分级处于流水并行运行状态。
应用本申请所提供的技术方案,先利用分层算法对整个计算图进行分层优化,使整个计算图的整体调度达到平衡的状态,然后通过分级策略在层间建立起流水并行模式进行调度,实现了计算图调度过程中的负载均衡,以及对设备资源的有效利用,且能够有效缩短将深度学习算法部署到硬件平台的时间,提高产品性能和缩短产品研发周期,进一步提升AI产品的竞争力。
本申请所提供的一种计算图执行装置、计算机设备及计算机可读存储介质,均具有上述有益效果,在此不再赘述。
附图说明
为了更清楚地说明现有技术和本申请实施例中的技术方案,下面将对现有技术和本申请实施例描述中需要使用的附图作简要的介绍。当然,下面有关本申请实施例的附图描述的仅仅是本申请中的一部分实施例,对于本领域普通技术人员来说,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图,所获得的其他附图也属于本申请的保护范围。
图1为本申请所提供的一种计算图示意图;
图2为采用贪心调度策略对图1所示计算图进行调度的示意图;
图3为本申请所提供的一种计算图执行方法的流程示意图;
图4为本申请所提供的一种计算图分层示意图;
图5为本申请所提供的一种计算图分层优化前后GPU利用率对比示意图;
图6为本申请所提供的一种未分级时的算子分层示意图;
图7为图6所示算子分层的执行效果示意图;
图8为本申请所提供的一种分级后的算子分层示意图;
图9为图8所示算子分层的执行效果示意图;
图10为本申请所提供的一种图1所示计算图对应的分层分级结果示意图;
图11为图10所示分层分级结果对应的调度过程示意图;
图12为本申请所提供的一种计算图执行装置的结构示意图;
图13为本申请所提供的一种计算机设备的结构示意图。
具体实施方式
本申请的核心是提供一种计算图执行方法,该计算图执行方法可以在计算图调度过程中实现负载均衡,提高资源利用率;本申请的另一核心是提供一种计算图执行装置、计算机设备及计算机可读存储介质,也具有上述有益效果。
为了对本申请实施例中的技术方案进行更加清楚、完整地描述,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行介绍。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例提供了一种计算图执行方法。
请参考图3,图3为本申请所提供的一种计算图执行方法的流程示意图,该计算图执行方法可包括:
S101:获取目标计算图;
本步骤旨在实现目标计算图的获取,该目标计算图即为需要进行调度处理的计算图,以便通过对计算图进行合理调度,实现计算图的快速处理。可以理解的是,目标调度图可以由技术人员直接从客户端输入,也可以在神经网络模型处理过程中自动生成,其获取方式并不影响本技术方案的实施,本申请对此不做限定。
S102:利用预设分层算法对目标计算图进行分层,获得最优算子分层组合;
本步骤旨在实现目标计算图的优化分层处理,以便使整个目标计算图的整体调度达到平衡的状态,该过程可基于预先创建的分层算法实现,从而获得最优算子分层组合。其中,算子分层组合是指对计算图进行分层后得到的包括有多个算子分层的组合,最优算子分层组合则是指可以使目标计算图调度达到最优负载均衡的算子分层组合。
具体而言,在基于预设分层算法对目标计算图的处理过程中,可以先对目标计算图进行分层处理,获得目标计算图中可能存在的所有算子分层组合,然后基于预设的筛选条件,从所有算子分层组合中,筛选得到最优算子分层组合。其中,筛选条件可以由计算人员根据业务实际需求进行设定,如耗时最短、功耗最低、资源利用率最低等,本申请对此不做限定。
S103:按照预设分级策略对最优算子分层组合中的各算法分层进行分级,获得各流水分级;
本步骤旨在实现最优算子分层组合的流水分级处理,以便实现各流水分级的并行运行模式,进一步提高目标计算图的处理效率。
可以想到的是,计算图分层之后通常会分层为很多层,大模型甚至可以达到数十层,如果简单的以每层为一个阶段去建立流水的话会有两个缺点:第一,流水线长度过长,流水线建立时间耗时多;第二,当整个流水线完全建立起来以后,设备的整个利用率为各层的利用率之和,大概率会使设备过载。基于此,为有效提高分层后的设备利用率,进一步提升计算性能,可以采用多层分级流水调度的策略。
具体而言,流水分级处理过程可基于预先创建的分级策略实现,即利用预设分级策略对最优算子分层组合中的各算子分层进行分级,获得各流水分级。例如,对于包括有六层算子分层的最优算子分层组合进行平均划分,前三层算子分层作为第一流水分级,后三层算子分层作为第二流水分级。
当然,上述平均划分流水分级的分级策略仅为本申请实施例提供的一种实现方式,为实现更为合理化的分级处理,还可以根据业务实际需求设定其他的分级策略,本申请对此不做限定。
S104:按照流水分级等级,对属于同一流水分级的各算子分层进行串行处理,对各流水分级进行串行处理,获得运算结果;其中,各流水分级处于流水并行运行状态。
本步骤旨在实现对分层、分级后的目标计算图的处理。具体而言,在完成目标计算图的分层处理以及分级处理之后,即可按照流水分级等级对各算子分层进行处理,具体处理方式为:对同一流水分级内的各算子分层进行串行处理,对各流水分级进行串行处理,但是,在运行过程中,各流水分级处于流水并行运行状态。换而言之,针对同一批待处理数据,对各流水分级进行串行处理,针对不同批待处理数据,各流水分级处于流水并行运行模式。由此,获得目标计算图的最终运算结果。
如上述举例,对于平均划分为两个流水分级的最优算子分层组合,可以先处理第一流水分级,获得第一处理结果,然后将其输入至第二流水分级,获得第二处理结果,该第二处理结果即为目标计算图的运算结果。其中,在处理第一流水分级时,对其中的三层算子分层进行串行处理;在处理第二流水分级时,对其中的三层算子分层进行串行处理。并且,第一流水分级处理完第一批数据获得第一处理结果,并将第一处理结果发送给第二流水分级之后,可立即获取第二批数据进行处理,也就是说,在第二流水分级进行第一批数据处理时,第一流水分级可同时进行第二批数据处理,由此,实现了各流水分级的并行运行模式。
可见,本申请所提供的计算图执行方法,先利用分层算法对整个计算图进行分层优化,使整个计算图的整体调度达到平衡的状态,然后通过分级策略在层间建立起流水并行模式进行调度,实现了计算图调度过程中的负载均衡,以及对设备资源的有效利用,且能够有效缩短将深度学习算法部署到硬件平台的时间,提高产品性能和缩短产品研发周期,进一步提升AI产品的竞争力。
在本申请的一个实施例中,利用预设分层算法对目标计算图进行分层,获得最优算子分层组合,可以包括如下步骤:
步骤一、确定目标计算图中的首算子节点;
步骤二、基于首算子节点,对目标计算图进行遍历,获得所有初始算法分层组合;
步骤三、按照预设指标筛选策略,从所有初始算法分层组合中确定初始最优算子分层组合,以及初始最优算子分层组合对应的指标值;
步骤四、若指标值低于计算图指标值,则将初始最优算子分层组合中的每个算子分层作为目标计算图,并返回步骤一,直至指标值不低于计算图指标值,获得最优算子分层组合。
在本申请实施例中,首先,对整个目标计算图进行全局分层优化,然后,再对层内的所有算子进行局部优化,以便使整个目标计算图的整体调度达到平衡的状态。具体而言,先基于目标计算图中的首算子节点进行遍历,以获得目标计算图中所有可能存在的算子分层组合,即上述初始算子分层组合,然后基于预设指标筛选策略,从所有的初始算子分层组合中筛选获得最为满足指标要求的初始最优算子分层组合,与此同时获取其对应的指标值;进一步,如若初始最优算子分层组合对应的指标值仍然低于计算图指标值,即目标计算图本身的指标值,则继续对初始最优算子分层组合中的每个算子分层进行优化分层,也就是将初始最优算子分层组合中的每个算子分层作为目标计算图,继续从自身的首算子节点进行遍历分层,直至最终获得的算子分层组合对应的指标值不低于计算图指标值,此时,该算子分层组合即为最优算子分层组合。
在本申请的一个实施例中,指标值具体可以为计算耗时,则按照预设指标筛选策略,从所有初始算法分层组合中确定初始最优算子分层组合,可以包括:从所有初始算法分层组合中筛选计算耗时取值最小的初始算法分层组合作为初始最优算子分层组合。
本申请实施例提供了一种具体类型的预设指标筛选策略,即将计算耗时最为筛选指标,基于此,在从所有的初始算法分层组合中少筛选初始最优算子分层组合时,可将其中计算耗时取值最小的初始算法分层组合作为初始最优算子分层组合,由此,即可获得计算耗时最短的初始算子分层组合。
基于上述两个申请实施例,利用预设分层算法对目标计算图进行分层,获得最优算子分层组合的过程具体如下:
假设目标计算图G的所有算子节点集合为V,从V的顶点开始按照算子依赖遍历整个目标计算图G,可以得到一个子集U,子集U将V分成U和V-U两部分。计算图的最优调度用Cost来表示,那么状态转移公式为:
即V的最优延迟是所有可能算子分层组合U的延迟和剩余顶点集V-U的最优延迟之和的最小值。
(1)枚举集合V所有可能的算子分层,并预估出每层的延迟,划分后的每层都有两种候选的并行策略:算子合并和并行计算,然后可以根据预估结果选择延迟最小的并行策略;
(2)根据每层的预估数据,选择出延迟之和最小的初始最优算子分层组合,然后迭代寻找最优算子分层组合;
(3)当某一层再分层优化之后的所有可能分层的延迟之和都大于分层优化之前的延迟时,则分层结束。
例如,请参考图4,图4为本申请所提供的一种计算图分层示意图。首先,从首节点a开始遍历,遍历过程中必须保证图是连贯的,禁止跳跃节点,则U的取值范围为{{a},{a,b},{a,c},{a,b,d},{a,b,c,d}}。在遍历完成所有的可能情况之后根据板卡仿真预估出每种情况下的耗时Cost(U)和Cost(V-U)。然后,再选择耗时之和最小的最优分层组合。在完成第一轮的最优分层之后,分别再对U和V-U重复上述过程,直到下一次所有可能的分层预估耗时都不小于分层之前的耗时,此时结束整个分层优化。
在此基础上,分层优化算法如下:
输入:计算图V;
输出:最优分层结果。
(1)遍历计算图V,枚举出所有可能的分层结果U={U0,U1,…,Un};
(2)对于所有可能的分层Ui,分别预估Ui和V-Ui耗时Cost(Ui)和Cost(V-Ui);
(3)寻找最优分层结果,遍历所有的可能分层结果,得到分层耗时之和最小的分层结果Ui;
(4)IF Cost(V-Ui)+Cost(Ui)≥Cost(V)
END;
ELSE
V=Ui,重复(1)、(2)、(3)、(4);
V=V-Ui,重复(1)、(2)、(3)、(4)。
计算图经过分层优化之后整体的负载会变得相对均衡,设备的利用率也会得到相应的降低,由于层与层之间是串行调度的,设备的利用率处在较低的水平。如图5所示,图5为本申请所提供的一种计算图分层优化前后GPU利用率对比示意图,在未分层优化之前,计算图各阶段计算量分布不均,导致设备的利用率具有很大差异,最高可以达到90%,最低只有20%;在分层优化之后,各阶段的设备利用率相对均衡,在40%~50%之间波动。
在本申请的一个实施例中,预设分级策略具体可以为:所有流水分级的资源利用率之和不超过预设阈值;其中,流水分级的资源利用率的确定过程可以包括如下步骤:
步骤一、确定流水分级中各算法分层的资源利用率;
步骤二、将取值最大的资源利用率作为流水分级的资源利用率。
本申请实施例提供了一种具体类型的预设分级策略:第一,将所有的算子分层划分(例如平均划分)成不同的阶段,其中,每一阶段的资源利用率为该阶段中所有算子分层中的最大资源利用率,且保证划分后的各阶段资源利用率之和不超过100%;第二,在划分好的阶段之间建立流水并行的模式。
例如,参考图6~9,图6为本申请所提供的一种未分级时的算子分层示意图,图7为图6所示算子分层的执行效果示意图;图8为本申请所提供的一种分级后的算子分层示意图,图9为图8所示算子分层的执行效果示意图。显然,通过多级分层策略建立的流水模式可以有效减小流水线的长度和提升设备利用率,进而进一步提升整体的性能。
在本申请的一个实施例中,通过concat_split算子连接相邻的两级流水分级,则对各流水分级进行串行处理,可以包括:通过concat_split算子接收前一流水分级的输出结果,并将输出结果输入后一流水分级进行处理。
在本申请实施例中,可以在两个流水分级之间增设concat_split算子来处理上一流水分级的输出与下一流水分级的输入。如图10和11所示,图10为本申请所提供的一种图1所示计算图对应的分层分级结果示意图,图11为图10所示分层分级结果对应的调度过程示意图,第一阶段调度(a)(b)(e)算子,第二阶段调度(c)(d)(f)算子,二者之间通过增设concat_split算子实现串行处理。显然,分层分级优化后的两层耗时更少,负载比图2所示的传统调度算法更加均衡。
本申请还提供了一种计算图执行装置,请参考图12,图12为本申请所提供的一种计算图执行装置的结构示意图,该计算图执行装置可包括:
获取模块1,用于获取目标计算图;
分层模块2,用于利用预设分层算法对目标计算图进行分层,获得最优算子分层组合;
分级模块3,用于按照预设分级策略对最优算子分层组合中的各算法分层进行分级,获得各流水分级;
计算模块4,用于按照流水分级等级,对属于同一流水分级的各算子分层进行串行处理,对各流水分级进行串行处理,获得运算结果;其中,各流水分级处于流水并行运行状态。
可见,本申请实施例所提供的计算图执行装置,先利用分层算法对整个计算图进行分层优化,使整个计算图的整体调度达到平衡的状态,然后通过分级策略在层间建立起流水并行模式进行调度,实现了计算图调度过程中的负载均衡,以及对设备资源的有效利用,且能够有效缩短将深度学习算法部署到硬件平台的时间,提高产品性能和缩短产品研发周期,进一步提升AI产品的竞争力。
在本申请的一个实施例中,上述分层模块2可包括:
首节点确定单元,用于确定目标计算图中的首算子节点;
计算图便利单元,用于基于首算子节点,对目标计算图进行遍历,获得所有初始算法分层组合;
组合筛选单元,用于按照预设指标筛选策略,从所有初始算法分层组合中确定初始最优算子分层组合,以及初始最优算子分层组合对应的指标值;
迭代分层单元,用于若指标值低于计算图指标值,则将初始最优算子分层组合中的每个算子分层作为目标计算图,并返回确定目标计算图中的首算子节点的步骤,直至指标值不低于计算图指标值,获得最优算子分层组合。
在本申请的一个实施例中,上述组合筛选单元可具体用于从所有初始算法分层组合中筛选计算耗时取值最小的初始算法分层组合作为初始最优算子分层组合。
在本申请的一个实施例中,上述预设分级策略具体可以为:所有流水分级的资源利用率之和不超过预设阈值;其中,流水分级的资源利用率的确定过程可以包括:确定流水分级中各算法分层的资源利用率;将取值最大的资源利用率作为流水分级的资源利用率。
在本申请的一个实施例中,可以通过concat_split算子连接相邻的两级流水分级,则上述计算模块4可具体用于通过concat_split算子接收前一流水分级的输出结果,并将输出结果输入后一流水分级进行处理。
对于本申请提供的装置的介绍请参照上述方法实施例,本申请在此不做赘述。
本申请还提供了一种计算机设备,请参考图13,图13为本申请所提供的一种计算机设备的结构示意图,该计算机设备可包括:
存储器,用于存储计算机程序;
处理器,用于执行计算机程序时可实现如上述任意一种计算图执行方法的步骤。
如图13所示,为计算机设备的组成结构示意图,计算机设备可以包括:处理器10、存储器11、通信接口12和通信总线13。处理器10、存储器11、通信接口12均通过通信总线13完成相互间的通信。
在本申请实施例中,处理器10可以为中央处理器(Central Processing Unit,CPU)、特定应用集成电路、数字信号处理器、现场可编程门阵列或者其他可编程逻辑器件等。
处理器10可以调用存储器11中存储的程序,具体的,处理器10可以执行计算图执行方法的实施例中的操作。
存储器11中用于存放一个或者一个以上程序,程序可以包括程序代码,程序代码包括计算机操作指令,在本申请实施例中,存储器11中至少存储有用于实现以下功能的程序:
获取目标计算图;
利用预设分层算法对目标计算图进行分层,获得最优算子分层组合;
按照预设分级策略对最优算子分层组合中的各算法分层进行分级,获得各流水分级;
按照流水分级等级,对属于同一流水分级的各算子分层进行串行处理,对各流水分级进行串行处理,获得运算结果;其中,各流水分级处于流水并行运行状态。
在一种可能的实现方式中,存储器11可包括存储程序区和存储数据区,其中,存储程序区可存储操作系统,以及至少一个功能所需的应用程序等;存储数据区可存储使用过程中所创建的数据。
此外,存储器11可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件或其他易失性固态存储器件。
通信接口12可以为通信模块的接口,用于与其他设备或者系统连接。
当然,需要说明的是,图13所示的结构并不构成对本申请实施例中计算机设备的限定,在实际应用中计算机设备可以包括比图13所示的更多或更少的部件,或者组合某些部件。
本申请还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时可实现如上述任意一种计算图执行方法的步骤。
该计算机可读存储介质可以包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
对于本申请提供的计算机可读存储介质的介绍请参照上述方法实施例,本申请在此不做赘述。
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM或技术领域内所公知的任意其它形式的存储介质中。
以上对本申请所提供的技术方案进行了详细介绍。本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请的保护范围内。
Claims (10)
1.一种计算图执行方法,其特征在于,包括:
获取目标计算图;
利用预设分层算法对所述目标计算图进行分层,获得最优算子分层组合;
按照预设分级策略对所述最优算子分层组合中的各算法分层进行分级,获得各流水分级;
按照流水分级等级,对属于同一流水分级的各算子分层进行串行处理,对各所述流水分级进行串行处理,获得运算结果;其中,各所述流水分级处于流水并行运行状态。
2.根据权利要求1所述的计算图执行方法,其特征在于,所述利用预设分层算法对所述目标计算图进行分层,获得最优算子分层组合,包括:
确定所述目标计算图中的首算子节点;
基于所述首算子节点,对所述目标计算图进行遍历,获得所有初始算法分层组合;
按照预设指标筛选策略,从所有所述初始算法分层组合中确定初始最优算子分层组合,以及所述初始最优算子分层组合对应的指标值;
若所述指标值低于计算图指标值,则将所述初始最优算子分层组合中的每个算子分层作为所述目标计算图,并返回所述确定所述目标计算图中的首算子节点的步骤,直至所述指标值不低于所述计算图指标值,获得所述最优算子分层组合。
3.根据权利要求2所述的计算图执行方法,其特征在于,所述指标值具体为计算耗时,则所述按照预设指标筛选策略,从所有所述初始算法分层组合中确定初始最优算子分层组合,包括:
从所有所述初始算法分层组合中筛选所述计算耗时取值最小的初始算法分层组合作为所述初始最优算子分层组合。
4.根据权利要求1所述的计算图执行方法,其特征在于,所述预设分级策略具体为:
所有流水分级的资源利用率之和不超过预设阈值;
其中,所述流水分级的资源利用率的确定过程包括:
确定所述流水分级中各算法分层的资源利用率;
将取值最大的资源利用率作为所述流水分级的资源利用率。
5.根据权利要求1所述的计算图执行方法,其特征在于,通过concat_split算子连接相邻的两级流水分级,则所述对各所述流水分级进行串行处理,包括:
通过所述concat_split算子接收前一流水分级的输出结果,并将所述输出结果输入后一流水分级进行处理。
6.一种计算图执行装置,其特征在于,包括:
获取模块,用于获取目标计算图;
分层模块,用于利用预设分层算法对所述目标计算图进行分层,获得最优算子分层组合;
分级模块,用于按照预设分级策略对所述最优算子分层组合中的各算法分层进行分级,获得各流水分级;
计算模块,用于按照流水分级等级,对属于同一流水分级的各算子分层进行串行处理,对各所述流水分级进行串行处理,获得运算结果;其中,各所述流水分级处于流水并行运行状态。
7.根据权利要求6所述的计算图执行装置,其特征在于,所述分层模块包括:
首节点确定单元,用于确定所述目标计算图中的首算子节点;
计算图便利单元,用于基于所述首算子节点,对所述目标计算图进行遍历,获得所有初始算法分层组合;
组合筛选单元,用于按照预设指标筛选策略,从所有所述初始算法分层组合中确定初始最优算子分层组合,以及所述初始最优算子分层组合对应的指标值;
迭代分层单元,用于若所述指标值低于计算图指标值,则将所述初始最优算子分层组合中的每个算子分层作为所述目标计算图,并返回所述确定所述目标计算图中的首算子节点的步骤,直至所述指标值不低于所述计算图指标值,获得所述最优算子分层组合。
8.根据权利要求7所述的计算图执行装置,其特征在于,所述组合筛选单元具体用于从所有所述初始算法分层组合中筛选所述计算耗时取值最小的初始算法分层组合作为所述初始最优算子分层组合。
9.一种计算机设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至5任一项所述的计算图执行方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至5任一项所述的计算图执行方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111479916.6A CN113886092A (zh) | 2021-12-07 | 2021-12-07 | 一种计算图执行方法、装置及相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111479916.6A CN113886092A (zh) | 2021-12-07 | 2021-12-07 | 一种计算图执行方法、装置及相关设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113886092A true CN113886092A (zh) | 2022-01-04 |
Family
ID=79015692
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111479916.6A Pending CN113886092A (zh) | 2021-12-07 | 2021-12-07 | 一种计算图执行方法、装置及相关设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113886092A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114518917A (zh) * | 2022-04-20 | 2022-05-20 | 浙江大华技术股份有限公司 | 算法模块调度方法、算法模块调度装置以及可读存储介质 |
CN114595068A (zh) * | 2022-03-18 | 2022-06-07 | 苏州浪潮智能科技有限公司 | 计算图调度方法、装置、电子设备及可读存储介质 |
CN117114091A (zh) * | 2023-10-25 | 2023-11-24 | 深圳开鸿数字产业发展有限公司 | 基于联邦学习的计算图处理方法、计算机设备和存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109815002A (zh) * | 2017-11-21 | 2019-05-28 | 中国电力科学研究院有限公司 | 一种基于在线仿真的分布式并行计算平台及其方法 |
CN110462602A (zh) * | 2017-04-07 | 2019-11-15 | 英特尔公司 | 用于多处理器平台上的深度学习网络执行流水线的方法和装置 |
US20200014659A1 (en) * | 2015-10-28 | 2020-01-09 | Fractal Industries, Inc. | System and method for midserver facilitation of long-haul transport of telemetry for cloud-based services |
CN111813542A (zh) * | 2020-06-18 | 2020-10-23 | 浙大宁波理工学院 | 一种并行处理大规模图分析任务的负载均衡方法及其装置 |
-
2021
- 2021-12-07 CN CN202111479916.6A patent/CN113886092A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20200014659A1 (en) * | 2015-10-28 | 2020-01-09 | Fractal Industries, Inc. | System and method for midserver facilitation of long-haul transport of telemetry for cloud-based services |
CN110462602A (zh) * | 2017-04-07 | 2019-11-15 | 英特尔公司 | 用于多处理器平台上的深度学习网络执行流水线的方法和装置 |
CN109815002A (zh) * | 2017-11-21 | 2019-05-28 | 中国电力科学研究院有限公司 | 一种基于在线仿真的分布式并行计算平台及其方法 |
CN111813542A (zh) * | 2020-06-18 | 2020-10-23 | 浙大宁波理工学院 | 一种并行处理大规模图分析任务的负载均衡方法及其装置 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114595068A (zh) * | 2022-03-18 | 2022-06-07 | 苏州浪潮智能科技有限公司 | 计算图调度方法、装置、电子设备及可读存储介质 |
CN114518917A (zh) * | 2022-04-20 | 2022-05-20 | 浙江大华技术股份有限公司 | 算法模块调度方法、算法模块调度装置以及可读存储介质 |
CN114518917B (zh) * | 2022-04-20 | 2022-08-09 | 浙江大华技术股份有限公司 | 算法模块调度方法、算法模块调度装置以及可读存储介质 |
CN117114091A (zh) * | 2023-10-25 | 2023-11-24 | 深圳开鸿数字产业发展有限公司 | 基于联邦学习的计算图处理方法、计算机设备和存储介质 |
CN117114091B (zh) * | 2023-10-25 | 2024-03-05 | 深圳开鸿数字产业发展有限公司 | 基于联邦学习的计算图处理方法、计算机设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113886092A (zh) | 一种计算图执行方法、装置及相关设备 | |
CN111062467B (zh) | 一种应用于ai异构编译器的自动切分神经网络子图方法 | |
CN107612886A (zh) | 一种Spark平台Shuffle过程压缩算法决策方法 | |
CN112101525A (zh) | 一种通过nas设计神经网络的方法、装置和系统 | |
CN114154641A (zh) | Ai模型的训练方法、装置、计算设备和存储介质 | |
CN116644804B (zh) | 分布式训练系统、神经网络模型训练方法、设备和介质 | |
CN110058943B (zh) | 用于电子设备的内存优化方法和设备 | |
CN114253735A (zh) | 一种任务处理方法、装置及相关设备 | |
CN112001491A (zh) | 针对处理器确定神经网络架构的搜索方法和装置 | |
CN115392441A (zh) | 量化神经网络模型的片内适配方法、装置、设备及介质 | |
CN115016938A (zh) | 一种基于强化学习的计算图自动划分方法 | |
CN111090613B (zh) | 一种基于图分割的低复杂度软硬件划分与调度方法 | |
Luo et al. | A new model predictive controller with swarm intelligence implemented on FPGA | |
CN116187387A (zh) | 神经网络模型量化方法、装置、计算机设备和存储介质 | |
CN111027669A (zh) | 在现场可编程门阵列上实现深度神经网络的方法及装置 | |
CN115767569B (zh) | 业务预测方法和装置、电子设备及可读存储介质 | |
CN113360188A (zh) | 一种用于优化稀疏矩阵-向量乘的并行处理方法及装置 | |
Górski et al. | Adaptive GP-based Algorithm for Hardware/Software Co-design of Distributed Embedded Systems. | |
CN116757388B (zh) | 一种基于冗余约束筛选的电力市场出清方法及装置 | |
CN113128680B (zh) | 一种神经网络训练方法、系统、设备以及介质 | |
CN114595068A (zh) | 计算图调度方法、装置、电子设备及可读存储介质 | |
CN115965070B (zh) | 计算图处理方法、装置、设备、存储介质以及程序产品 | |
US20240119283A1 (en) | Multi-objective auto tuning for layer fusion and tensor tiling on multi-level cache hierarchy | |
CN113434206B (zh) | 智能电网计算卸载的方法及装置 | |
FR3128302A1 (fr) | Méthode de conception d’une architecture matérielle optimisée pour l’exécution d’un réseau de neurones |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20220104 |