CN116541018B - 一种分布式模型编译系统、方法、装置、介质及设备 - Google Patents
一种分布式模型编译系统、方法、装置、介质及设备 Download PDFInfo
- Publication number
- CN116541018B CN116541018B CN202310727219.0A CN202310727219A CN116541018B CN 116541018 B CN116541018 B CN 116541018B CN 202310727219 A CN202310727219 A CN 202310727219A CN 116541018 B CN116541018 B CN 116541018B
- Authority
- CN
- China
- Prior art keywords
- sub
- graph
- computation
- logic
- model
- 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
- 238000000034 method Methods 0.000 title claims abstract description 93
- 238000003860 storage Methods 0.000 claims abstract description 26
- 238000004364 calculation method Methods 0.000 claims description 187
- 238000010586 diagram Methods 0.000 claims description 46
- 238000004590 computer program Methods 0.000 claims description 15
- 238000012545 processing Methods 0.000 claims description 7
- 238000013468 resource allocation Methods 0.000 claims description 4
- 230000008569 process Effects 0.000 abstract description 22
- 238000012549 training Methods 0.000 description 15
- 230000006870 function Effects 0.000 description 10
- 230000006872 improvement Effects 0.000 description 8
- 238000004891 communication Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000013145 classification model Methods 0.000 description 2
- 238000013135 deep learning Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 238000010801 machine learning Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000003062 neural network model Methods 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 229920001296 polysiloxane Polymers 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 239000010979 ruby Substances 0.000 description 1
- 229910001750 ruby Inorganic materials 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
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/5061—Partitioning or combining of resources
- G06F9/5072—Grid computing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
- G06F8/451—Code distribution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- 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/5061—Partitioning or combining of resources
- G06F9/5066—Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
-
- 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/5083—Techniques for rebalancing the load in a distributed system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5016—Session
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5017—Task decomposition
-
- 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
Abstract
本说明书公开了一种分布式模型编译系统,该系统的主节点根据模型信息确定模型的逻辑计算图,将逻辑计算图划分为多个逻辑子计算图,针对每一个逻辑子计算图生成调度消息,然后将该调度消息发送到各从节点。各从节点根据收到的调度消息,分配本地计算资源对逻辑子计算图进行编译,并向主节点发送编译完成信息。主节点根据各从节点返回的编译完成信息,确定模型编译完成,并根据编译完毕的模型执行目标业务。子图的编译过程不再由主节点执行,而是分配至各从节点进行,提高从节点计算资源利用率,减少主节点的负载。主节点不再执行全局计算图的编译,还可以减少从节点等待时间,更加充分的利用了主节点和从节点的计算资源和存储资源。
Description
技术领域
本说明书涉及机器学习领域,尤其涉及一种分布式模型编译系统、方法、装置、介质及设备。
背景技术
随着机器学习的发展,深度学习成为了该领域下的一个新的研究方向。而无论是对模型的训练过程,还是应用模型执行业务的过程,都需要先对模型进行编译,确定可在硬件设备上运行的文件。这一过程一般伴随着巨大的资源消耗,尤其是对于深度神经网络来说,通常结构复杂、参数量大,对计算资源和存储资源的需求更大。因此为了提高深度学习的性能和效率,需要设计高效的模型编译系统。
现有技术在进行模型编译时,通过将模型编译为可在计算设备上运行的文件,再通过计算设备上运行编译好的文件。
但是,现有技术中在采用分布式机制进行模型的编译时,主节点与从节点的负载不均匀,导致分布式系统中资源利用率较低,主节点负载过大等问题。基于此,本说明书提供一种分布式模型编译系统。
发明内容
本说明书提供一种分布式模型编译系统、方法、装置、介质及设备,以部分的解决现有技术存在的上述问题。
本说明书采用下述技术方案:
本说明书提供了一种分布式模型编译系统,所述系统包括主节点以及若干从节点,包括:
所述主节点,用于根据待编译模型的模型信息,确定所述待编译模型的逻辑计算图,并将所述逻辑计算图划分为各逻辑子计算图,以及针对每个逻辑子计算图,生成调度消息,并将该调度消息发送至从节点;接收各从节点返回的编译完成信息,确定所述待编译模型编译完毕,并根据编译完毕的模型执行目标业务;
针对每个从节点,用于接收所述主节点发送的调度消息,根据所述调度消息,从该从节点本地分配对应的计算资源,以基于分配的计算资源,对所述调度消息包含的逻辑子计算图进行编译,确定任务子计算图,根据所述任务子计算图向所述主节点发送编译完成信息。
可选地,所述主节点,用于根据接收到的编译请求,创建执行所述编译请求对应事件的事件执行体,并确定所述待编译模型的模型信息,以生成所述调度消息,并将所述调度消息发送至各从节点;通过所述事件执行体,接收各从节点返回的编译完成信息,确定编译得到的所述待编译模型,并执行目标业务。
可选地,所述主节点,用于通过所述事件执行体,确定各从节点的状态,根据各从节点的状态,将所述逻辑计算图划分为各逻辑子计算图。
可选地,所述主节点,用于通过所述事件执行体,当确定各从节点的状态后,创建会话控制执行体,并通过所述会话控制执行体,根据各从节点的状态,将所述逻辑计算图划分为各逻辑子计算图,并确定各从节点分别对应的逻辑子计算图。
可选地,所述主节点,用于通过所述会话控制执行体,针对每个逻辑子计算图,创建对应该逻辑子计算图的子图执行体,并确定子图执行体、逻辑子计算图以及从节点的对应关系;针对每个子图执行体,通过该子图执行体创建在从节点部署的设备执行体,并根据创建的设备执行体以及该子图执行体对应的逻辑子计算图,生成调度消息,并发送至该子图执行体对应的从节点。
可选地,所述从节点,用于根据接收到的调度消息,确定自身处理的逻辑子计算图以及设备执行体,并通过所述设备执行体根据所述从节点实时的状态、所述逻辑子计算图的输入张量以及所述逻辑子计算图的输出张量,从所述从节点本地分配对应的计算资源。
可选地,所述从节点,用于通过所述设备执行体,确定编译所述逻辑子计算图所需执行的各任务;根据确定出的各任务,确定至少一个计算流,并针对每个计算流,创建对应的计算流执行体,通过各计算流执行体,执行所述逻辑子计算图所需执行的各任务,完成对所述逻辑子计算图的编译,确定任务子计算图。
可选地,所述从节点,用于通过所述设备执行体,确定所述计算流执行体编译得到的任务子计算图,并将所述任务子计算图返回所述主节点中对应所述从节点的子图执行体;
所述主节点,用于通过各子图执行体,接收各从节点返回的任务子计算图,并根据各任务子计算图,确定编译完成的模型。
可选地,所述主节点,用于在将所述逻辑计算图划分为各逻辑子计算图之前,向所述系统中各从节点发送查询请求;根据各从节点返回的状态,确定用于编译逻辑子计算图的从节点;
所述从节点,用于接收所述主节点发送的查询请求,根据所述查询请求确定自身实时的状态,并返回所述主节点。
本说明书提供了一种分布式模型编译方法,所述方法应用于执行所述分布式模型编译方法的系统中的主节点,包括:
根据待编译模型的模型信息,确定所述待编译模型的逻辑计算图;
将所述逻辑计算图划分为各逻辑子计算图,以及针对每个逻辑子计算图,生成调度消息;
将该调度消息发送至所述系统的各从节点,使所述各从节点根据所述调度消息,从所述各从节点本地分配对应的计算资源,以基于分配的计算资源,对所述调度消息包含的逻辑子计算图进行编译,确定任务子计算图,根据所述任务子计算图向所述主节点发送编译完成信息;
接收所述各从节点返回的编译完成信息,确定所述待编译模型编译完毕,并根据编译完毕的模型执行目标业务。
可选地,根据待编译模型的模型信息,确定所述待编译模型的逻辑计算图,具体包括:
接收编译请求;
根据接收到的编译请求,创建执行所述编译请求对应事件的事件执行体;
通过所述事件执行体,根据所述编译请求确定待编译模型的模型信息,并根据所述待编译模型的模型信息,确定所述待编译模型的逻辑计算图;
将所述逻辑计算图划分为各逻辑子计算图,以及针对每个逻辑子计算图,生成调度消息,具体包括:
通过所述事件执行体,将所述逻辑计算图划分为各逻辑子计算图,以及针对每个逻辑子计算图,生成调度消息;
将该调度消息发送至所述系统的各从节点,具体包括:
通过所述事件执行体,将该调度消息发送至所述系统的各从节点;
接收所述各从节点返回的编译完成信息,确定所述待编译模型编译完毕,并根据编译完毕的模型执行目标业务,具体包括:
通过所述事件执行体,接收各从节点返回的编译完成信息,确定编译得到的所述待编译模型,并执行目标业务。
可选地,通过所述事件执行体,将所述逻辑计算图划分为各逻辑子计算图,以及针对每个逻辑子计算图,具体包括:
通过所述事件执行体,创建会话控制执行体;
根据各从节点的状态,将所述逻辑计算图划分为各逻辑子计算图。
可选地,根据各从节点的状态,将所述逻辑计算图划分为各逻辑子计算图,具体包括:
通过所述事件执行体,根据各从节点的状态,创建会话控制执行体;
通过所述会话控制执行体,根据各从节点的状态,将所述逻辑计算图划分为各逻辑子计算图,并确定各从节点分别对应的逻辑子计算图。
可选地,针对每个逻辑子计算图,生成调度消息,具体包括:
通过所述会话控制执行体,针对每个逻辑子计算图,创建对应该逻辑子计算图的子图执行体,并确定子图执行体、逻辑子计算图以及从节点的对应关系;
针对每个子图执行体,通过该子图执行体创建在从节点部署的设备执行体,并根据创建的设备执行体以及该子图执行体对应的逻辑子计算图,生成调度消息,并发送至该子图执行体对应的从节点。
可选地,接收各从节点返回的编译完成信息,确定编译得到的所述待编译模型,具体包括:
所述子图执行体,接收各从节点返回的任务子计算图;
通过所述会话控制执行体,根据各任务子计算图,确定编译完成的模型。
可选地,在将所述逻辑计算图划分为各逻辑子计算图之前,所述方法还包括:
向所述系统中各从节点发送查询请求,使各从节点根据所述查询请求确定自身实时的状态并返回;
根据各从节点返回的状态,确定用于编译逻辑子计算图的从节点。
本说明书提供了一种分布式模型编译方法,所述方法应用于执行所述分布式模型编译方法的系统中的从节点,包括:
接收所述系统的主节点发送的调度消息,所述调度消息为所述主节点根据逻辑子计算图生成的,所述逻辑子计算图为所述主节点对待编译模型的模型信息的逻辑计算图进行划分得到的;
根据所述调度消息,从所述从节点本地分配对应的计算资源;
基于分配的计算资源,对所述调度消息包含的逻辑子计算图进行编译,确定任务子计算图;
根据所述任务子计算图向所述主节点发送编译完成信息,使所述主节点在根据接收到的编译完成信息确定所述待编译模型编译完毕时,根据编译完毕的模型执行目标业务。
可选地,根据所述调度消息,从所述从节点本地分配对应的计算资源,具体包括:
根据接收到的调度消息,确定要处理的逻辑子计算图以及设备执行体;
通过所述设备执行体,根据所述从节点实时的状态、所述逻辑子计算图的输入张量以及所述逻辑子计算图的输出张量,从该从节点本地分配对应的计算资源。
可选地,基于分配的计算资源,对所述调度消息包含的逻辑子计算图进行编译,确定任务子计算图,具体包括:
通过所述设备执行体,确定编译所述逻辑子计算图所需执行的各任务;
根据确定出的各任务,确定至少一个计算流,并针对每个计算流,创建对应的计算流执行体;
通过各计算流执行体,执行所述逻辑子计算图所需执行的各任务,完成对所述逻辑子计算图的编译,确定任务子计算图。
可选地,根据所述任务子计算图向所述主节点发送编译完成信息,具体包括:
通过所述设备执行体,确定所述计算流执行体编译得到的任务子计算图;
将所述任务子计算图返回所述主节点中对应所述从节点的子图执行体;
所述主节点根据各从节点返回的任务子计算图,确定编译完成的模型。
本说明书提供了一种分布式模型编译装置,所述装置应用于执行分布式模型编译方法的系统中的主节点,包括:
确定模块,根据待编译模型的模型信息,确定所述待编译模型的逻辑计算图;
逻辑拆分模块,将所述逻辑计算图划分为各逻辑子计算图,以及针对每个逻辑子计算图,生成调度消息;
发送模块,将该调度消息发送至所述系统的各从节点,使所述各从节点根据所述调度消息,从所述各从节点本地分配对应的计算资源,以基于分配的计算资源,对所述调度消息包含的逻辑子计算图进行编译,确定任务子计算图,根据所述任务子计算图向所述主节点发送编译完成信息;
接收模块,接收所述各从节点返回的编译完成信息,确定所述待编译模型编译完毕,并根据编译完毕的模型执行目标业务。
本说明书提供了一种分布式模型编译装置,所述装置应用于执行分布式模型编译方法的系统中的从节点,包括:
接收模块,接收所述系统的主节点发送的调度消息,所述调度消息为所述主节点根据逻辑子计算图生成的,所述逻辑子计算图为所述主节点对待编译模型的模型信息的逻辑计算图进行划分得到的;
资源分配模块,根据所述调度消息,从所述从节点本地分配对应的计算资源;
编译模块,基于分配的计算资源,对所述调度消息包含的逻辑子计算图进行编译,确定任务子计算图;
发送模块,根据所述任务子计算图向所述主节点发送编译完成信息,使所述主节点在根据接收到的编译完成信息确定所述待编译模型编译完毕时,根据编译完毕的模型执行目标业务。
本说明书提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述分布式模型编译方法。
本说明书提供了一种无人驾驶设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述分布式模型编译方法。
本说明书采用的上述至少一个技术方案能够达到以下有益效果:
在本说明书提供的分布式模型编译系统中,主节点根据收到的编译请求,确定待编译的模型信息,再根据模型信息确定仅表示待编译模型的计算逻辑的逻辑计算图。同时,主节点向各个从节点发送查询请求,根据各从节点返回的信息,确定各个从节点的状态。主节点根据逻辑计算图和各个从节点的状态,将逻辑计算图划分为若干个逻辑子计算图。主节点再根据逻辑子计算图,生成调度消息,并将调度消息发送给对应的从节点。从节点根据收到的调度消息,确定要编译的逻辑子计算图,并对逻辑子计算图进行编译,得到可在计算设备上运行的任务子计算图。从节点完成对逻辑子计算图的编译后向主节点发送编译完成信息,该编译完成信息可包括编译好的任务子算图。主节点根据收到的编译完成信息确定模型是否编译完成。
从上述方法中可以看出,本分布式模型编译系统在进行模型编译时,从逻辑上将模型对应的计算图进行拆分,确定若干子图,之后各子图的编译过程不再由主节点执行,而是分配至各从节点进行,提高从节点计算资源利用率,减少主节点的负载。并且,由于可通过多个从节点并行对子图进行编译,模型编译效率可以大大提高。而且由于主节点不再执行全局计算图的编译,还可以减少从节点等待时间,更加充分的利用了主节点和从节点的计算资源和存储资源。
附图说明
此处所说明的附图用来提供对本说明书的进一步理解,构成本说明书的一部分,本说明书的示意性实施例及其说明用于解释本说明书,并不构成对本说明书的不当限定。在附图中:
图1为本说明书实施例提供的一种分布式模型编译系统的结构示意图;
图2为本说明书实施例提供的一种主节点以及从节点中执行体的示意图;
图3为本说明书实施例提供的一种分布式模型编译方法的流程示意图;
图4为本说明书实施例提供的一种分布式模型编译方法的流程示意图;
图5为本说明书实施例提供的一种分布式模型编译装置的示意图;
图6为本说明书实施例提供的一种分布式模型编译装置的示意图;
图7为本说明书提供的对应于图1的电子设备示意图。
具体实施方式
为使本说明书的目的、技术方案和优点更加清楚,下面将结合本说明书具体实施例及相应的附图对本说明书技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
以下结合附图,详细说明本说明书各实施例提供的技术方案。
图1为本说明书中提供的分布式模型编译系统的结构示意图,该分布式系统用于执行模型编译的任务,该分布式系统可由多个互相通信的节点组成,根据节点在执行模型编译任务过程中的功能,可划分为主节点以及从节点。其中,主节点通常为一个,而从节点有多个。当然,本说明书对此不做限制,一般对应一个模型的编译过程,由一个主节点负责对应的事件。但是,分布式系统中可同时对多个模型进行编译,则可由不同的节点作为主节点,分别启动对不同的模型的编译过程。为了方便说明,后续仅以该分布式系统编译一个模型过程为例,对该分布式模型编译系统进行描述。则此时该分布式系统中的主节点有一个,该分布式系统中的其他节点为从节点。
另外,需要说明的是,在本说明书一个或多个实施例中,该分布式系统的节点具体是何种计算设备,本说明书不做限制,节点可以是个人终端、平板电脑、服务器,异构计算设备等等。并且,该分布式系统中的各节点可以互相通信。
在本说明书一个或多个实施例中,为了提高模型编译效率,使系统的负载更为均衡,减少资源浪费的情况。该主节点用于确定待编译模型的逻辑计算图,以及将逻辑计算图拆分为若干逻辑子计算图,并发送至各从节点。各从节点则用于接收逻辑子计算图,并对逻辑自计算图进行编译,确定任务子计算图。其中,任务子计算图为可以在计算设备上运行的文件,也就是说,在确定出待编译模型的各任务子计算图之后,相当于已经完成了对该模型的编译过程。则后续是要对该模型进行训练,或者是应用模型执行任务,或者对模型的计算图结构进行优化,都可以在该分布式系统中进行。当然,也可将各任务子计算图汇总,确定该模型的可执行文件,由单独的计算设备运行该模型的可执行文件,进行训练、应用、优化等,本说明书对此不做限制。
可见,通过该分布式系统主节点可以先从逻辑上将模型对应的计算图进行拆分,确定若干子图,之后各子图的编译过程不再由主节点执行,而是分配至各从节点进行,提高从节点计算资源利用率,减少主节点的负载。并且,由于可通过多个从节点并行对子图进行编译,模型编译效率可以大大提高。而且由于主节点不再执行全局计算图的编译,还可以减少从节点等待时间,更加充分的利用了主节点和从节点的计算资源和存储资源。
具体的,在本说明书一个或多个实施例中,首先,由于在该分布式系统中,主节点是用于实现模型编译的控制中心,因此在需要进行模型编译时,待编译模型的模型信息携带在编译请求中,发送至该主节点。则该主节点可接收该编译请求,并根据该编译请求,确定待编译模型的模型信息。其中,该模型信息可包括该模型的结构信息、参数信息、算子信息、权重信息等一种或多种,也就是表述该待编译模型如何进行计算的信息,根据模型信息可以对模型进行编译,确定对应的可执行文件。
之后,该主节点可以根据待编译模型的模型信息,确定该待编译模型的逻辑计算图。其中,当该待编译模型为神经网络模型时,该逻辑计算图表示了该神经网络模型中数据计算流程,通常该逻辑计算图为有向无环图(Directed acyclic graph,DAG),该DAG包含了待编译模型在运行时的各计算步骤。需要说明的是,该逻辑计算图并非可由计算设备运行的文件,仅用于表征模型内部的计算逻辑。该主节点通过生成该逻辑计算图,使得该主节点可以基于模型内的计算逻辑,将该模型计算过程划分为多个部分。各部分既可以是解耦的,也可以是有关联的,本说明书对此不做限制。当然,若各部分之间是解耦的,则后续可更方便的进行分布式部署该模型。则该主节点后续可将划分得到的各部分,分别分配给不同的从节点,由从节点进行模型部分计算步骤的编译。一方面由于只进行逻辑计算图的生成,减小了主节点的负载,另一方面由于从节点只需对模型的部分内容进行编译,每个从节点的负载相对于编译整个模型也更小,有效的利用分布式机制,使得模型编译过程效率更高、对计算设备的性能要求更低。
其次,在该主节点确定该逻辑计算图后,该主节点可将该逻辑计算图划分为若干个逻辑子计算图。具体的,该主节点在划分该逻辑计算图时,可将该逻辑计算图平均划分为若干份逻辑子计算图。例如,该主节点可先确定当前分布式系统中节点的数量,以确定可以执行编译任务的从节点数量,之后根据从节点数量将该逻辑计算图平均划分为各逻辑子计算图。其中,平均划分可以是根据逻辑计算图的中的节点数量来划分的,例如,逻辑子计算图包含100个节点,分布式系统包含10个从节点,则以逻辑子计算图中每10个节点为一组,划分得到10个逻辑子计算图。当然,该逻辑子计算图的数量与从节点的数量无需一一对应,例如,确定有10个从节点,主节点既可以将该逻辑计算图划分为10个逻辑子计算图,也可将该逻辑计算图划分为9个、5个或3个逻辑子计算图,只需要划分得到的逻辑子计算图数量不超过从节点数量即可,使得一个从节点最多只需要负责对一个逻辑子计算图进行编译。
另外,该主节点也可以根据各从节点的状态,对该逻辑计算图进行划分。则该主节点可先向各从节点发送状态查询请求,使各从节点确定自身当前状态,并返回给该主节点。其中,该状态可包括:从节点的属性和实时计算资源中的至少一种。从节点的属性可包括:从节点的带宽、内存、计算速度等属性信息,实时计算资源可包括:存储资源利用率、计算资源利用率的等。也就是说,该主节点可以根据从节点的状态,确定那些从节点可以编译更多的内容,以此确定如何对逻辑计算图进行划分,使得可以向性能更强、负载更低的从节点,分配更复杂的编译任务。
进一步地,该主节点在划分逻辑计算图时,可根据该逻辑计算图中包含的各算子之间的依赖关系,确定该逻辑计算图的各计算流。其中,一个计算流由顺序执行的多个计算任务组成。于是,该主节点还可根据该逻辑计算图的各计算流,对该逻辑计算图进行划分,将一个计算流上的各算子划分为一个逻辑子计算图。
当然,本说明书对于主节点具体如何对逻辑计算图进行划分不做限制,可根据需要设置。只需保证划分后的逻辑子计算图可在从节点进行编译,且一个从节点只需编译一个逻辑子计算图即可。
再之后,该主节点可根据各逻辑子计算图与各从节点之间的对应关系,生成调度消息,以通过向各从节点发送调度消息,使从节点对自身分配的逻辑子计算图进行编译。于是,该主节点需要先确定各逻辑子计算图与各从节点的对应关系,以确定调度消息发送至哪个节点。在本说明书一个或多个实施例中,当逻辑计算图的划分方式的不同时,逻辑子计算图与从节点的对应关系也不同。由于本说明书对于主节点对逻辑计算图进行划分可根据需要设置,因此需要根据采用的划分方式,确定对应关系。
在本说明书一个或多个实施例中,当该主节点根据逻辑计算图中的节点数量划分时,则对于任一逻辑子计算图来说,任一从节点都可以对该逻辑子计算图进行编译,于是该主节点可以随机确定各逻辑子计算图对应的从节点。
在本说明书一个或多个实施例中,若该主节点是根据从节点的状态划分逻辑计算图的,则划分的逻辑子计算图是与节点的状态对应的,因此可根据各从节点的状态,确定各从节点对应的逻辑子计算图。该主节点可确定逻辑子计算图编译的复杂度,例如,算子越多编译越复杂、算子之间依赖关系越多编译越复杂,然后按照该复杂度从高到低对各逻辑子计算图进行排序,以及按照各从节点的计算性能从高到低进行排序,然后按照两种排序确定复杂度高的逻辑子计算图对应计算性能高的从节点。当然,由于划分逻辑子计算图依据的是从节点的状态,而状态不仅包括计算性能,因此该主节点也可根据各从节点的状态对各从节点进行排序。具体基于哪些信息对从节点排序,本说明书不做限制。当然上述排序方法仅为一种示例,该主节点也可采用其他方式确定对应关系,只要逻辑子计算图的编译复杂度与从节点的编译能力相应即可。
当该主节点是根据该逻辑计算图中的各计算流进行划分时,由于计算流与从节点并没有对应关系,则对于任一逻辑子计算图来说,任一从节点都可以对该逻辑子计算图进行编译,于是该主节点也可以随机确定各逻辑子计算图对应的从节点。
在划分出各逻辑子计算图,以及确定出逻辑子计算图与从节点的对应关系后,该主节点便可根据逻辑子计算图,生成发送给从节点的调度消息。具体的,针对每个逻辑子计算图,该主节点在生成该逻辑子计算图的调度消息时,可以先确定该逻辑子计算图对应的全局唯一的标识。然后,将该标识与该逻辑子计算图打包生成调度消息。最后,根据逻辑子计算图与从节点的对应关系,将各逻辑子计算图的调度消息,发送至逻辑子计算图对应的从节点。
然后,针对该分布式系统中的每个从节点,当该从节点接收到该主节点发送的调度消息时,可先确定该调度消息中包含的逻辑子计算图,根据调度消息中的逻辑子计算图,该从节点根据逻辑子计算图的输入张量、逻辑子计算图的输出张量,推导该从节点对该逻辑子计算图进行编译所需的资源。根据确定出的编译所需的资源,以及该从节点自身的带宽利用率、计算资源利用率等状态,确定该从节点本地资源中,分配用于进行逻辑子计算图的资源。
具体的,由于一个逻辑子计算图可包含多个算子,因此该从节点可以对每个算子在计算过程中的输入输出张量进行比较,对输入张量或输出张量较大的算子分配更多的计算资源。同时,也可以根据各个算子对应的编译任务的数量,将该从节点的计算资源平均分配给每一个编译任务。当然,本说明书对于从节点对计算资源的分配方式不做限制,可根据需要设置。只需保证划分后的计算资源可以对该部分算子进行计算即可。
再然后,由于每个逻辑子计算图中可包含多个相互依赖的计算任务,因此相互依赖的计算任务可以确定一个计算流,进而一个逻辑子计算图可包含多个计算流。该从节点基于分配好的计算资源,分别对每一个计算流进行编译,得到该从节点对该逻辑子计算图的编译结果,根据该编译结果,可以确定该逻辑子计算图对应的任务子计算图。需要说明的是该任务子计算图是一个可以在计算设备上运行的文件,而非像逻辑子计算图一样仅用于表征模型的计算逻辑。
最后,当该从节点对逻辑子计算图完成编译,得到逻辑子计算图对应的任务子计算图后,该从节点还可根据接收到的调度消息中的全局唯一标识,生成携带该全局唯一标识的编译完成信息。并将该编译完成信息返回该主节点。
而该主节点,可根据接收到的编译完成信息,确定该全局唯一标识,并根据逻辑子计算图与全局唯一标识的对应关系,确定哪个逻辑子计算图完成编译。当该主节点根据接收到的各编译完成信息,确定该逻辑计算图的各逻辑子计算图均完成编译时,可以确定待编译模型编译完毕。并可根据编译完毕的模型执行目标业务。
其中,由于在进行编译模型时,该模型可以是未训练的模型,也可以是已经训练完待部署的模型,因此该目标业务可以根据需要设置。例如,假设当该编译完成的模型是未训练的模型时,该目标任务可为根据预设的训练样本集,对该模型进行训练,通过各从节点编译得到的任务子计算图,分布式的运行该模型,确定模型输出结果以及根据样本标注,调整各节点中任务子计算图对应模型参数。或者,假设当该编译完成的模型是完成训练的模型时,该目标任务可以是基于该完成训练的模型执行的任务,假设该完成训练的模型是图片分类模型,则该主节点可根据业务请求,确定待识别的图片,将该待识别的图片发送至该完成训练的模型中输入层的逻辑子计算图对应的从节点,使各从节点按照逻辑计算图中计算顺序依次传递中间数据,最后该完成训练的模型中输出层的逻辑子计算图对应的从节点确定图片分类结果,并返回至该主节点。该主节点根据接收到的分类结果,确定目标任务的执行结果。
基于图1所示的分布式模型编译系统,该系统在对模型的编译过程中,主节点根据收到的编译请求,确定待编译的模型信息,再根据模型信息确定逻辑计算图。同时,主节点向各个从节点发送查询请求,根据各从节点返回的信息,确定各个从节点的状态。主节点根据逻辑计算图和各个从节点的状态,将逻辑计算图划分为若干个逻辑子计算图。主节点再根据逻辑子计算图,生成调度消息,并将调度消息发送给对应的从节点。从节点根据收到的调度消息,确定要编译的逻辑子计算图,对逻辑子计算图进行编译,得到可在计算设备上运行的任务子计算图。从节点完成对逻辑子计算图的编译后向主节点发送编译完成信息。主节点根据收到的编译完成信息确定模型是否编译完成。
可见,本系统在进行模型编译时,从逻辑上将模型对应的计算图进行拆分,确定若干子图,之后各子图的编译过程不再由主节点执行,而是分配至各从节点进行,提高从节点计算资源利用率,减少主节点的负载。并且,由于可通过多个从节点并行对子图进行编译,模型编译效率可以大大提高。而且由于主节点不再执行全局计算图的编译,还可以减少从节点等待时间,更加充分的利用了主节点和从节点的计算资源和存储资源。
此外,本说明书中的分布式编译系统还可以通过创建多层级的执行体系统实现。通过执行体之间的通信,代替主节点和从节点交互的逻辑开销。多层级的执行体系统的创建,将原本主节点和从节点之间的通信,转换为不同层级的执行体之间的通信,不同执行体负责不同的任务。本说明书中的执行体是一个抽象的执行系统模型,该模型是一个抽象的软件实体,包含编译环境,负责一定范围内的计算和存储任务,同时可以实现异步收发消息,并根据消息内容改变执行体自身的状态。
上述多层级的执行体可如图2所示。图2为本说明书提供的主节点以及从节点中执行体的示意图。
该执行体系统的执行体之间,上层执行体可以创建和销毁下层执行体,但是不直接影响下层执行体内的逻辑子计算图的编译。其中,执行体之间的通信是一种单线程的通信方式,针对每个执行体,仅根据收到的信息调整自身的状态,再根据调整结果判断是否发送返回信息。
在本说明提供的模型编译系统运行过程中,主节点根据接收到的编译请求,创建对应的事件执行体。该事件执行体是最顶层的执行体,可根据接收到的编译请求,获取待编译模型的信息,根据获得的模型信息确定待编译模型的逻辑计算图。然后,该事件执行体向各个从节点发送查询请求,确定各个从节点的状态,然后根据各从节点的状态,对该逻辑计算图进行划分。
其中,本说明书对于主节点具体如何对逻辑计算图进行划分不做限制,可根据需要设置。只需保证划分后的逻辑子计算图可在从节点进行编译,且一个从节点只需编译一个逻辑子计算图即可。该事件执行体根据划分逻辑计算图后获得的逻辑子计算图,创建会话控制执行体。最后事件执行体逻辑子计算图和唯一标识发送至会话控制执行体。
该会话控制执行体可以有多个,该执行体负责子图的调度和子图执行体的运行。该会话控制执行体通过收到的逻辑子计算图创建子图执行体,并确定子图执行体、逻辑子计算图以及从节点的对应关系。其中,子图执行体与逻辑子算图的对应关系可根据调度消息中的唯一标识确定,逻辑子计算图与该从节点之间的对应关系,取决于逻辑计算图的划分方式,由于本说明书中对于主节点对逻辑计算图进行划分可根据需要设置,因此需要根据采用的划分方式,确定对应关系。当从节点接收到包含唯一标识的调度消息后,也可以根据唯一标识,确定该从节点与逻辑子计算图、子图执行体之间的对应关系。
子图执行体是由会话控制执行体根据业务前端的逻辑子计算图动态创建的,每个子图执行体都对应一个逻辑子计算图,该执行体负责创建和销毁下层的设备执行体,并向会话控制执行体发送编译数据。
针对每个子图执行体,该子图执行体先创建可在从节点部署的设备执行体,再根据该子图执行体对应的逻辑子计算图、全局唯一标识以及该设备执行体,生成调度消息,并将调度消息发送至该子图执行体对应的从节点上。其中,该设备执行体由子图执行体在编译时创建,负责管理前设备上的计算资源和存储资源。
该从节点根据接收到的调度消息,确定要处理的逻辑子计算图以及设备执行体。该设备执行体根据逻辑子计算图,获取该逻辑子计算图的输入张量、逻辑子计算图的输出张量,从而推导该从节点对该逻辑子计算图进行编译所需的资源。根据确定出的编译所需的资源,以及该从节点自身的带宽利用率、计算资源利用率等状态,确定该从节点本地资源中,可用于进行逻辑子计算图编译的资源,将该部分资源进行分配,本说明书对于从节点对计算资源的分配方式不做限制,可根据需要设置。只需保证划分后的计算资源可以对该部分算子进行计算即可。
同时,该设备执行体也可根据逻辑子计算图,确定该从节点需要执行的各任务,再根据各任务之间的依赖关系,可以确定至少一个计算流,针对每一个计算流创建计算流执行体。通过每一个计算流执行体和分配到的计算资源完成对逻辑子计算图的编译,得到计算设备可直接运行的文件。其中,计算流执行体由设备执行体创建,每个计算流执行体对应一个计算流。
计算流执行体将编译完成信息返回至设备执行体,当设备执行体接收到所有计算流执行体的编译完成信息时,将编译完成信息返回至子图执行体,当子图执行体接收到所有设备执行体返回的编译完成信息时,将编译完成信息返回至会话控制执行体,当会话控制执行体收到所有的子图执行体返回的编译完成信息时,将编译完成信息返回至事件执行体,主节点根据事件执行体收到的编译完成信息识,确定模型编译完成。
值得一提的是,本说明书所述系统还可以实现根据用户需求灵活增删作业任务,即创建一个全局的参数变量,将各个执行体内部的参数变量共享,并在主节点维护一个动态更新的互斥表。业务作业更新时,互斥表也会更新。其中,该作业任务是指系统在根据待编译模型的逻辑计算图进行模型编译时,被划分的每个逻辑子图要执行。在实际应用中,用户对待编译的模型会有修改,常用编译系统不支持动态的修改,灵活性较低。因此本说明书将上述的参数变量的名称作为唯一标识,创建执行体时就固定执行体的参数变量的张量划分属性和放置信息,若有增删任务作业时,系统可根据唯一标识和互斥表确定任务的增删情况,由此动态的更新待编译的模型,提高了模型编译系统的灵活度。
基于上述分布式模型编译系统的描述,本说明书还提供一种分部式系统中主节点应用的分布式模型编译方法,如图3所示。
图3为本说明书实施例提供的分布式模型编译方法的流程示意图,其中:
S300:根据待编译模型的模型信息,确定所述待编译模型的逻辑计算图。
在本说明书一个或多个实施例中,为了提高模型编译效率,使系统的负载更为均衡,减少资源浪费的情况。可以根据收到的编译请求确定待编译模型的模型信息,再根据该模型信息确定该待编译模型的逻辑计算图,该逻辑计算图仅用于表征模型内部的计算逻辑。进一步的,该步骤也可以通过主节点生成的事件执行体进行。主节点根据接收到的编译请求,创建对应的事件执行体。该事件执行体根据接收到的编译请求,获取待编译模型的信息,根据获得的模型信息确定待编译模型的逻辑计算图。
S302:将所述逻辑计算图划分为各逻辑子计算图,以及针对每个逻辑子计算图,生成调度消息。
主节点可通过向从节点发送查询请求,根据从节点返回的状态信息,得到各从节点的状态。然后根据步骤S300,可以确定待编译模型的逻辑计算图。再根据从节点的状态,以及逻辑计算图,可将逻辑计算图划分为多个逻辑子计算图。需要说明的是,本说明书对于具体如何对逻辑计算图进行划分不做限制,可根据需要设置。只需保证划分后的逻辑子计算图可在从节点进行编译,且一个从节点只需编译一个逻辑子计算图即可。
确定该逻辑子计算图对应的全局唯一的标识。然后,将该标识与该逻辑子计算图打包生成调度消息。
进一步的,该步骤也可通过多层级执行体结构实现。根据步骤S300,该事件执行体向各个从节点发送查询请求,确定各个从节点的状态,然后根据各从节点的状态,对该逻辑计算图进行划分。
然后,该事件执行体根据划分逻辑计算图后获得的逻辑子计算图,创建会话控制执行体。最后事件执行体将逻辑子计算图和唯一标识发送给会话控制执行体。
S304: 将该调度消息发送至所述系统的各从节点。
由于在本说明书一个或多个实施例中,当逻辑计算图的划分方式的不同时,逻辑子计算图与从节点的对应关系也不同。由于本说明书对于主节点对逻辑计算图进行划分可根据需要设置,因此需要根据采用的划分方式,确定对应关系。然后,根据该对应关系,将步骤S302中生成的调度消息,发送至对应的从节点。
各从节点根据该调度消息中包含的逻辑子计算图,确定逻辑子计算图的输入张量、逻辑子计算图的输出张量,推导该从节点对该逻辑子计算图进行编译所需的资源。根据确定出的编译所需的资源,以及该从节点自身的带宽利用率、计算资源利用率等状态,确定该从节点本地资源中,分配用于进行逻辑子计算图的资源。当然,本说明书对于从节点对计算资源的分配方式不做限制,可根据需要设置。只需保证划分后的计算资源可以对该部分算子进行计算即可。
再然后,由于每个逻辑子计算图中可包含多个相互依赖的计算任务,因此相互依赖的计算任务可以确定一个计算流,进而一个逻辑子计算图可包含多个计算流。该从节点基于分配好的计算资源,分别对每一个计算流进行编译,得到该从节点对该逻辑子计算图的编译结果,根据该编译结果,可以确定该逻辑子计算图对应的任务子计算图。
当从节点将逻辑子计算图编译完成后,向主节点发送包含全局唯一标识的编译完成信息。
进一步的,该步骤也可通过多层级执行体结构实现。根据步骤S302,该会话控制执行体通过收到的逻辑子计算图创建子图执行体,并确定子图执行体、逻辑子计算图以及从节点的对应关系。针对每个子图执行体,该子图执行体先创建在从节点部署的设备执行体,再根据该子图执行体对应的逻辑子计算图、全局唯一标识以及该设备执行体,生成调度消息,并将调度消息发送至该子图执行体对应的从节点上。
该从节点根据接收到的调度消息,确定要处理的逻辑子计算图以及设备执行体。该设备执行体根据逻辑子计算图,获取该逻辑子计算图的输入张量、逻辑子计算图的输出张量,从而推导该从节点对该逻辑子计算图进行编译所需的资源。根据确定出的编译所需的资源,以及该从节点自身的带宽利用率、计算资源利用率等状态,确定该从节点本地资源中,可用于进行逻辑子计算图编译的资源,将该部分资源进行分配。
同时,该设备执行体也可根据逻辑子计算图,确定该从节点需要执行的各任务,再根据各任务之间的依赖关系,可以确定至少一个计算流,针对每一个计算流创建计算流执行体。通过每一个计算流执行体和分配到的计算资源完成对逻辑子计算图的编译,得到计算设备可直接运行的文件。
编译完成后,计算流执行体将编译完成信息返回至设备执行体,当设备执行体接收到所有计算流执行体的编译完成信息时,将编译完成信息返回至子图执行体,当子图执行体接收到所有设备执行体返回的编译完成信息时,将编译完成信息返回至会话控制执行体,当会话控制执行体收到所有的子图执行体返回的编译完成信息时,将编译完成信息返回至事件执行体。
S306:接收所述各从节点返回的编译完成信息,确定所述待编译模型编译完毕,并根据编译完毕的模型执行目标业务。
根据接收到的编译完成信息,确定该全局唯一标识,并根据逻辑子计算图与全局唯一标识的对应关系,确定哪个逻辑子计算图完成编译。当该主节点根据接收到的各编译完成信息,确定该逻辑计算图的各逻辑子计算图均完成编译时,可以确定待编译模型编译完毕。并可根据编译完毕的模型执行目标业务。
其中,由于在进行编译模型时,该模型可以是未训练的模型,也可以是已经训练完待部署的模型,因此该目标业务可以根据需要设置。例如,假设当该编译完成的模型是未训练的模型时,该目标任务可为根据预设的训练样本集,对该模型进行训练,通过各从节点编译得到的任务子计算图,分布式的运行该模型,确定模型输出结果以及根据样本标注,调整各节点中任务子计算图对应模型参数。或者,假设当该编译完成的模型是完成训练的模型时,该目标任务可以是基于该完成训练的模型执行的任务,假设该完成训练的模型是图片分类模型,则该主节点可根据业务请求,确定待识别的图片,将该待识别的图片发送至该完成训练的模型中输入层的逻辑子计算图对应的从节点,使各从节点按照逻辑计算图中计算顺序依次传递中间数据,最后该完成训练的模型中输出层的逻辑子计算图对应的从节点确定图片分类结果,并返回至该主节点。该主节点根据接收到的分类结果,确定目标任务的执行结果。
进一步的,该步骤也可通过多层级执行体结构实现。根据步骤S304,主节点根据事件执行体收到的编译完成信息识,确定模型编译完成,并根据编译完毕的模型执行目标业务。
基于图3所示的分布式模型编译方法,可见通过本分布式模型编译系统在进行模型编译时,从逻辑上将模型对应的计算图进行拆分,确定若干子图,之后各子图的编译过程不再由主节点执行,而是分配至各从节点进行,减少主节点的负载。并且,由于可通过多个从节点并行对子图进行编译,模型编译效率可以大大提高。
基于上述分布式模型编译方法的描述,本说明书还提供一种分部式系统中从节点应用的分布式模型编译方法,如图4所示。
图4为本说明书实施例提供的分布式模型编译方法的流程示意图,其中:
S400:接收所述系统的主节点发送的调度消息,所述调度消息为所述主节点根据逻辑子计算图生成的,所述逻辑子计算图为所述主节点对待编译模型的模型信息的逻辑计算图进行划分得到的。
接收主节点发送的调度消息,根据该调度消息,确定该调度消息中包含的逻辑子计算图。其中,主节点根据收到的编译请求确定待编译模型的模型信息,再根据该模型信息确定该待编译模型的逻辑计算图,该逻辑计算图仅用于表征模型内部的计算逻辑。根据从节点的状态,以及逻辑计算图,可将逻辑计算图划分为多个逻辑子计算图。确定该逻辑子计算图对应的全局唯一的标识。然后,将该标识与该逻辑子计算图打包生成调度消息,并将该调度消息发送给对应的从节点。
进一步的,该步骤也可通过多层级执行体结构实现。主节点根据接收到的编译请求,创建对应的事件执行体。该事件执行体根据接收到的编译请求,获取待编译模型的信息,根据获得的模型信息确定待编译模型的逻辑计算图。该事件执行体向各个从节点发送查询请求,确定各个从节点的状态,然后根据各从节点的状态,对该逻辑计算图进行划分。该事件执行体根据划分逻辑计算图后获得的逻辑子计算图,创建会话控制执行体。然后,该事件执行体将逻辑子计算图和唯一标识发送给会话控制执行体。
该会话控制执行体通过收到的逻辑子计算图创建子图执行体,并确定子图执行体、逻辑子计算图以及从节点的对应关系。针对每个子图执行体,该子图执行体先创建在从节点部署的设备执行体,再根据该子图执行体对应的逻辑子计算图、全局唯一标识以及该设备执行体,生成调度消息,并将调度消息发送至该子图执行体对应的从节点上。
S402:根据所述调度消息,从所述从节点本地分配对应的计算资源。
根据该调度消息中包含的逻辑子计算图,确定逻辑子计算图的输入张量、逻辑子计算图的输出张量,推导该从节点对该逻辑子计算图进行编译所需的资源。根据确定出的编译所需的资源,以及自身的带宽利用率、计算资源利需要说明的是,本说明书对于从节点对计算资源的分配方式不做限制,可根据需要设置。只需保证划分后的计算资源可以对该部分算子进行计算即可。
进一步的,该步骤也可通过多层级执行体结构实现。接步骤S400,根据接收到的调度消息,确定自身处理的逻辑子计算图以及设备执行体,并通过所述设备执行体根据所述从节点实时的状态、所述逻辑子计算图的输入张量以及所述逻辑子计算图的输出张量,从该从节点本地分配对应的计算资源。
S404:基于分配的计算资源,对所述调度消息包含的逻辑子计算图进行编译,确定任务子计算图。
再然后,由于每个逻辑子计算图中可包含多个相互依赖的计算任务,因此相互依赖的计算任务可以确定一个计算流,进而一个逻辑子计算图可包含多个计算流。然后基于分配好的计算资源,分别对每一个计算流进行编译,得到该从节点对该逻辑子计算图的编译结果,根据该编译结果,可以确定该逻辑子计算图对应的任务子计算图。
进一步的,该步骤也可通过多层级执行体结构实现。通过步骤S402,通过所述设备执行体,确定编译所述逻辑子计算图所需执行的各任务;根据确定出的各任务,确定至少一个计算流,并针对每个计算流,创建对应的计算流执行体,通过各计算流执行体,执行所述逻辑子计算图所需执行的各任务,完成对所述逻辑子计算图的编译,确定任务子计算图。
S406:根据所述任务子计算图向所述主节点发送编译完成信息,使所述主节点在根据接收到的编译完成信息确定所述待编译模型编译完毕时,根据编译完毕的模型执行目标业务。
当该从节点编译得到任务子计算图时,便确定已完成对逻辑子计算图的编译,并将包含全局唯一标识的编译完成信息,返回给主节点,使主节点可以根据接收到的编译完成信息,确定该全局唯一标识,并根据逻辑子计算图与全局唯一标识的对应关系,确定哪个逻辑子计算图完成编译。当该主节点根据接收到的各编译完成信息,确定该逻辑计算图的各逻辑子计算图均完成编译时,可以确定待编译模型编译完毕。并可根据编译完毕的模型执行目标业务。
进一步的,该步骤也可通过多层级执行体结构实现。通过步骤S404,该计算流执行体完成编译后,将编译完成信息返回至设备执行体,当设备执行体接收到所有计算流执行体的编译完成信息时,将编译完成信息返回至子图执行体,当子图执行体接收到所有设备执行体返回的编译完成信息时,将编译完成信息返回至会话控制执行体,当会话控制执行体收到所有的子图执行体返回的编译完成信息时,将编译完成信息返回至事件执行体,使主节点根据事件执行体收到的编译完成信息识,确定模型编译完成。
基于图4所示的分布式模型编译方法,该方法从逻辑上将模型对应的计算图进行拆分,确定若干子图,之后各子图的编译过程不再由主节点执行,而是分配至各从节点进行,提高从节点计算资源利用率,减少主节点的负载。并且,由于可通过多个从节点并行对子图进行编译,模型编译效率可以大大提高,也更加充分的利用了从节点的计算资源和存储资源。
通过本分布式模型编译系统在进行模型编译时,从逻辑上将模型对应的计算图进行拆分,确定若干子图,之后各子图的编译过程不再由主节点执行,而是分配至各从节点进行,提高从节点计算资源利用率,减少主节点的负载。并且,由于可通过多个从节点并行对子图进行编译,模型编译效率可以大大提高。而且由于主节点不再执行全局计算图的编译,还可以减少从节点等待时间,更加充分的利用了主节点和从节点的计算资源和存储资源。以上为本说明书的一个或多个实施例提供的分布式模型编译系统以及方法,基于同样的思路,本说明书还提供了相应的分布式模型编译装置,如图5所示。该分布式模型编译装置应用于执行分布式模型编译方法的系统中的主节点。
图5为本说明书提供的一种分布式模型编译装置示意图,具体包括:
确定模块500,根据待编译模型的模型信息,确定所述待编译模型的逻辑计算图;
逻辑拆分模块501,将所述逻辑计算图划分为各逻辑子计算图,以及针对每个逻辑子计算图,生成调度消息;
发送模块502,将该调度消息发送至所述系统的各从节点,使所述各从节点根据所述调度消息,从所述各从节点本地分配对应的计算资源,以基于分配的计算资源,对所述调度消息包含的逻辑子计算图进行编译,确定任务子计算图,根据所述任务子计算图向所述主节点发送编译完成信息;
接收模块503,接收所述各从节点返回的编译完成信息,确定所述待编译模型编译完毕,并根据编译完毕的模型执行目标业务。
可选地,所述确定模块500,具体用于根据接收到的编译请求,创建执行所述编译请求对应事件的事件执行体,并通过所述事件执行体确定所述待编译模型的模型信息;根据待编译模型的模型信息,确定所述待编译模型的逻辑计算图。
可选地,所述逻辑拆分模块501,具体用于通过所述事件执行体,确定各从节点的状态;通过所述事件执行体,根据各从节点的状态,创建会话控制执行体,并通过所述会话控制执行体,根据各从节点的状态,将所述逻辑计算图划分为各逻辑子计算图,并确定各从节点分别对应的逻辑子计算图;通过所述会话控制执行体,针对每个逻辑子计算图,创建对应该逻辑子计算图的子图执行体,并确定子图执行体、逻辑子计算图以及从节点的对应关系;针对每个子图执行体,通过该子图执行体创建在从节点部署的设备执行体,并根据创建的设备执行体以及该子图执行体对应的逻辑子计算图,生成调度消息。
可选地,所述发送模块502,具体用于通过该子图执行体创建在从节点部署的设备执行体,并根据创建的设备执行体以及该子图执行体对应的逻辑子计算图,生成调度消息,并将所述调度消息发送至该子图执行体对应的从节点;用于通过所述设备执行体,确定编译所述逻辑子计算图所需执行的各任务;根据确定出的各任务,确定至少一个计算流,并针对每个计算流,创建对应的计算流执行体,通过各计算流执行体,执行所述逻辑子计算图所需执行的各任务,完成对所述逻辑子计算图的编译,确定任务子计算图;通过所述设备执行体,确定所述计算流执行体编译得到的任务子计算图,并将所述任务子计算图返回所述主节点中对应所述从节点的子图执行体;通过各子图执行体,接收各从节点返回的任务子计算图;据所述任务子计算图向所述主节点发送编译完成信息。
可选地,所述接收模块503,具体用于通过各子图执行体,接收各从节点返回的任务子计算图;根据各任务子计算图,确定完成模型的编译。
本说明书还提供了相应的分布式模型编译装置,如图6所示。该分布式模型编译装置应用于执行分布式模型编译方法的系统中从节点。
图6为本说明书提供的一种分布式模型编译装置示意图,具体包括:
接收模块600,接收所述系统的主节点发送的调度消息,所述调度消息为所述主节点根据逻辑子计算图生成的,所述逻辑子计算图为所述主节点对待编译模型的模型信息的逻辑计算图进行划分得到的;
资源分配模块601,根据所述调度消息,从所述从节点本地分配对应的计算资源;
编译模块602,基于分配的计算资源,对所述调度消息包含的逻辑子计算图进行编译,确定任务子计算图;
发送模块603,根据所述任务子计算图向所述主节点发送编译完成信息,使所述主节点在根据接收到的编译完成信息确定所述待编译模型编译完毕时,根据编译完毕的模型执行目标业务。
可选地,所述接收模块600,具体用于接收所述系统的主节点发送的调度消息,所述调度消息,通过所述会话控制执行体,针对每个逻辑子计算图,创建对应该逻辑子计算图的子图执行体,并确定子图执行体、逻辑子计算图以及从节点的对应关系;针对每个子图执行体,通过该子图执行体创建在从节点部署的设备执行体,并根据创建的设备执行体以及该子图执行体对应的逻辑子计算图,生成的。
可选地,所述资源分配模块601,具体用于根据接收到的调度消息,确定自身处理的逻辑子计算图以及设备执行体,并通过所述设备执行体根据所述从节点实时的状态、所述逻辑子计算图的输入张量以及所述逻辑子计算图的输出张量,从该从节点本地分配对应的计算资源。
可选地,所述编译模块602,具体用于通过所述设备执行体,确定编译所述逻辑子计算图所需执行的各任务;根据确定出的各任务,确定至少一个计算流,并针对每个计算流,创建对应的计算流执行体,通过各计算流执行体,执行所述逻辑子计算图所需执行的各任务,完成对所述逻辑子计算图的编译,确定任务子计算图。
可选地,所述发送模块603,具体用于根据所述任务子计算图向所述主节点发送编译完成信息。
本说明书还提供了一种计算机可读存储介质,该存储介质存储有计算机程序,计算机程序可用于执行上述图3或图4提供的分布式模型编译方法。
本说明书还提供了图7所示的电子设备的示意结构图。如图7所述,在硬件层面,该无人驾驶设备包括处理器、内部总线、网络接口、内存以及非易失性存储器,当然还可能包括其他业务所需要的硬件。处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,以实现上述图3或图4所述的分布式模型编译方法。当然,除了软件实现方式之外,本说明书并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device, PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20 以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本说明书时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本说明书的实施例可提供为方法、系统或计算机程序产品。因此,本说明书可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本说明书的实施例而已,并不用于限制本说明书。对于本领域技术人员来说,本说明书可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (21)
1.一种分布式模型编译系统,其特征在于,所述系统包括主节点以及若干从节点,其中:
所述主节点,用于根据接收到的编译请求,创建执行所述编译请求对应事件的事件执行体,并确定待编译模型的模型信息,根据所述待编译模型的模型信息,确定所述待编译模型的逻辑计算图,并将所述逻辑计算图划分为各逻辑子计算图,通过所述事件执行体,创建会话控制执行体,通过所述会话控制执行体,针对每个逻辑子计算图,创建对应该逻辑子计算图的子图执行体,并确定子图执行体、逻辑子计算图以及从节点的对应关系,针对每个子图执行体,通过该子图执行体创建在从节点部署的设备执行体,并根据创建的设备执行体以及该子图执行体对应的逻辑子计算图,生成调度消息,并发送至该子图执行体对应的从节点;接收各从节点返回的编译完成信息,确定所述待编译模型编译完毕,并根据编译完毕的模型执行目标业务;
针对每个从节点,用于接收所述主节点发送的调度消息,根据所述调度消息,从该从节点本地分配对应的计算资源,以基于分配的计算资源,对所述调度消息包含的逻辑子计算图进行编译,确定任务子计算图,根据所述任务子计算图向所述主节点发送编译完成信息。
2.如权利要求1所述的系统,其特征在于,所述主节点,通过所述事件执行体,接收各从节点返回的编译完成信息,确定编译得到的所述待编译模型,并执行目标业务。
3.如权利要求2所述的系统,其特征在于,所述主节点,用于通过所述事件执行体,确定各从节点的状态,根据各从节点的状态,将所述逻辑计算图划分为各逻辑子计算图。
4.如权利要求3所述的系统,其特征在于,所述主节点,用于通过所述事件执行体,当确定各从节点的状态后,创建会话控制执行体,并通过所述会话控制执行体,根据各从节点的状态,将所述逻辑计算图划分为各逻辑子计算图,并确定各从节点分别对应的逻辑子计算图。
5.如权利要求1所述的系统,其特征在于,所述从节点,用于根据接收到的调度消息,确定自身处理的逻辑子计算图以及设备执行体,并通过所述设备执行体根据所述从节点实时的状态、所述逻辑子计算图的输入张量以及所述逻辑子计算图的输出张量,从所述从节点本地分配对应的计算资源。
6.如权利要求5所述的系统,其特征在于,所述从节点,用于通过所述设备执行体,确定编译所述逻辑子计算图所需执行的各任务;根据确定出的各任务,确定至少一个计算流,并针对每个计算流,创建对应的计算流执行体,通过各计算流执行体,执行所述逻辑子计算图所需执行的各任务,完成对所述逻辑子计算图的编译,确定任务子计算图。
7.如权利要求6所述的系统,其特征在于,所述从节点,用于通过所述设备执行体,确定所述计算流执行体编译得到的任务子计算图,并将所述任务子计算图返回所述主节点中对应所述从节点的子图执行体;
所述主节点,用于通过各子图执行体,接收各从节点返回的任务子计算图,并根据各任务子计算图,确定编译完成的模型。
8.如权利要求1所述的系统,其特征在于,所述主节点,用于在将所述逻辑计算图划分为各逻辑子计算图之前,向所述系统中各从节点发送查询请求;根据各从节点返回的状态,确定用于编译逻辑子计算图的从节点;
所述从节点,用于接收所述主节点发送的查询请求,根据所述查询请求确定自身实时的状态,并返回所述主节点。
9.一种分布式模型编译方法,其特征在于,所述方法应用于执行所述分布式模型编译方法的系统中的主节点,其中:
接收编译请求;根据接收到的编译请求,创建执行所述编译请求对应事件的事件执行体;并确定待编译模型的模型信息,根据待编译模型的模型信息,确定所述待编译模型的逻辑计算图;通过所述事件执行体,创建会话控制执行体;
将所述逻辑计算图划分为各逻辑子计算图,通过所述会话控制执行体,针对每个逻辑子计算图,创建对应该逻辑子计算图的子图执行体,并确定子图执行体、逻辑子计算图以及从节点的对应关系,针对每个子图执行体,通过该子图执行体创建在从节点部署的设备执行体,并根据创建的设备执行体以及该子图执行体对应的逻辑子计算图,生成调度消息,并发送至该子图执行体对应的从节点;
从所述各从节点本地分配对应的计算资源,以基于分配的计算资源,对所述调度消息包含的逻辑子计算图进行编译,确定任务子计算图,根据所述任务子计算图向所述主节点发送编译完成信息;
接收所述各从节点返回的编译完成信息,确定所述待编译模型编译完毕,并根据编译完毕的模型执行目标业务。
10.如权利要求9所述的方法,其特征在于,根据待编译模型的模型信息,确定所述待编译模型的逻辑计算图,具体包括:
将所述逻辑计算图划分为各逻辑子计算图,以及针对每个逻辑子计算图,生成调度消息,具体包括:
通过所述事件执行体,将所述逻辑计算图划分为各逻辑子计算图,以及针对每个逻辑子计算图,生成调度消息;
将该调度消息发送至所述系统的各从节点,具体包括:
通过所述事件执行体,将该调度消息发送至所述系统的各从节点;
接收所述各从节点返回的编译完成信息,确定所述待编译模型编译完毕,并根据编译完毕的模型执行目标业务,具体包括:
通过所述事件执行体,接收各从节点返回的编译完成信息,确定编译得到的所述待编译模型,并执行目标业务。
11.如权利要求10所述的方法,其特征在于,通过所述事件执行体,将所述逻辑计算图划分为各逻辑子计算图,以及针对每个逻辑子计算图,具体包括:
通过所述事件执行体,确定各从节点的状态;
根据各从节点的状态,将所述逻辑计算图划分为各逻辑子计算图。
12.如权利要求11所述的方法,其特征在于,根据各从节点的状态,将所述逻辑计算图划分为各逻辑子计算图,具体包括:
通过所述会话控制执行体,根据各从节点的状态,将所述逻辑计算图划分为各逻辑子计算图,并确定各从节点分别对应的逻辑子计算图。
13.如权利要求9所述的方法,其特征在于,接收各从节点返回的编译完成信息,确定编译得到的所述待编译模型,具体包括:
通过各子图执行体,接收各从节点返回的任务子计算图;
通过所述会话控制执行体,根据各任务子计算图,确定编译完成的模型。
14.如权利要求9所述的方法,其特征在于,在将所述逻辑计算图划分为各逻辑子计算图之前,所述方法还包括:
向所述系统中各从节点发送查询请求,使各从节点根据所述查询请求确定自身实时的状态并返回;
根据各从节点返回的状态,确定用于编译逻辑子计算图的从节点。
15.一种分布式模型编译方法,其特征在于,所述方法应用于执行所述分布式模型编译方法的系统中的从节点,其中:
接收所述系统的主节点发送的调度消息,所述调度消息为所述主节点根据逻辑子计算图生成的,所述逻辑子计算图为所述主节点对待编译模型的模型信息的逻辑计算图进行划分得到的;
根据所述调度消息,从所述从节点本地分配对应的计算资源,根据接收到的调度消息,确定需要处理的逻辑子计算图以及设备执行体;
通过所述设备执行体,确定编译所述逻辑子计算图所需执行的各任务,根据确定出的各任务,确定至少一个计算流,针对每个计算流,创建对应的计算流执行体,通过各计算流执行体,执行所述逻辑子计算图所需执行的各任务,完成对所述逻辑子计算图的编译,确定任务子计算图;
根据所述任务子计算图向所述主节点发送编译完成信息,使所述主节点在根据接收到的编译完成信息确定所述待编译模型编译完毕时,根据编译完毕的模型执行目标业务。
16.如权利要求15所述的方法,其特征在于,根据所述调度消息,从所述从节点本地分配对应的计算资源,具体包括:
通过所述设备执行体,根据所述从节点实时的状态、所述逻辑子计算图的输入张量以及所述逻辑子计算图的输出张量,从所述从节点本地分配对应的计算资源。
17.如权利要求15所述的方法,其特征在于,根据所述任务子计算图向所述主节点发送编译完成信息,具体包括:
通过所述设备执行体,确定所述计算流执行体编译得到的任务子计算图;
通过所述设备执行体,将所述任务子计算图返回所述主节点中对应所述从节点的子图执行体,使所述主节点根据各从节点返回的任务子计算图,确定编译完成的模型。
18.一种分布式模型编译装置,其特征在于,所述装置应用于执行分布式模型编译方法的系统中的主节点,包括:
接收编译请求;根据接收到的编译请求,创建执行所述编译请求对应事件的事件执行体;并确定待编译模型的模型信息,根据待编译模型的模型信息,确定所述待编译模型的逻辑计算图;通过所述事件执行体,创建会话控制执行体;
逻辑拆分模块,将所述逻辑计算图划分为各逻辑子计算图,将所述逻辑计算图划分为各逻辑子计算图,通过所述会话控制执行体,针对每个逻辑子计算图,创建对应该逻辑子计算图的子图执行体,并确定子图执行体、逻辑子计算图以及从节点的对应关系;针对每个子图执行体,通过该子图执行体创建在从节点部署的设备执行体,并根据创建的设备执行体以及该子图执行体对应的逻辑子计算图,生成调度消息,并发送至该子图执行体对应的从节点;
发送模块,从所述各从节点本地分配对应的计算资源,以基于分配的计算资源,对所述调度消息包含的逻辑子计算图进行编译,确定任务子计算图,根据所述任务子计算图向所述主节点发送编译完成信息;
接收模块,接收所述各从节点返回的编译完成信息,确定所述待编译模型编译完毕,并根据编译完毕的模型执行目标业务。
19.一种分布式模型编译装置,其特征在于,所述装置应用于执行分布式模型编译方法的系统中的从节点,包括:
接收模块,接收所述系统的主节点发送的调度消息,所述调度消息为所述主节点根据逻辑子计算图生成的,所述逻辑子计算图为所述主节点对待编译模型的模型信息的逻辑计算图进行划分得到的;
资源分配模块,根据所述调度消息,从所述从节点本地分配对应的计算资源,根据接收到的调度消息,确定需要处理的逻辑子计算图以及设备执行体;
编译模块,通过所述设备执行体,确定编译所述逻辑子计算图所需执行的各任务,根据确定出的各任务,确定至少一个计算流,针对每个计算流,创建对应的计算流执行体,通过各计算流执行体,执行所述逻辑子计算图所需执行的各任务,完成对所述逻辑子计算图的编译,确定任务子计算图;
发送模块,根据所述任务子计算图向所述主节点发送编译完成信息,使所述主节点在根据接收到的编译完成信息确定所述待编译模型编译完毕时,根据编译完毕的模型执行目标业务。
20.一种计算机可读存储介质,其特征在于,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述权利要求9~19任一项所述的方法。
21.一种无人驾驶设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现上述权利要求9~19任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310727219.0A CN116541018B (zh) | 2023-06-19 | 2023-06-19 | 一种分布式模型编译系统、方法、装置、介质及设备 |
US18/466,384 US11934887B1 (en) | 2023-06-19 | 2023-09-13 | Distributed model compilation |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310727219.0A CN116541018B (zh) | 2023-06-19 | 2023-06-19 | 一种分布式模型编译系统、方法、装置、介质及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116541018A CN116541018A (zh) | 2023-08-04 |
CN116541018B true CN116541018B (zh) | 2023-09-15 |
Family
ID=87454426
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310727219.0A Active CN116541018B (zh) | 2023-06-19 | 2023-06-19 | 一种分布式模型编译系统、方法、装置、介质及设备 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11934887B1 (zh) |
CN (1) | CN116541018B (zh) |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004094581A (ja) * | 2002-08-30 | 2004-03-25 | Fujitsu Ltd | 並列拡張機能を備えたコンパイラプログラム、その記録媒体、コンパイル方法、およびコンパイル装置 |
CN103514025A (zh) * | 2012-06-22 | 2014-01-15 | 阿尔特拉公司 | Opencl编译 |
CN110908667A (zh) * | 2019-11-18 | 2020-03-24 | 北京迈格威科技有限公司 | 神经网络联合编译的方法、装置和电子设备 |
CN112463123A (zh) * | 2020-11-25 | 2021-03-09 | 北京字跳网络技术有限公司 | 任务编译方法、装置、网络节点、系统及存储介质 |
CN113031954A (zh) * | 2019-12-24 | 2021-06-25 | 阿里巴巴集团控股有限公司 | 代码编译方法、装置、电子设备、存储介质及异构系统 |
CN113703741A (zh) * | 2021-10-29 | 2021-11-26 | 深圳思谋信息科技有限公司 | 神经网络编译器配置方法、装置、计算机设备和存储介质 |
CN114691233A (zh) * | 2022-03-16 | 2022-07-01 | 中国电子科技集团公司第五十四研究所 | 一种基于工作流引擎的遥感数据处理插件分布式调度方法 |
CN114841322A (zh) * | 2022-05-17 | 2022-08-02 | 北京灵汐科技有限公司 | 神经网络计算图的处理方法及处理装置 |
CN115511086A (zh) * | 2022-11-03 | 2022-12-23 | 上海人工智能创新中心 | 一种针对超大模型的分布式推理部署系统 |
CN115543639A (zh) * | 2022-12-01 | 2022-12-30 | 阿里云计算有限公司 | 分布式执行深度学习任务的优化方法和分布式系统 |
CN116126346A (zh) * | 2023-04-04 | 2023-05-16 | 上海燧原科技有限公司 | Ai模型的代码编译方法、装置、计算机设备及存储介质 |
CN116185532A (zh) * | 2023-04-18 | 2023-05-30 | 之江实验室 | 一种任务执行系统、方法、存储介质及电子设备 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7346903B2 (en) * | 2003-02-04 | 2008-03-18 | Sun Microsystems, Inc. | Compiling and linking modules of a cycle-based logic design |
US8400061B2 (en) * | 2007-07-17 | 2013-03-19 | I/O Controls Corporation | Control network for LED-based lighting system in a transit vehicle |
US8495603B2 (en) * | 2008-08-11 | 2013-07-23 | International Business Machines Corporation | Generating an executable version of an application using a distributed compiler operating on a plurality of compute nodes |
US20200265301A1 (en) * | 2019-02-15 | 2020-08-20 | Microsoft Technology Licensing, Llc | Incremental training of machine learning tools |
-
2023
- 2023-06-19 CN CN202310727219.0A patent/CN116541018B/zh active Active
- 2023-09-13 US US18/466,384 patent/US11934887B1/en active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004094581A (ja) * | 2002-08-30 | 2004-03-25 | Fujitsu Ltd | 並列拡張機能を備えたコンパイラプログラム、その記録媒体、コンパイル方法、およびコンパイル装置 |
CN103514025A (zh) * | 2012-06-22 | 2014-01-15 | 阿尔特拉公司 | Opencl编译 |
CN110908667A (zh) * | 2019-11-18 | 2020-03-24 | 北京迈格威科技有限公司 | 神经网络联合编译的方法、装置和电子设备 |
CN113031954A (zh) * | 2019-12-24 | 2021-06-25 | 阿里巴巴集团控股有限公司 | 代码编译方法、装置、电子设备、存储介质及异构系统 |
CN112463123A (zh) * | 2020-11-25 | 2021-03-09 | 北京字跳网络技术有限公司 | 任务编译方法、装置、网络节点、系统及存储介质 |
CN113703741A (zh) * | 2021-10-29 | 2021-11-26 | 深圳思谋信息科技有限公司 | 神经网络编译器配置方法、装置、计算机设备和存储介质 |
CN114691233A (zh) * | 2022-03-16 | 2022-07-01 | 中国电子科技集团公司第五十四研究所 | 一种基于工作流引擎的遥感数据处理插件分布式调度方法 |
CN114841322A (zh) * | 2022-05-17 | 2022-08-02 | 北京灵汐科技有限公司 | 神经网络计算图的处理方法及处理装置 |
CN115511086A (zh) * | 2022-11-03 | 2022-12-23 | 上海人工智能创新中心 | 一种针对超大模型的分布式推理部署系统 |
CN115543639A (zh) * | 2022-12-01 | 2022-12-30 | 阿里云计算有限公司 | 分布式执行深度学习任务的优化方法和分布式系统 |
CN116126346A (zh) * | 2023-04-04 | 2023-05-16 | 上海燧原科技有限公司 | Ai模型的代码编译方法、装置、计算机设备及存储介质 |
CN116185532A (zh) * | 2023-04-18 | 2023-05-30 | 之江实验室 | 一种任务执行系统、方法、存储介质及电子设备 |
Non-Patent Citations (2)
Title |
---|
数据流程序动态调度与优化;杨胜哲;于俊清;唐九飞;;计算机工程与科学(第07期);全文 * |
杨胜哲 ; 于俊清 ; 唐九飞 ; .数据流程序动态调度与优化.计算机工程与科学.2017,(第07期),全文. * |
Also Published As
Publication number | Publication date |
---|---|
CN116541018A (zh) | 2023-08-04 |
US11934887B1 (en) | 2024-03-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110704186B (zh) | 基于混合分布架构的计算资源分配方法、装置和存储介质 | |
WO2016078008A1 (zh) | 调度数据流任务的方法和装置 | |
CN111488205B (zh) | 面向异构硬件架构的调度方法和调度系统 | |
US11537446B2 (en) | Orchestration and scheduling of services | |
CA3005400C (en) | Processing data using dynamic partitioning | |
US11175960B2 (en) | Worker-scheduling method in cloud-computing system and apparatus for the same | |
CN114780225B (zh) | 一种分布式模型训练系统、方法及装置 | |
CN111861412B (zh) | 面向完成时间优化的科学工作流调度方法及系统 | |
KR20200091789A (ko) | Gpu 연산의 동시 실행을 위한 플랫폼 | |
KR20210096259A (ko) | 컴퓨팅 리소스 할당 | |
CN116467061B (zh) | 一种任务执行的方法、装置、存储介质及电子设备 | |
KR20210148586A (ko) | 스케줄러, 스케줄러의 동작 방법 및 이를 포함한 가속기 시스템 | |
CN116225669B (zh) | 一种任务执行方法、装置、存储介质及电子设备 | |
CN110851285A (zh) | 一种基于gpu虚拟化的资源复用方法、装置及设备 | |
US11836532B2 (en) | OS optimized workflow allocation | |
CN116541018B (zh) | 一种分布式模型编译系统、方法、装置、介质及设备 | |
CN115964181B (zh) | 一种数据处理的方法、装置、存储介质及电子设备 | |
CN116157778A (zh) | 共享物理主机上混合集中分布式调度的系统和方法 | |
Benini et al. | Resource management policy handling multiple use-cases in mpsoc platforms using constraint programming | |
Puliafito et al. | Stateful function as a service at the edge | |
CN117355819A (zh) | 一种计算模型的处理方法及装置 | |
CN116151137B (zh) | 一种仿真系统、方法及装置 | |
Plauth et al. | CloudCL: single-paradigm distributed heterogeneous computing for cloud infrastructures | |
US20220318656A1 (en) | Model parameter sharing between inference application instances in processing unit of information processing system | |
CN117421129B (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 |