CN110008028B - 计算资源分配方法、装置、计算机设备和存储介质 - Google Patents
计算资源分配方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN110008028B CN110008028B CN201910285304.XA CN201910285304A CN110008028B CN 110008028 B CN110008028 B CN 110008028B CN 201910285304 A CN201910285304 A CN 201910285304A CN 110008028 B CN110008028 B CN 110008028B
- Authority
- CN
- China
- Prior art keywords
- machine
- neural network
- operation instruction
- instruction
- state
- 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
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
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Artificial Intelligence (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Feedback Control In General (AREA)
Abstract
本申请涉及一种计算资源分配方法、装置、计算机设备和存储介质。所述方法包括:遍历分布式神经网络的拓扑结构图,得到各个机器的运行指令;根据所述拓扑结构图遍历所述各个机器的运行指令,得到各个机器对应的单机神经网络;获取所述各个机器的运行指令的状态;根据所述各个机器的运行指令的状态,在各个机器对应的单机神经网络中进行训练或推理计算。采用本方法能够方便在分布式深度神经网络中进行资源分配、提高分布式深度神经网络运行效率。
Description
技术领域
本申请涉及信息处理技术领域,特别是涉及一种计算资源分配方法、装置、计算机设备和存储介质。
背景技术
随着互联网技术的发展,深度神经网络凭借其泛化性好、易训练等特点,已被广泛应用于图像识别、语音处理等人工智能领域。由于神经网络运算对设备的计算能力以及内存容量要求较高,为了能在较低计算能力以及较低内存容量的设备上运行,往往需要对神经网络进行改造,使其能够在多台机器多台设备上进行分布式运行。
分布式神经网络能够执行数据并行、模型并行以及混合并行方法。数据并行指不同的机器有同一个模型的多个副本,不同机器分配到不同的数据输入,然后将所有机器的计算结果按照某种方式合并;模型并行指分布式***中的不同机器负责单个网络模型的不同部分,例如:神经网络模型的不同运算操作被分配到不同的机器,或者把一个大的运算操作拆成几个小的运算操作,再分配到不同的机器;混合并行指每个机器不仅有不同的输入,而且在神经网络结构上也有一定的区别。
然而,目前分布式神经网络中的资源分配方案十分繁琐,若处理不当容易降低运行效率。
发明内容
基于此,有必要针对上述技术问题,提供一种能够方便在分布式深度神经网络中进行资源分配、提高分布式深度神经网络运行效率的计算资源分配方法、装置、计算机设备和存储介质。
一种计算资源分配方法,所述方法包括:
遍历分布式神经网络的拓扑结构图,得到各个机器的运行指令;
根据所述拓扑结构图遍历所述各个机器的运行指令,得到各个机器对应的单机神经网络;
获取所述各个机器的运行指令的状态;
根据所述各个机器的运行指令的状态,在各个机器对应的单机神经网络中进行训练或推理计算。
在其中一个实施例中,所述遍历分布式神经网络的拓扑结构图,得到各个机器的运行指令,包括:
遍历所述拓扑结构图,若所述拓扑结构图中运行指令的机器号与当前运行的机器号一致,则将所述运行指令作为当前运行的机器中的运行指令。
在其中一个实施例中,所述根据所述拓扑结构图遍历所述各个机器的运行指令,得到各个机器对应的单机神经网络,包括:
根据所述拓扑结构图遍历所述各个机器的运行指令,得到所述各个机器的运行指令的机器号参数以及设备号参数;
根据所述机器号参数以及设备号参数,判断是否需要在不同设备之间增加数据拷贝指令,以及是否需要在不同机器之间增加网络传输指令;
根据所述拓扑结构图,构建每一所述单机神经网络的前向子图和后向子图;
对每一所述单机神经网络中的多个所述状态相同的运行指令进行梯度计算,得到各个机器对应的单机神经网络。
在其中一个实施例中,所述根据所述拓扑结构图遍历所述各个机器的运行指令,得到各个机器对应的单机神经网络,还包括:
根据所述拓扑结构图遍历所述各个机器的运行指令,得到所述各个机器的运行指令的机器号参数以及设备号参数;
根据所述机器号参数以及设备号参数,判断是否需要在不同设备之间增加数据拷贝指令,以及是否需要在不同机器之间增加网络传输指令;
根据所述拓扑结构图,构建每一所述单机神经网络的前向子图,得到各个机器对应的单机神经网络。
在其中一个实施例中,所述根据所述机器号参数以及设备号参数,判断是否需要在不同设备之间增加数据拷贝指令,以及是否需要在不同机器之间增加网络传输指令,包括:
若所述运行指令的机器号参数与所述运行指令的输入机器号一致,所述运行指令的设备号参数与所述运行指令的输入设备号不一致,则在不同设备之间增加所述数据拷贝指令;
若所述运行指令的机器号参数与所述运行指令的输入机器号不一致,则在不同机器之间增加所述网络传输指令。
在其中一个实施例中,所述根据所述拓扑结构图,构建每一所述单机神经网络的前向子图和后向子图,包括:
通过前向计算构建所述前向子图,得到每一所述单机神经网络的端点;
通过后向计算构建所述后向子图,对每一所述单机神经网络中的运行指令进行状态更新。
在其中一个实施例中,所述对每一所述单机神经网络中的多个所述状态相同的运行指令进行梯度计算,包括:
将多个所述状态相同的运行指令的原始梯度相加,得到每一所述运行指令的更新梯度。
在其中一个实施例中,所述方法还包括:构建所述分布式神经网络的拓扑结构图。
在其中一个实施例中,所述构建所述分布式神经网络的拓扑结构图,包括:
根据所述各个机器的运行指令的状态,将所述各个机器的运行指令分配至指令列表中;
将所述指令列表中的运行指令在所述分布式神经网络中进行计算,并实时更新所述运行指令的状态;
计算完成后,对所述指令列表中的每一运行指令的状态进行存储。
在其中一个实施例中,所述根据所述各个机器的运行指令的状态,将所述各个机器的运行指令分配至指令列表中,包括:
将状态相同的多个所述运行指令分配至同一所述指令列表中。
在其中一个实施例中,所述将所述指令列表中的运行指令在所述分布式神经网络中进行计算,包括:
将所述指令列表中的运行指令在所述分布式神经网络中进行计算,得到第一计算结果;
将多个所述指令列表对应的第一计算结果进行合并,得到分布式计算结果。
在其中一个实施例中,所述方法还包括:
在计算资源分配以及推理计算过程中,对所述运行指令的状态进行定期存储;或
在计算资源分配以及推理计算过程中,对所述运行指令的状态进行分布式存储。
在其中一个实施例中,所述运行指令包括单设备运行指令、分布式运行指令以及参数运行指令。
在其中一个实施例中,所述运行指令的参数还包括分布式属性、拆分运行指令以及合并运行指令。
一种计算资源分配装置,所述装置包括:
运行指令获取模块,用于遍历分布式神经网络的拓扑结构图,得到各个机器的运行指令;
单机神经网络获取模块,用于根据所述拓扑结构图遍历所述各个机器的运行指令,得到各个机器对应的单机神经网络;
运行指令状态获取模块,用于获取所述各个机器的运行指令的状态;
计算模块,用于根据所述各个机器的运行指令的状态,在各个机器对应的单机神经网络中进行训练或推理计算。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
遍历分布式神经网络的拓扑结构图,得到各个机器的运行指令;
根据所述拓扑结构图遍历所述各个机器的运行指令,得到各个机器对应的单机神经网络;
获取所述各个机器的运行指令的状态;
根据所述各个机器的运行指令的状态,在各个机器对应的单机神经网络中进行训练或推理计算。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
遍历分布式神经网络的拓扑结构图,得到各个机器的运行指令;
根据所述拓扑结构图遍历所述各个机器的运行指令,得到各个机器对应的单机神经网络;
获取所述各个机器的运行指令的状态;
根据所述各个机器的运行指令的状态,在各个机器对应的单机神经网络中进行训练或推理计算。
上述计算资源分配方法、装置、计算机设备和存储介质,通过从分布式神经网络的拓扑结构图中提取各个机器的运行指令,并根据各个机器的运行指令得到各个机器对应的单机神经网络,最后根据各个机器的运行指令的状态,在各个机器对应的单机神经网络中进行训练或推理计算,从而提高分布式神经网络中运行指令状态的存储与装载的便利性,同时,能够实现多台机器同步执行计算资源分配以及推理计算,提高了分布式深度神经网络的运行效率。
附图说明
图1为一个实施例中计算资源分配***100的结构示意图;
图2为一个实施例中计算资源分配方法的流程示意图;
图3为一个实施例中分布式神经网络的拓扑结构图;
图4为一个实施例中训练过程中实现模型转换的流程示意图;
图5为一个实施例中推理计算过程中实现模型转换的流程示意图;
图6为一个实施例中构建分布式神经网络的流程示意图;
图7为一个实施例中计算资源分配装置的结构框图;
图8为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
在一个实施例中,如图1所示,提供了一种计算资源分配***100,包括:分配单元101、转换单元102、存储单元103、装载单元104以及计算单元105,其中,分配单元101,用于根据运行指令的状态标识符,将所述运行指令分配至相应的指令列表中;转换单元102,用于根据分布式神经网络的拓扑结构图,得到各个机器对应的单机神经网络;存储单元103,用于对运行指令的状态进行存储;装载单元104,用于对运行指令的状态进行装载;计算单元105,用于在所述分布式神经网络或所述单机神经网络中进行推理计算。另外,计算资源分配***100还包括设计单元106,用于提供一套原语(即运行指令的参数),该原语可以描述上述分布式神经网络。
在一个实施例中,如图2所示,提供了一种计算资源分配方法,该方法可在如图1所示的计算资源分配***上运行,所述方法包括以下步骤:
步骤S202,遍历分布式神经网络的拓扑结构图,得到各个机器的运行指令。
其中,分布式神经网络指的是多机全局神经网络;分布式神经网络的拓扑结构图指的是多个机器执行分布式计算的拓扑结构图,请参阅图3;运行指令用于指示各个机器执行何种操作,例如:加法运行指令用于指示机器对输入数据执行加法运算,比较运行指令用于指示机器对多个输入数据执行比较运算。
进一步,该运行指令包括单设备运行指令、分布式运行指令以及参数运行指令。单设备运行指令指的是只能在单一机器或设备上运行的指令,单设备运行指令包括带状态的单设备运行指令以及不带状态的单设备运行指令;分布式运行指令指的是具有分布式属性的运行指令,也就是说,分布式运行指令可以在多台机器或设备上分布式运行,分布式运行指令包括带状态的分布式运行指令以及不带状态的分布式运行指令,一个分布式运行指令可以由一个或多个单设备运行指令组成;参数运行指令指的是带状态的运行指令中的一种,也就是说,参数运行指令都是带状态的运行指令,参数运行指令可以是带状态的单设备运行指令,也可以是带状态的分布式运行指令。
具体地,计算资源分配***可以遍历多机全局分布式神经网络的拓扑结构图,根据该拓扑结构图中运行指令的参数,得到各个机器的运行指令。
步骤S204,根据所述拓扑结构图遍历所述各个机器的运行指令,得到各个机器对应的单机神经网络。
其中,单机神经网络指的是能够在各个机器上执行推理计算的神经网络。具体地,计算资源分配***可以根据步骤S202中得到的各个机器的运行指令,按照一定的转换规则,将该分布式神经网络转换成各个机器对应的单机神经网络。
步骤S206,获取所述各个机器的运行指令的状态。
具体地,计算资源分配***可以通过各个机器的运行指令的状态标识符(tag),得到该运行指令的状态。
作为一种可选的实施方式,在分布式神经网络训练完成后,计算资源分配***可以将各个机器上带状态标识符(tag)的单设备运行指令的状态进行存储。
作为另一种可选的实施方式,在计算资源分配以及推理计算过程中,计算资源分配***可以按照预设的时间周期,对各个机器上带状态标识符(tag)的单设备运行指令的状态进行定期存储。可选的,可以根据分配或运算需求设定定期存储的时间周期。
作为另一种可选的实施方式,在计算资源分配以及推理计算过程中,计算资源分配***可以按照预设的存储规则,对各个机器上带状态标识符(tag)的单设备运行指令的状态进行分布式存储。可选的,可以根据分配或运算需求设定分布式存储的存储规则,例如:可以将状态标识符(tag)为0的多个单设备运行指令存储在机器号为0的机器上,将状态标识符(tag)为1的多个单设备运行指令存储在机器号为1的机器上。
步骤S208,根据所述各个机器的运行指令的状态,在各个机器对应的单机神经网络中进行训练或推理计算。
其中,在各个机器对应的单机神经网络中进行推理计算指的是,使用各个机器对应的训练好的单机神经网络进行推理计算。具体地,计算资源分配***先装载预先存储的单设备运行指令的状态,并根据该单设备运行指令的状态,在各个机器对应的单机神经网络中进行训练或推理计算。可选的,计算资源分配***可以对预先存储的单设备运行指令的状态进行分布式装载。
上述计算资源分配方法中,通过从分布式神经网络的拓扑结构图中提取各个机器的运行指令,并根据各个机器的运行指令得到各个机器对应的单机神经网络,最后根据各个机器的运行指令的状态,在各个机器对应的单机神经网络中进行训练或推理计算,能够在分布式神经网络执行计算资源分配以及推理计算的过载中,方便的进行运行指令状态的存储、装载以及多机网络到单机网络的模型转换工作,从而提高了分布式深度神经网络的运行效率。
在其中一个实施例中,步骤S202具体包括:遍历所述拓扑结构图,若所述拓扑结构图中运行指令的机器号与当前运行的机器号一致,则将所述运行指令作为当前运行的机器中的运行指令。
其中,运行指令的参数包括机器号参数(node)、设备号参数(device)、状态标识符(tag)、分布式属性(distributed attributes)、指令列表(placement context)、拆分运行指令(sub placement)以及合并运行指令(contact placement)。
其中,机器号参数(node)表示该运行指令在哪台机器上运行,多台机器之间通过网络连接,一台机器可以包括多台设备;设备号参数(device)指的是该运行指令在哪台设备上运行,一台机器内部的多台设备之间不需要通过网络连接;状态标识符(tag)用于表示运行指令的状态,可以用该状态标识符来区分多个运行指令之间是否是共享状态;分布式属性(distributed attributes)用于表示运行指令计算和输出的位置,分布式属性由node,device和tag组成,表示该分布式运行指令在哪些机器以及每台机器的哪些设备上运行,该分布式运行指令的状态标识符用于描述该分布式运行中的多个单设备运行指令的状态共享情况,例如:若分布式运行指令包括4个单设备运行指令,定义该分布式运行指令的tag为[0,1,0,1],表示该分布式运行指令中的第0个单设备运行指令和第2个单设备运行指令之间是共享状态,第1个单设备运行指令和第3个单设备运行指令之间是共享状态;指令列表(placement context)可以辅助描述该分布式神经网络,指令列表由node,device和tag组成,在同一指令列表中的运行指令均为分布式运行指令;拆分运行指令(subplacement)是一种特殊的运行指令,用于对分布式运行指令进行拆分,得到其中的一部分单设备运行指令;合并运行指令(contact placement)也是一种特殊的运行指令,用于将多个分布式运行指令进行合并,合并后的运行指令中包括多个分布式运行指令中的所有单设备运行指令。
进一步,运行指令的参数还包括一系列通信参数,例如:allreduce、allgather、broadcast等,该通信参数用于指示运行指令执行何种集合通信操作。
具体地,计算资源分配***遍历多机全局分布式神经网络的拓扑结构图,并获取拓扑结构图中各个运行指令的机器号参数,包括获取分布式运行指令中每一单设备运行指令的机器号参数,并将获取到的单设备运行指令的机器号参数与当前机器的机器号进行对比,若获取到的单设备运行指令的机器号参数与当前机器的机器号一致,则保留该单设备运行指令,并将该单设备运行指令作为当前运行的机器中的运行指令。
上述计算资源分配方法中,通过将分布式神经网络中运行指令的机器号与当前机器的机器号进行对比,从而得到当前运行的机器中的运行指令,能够方便的提取各个机器对应的单机神经网络的运行指令,提高分布式神经网络的运行效率。
在其中一个实施例中,如图4所示,在对分布式神经网络进行训练的过程中,步骤S204具体包括以下步骤:
步骤S2042,根据所述拓扑结构图遍历所述各个机器的运行指令,得到所述各个机器的运行指令的机器号参数以及设备号参数。
具体地,计算资源分配***根据多机全局分布式神经网络的拓扑结构图,遍历步骤S202中得到的各个机器的运行指令,并获取各个机器的运行指令的机器号参数以及设备号参数,包括获取分布式运行指令中每一单设备运行指令的机器号参数以及设备号参数。
步骤S2044,根据所述机器号参数以及设备号参数,判断是否需要在不同设备之间增加数据拷贝指令,以及是否需要在不同机器之间增加网络传输指令。
其中,数据拷贝指令用于在同一机器的不同设备之间进行数据传输;网络传输指令用于在不同机器之间通过网络进行数据传输。
具体地,计算资源分配***根据步骤S2042中获取到的各个机器的运行指令的机器号参数以及设备号参数,判断是否需要在同一机器的不同设备之间增加数据拷贝指令,以及是否需要在不同机器之间增加网络传输指令。
作为一种可选的实施方式,步骤S2044具体包括以下步骤:
步骤S20442,若所述运行指令的机器号参数与所述运行指令的输入机器号一致,所述运行指令的设备号参数与所述运行指令的输入设备号不一致,则在不同设备之间增加所述数据拷贝指令。
具体地,计算资源分配***将步骤S2042中获取到的单设备运行指令的机器号参数与该运行指令的输入机器号进行对比,若获取到的单设备运行指令的机器号参数与该运行指令的输入机器号一致,则说明该单设备运行指令与其输入在同一台机器上。进一步,计算资源分配***将步骤S2042中获取到的单设备运行指令的设备号参数与该运行指令的输入设备号进行对比,若获取到的单设备运行指令的设备号参数与该运行指令的输入设备号一致,则说明该单设备运行指令与其输入在同一台机器的同一台设备上,不需要额外处理;若获取到的单设备运行指令的设备号参数与该运行指令的输入设备号不一致,则说明该单设备运行指令与其输入在同一台机器的不同设备上,需要在同一台机器的不同设备之间增加数据拷贝指令,便于在不同设备之间进行数据传输。
步骤S20444,若所述运行指令的机器号参数与所述运行指令的输入机器号不一致,则在不同机器之间增加所述网络传输指令。
具体地,计算资源分配***将步骤S2042中获取到的单设备运行指令的机器号参数与该运行指令的输入机器号进行对比,若获取到的单设备运行指令的机器号参数与该运行指令的输入机器号不一致,则说明该单设备运行指令与其输入在不同机器上,需要在不同机器之间增加网络传输指令,便于在不同机器之间进行数据传输。
步骤S2046,根据所述拓扑结构图,构建每一所述单机神经网络的前向子图和后向子图。
其中,前向子图指的是正向遍历分布式神经网络得到的拓扑结构图;后向子图指的是反向遍历分布式神经网络得到的拓扑结构图。
具体地,计算资源分配***可以根据多机全局分布式神经网络的拓扑结构图,通过正向遍历和反向遍历的方式,构建各个机器对应的单机神经网络的前向子图和后向子图。
作为一种可选的实施方式,步骤S2046具体包括以下步骤:
步骤S20462,通过前向计算构建所述前向子图,得到每一所述单机神经网络的端点。
其中,前向计算的作用是计算输入层结点对隐藏层结点的影响,也就是说,按照输入层、隐藏层和输出层的顺序正向遍历分布式神经网络,计算拓扑结构图中每个结点对其下一层结点的影响。
具体地,计算资源分配***根据分布式神经网络的拓扑结构图,判断哪些运行指令需要进行前向计算,通过执行前向计算构建各个单机神经网络对应的前向子图,并得到该单机神经网络对应的子图的端点(endpoints)。
步骤S20464,通过后向计算构建所述后向子图,对每一所述单机神经网络中的运行指令进行状态更新。
其中,后向计算的作用是调整神经网络中的权重关系,缩小得到的输出结果与实际结果之间的偏差,通过执行后向计算构建各个单机神经网络对应的后向子图,并对各个单机神经网络中的单设备运行指令进行状态更新。
步骤S2048,对每一所述单机神经网络中的多个所述状态相同的运行指令进行梯度计算,得到各个机器对应的单机神经网络。
具体地,若单机神经网络中存在多个状态相同的参数运行指令,则在执行后向计算的过程中对多个状态相同的参数运行指令进行梯度计算,将计算得到的梯度作为每一参数运行指令的新的梯度,最终得到各个机器对应的单机神经网络子图。
作为一种可选的实施方式,步骤S2048具体包括:将多个所述状态相同的运行指令的原始梯度相加,得到每一所述运行指令的更新梯度。
其中,运行指令的原始梯度指的是该运行指令在多机全局分布式神经网络中的梯度;运行指令的更新梯度指的是该运行指令在单机神经网络中的梯度。
具体地,计算资源分配***在执行后向计算的过程中,通过通信参数allreduce对多个状态相同的参数运行指令进行梯度计算,将计算得到的梯度作为每一参数运行指令的更新梯度。
上述计算资源分配方法中,按照一定的转换规则,将多机全局分布式神经网络转换成各个机器对应的单机神经网络,能够在神经网络训练过程中,方便的实现全局网络到单机网络的模型转换。
在其中一个实施例中,如图5所示,在对分布式神经网络进行推理计算的过程中,步骤S204具体包括以下步骤:
步骤S2042a,根据所述拓扑结构图遍历所述各个机器的运行指令,得到所述各个机器的运行指令的机器号参数以及设备号参数。
请参阅步骤S2042。
步骤S2044a,根据所述机器号参数以及设备号参数,判断是否需要在不同设备之间增加数据拷贝指令,以及是否需要在不同机器之间增加网络传输指令。
请参阅步骤S2044。
步骤S2046a,根据所述拓扑结构图,构建每一所述单机神经网络的前向子图,得到各个机器对应的单机神经网络。
请参阅步骤S2046,与步骤S2046不同的是,在对分布式神经网络进行推理计算的过程中,不需要执行后向计算构建后向子图,因此,也就不需要对运行指令进行梯度计算。
上述计算资源分配方法中,按照一定的转换规则,将多机全局分布式神经网络转换成各个机器对应的单机推理神经网络,能够在训练好的神经网络中执行推理计算的过程中,方便的实现全局网络到单机网络的模型转换。
在其中一个实施例中,如图6所示,提供了另一种计算资源分配方法,该方法可在如图1所示的计算资源分配***上运行,所述方法包括:在进行计算资源分配以及推理计算之前,构建所述分布式神经网络的拓扑结构图,具体包括以下步骤:
步骤S302,根据所述各个机器的运行指令的状态,将所述各个机器的运行指令分配至指令列表中。
具体地,计算资源分配***可以通过各个机器的运行指令的状态标识符(tag),获取各个机器的运行指令的状态,并将状态相同的多个所述运行指令分配至同一所述指令列表中。
步骤S304,将所述指令列表中的运行指令在所述分布式神经网络中进行计算,并实时更新所述运行指令的状态。
作为一种可选的实施方式,步骤S302具体包括以下步骤:
步骤S3022,将所述指令列表中的运行指令在所述分布式神经网络中进行计算,得到第一计算结果。
其中,第一计算结果指的是各个指令列表中的运行指令在该分布式神经网络中进行计算得到的计算结果,第一计算结果的数目与指令列表的数目一一对应。
步骤S3024,将多个所述指令列表对应的第一计算结果进行合并,得到分布式计算结果。
具体地,计算资源分配***通过通信参数allreduce、allgather、broadcast等一系列操作将步骤S3022中的多个第一计算进行合并,得到一个分布式计算结果。
例如,分布式神经网络中包括两台机器node0和node1,每台机器中包括两台设备device0和device1,预先设置两个指令列表pcon1和pcon2,在如图3所示的拓扑结构图中,定义两个运行指令data和conv均为分布式运行指令,data和conv的状态相同,且data和conv均包含4个单设备运行指令,将data和conv分配至指令列表pcon1中执行分布式计算,得到pcon1对应的第一计算结果y1,将神经网络中全连接层的单设备运行指令分配至指令列表pcon2中执行分布式计算,得到pcon2对应的第一计算结果y2,通过通信参数allreduce、allgather、broadcast等一系列操作将y1和y2进行合并,最终得到一个分布式计算结果y,其中,data_0_0表示data是在node0和device0上的单设备运行指令。
步骤S306,计算完成后,对所述指令列表中的每一运行指令的状态进行存储。
具体地,在分布式神经网络计算完成后,计算资源分配***可以将各个指令列表中的每一运行指令的状态进行存储。
上述计算资源分配方法中,根据运行指令的状态,将运行指令分配至不同的指令列表中,并将各个指令列表中的运行指令在分布式神经网络中进行计算,能够方便的构建分布式神经网络,同时,方便的对运行指令的状态进行存储。
应该理解的是,虽然图2-6的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2-6中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图7所示,提供了一种计算资源分配装置,包括:运行指令获取模块401、单机神经网络获取模块402、运行指令状态获取模块403和计算模块404,其中:
运行指令获取模块401,用于遍历分布式神经网络的拓扑结构图,得到各个机器的运行指令;
单机神经网络获取模块402,用于根据所述拓扑结构图遍历所述各个机器的运行指令,得到各个机器对应的单机神经网络;
运行指令状态获取模块403,用于获取所述各个机器的运行指令的状态;
计算模块404,用于根据所述各个机器的运行指令的状态,在各个机器对应的单机神经网络中进行训练或推理计算。
在其中一个实施例中,运行指令获取模块401,具体用于遍历所述拓扑结构图,若所述拓扑结构图中运行指令的机器号与当前运行的机器号一致,则将所述运行指令作为当前运行的机器中的运行指令。
在其中一个实施例中,单机神经网络获取模块402,具体用于根据所述拓扑结构图遍历所述各个机器的运行指令,得到所述各个机器的运行指令的机器号参数以及设备号参数;根据所述机器号参数以及设备号参数,判断是否需要在不同设备之间增加数据拷贝指令,以及是否需要在不同机器之间增加网络传输指令;根据所述拓扑结构图,构建每一所述单机神经网络的前向子图和后向子图;对每一所述单机神经网络中的多个所述状态相同的运行指令进行梯度计算,得到各个机器对应的单机神经网络。
在其中一个实施例中,单机神经网络获取模块402,具体用于根据所述拓扑结构图遍历所述各个机器的运行指令,得到所述各个机器的运行指令的机器号参数以及设备号参数;根据所述机器号参数以及设备号参数,判断是否需要在不同设备之间增加数据拷贝指令,以及是否需要在不同机器之间增加网络传输指令;根据所述拓扑结构图,构建每一所述单机神经网络的前向子图,得到各个机器对应的单机神经网络。
在其中一个实施例中,单机神经网络获取模块402,具体用于若所述运行指令的机器号参数与所述运行指令的输入机器号一致,所述运行指令的设备号参数与所述运行指令的输入设备号不一致,则在不同设备之间增加所述数据拷贝指令;若所述运行指令的机器号参数与所述运行指令的输入机器号不一致,则在不同机器之间增加所述网络传输指令。
在其中一个实施例中,单机神经网络获取模块402,具体用于通过前向计算构建所述前向子图,得到每一所述单机神经网络的端点;通过后向计算构建所述后向子图,对每一所述单机神经网络中的运行指令进行状态更新。
在其中一个实施例中,单机神经网络获取模块402,具体用于将多个所述状态相同的运行指令的原始梯度相加,得到每一所述运行指令的更新梯度。
在其中一个实施例中,该装置还包括分布式神经网络构建模块405,用于构建所述分布式神经网络的拓扑结构图。
在其中一个实施例中,分布式神经网络构建模块405,具体用于根据所述各个机器的运行指令的状态,将所述各个机器的运行指令分配至指令列表中;将所述指令列表中的运行指令在所述分布式神经网络中进行计算,并实时更新所述运行指令的状态;计算完成后,对所述指令列表中的每一运行指令的状态进行存储。
在其中一个实施例中,分布式神经网络构建模块405,具体用于将状态相同的多个所述运行指令分配至同一所述指令列表中。
在其中一个实施例中,分布式神经网络构建模块405,具体用于将所述指令列表中的运行指令在所述分布式神经网络中进行计算,得到第一计算结果;将多个所述指令列表对应的第一计算结果进行合并,得到分布式计算结果。
在其中一个实施例中,该装置还包括存储模块406,用于在计算资源分配以及推理计算过程中,对所述运行指令的状态进行定期存储;或在计算资源分配以及推理计算过程中,对所述运行指令的状态进行分布式存储。
关于计算资源分配装置的具体限定可以参见上文中对于计算资源分配方法的限定,在此不再赘述。上述计算资源分配装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图8所示。该计算机设备包括通过***总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作***、计算机程序和数据库。该内存储器为非易失性存储介质中的操作***和计算机程序的运行提供环境。该计算机设备的数据库用于存储计算资源分配数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种计算资源分配方法。
本领域技术人员可以理解,图8中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:
遍历分布式神经网络的拓扑结构图,得到各个机器的运行指令;
根据所述拓扑结构图遍历所述各个机器的运行指令,得到各个机器对应的单机神经网络;
获取所述各个机器的运行指令的状态;
根据所述各个机器的运行指令的状态,在各个机器对应的单机神经网络中进行训练或推理计算。
处理器执行计算机程序时还可以实现上述任一实施例中计算资源分配方法的步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
遍历分布式神经网络的拓扑结构图,得到各个机器的运行指令;
根据所述拓扑结构图遍历所述各个机器的运行指令,得到各个机器对应的单机神经网络;
获取所述各个机器的运行指令的状态;
根据所述各个机器的运行指令的状态,在各个机器对应的单机神经网络中进行训练或推理计算。
计算机程序被处理器执行时还可以实现上述任一实施例中计算资源分配方法的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (17)
1.一种计算资源分配方法,其特征在于,所述方法包括:
遍历分布式神经网络的拓扑结构图,得到各个机器的运行指令;所述运行指令用于指示各个机器执行的操作;
根据所述拓扑结构图遍历所述各个机器的运行指令,将所述分布式神经网络转换得到各个机器对应的单机神经网络;
通过各个机器的运行指令的状态标识符,获取所述各个机器的运行指令的状态,所述状态标识符用于区分多个运行指令之间是否是共享状态;
根据所述各个机器的运行指令的状态,在各个机器对应的单机神经网络中进行训练或推理计算。
2.根据权利要求1所述的方法,其特征在于,所述遍历分布式神经网络的拓扑结构图,得到各个机器的运行指令,包括:
遍历所述拓扑结构图,若所述拓扑结构图中运行指令的机器号与当前运行的机器号一致,则将所述运行指令作为当前运行的机器中的运行指令。
3.根据权利要求1所述的方法,其特征在于,所述根据所述拓扑结构图遍历所述各个机器的运行指令,将所述分布式神经网络转换 得到各个机器对应的单机神经网络,包括:
根据所述拓扑结构图遍历所述各个机器的运行指令,得到所述各个机器的运行指令的机器号参数以及设备号参数;
根据所述机器号参数以及设备号参数,判断是否需要在不同设备之间增加数据拷贝指令,以及是否需要在不同机器之间增加网络传输指令;
根据所述拓扑结构图,构建每一所述单机神经网络的前向子图和后向子图;
对每一所述单机神经网络中的多个所述状态相同的运行指令进行梯度计算,得到各个机器对应的单机神经网络。
4.根据权利要求1所述的方法,其特征在于,所述根据所述拓扑结构图遍历所述各个机器的运行指令,将所述分布式神经网络转换 得到各个机器对应的单机神经网络,还包括:
根据所述拓扑结构图遍历所述各个机器的运行指令,得到所述各个机器的运行指令的机器号参数以及设备号参数;
根据所述机器号参数以及设备号参数,判断是否需要在不同设备之间增加数据拷贝指令,以及是否需要在不同机器之间增加网络传输指令;
根据所述拓扑结构图,构建每一所述单机神经网络的前向子图,得到各个机器对应的单机神经网络。
5.根据权利要求3或4所述的方法,其特征在于,所述根据所述机器号参数以及设备号参数,判断是否需要在不同设备之间增加数据拷贝指令,以及是否需要在不同机器之间增加网络传输指令,包括:
若所述运行指令的机器号参数与所述运行指令的输入机器号一致,所述运行指令的设备号参数与所述运行指令的输入设备号不一致,则在不同设备之间增加所述数据拷贝指令;
若所述运行指令的机器号参数与所述运行指令的输入机器号不一致,则在不同机器之间增加所述网络传输指令。
6.根据权利要求3所述的方法,其特征在于,所述根据所述拓扑结构图,构建每一所述单机神经网络的前向子图和后向子图,包括:
通过前向计算构建所述前向子图,得到每一所述单机神经网络的端点;
通过后向计算构建所述后向子图,对每一所述单机神经网络中的运行指令进行状态更新。
7.根据权利要求3所述的方法,其特征在于,所述对每一所述单机神经网络中的多个所述状态相同的运行指令进行梯度计算,包括:
将多个所述状态相同的运行指令的原始梯度相加,得到每一所述运行指令的更新梯度。
8.根据权利要求1所述的方法,其特征在于,所述方法还包括:构建所述分布式神经网络的拓扑结构图。
9.根据权利要求8所述的方法,其特征在于,所述构建所述分布式神经网络的拓扑结构图,包括:
根据所述各个机器的运行指令的状态,将所述各个机器的运行指令分配至指令列表中;
将所述指令列表中的运行指令在所述分布式神经网络中进行计算,并实时更新所述运行指令的状态;
计算完成后,对所述指令列表中的每一运行指令的状态进行存储。
10.根据权利要求9所述的方法,其特征在于,所述根据所述各个机器的运行指令的状态,将所述各个机器的运行指令分配至指令列表中,包括:
将状态相同的多个所述运行指令分配至同一所述指令列表中。
11.根据权利要求9所述的方法,其特征在于,所述将所述指令列表中的运行指令在所述分布式神经网络中进行计算,包括:
将所述指令列表中的运行指令在所述分布式神经网络中进行计算,得到第一计算结果;
将多个所述指令列表对应的第一计算结果进行合并,得到分布式计算结果。
12.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在计算资源分配以及推理计算过程中,对所述运行指令的状态进行定期存储;或
在计算资源分配以及推理计算过程中,对所述运行指令的状态进行分布式存储。
13.根据权利要求1所述的方法,其特征在于,所述运行指令包括单设备运行指令、分布式运行指令以及参数运行指令。
14.根据权利要求1所述的方法,其特征在于,所述运行指令的参数还包括分布式属性、拆分运行指令以及合并运行指令。
15.一种计算资源分配装置,其特征在于,所述装置包括:
运行指令获取模块,用于遍历分布式神经网络的拓扑结构图,得到各个机器的运行指令;所述运行指令用于指示各个机器执行的操作;
单机神经网络获取模块,用于根据所述拓扑结构图遍历所述各个机器的运行指令,将所述分布式神经网络转换得到各个机器对应的单机神经网络;
运行指令状态获取模块,用于通过各个机器的运行指令的状态标识符,获取所述各个机器的运行指令的状态,所述状态标识符用于区分多个运行指令之间是否是共享状态;
计算模块,用于根据所述各个机器的运行指令的状态,在各个机器对应的单机神经网络中进行训练或推理计算。
16.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至14中任一项所述方法的步骤。
17.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至14中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910285304.XA CN110008028B (zh) | 2019-04-10 | 2019-04-10 | 计算资源分配方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910285304.XA CN110008028B (zh) | 2019-04-10 | 2019-04-10 | 计算资源分配方法、装置、计算机设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110008028A CN110008028A (zh) | 2019-07-12 |
CN110008028B true CN110008028B (zh) | 2021-08-06 |
Family
ID=67170821
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910285304.XA Active CN110008028B (zh) | 2019-04-10 | 2019-04-10 | 计算资源分配方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110008028B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110689114B (zh) * | 2019-09-24 | 2023-07-18 | Oppo广东移动通信有限公司 | 网络节点处理方法、装置、存储介质及电子设备 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10970628B2 (en) * | 2015-11-09 | 2021-04-06 | Google Llc | Training neural networks represented as computational graphs |
CN106953862B (zh) * | 2017-03-23 | 2020-09-25 | 全球能源互联网研究院有限公司 | 网络安全态势的感知方法和装置及感知模型训练方法和装置 |
CN107018184B (zh) * | 2017-03-28 | 2019-08-30 | 华中科技大学 | 分布式深度神经网络集群分组同步优化方法及*** |
US11934934B2 (en) * | 2017-04-17 | 2024-03-19 | Intel Corporation | Convolutional neural network optimization mechanism |
US11373266B2 (en) * | 2017-05-05 | 2022-06-28 | Intel Corporation | Data parallelism and halo exchange for distributed machine learning |
US20180322386A1 (en) * | 2017-05-05 | 2018-11-08 | Intel Corporation | Fine-grain compute communication execution for deep learning frameworks |
CN109254842B (zh) * | 2017-07-12 | 2023-06-16 | 腾讯科技(深圳)有限公司 | 分布式流式***的资源管理方法、装置及可读存储介质 |
CN107783840B (zh) * | 2017-10-27 | 2020-08-21 | 瑞芯微电子股份有限公司 | 一种分布式多层深度学习资源分配方法和装置 |
CN108304924B (zh) * | 2017-12-21 | 2021-10-12 | 内蒙古工业大学 | 一种深度置信网的流水线式预训练方法 |
CN109032671B (zh) * | 2018-06-25 | 2022-05-03 | 电子科技大学 | 一种基于数据并行策略的分布式深度学习方法及*** |
CN109145984B (zh) * | 2018-08-20 | 2022-03-25 | 联想(北京)有限公司 | 用于机器训练的方法和装置 |
CN109325541A (zh) * | 2018-09-30 | 2019-02-12 | 北京字节跳动网络技术有限公司 | 用于训练模型的方法和装置 |
-
2019
- 2019-04-10 CN CN201910285304.XA patent/CN110008028B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN110008028A (zh) | 2019-07-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111126668B (zh) | 基于图卷积网络的Spark作业时间预测方法和装置 | |
CN111371603A (zh) | 应用于边缘计算的服务实例部署方法和装置 | |
CN113742089B (zh) | 异构资源中神经网络计算任务的分配方法、装置和设备 | |
CN114008594A (zh) | 调度计算图上的操作 | |
CN110580527B (zh) | 通用机器学习模型的生成方法、装置和存储介质 | |
CN115686527A (zh) | 基于算子的编译方法、装置、计算机设备和存储介质 | |
CN113626192A (zh) | 用于对算子节点进行扩缩容调整的方法、装置及*** | |
CN111459621B (zh) | 云仿真集成与调度方法、装置、计算机设备和存储介质 | |
CN110008028B (zh) | 计算资源分配方法、装置、计算机设备和存储介质 | |
CN110969354A (zh) | 线性流程配置方法、装置、计算机设备及存储介质 | |
CN112817560B (zh) | 一种基于表函数的计算任务处理方法、***及计算机可读存储介质 | |
CN116894469B (zh) | 端边云计算环境中的dnn协同推理加速方法、设备及介质 | |
CN116582407A (zh) | 一种基于深度强化学习的容器化微服务编排***及方法 | |
Ghasemi et al. | Energy-efficient mapping for a network of dnn models at the edge | |
CN112163734A (zh) | 基于云平台整定计算资源动态调度方法及装置 | |
WO2022161081A1 (zh) | 集成学习模型的训练方法、装置、***和相关设备 | |
CN115718603A (zh) | 一种Python模型分布式在线部署方法及*** | |
Menouer et al. | Towards a parallel constraint solver for cloud computing environments | |
CN110909761A (zh) | 图像识别方法、装置、计算机设备及存储介质 | |
CN114997401B (zh) | 自适应推理加速方法、装置、计算机设备和存储介质 | |
CN114697208B (zh) | 一种网元设备的配置分析方法、***、设备以及存储介质 | |
US20220083378A1 (en) | Hybrid scheduling method for deep learning workloads, and computing apparatus with hybrid scheduling | |
CN117056068B (zh) | ETL中JobEngine任务拆分方法 | |
US20220236899A1 (en) | Information processing apparatus, information processing method, and computer-readable recording medium storing information processing program | |
CN113282383B (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 |