CN115328579A - 神经网络训练的调度方法、***及计算机可读存储介质 - Google Patents
神经网络训练的调度方法、***及计算机可读存储介质 Download PDFInfo
- Publication number
- CN115328579A CN115328579A CN202211237416.6A CN202211237416A CN115328579A CN 115328579 A CN115328579 A CN 115328579A CN 202211237416 A CN202211237416 A CN 202211237416A CN 115328579 A CN115328579 A CN 115328579A
- Authority
- CN
- China
- Prior art keywords
- processes
- controller
- operator
- node
- nodes
- 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
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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/12—Discovery or management of network topologies
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
- Train Traffic Observation, Control, And Security (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明提供一种神经网络训练的调度方法、***及计算机可读存储介质,涉及神经网络领域,可首先为参与神经网络模型的所有进程构造平衡树,并为平衡树中除叶子节点以外的节点配置控制器,其中进程与平衡树中的节点一一对应,根节点的控制器为总控制器,其他节点的控制器为辅助控制器;随后,辅助控制器可收集来自自身所属节点的进程及自身所属节点的子节点的算子启动请求,并层层向上反馈自身所属节点的进程及自身所属节点所有子节点的进程或控制器均已发送的目标请求,以减少进程与总控制器之间的直接通信量;此外,总控制器也可通过辅助控制器层层向下发送响应信息,以减少总控制器直接向进程下发响应信息的数量,进而可提升梯度数据同步性能。
Description
技术领域
本发明涉及神经网络领域,特别涉及一种神经网络训练的调度方法、***及计算机可读存储介质。
背景技术
为提升神经网络的训练速度,通常采用分布式训练对神经网络训练过程进行优化。常用的分布式模型训练方法为数据并行方法,这种方法将待训练数据进行划分并,并同时在多个加速设备上利用多个批次(batch)的数据对神经网络进行并行训练。数据并行方法中又可包含同步数据并行方法,该方法可在所有加速设备计算得到数据梯度后,统一将多个梯度合在一起,更新共享模型参数。换句话说,梯度合并的相关操作是同步数据并行方法中的重要内容。
相关技术中,梯度合并的相关操作可由集合通信算子处理,各加速设备上的进程在准备执行梯度合并操作之前,可请求启动集合通信算子,并在确定所有进程均已请求该算子时启动该算子,以与各进程一起进行梯度合并。而Horovod是一个通用的通信库,正用于收集各进程的算子启动请求,并依照请求情况调度各进程启动集合通信算子。具体的,该通信库在某个特定进程上设置控制器,该控制器用于收集上述算子启动请求,并向各进程返回对应的响应信息,即所有进程都需要与上述特定进程通信,当集群规模变得很大时,此处很容易成为通信瓶颈,直接导致梯度数据同步的性能下降。
发明内容
本发明的目的是提供一种神经网络训练的调度方法、***及计算机可读存储介质,可减少单个控制器与各进程间直接通信的数量,进而缓解控制器所在进程的通信压力,并提升梯度数据同步性能。
为解决上述技术问题,本发明提供一种神经网络训练的调度方法,包括:
主机设备为参与神经网络训练的所有进程构造平衡树,并为所述平衡树中除叶子节点以外的节点配置控制器;所述进程与所述平衡树中的节点一一对应,根节点的控制器为总控制器,其他节点的控制器为辅助控制器;
所述控制器接收来自自身所属节点的进程及来自自身所属节点的子节点的算子启动请求;
所述辅助控制器在发现目标请求时,将所述目标请求发送至自身所属节点的父节点对应的控制器;所述目标请求为所述控制器自身所属节点的进程及自身所属节点所有子节点对应的进程或控制器均已发送的算子启动请求;
所述总控制器在发现所述目标请求时,通过所述辅助控制器将所述目标请求对应的响应信息下发至所有所述进程,以使各所述进程启动所述响应信息对应的集合通信算子。
可选地,所述平衡树的高度小于等于预设高度,且所述平衡树中的每一节点对应的子节点数量均小于等于预设值。
可选地,所述主机设备为参与神经网络训练的所有进程构造平衡树,包括:
所述主机设备确定参与神经网络训练的所有进程所形成的物理拓扑图;
基于所述物理拓扑图构造所述平衡树,以使所述平衡树中相邻的节点对应的进程在所述物理拓扑图中的距离小于预设距离。
可选地,
所述通过所述辅助控制器将所述目标请求对应的响应信息下发至所有所述进程,包括:
所述总控制器将所述响应信息发送至自身所属节点的进程及自身所属节点所有子节点的进程;
所述辅助控制器在检测到发送至自身所属节点的进程的响应信息时,将所述响应信息转发至自身所属节点所有子节点的进程。
可选地,
在通过所述辅助控制器将所述目标请求对应的响应信息下发至所有所述进程之后,还包括:
所述总控制器在确定神经网络正在执行首轮迭代训练时,依照响应次序将所述响应信息对应的集合通信算子信息保存至算子顺序收集表;
设置于所述根节点的算子顺序收集器在确定所述神经网络完成首轮迭代训练时,通过所有所述控制器将所述算子顺序收集表下发至所有所述进程,以使各所述进程在对所述神经网络执行其他轮迭代训练时,利用所述算子顺序收集表确定启动所述集合通信算子的时机。
可选地,在所述总控制器确定神经网络正在执行首轮迭代训练之前,还包括:
所述主机设备预设专用接口及全局变量,并在启动神经网络训练时,通过所述专用接口将所述神经网络的当前训练轮次写入所述全局变量;
相应的,所述总控制器确定所述神经网络是否正在执行首轮迭代训练,包括:
所述总控制器在确定所述全局变量的值为1时,确定所述神经网络正在执行首轮迭代训练;
相应的,所述算子顺序收集器确定所述神经网络是否完成首轮迭代训练,包括:
所述算子顺序收集器在确定所述全局变量的值不为1时,确定所述神经网络完成首轮迭代训练。
可选地,所述各所述进程在对所述神经网络执行其他轮迭代训练时,利用所述算子顺序收集表确定启动所述集合通信算子的时机,包括:
所述进程在执行其他轮迭代训练的过程中,在生成所述算子启动请求时,获取位向量;所述位向量的长度与所述算子顺序收集表中集合通信算子信息的总数量相同,且所述位向量中每一比特位的初值均为0;
根据本地的算子启动请求对应的集合通信算子在所述算子顺序收集表中的位置,将所述位向量中对应的比特位设置为1,得到待归并位向量;
根据所有所述进程的待归并位向量确定所有所述进程均已准备启动的目标集合通信算子,并启动所述目标集合通信算子。
可选地,所述根据所有所述进程的待归并位向量确定所有所述进程均已准备启动的目标集合通信算子,包括:
所述进程与其他所述进程一同对所有所述进程的待归并位向量进行与处理,得到全局位向量;
根据所述全局位向量中已设置为1的比特位,在所述算子顺序收集表中查询对应的目标集合通信算子。
可选地,所述进程与其他所述进程一同对所有所述进程的待归并位向量进行与处理,得到全局位向量,包括:
所述进程与其他所述进程一同执行Allreduce操作,以通过所述Allreduce操作对所有所述进程生成的待归并位向量进行与处理,得到所述全局位向量。
可选地,所述进程与其他所述进程一同执行Allreduce操作,包括:
所述进程在指定拓扑结构中与其他所述进程一同执行所述Allreduce操作。
可选地,在所述进程在指定拓扑结构中与其他所述进程一同执行所述Allreduce操作之前,还包括:
所述主机设备确定所有所述进程形成的物理拓扑图,并判断所述物理拓扑图中是否存在环状结构;
若存在,则为所有所述进程构建Ring虚拟拓扑,并将所述Ring虚拟拓扑部署至所有进程;
相应的,所述进程在指定拓扑结构中与其他所述进程一同执行所述Allreduce操作,包括:
所述进程判断是否部署有所述Ring虚拟拓扑;
若是,则在所述Ring虚拟拓扑中与其他所述进程一同执行所述Allreduce操作;
若否,则在所述平衡树中与其他所述进程一同执行所述Allreduce操作。
可选地,在生成所述算子启动请求之后,还包括:
所述进程将所述算子启动请求写入请求列表;
相应的,所述根据本地的算子启动请求对应的集合通信算子在所述算子顺序收集表中的位置,将所述位向量中对应的比特位设置为1,得到待归并位向量,包括:
所述进程定期从所述请求列表中取出所述算子启动请求,并根据所述请求列表中各个算子启动请求对应的集合通信算子在所述算子顺序收集表中的位置,将所述位向量中对应的比特位设置为1,得到所述待归并位向量。
可选地,在根据所有所述进程的待归并位向量确定所有所述进程均已准备启动的目标集合通信算子之后,还包括:
所述进程生成所述目标集合通信算子对应的响应信息,并将所述响应信息保存至响应列表,以根据响应列表中的响应信息启动对应的目标集合通信算子。
本发明还提供一种神经网络训练的调度***,其特征在于,包括:主机设备、进程及控制器,所述控制器包括辅助控制器和总控制器,其中:
所述主机设备,用于为参与神经网络训练的所有进程构造平衡树,并为所述平衡树中除叶子节点以外的节点配置控制器;所述进程与所述平衡树中的节点一一对应,根节点的控制器为所述总控制器,其他节点的控制器为所述辅助控制器;
所述进程,用于向自身所属节点的控制器发送算子启动请求,或向自身所属节点的父节点的控制器发送所述算子启动请求,并在接收到发送到自身的响应信息时,启动所述响应信息对应的集合通信算子;
所述控制器,用于接收来自自身所属节点的进程及自身所属节点的子节点的算子启动请求;
所述辅助控制器,还用于在发现目标请求时,将所述目标请求发送至自身所属节点的父节点对应的控制器;所述目标请求为所述控制器自身所属节点的进程及自身所属节点所有子节点的进程或控制器均已发送的算子启动请求;
所述总控制器,还用于在发现所述目标请求时,通过所述辅助控制器将所述目标请求对应的响应信息下发至所有所述进程。
本发明还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机可执行指令,所述计算机可执行指令被处理器加载并执行时,实现如上所述的神经网络训练的调度方法。
本发明提供一种神经网络训练的调度方法,包括:主机设备为参与神经网络训练的所有进程构造平衡树,并为所述平衡树中除叶子节点以外的节点配置控制器;所述进程与所述平衡树中的节点一一对应,根节点的控制器为总控制器,其他节点的控制器为辅助控制器;所述控制器接收来自自身所属节点的进程及来自自身所属节点的子节点的算子启动请求;所述辅助控制器在发现目标请求时,将所述目标请求发送至自身所属节点的父节点对应的控制器;所述目标请求为所述控制器自身所属节点的进程及自身所属节点所有子节点对应的进程或控制器均已发送的算子启动请求;所述总控制器在发现所述目标请求时,通过所述辅助控制器将所述目标请求对应的响应信息下发至所有所述进程,以使各所述进程启动所述响应信息对应的集合通信算子。可见,本发明中的主机设备可首先为参与神经网络模型的所有进程构造平衡树,并为平衡树中除叶子节点以外的节点配置控制器,其中进程与所述平衡树中的节点一一对应,根节点的控制器为总控制器,其他节点的控制器为辅助控制器。换而言之,在平衡树中,除叶子节点外,各层的节点均设置有控制器。随后,各控制器可收集来自自身所属节点的进程及自身所属节点的子节点的算子启动请求,而辅助控制器还可在发现目标请求时,将所述目标请求发送至自身所属节点的父节点对应的控制器,总控制器还可在发现目标请求时,通过所述辅助控制器将所述目标请求对应的响应信息下发至所述平衡树中的所有节点,其中,目标请求为控制器自身所属节点的进程及自身所属节点所有子节点的进程或控制器均已发送的算子启动请求。换而言之,本发明可通过辅助控制器收集自身所属节点的进程及自身所属节点的子节点的进程或控制器发送的算子启动请求,并层层向上反馈目标请求,以减少直接向总控制器发送的算子启动请求的数量;此外,总控制器也可通过辅助控制器层层向下发送响应信息,以减少总控制器直接向进程下发响应信息的数量,进而缓解总控制器所在进程的通信压力,并提升梯度数据同步性能。本发明还提供一种神经网络训练的调度***及计算机可读存储介质,具有上述有益效果。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例所提供的一种神经网络训练的调度方法的流程图;
图2为本发明实施例所提供的现有调度方法所使用的虚拟拓扑示意图
图3为本发明实施例所提供的改进后的调度方法所使用的虚拟拓扑示意图;
图4为本发明实施例所提供的一种神经网络训练的调度***的结构框图;
图5为本发明实施例所提供的一种计算机可读存储介质的结构框图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
相关技术中,梯度合并的相关操作可由集合通信算子处理,各加速设备上的进程在准备执行梯度合并操作之前,可请求启动集合通信算子,并在确定所有进程均已请求该算子时启动该算子,以与各进程一起进行梯度合并。而Horovod是一个通用的通信库,正用于收集各进程的算子启动请求,并依照请求情况调度各进程启动集合通信算子。具体的,该通信库在某个特定进程上设置有控制器,该控制器用于收集各进程的算子启动请求,并向各进程返回对应的响应信息,即所有进程都需要与上述特定进程上的控制器通信,当集群规模变得很大时,此处很容易成为通信瓶颈,直接导致梯度数据同步的性能下降。有鉴于此,本发明可提供一种神经网络训练的调度方法,可减少总控制器直接向进程下发响应信息的数量,进而缓解总控制器所在进程的通信压力,并提升梯度数据同步性能。请参考图1,图1为本发明实施例所提供的一种神经网络训练的调度方法的流程图,该方法可以包括:
S101、主机设备为参与神经网络训练的所有进程构造平衡树,并为平衡树中除叶子节点以外的节点配置控制器;进程与平衡树中的节点一一对应,根节点的控制器为总控制器,其他节点的控制器为辅助控制器。
首先应当说明的是,本发明实施例中的主机设备为管控参与神经网络训练的所有进程的设备;进程用于执行神经网络训练任务,其可设置于加速设备中。即简单来讲,进程与加速设备一一对应,而主机设备可对所有加速设备中参与神经网络训练的进程进行管控。应当特别强调的是,本发明实施例中出现的节点均为平衡树中的节点,其显著区别于上述加速设备,主要用于指示控制器的配置位置及相关数据的传输路径,但并不执行数据传输动作。换句话说,本发明后续实施例中出现的算子启动请求是由进程向对应的控制器发送,而响应信息是由控制器向对应的进程发送,平衡树中的节点并不会传输上述请求和响应信息。
为便于理解,首先请参考图2,图2为本发明实施例所提供的现有调度方法所使用的虚拟拓扑示意图,其中,该树结构中的各个节点与进程R0~Rn-1相互对应,而R0进程的节点上设置有控制器,该控制器用于收集各进程发送的算子启动请求,并向各进程返回对应的响应信息。可见,在该虚拟拓扑中,由于各进程都需要向R0处的控制器发送请求,并接收该控制器返回的响应信息,因此R0处承担了神经网络训练调度过程中的主要压力。假若R0处的计算性能较低,则很容易影响***的整体训练效率。也正是如此,本发明实施例可设置多个控制器,并采用层层转达的方式降低单个控制器的压力,以此来提升神经网络训练的整体调度效率。具体的,请参考图3,图3为本发明实施例所提供的改进后的调度方法所使用的虚拟拓扑示意图。为便于说明,此处使用24个进程(即R0~R23)进行描述。当然,进程的数量可以任意调整,而随着进程数量的变化,这一虚拟拓扑的结构也会发生相应变化。对于这24个进程,本发明实施例首先会为其构造平衡树,其中平衡树中的节点与这些进程一一对应。构造平衡树的目的在于平衡通信压力,以确保所有节点的进程可均衡地、高效地向根节点方向传输算子启动请求。随后,本发明实施例可在平衡树上设置多个控制器,其中根节点(即R0进程对应的节点0)的控制器为总控制器,而其他节点的控制器则为辅助控制器。需要特别强调的是,本发明实施例仅为平衡树中除叶子节点以外的节点配置控制器,因此在图3所示的树结构中,R6~R8、R10~R12、R14~ R20、R21、R22及R23对应节点上并不会设置控制器,而R1~R4、R5、R9、R13对应的节点上设置有辅助控制器。本发明实施例正是通过这些辅助控制器来缓解总控制器的通信压力,其工作过程可见后续实施例中的描述。
需要说明的是,本发明实施例并不限定平衡树的具体构造过程,可参考平衡树的相关技术。当然,需要指出的是,相邻节点间存在直接通信,如R1的节点与R0的节点间存在直接通信,如R1的节点与R5的节点间存在直接通信,而这一直接通信的效率也会影响调度效率。为确保直接通信的两节点对应的进程在实际的物理拓扑中距离也最短,本发明实施也可基于参与训练的各进程所形成的物理拓扑图构建上述平衡树,以使得平衡树中相邻的节点对应的进程在物理拓扑中的相邻或相距较短。
在一种可能的情况中,主机设备为参与神经网络训练的所有进程构造平衡树,可以包括:
步骤11:主机设备确定参与神经网络训练的所有进程所形成的物理拓扑图;
步骤12:基于物理拓扑图构造平衡树,以使平衡树中相邻的节点对应的进程在物理拓扑图中的距离小于预设距离。
需要说明的是,本发明实施例并不限定预设距离的具体数值,可根据实际应用需求进行设定。
进一步,为避免平衡树构建成如图2所示的结构,在本发明实施例中,平衡树中每一节点对应的子节点数量需小于等于预设值,且该预设值应当小于进程数量-1;此外,为避免平衡树高度(如图3中的平衡树高度为4)过高导致调度效率下降,在本发明实施例中,平衡树的高度也应当小于等于预设高度。本发明实施例并不限定上述预设值及预设高度的具体数值,可根据实际应用需求进行设定。
下面简述本发明实施例对平衡树的各项要求。平衡树应当满足:
1、任何一个节点的左子树或者右子树高度差小于等于1;
2、除了最后一层和倒数第二层外的其他层中每个节点都有m个子节点;
3、倒数第二层中各个节点的子节点数量大于等于0且小于等于m(因为进程(workers)总数量可能并不够正好构造一棵满树),各个节点上的子节点数量相差不大于1;
4、最后一层为叶子节点,没有子节点;
5、m的取值和树的高度h根据集群中的进程节点总数量确定,为了保证延时不至于过大,我们限定树的高度h不大于10。
S102、控制器接收来自自身所属节点的进程及自身所属节点的子节点的算子启动请求。
在本发明实施例中,各控制器首先负责接收自身所属节点的进程及自身所属节点的子节点对应的进程或控制器发送的算子启动请求。例如,对于根节点R0处的总控制器,其负责收集R0进程和R1~R4这四个进程对应的辅助控制器所发送的算子启动请求;又例如对于R1处的辅助控制器,其负责收集R1进程和R6~8进程的算子启动请求,以及R5处的辅助控制器所发送的算子启动请求。应当指出的是,各控制器并不关注来自自身所属节点的子节点的算子启动请求究竟由哪一主体发送,其仅关注这些算子启动请求来自与哪个子节点;此外,各控制器并不直接接收子节点的子节点对应的进程所发送的算子启动请求,如R0处的总控制器并不直接收集R5~R8的算子启动请求;又如R1处的辅助控制器并不直接收集R21的算子启动请求,以此类推。
S103、辅助控制器在发现目标请求时,将目标请求发送至自身所属节点的父节点对应的控制器;目标请求为控制器自身所属节点的进程及自身所属节点的所有子节点对应的进程或控制器均已发送的算子启动请求。
进一步,对于辅助控制器而言,其另外的用途为负责算子启动请求转达。具体的,当辅助控制器发现某个请求为其所属节点的进程及自身所属节点的子节点的进程均已发送的算子启动请求时,该控制器会将这一请求转达给父节点对应的控制器。例如,当R5处对应的辅助控制器在发现R5及R21均已向其提交算子启动请求1时,其便会将这一请求发送给R0对应的控制器;又例如,当R1处对应的辅助控制器发现R1、R5~8均已向其提交算子启动请求1时,其便会将这一请求发送给R0对应的控制器。此处应当特别指出的是,来自所属节点的请求一定由所属节点对应的进程发送,但来自子节点的请求可能并非由子节点对应的进程发送,而是由子节点对应的控制器发送,这取决于子节点上是否设置有控制器。例如,由于R21处并未设置控制器,因此,R5处对应的辅助控制器所接收到的请求直接来自于进程R5和进程R21;而由于R5处设置有辅助控制器,因此R1处的辅助控制器所接收的来自R5的请求实际由R5处的辅助控制器发送。
S104、总控制器在发现目标请求时,通过辅助控制器将目标请求对应的响应信息下发至所有进程,以使各进程启动响应信息对应的集合通信算子。
进一步,对于总控制器而言,其还用于下发响应信息。具体的,当R0处对应的总控制器在发现R0~R4均已向其提交算子启动请求1时,其可判定***中的所有进程均准备好执行算子启动请求1对应的操作,此时其便会将算子启动请求1的响应信息通过辅助控制器下发至平衡树中的所有进程,以使得各进程启动响应信息对应的集合通信算子。具体的,总控制器可将这一响应信息自身所属节点的进程及自身所属节点所有子节点的进程;而辅助控制器在接收到发送至自身所属节点的进程的响应信息时,可将这一响应信息转发至自身所属节点所有子节点的进程。
在一种可能的情况中,通过辅助控制器将目标请求对应的响应信息下发至所有进程,可以包括:
步骤21:总控制器将响应信息发送至自身所属节点的进程及自身所属节点所有子节点的进程;
步骤22:辅助控制器在检测到发送至自身所属节点的进程的响应信息时,将响应信息转发至自身所属节点所有子节点的进程。
具体的,R0处的总控制器可将响应信息发送给进程R0以及进程R1~R4;R1处的辅助控制器在接收到发送至R1的响应信息时,可将这一进程发送给R5~R8。
基于上述实施例,本发明中的主机设备可首先为参与神经网络模型的所有进程构造平衡树,并为平衡树中除叶子节点以外的节点配置控制器,其中进程与所述平衡树中的节点一一对应,根节点的控制器为总控制器,其他节点的控制器为辅助控制器。换而言之,在平衡树中,除叶子节点外,各层的节点均设置有控制器。随后,各控制器可收集自身所属节点的进程及自身所属节点的子节点的进程发送的算子启动请求,而辅助控制器还可在发现目标请求时,将所述目标请求发送至自身所属节点的父节点对应的控制器,总控制器还可在发现目标请求时,通过所述辅助控制器将所述目标请求对应的响应信息下发至所述平衡树中的所有节点,其中,目标请求为控制器自身所属节点的进程及自身所属节点的子节点的进程均已发送的算子启动请求。换而言之,本发明可通过辅助控制器收集自身所属节点的进程及自身所属节点的子节点的进程发送的算子启动请求,并层层向上反馈目标请求,以减少直接向总控制器发送的算子启动请求的数量;此外,总控制器也可通过辅助控制器层层向下发送响应信息,以减少总控制器直接向进程下发响应信息的数量,进而缓解总控制器所在进程的通信压力,并提升梯度数据同步性能。
基于上述实施例,考虑到采用控制器进行神经网络训练调度仍不能达到最高处理效率,因此本发明实施例还可提供另一种调度方法,可由进程自主地确定算子的启动时机,以此进一步提升调度效率。下面将对本发明实施例所提供的另一种调度方法及其与上述实施例间的关联关系进行介绍。在一种可能的情况中,在通过辅助控制器将目标请求对应的响应信息下发至所有进程之后,还包括:
S201、总控制器在确定神经网络正在执行首轮迭代训练时,依照响应次序将响应信息对应的集合通信算子信息保存至算子顺序收集表。
在本发明实施例中,各控制器仅在神经网络进行首轮迭代训练时工作。其中,总控制器除了执行上述实施例所提及的步骤外,在本发明实施例中,还要依照对算子启动请求的响应次序,将响应信息对应的集合通信算子信息保存至算子顺序收集表。换句话说,总控制器需根据上述响应次序制定算子顺序,以便进程间自主地确定何时启动某种集合通信算子。需要说明的是,本发明实施例并不限定各集合通信算子的具体信息,其中集合通信算子可包括Allreduce、allgather等,其对应的具体信息可参考相关技术,只要能够根据该信息确定特定种类的集合通信算子即可。
S202、设置于根节点的算子顺序收集器在确定神经网络完成首轮迭代训练时,通过所有控制器将算子顺序收集表下发至所有进程,以使各进程在对神经网络执行其他轮迭代训练时,利用算子顺序收集表确定启动集合通信算子的时机。
在本发明实施例中,根节点除了设置总控制器外,还设置了算子顺序收集器。该收集器将会主动检测神经网络是否完成首轮迭代训练,并在确定首轮迭代训练已完成时,通过所有控制器(包括总控制器和辅助控制器)将完成设置的算子顺序收集表下发至所有节点,以使各节点对应的进程在对神经网络执行其他轮迭代训练时,利用算子顺序收集表确定启动集合通信算子的时机。需要说明的是,通过控制器下发算子顺序收集表的方式与总控制器通过各辅助控制器将响应信息下发至各节点的方式类似,唯一的不同点在于,算子顺序收集器需将算子顺序收集表先发送给总控制器,再由总控制器执行后续的下发流程。
进一步,本发明实施例并不限定总控制器和算子顺序收集器对首轮迭代训练的具体检测方式,例如可由主机设备在每轮训练启动时向上述两个装置发送特定的指示信息,亦或是在调度***中维护一个全局变量,用于保存神经网络的当前训练轮次,主机设备可通过特殊接口修改这一全局变量,而总控制器和算子顺序收集器则可通过读取这一变量来确定当前训练的轮次,以此判断首轮迭代训练是否开始及结束。
在一种可能的情况中,在总控制器确定神经网络正在执行首轮迭代训练之前,还包括:
步骤31:主机设备预设专用接口及全局变量,并在启动神经网络训练时,通过专用接口将神经网络的当前训练轮次写入全局变量;
相应的,总控制器确定神经网络是否正在执行首轮迭代训练,包括:
步骤32:总控制器在确定全局变量的值为1时,确定神经网络正在执行首轮迭代训练;
相应的,算子顺序收集器确定神经网络是否完成首轮迭代训练,包括:
步骤33:算子顺序收集器在确定全局变量的值不为1时,确定神经网络完成首轮迭代训练。
进一步,在完成算子顺序收集表的下发后,各进程便可自行确定启动集合通信算子的时机。换而言之,在第二轮迭代训练之后,各进程将不再依赖控制器确定集合通信算子的启动时机。当然,应当指出的是,进程的主要任务为执行神经网络训练,因此可为各进程设置专用的后台线程,以执行如下所述的集合通信算子启动时机的确定流程。下面对进程自主确定集合通信算子启动时机的具体方式进行介绍。
在一种可能的情况中,各进程在对神经网络执行其他轮迭代训练时,利用算子顺序收集表确定启动集合通信算子的时机,可以包括:
S301、进程在执行其他轮迭代训练的过程中,在生成算子启动请求时,获取位向量;位向量的长度与算子顺序收集表中集合通信算子信息的总数量相同,且位向量中每一比特位的初值均为0。
应当指出的是,进程也可依赖上述全局变量来感知当前迭代训练的轮次。进一步,在本发明实施例中,位向量是与算子顺序收集表相对应的、被各进程用于确定算子启动时机的向量数据。该向量中比特位与算子顺序收集表中的集合通信算子顺序对应,且每一比特位的初值均为0。可以理解的是,比特位的值为0时,表示进程未准备启动该比特位对应的集合通信算子;反之,若比特位的值为1时,则表示进程已准备启动该比特位对应的集合通信算子。此处应当特别指出的是,由于各进程均已获取相同的集合通信算子顺序,因此各进程上的位向量也是全局相同的,这样便可确保各进程可基于相同的信息执行集合通信算子启动时机的确认过程。此外,还需要强调的是,由于各进程在本地请求算子启动的顺序并不是固定的,而乱序请求容易为各进程间的相互配合带来负面影响,因此本发明实施例特别设置了这一全局一致的位向量,其能够从顺序角度对各进程在本地生成的算子启动请求进行规整,以提升各进程间相互配合的效率,进而可提升神经网络的训练效率。
S302、根据本地的算子启动请求对应的集合通信算子在算子顺序收集表中的位置,将位向量中对应的比特位设置为1,得到待归并位向量。
进程在本地生成算子启动请求之后,可根据该请求对应的集合通信算子在算子顺序收集表中的位置,将位向量中对应的比特位设置为1,以表示其已准备好启动这一集合通信算子。在本发明实施例中,完成比特位修改后的位向量将被称为待归并位向量。
S303、根据所有进程的待归并位向量确定所有进程均已准备启动的目标集合通信算子,并启动目标集合通信算子。
本进程随后可与其他所有进程一起,对所有进程生成的待归并位向量进行归并,以确定所有进程均已准备启动的目标集合通信算子。这一归并操作具体可以为与处理(And,即求交集),即对所有待归并位向量中相对应的比特位进行与计算,仅有所有待归并位向量中相对应的比特位的值均为1时(即表示所有进程均已准备好启动该比特位对应的集合通信算子),归并得到的比特位才为1。由于各进程是基于全局一致的位向量设置待归并位向量,因此仅需对待归并位向量进行与计算得到全局位向量,即可根据全局位向量中数值为1的比特位确定所有进程均已准备启动的目标集合通信算子,进而本进程仅需启动这一目标集合通信算子即可。
在一种可能的情况中,根据所有进程的待归并位向量确定所有进程均已准备启动的目标集合通信算子,可以包括:
步骤41:进程与其他进程一同对所有进程的待归并位向量进行与处理,得到全局位向量;
步骤42:根据全局位向量中已设置为1的比特位,在算子顺序收集表中查询对应的目标集合通信算子。
可以理解的是,为了进程上述与处理,各进程需汇聚所有待归并位向量。本发明实施例并不限定汇聚动作的具体执行方式,例如各进程可与所有其他进程请求获取对应的待归并位向量,但上述方式容易造成带宽浪费。为提升汇聚及与处理的执行效率,本发明实施例中的进程可与其他进程一同执行Allreduce操作,以通过Allreduce操作对所有进程生成的待归并位向量进行与处理,其中Allreduce是神经网络训练领域常用的数据整合操作。
在一种可能的情况中,进程与其他进程一同对所有进程的待归并位向量进行与处理,得到全局位向量,包括:
步骤51:进程与其他进程一同执行Allreduce操作,以通过Allreduce操作对所有进程生成的待归并位向量进行与处理,得到全局位向量。
需要说明的是,本发明实施例并不限定Allreduce操作具体的执行方式,可参考Allreduce的相关技术。具体的,进程应当在指定拓扑结构中与其他进程一同执行Allreduce操作。本发明实施例并不限定具体的拓扑结构,例如可以为上述实施例中出现的平衡树,也可以为Ring虚拟拓扑,其中Ring虚拟拓扑是一种环状拓扑结构,能够显著提升进程间执行Allreduce的效率。当然,也可进一步结合各进程所形成的物理拓扑图来选择上述两种拓扑结构,如当物理拓扑图中出现环状结构时,则选择Ring虚拟拓扑,反之则选择平衡树。可以理解的是,Ring虚拟拓扑应当由主机设备生成,并部署至各个进程。
在一种可能的情况中,在进程在指定拓扑结构中与其他进程一同执行Allreduce操作之前,还包括:
步骤61:主机设备确定所有进程形成的物理拓扑图,并判断物理拓扑图中是否存在环状结构;
步骤62:若存在,则为所有进程构建Ring虚拟拓扑,并将Ring虚拟拓扑部署至所有进程;
相应的,进程在指定拓扑结构中与其他进程一同执行Allreduce操作,包括:
步骤71:进程判断是否部署有Ring虚拟拓扑;若是,则进入步骤72;若否,则进入步骤73;
步骤72:在Ring虚拟拓扑中与其他进程一同执行Allreduce操作;
步骤73:在平衡树中与其他进程一同执行Allreduce操作。
进一步,考虑到进程可能生成多个算子启动请求,为方便管理,进程可将这些请求写入本地的请求列表,并定期从该列表中取出算子启动请求。
在一种可能的情况中,在生成算子启动请求之后,还可以包括:
步骤81:进程将算子启动请求写入请求列表;
相应的,根据本地的算子启动请求对应的集合通信算子在算子顺序收集表中的位置,将位向量中对应的比特位设置为1,得到待归并位向量,包括:
步骤82:进程定期从请求列表中取出算子启动请求,并根据请求列表中各个算子启动请求对应的集合通信算子在算子顺序收集表中的位置,将位向量中对应的比特位设置为1,得到待归并位向量。
同样的,考虑到每次完成Allreduce操作之后,可能确定得到多个待启动的目标集合通信算子,为方便管理,进程可将启动目标集合通信算子的响应信息写入响应列表,以根据响应列表中的响应信息启动对应的目标集合通信算子。
在一种可能的情况中,在根据所有进程的待归并位向量确定所有进程均已准备启动的目标集合通信算子之后,还可以包括:
步骤91:进程生成目标集合通信算子对应的响应信息,并将响应信息保存至响应列表,以根据响应列表中的响应信息启动对应的目标集合通信算子。
下面对本发明实施例提供的神经网络训练的调度***及计算机可读存储介质进行介绍,下文描述的神经网络训练的调度***及计算机可读存储介质与上文描述的神经网络训练的调度方法可相互对应参照。
请参考图4,图4为本发明实施例所提供的一种神经网络训练的调度***的结构框图,该***包括,包括:主机设备410、进程421、422、423及控制器,控制器包括辅助控制器432和总控制器431,其中:
主机设备410,用于为参与神经网络训练的所有进程构造平衡树,并为平衡树中除叶子节点以外的节点配置控制器;进程与平衡树中的节点一一对应,根节点的控制器为总控制器431,其他节点的控制器为辅助控制器432;
进程421、422、423,用于向自身所属节点的控制器发送算子启动请求,或向自身所属节点的父节点的控制器发送算子启动请求,并在接收到发送到自身的响应信息时,启动响应信息对应的集合通信算子;
控制器,用于接收来自自身所属节点及自身所属节点的子节点的算子启动请求;
辅助控制器432,还用于在发现目标请求时,将目标请求发送至自身所属节点的父节点对应的控制器;目标请求为控制器自身所属节点的进程及自身所属节点所有子节点的进程或控制器均已发送的算子启动请求;
总控制器431,还用于在发现目标请求时,通过辅助控制器432将目标请求对应的响应信息下发至所有进程。
应当指出的是,进程422和进程423的数量并不为1,此图仅为展示连接关系。
可选地,平衡树的高度小于等于预设高度,且平衡树中的每一节点对应的子节点数量均小于等于预设值。
可选地,主机设备410,还用于确定参与神经网络训练的所有进程所形成的物理拓扑图;基于物理拓扑图构造平衡树,以使平衡树中相邻的节点对应的进程在物理拓扑图中的距离小于预设距离。
可选地,总控制器431,还用于将响应信息发送至自身所属节点的进程421及自身所属节点所有子节点的进程;
辅助控制器432,还用于在检测到发送至自身所属节点的进程422的响应信息时,将响应信息转发至自身所属节点所有子节点的进程。
可选地,该***还包括:设置于根节点的算子顺序收集器,其中,
总控制器431,还用于在确定神经网络正在执行首轮迭代训练时,依照响应次序将响应信息对应的集合通信算子信息保存至算子顺序收集表;
算子顺序收集器,用于在确定神经网络完成首轮迭代训练时,通过所有控制器将算子顺序收集表下发至所有进程,以使各进程在对神经网络执行其他轮迭代训练时,利用算子顺序收集表确定启动集合通信算子的时机。
可选地,主机设备410,还用于预设专用接口及全局变量,并在启动神经网络训练时,通过专用接口将神经网络的当前训练轮次写入全局变量;
相应的,总控制器431确定神经网络是否正在执行首轮迭代训练,包括:
总控制器431,还用于在确定全局变量的值为1时,确定神经网络正在执行首轮迭代训练;
相应的,算子顺序收集器确定神经网络是否完成首轮迭代训练,包括:
算子顺序收集器,还用于在确定全局变量的值不为1时,确定神经网络完成首轮迭代训练。
可选地,进程421、422、423,还用于在执行其他轮迭代训练的过程中,在生成算子启动请求时,获取位向量;位向量的长度与算子顺序收集表中集合通信算子信息的总数量相同,且位向量中每一比特位的初值均为0;根据本地的算子启动请求对应的集合通信算子在算子顺序收集表中的位置,将位向量中对应的比特位设置为1,得到待归并位向量;根据所有进程的待归并位向量确定所有进程均已准备启动的目标集合通信算子,并启动目标集合通信算子。
可选地,进程421、422、423,还用于与其他进程一同对所有进程的待归并位向量进行与处理,得到全局位向量;根据全局位向量中已设置为1的比特位,在算子顺序收集表中查询对应的目标集合通信算子。
可选地,进程421、422、423,还用于与其他进程一同执行Allreduce操作,以通过Allreduce操作对所有进程生成的待归并位向量进行与处理,得到全局位向量。
可选地,进程421、422、423,还用于在指定拓扑结构中与其他进程一同执行Allreduce操作。
可选地,主机设备410,还用于在进程在指定拓扑结构中与其他进程一同执行Allreduce操作之前,确定所有进程形成的物理拓扑图,并判断物理拓扑图中是否存在环状结构;若存在,则为所有进程构建Ring虚拟拓扑,并将Ring虚拟拓扑部署至所有进程;
相应的,进程421、422、423,还用于判断是否部署有Ring虚拟拓扑;若是,则在Ring虚拟拓扑中与其他进程一同执行Allreduce操作;若否,则在平衡树中与其他进程一同执行Allreduce操作。
可选地,进程421、422、423,还用于在生成算子启动请求之后,将算子启动请求写入请求列表;
相应的,进程421、422、423,还用于定期从请求列表中取出算子启动请求,并根据请求列表中各个算子启动请求对应的集合通信算子在算子顺序收集表中的位置,将位向量中对应的比特位设置为1,得到待归并位向量。
可选地,进程421、422、423,还用于在根据所有进程的待归并位向量确定所有进程均已准备启动的目标集合通信算子之后,生成目标集合通信算子对应的响应信息,并将响应信息保存至响应列表,以根据响应列表中的响应信息启动对应的目标集合通信算子。
请参考图5,图5为本发明实施例所提供的一种计算机可读存储介质的结构框图,本发明实施例还提供一种计算机可读存储介质510,计算机可读存储介质510上存储有计算机程序511,计算机程序511被处理器执行时实现上述任意实施例的神经网络训练的调度方法的步骤。
由于计算机可读存储介质部分的实施例与神经网络训练的调度方法部分的实施例相互对应,因此存储介质部分的实施例请参见神经网络训练的调度方法方法部分的实施例的描述,这里不再赘述。
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上对本发明所提供的神经网络训练的调度方法、***及计算机可读存储介质进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。
Claims (15)
1.一种神经网络训练的调度方法,其特征在于,包括:
主机设备为参与神经网络训练的所有进程构造平衡树,并为所述平衡树中除叶子节点以外的节点配置控制器;所述进程与所述平衡树中的节点一一对应,根节点的控制器为总控制器,其他节点的控制器为辅助控制器;
所述控制器接收来自自身所属节点的进程及来自自身所属节点的子节点的算子启动请求;
所述辅助控制器在发现目标请求时,将所述目标请求发送至自身所属节点的父节点对应的控制器;所述目标请求为所述控制器自身所属节点的进程及自身所属节点的所有子节点对应的进程或控制器均已发送的算子启动请求;
所述总控制器在发现所述目标请求时,通过所述辅助控制器将所述目标请求对应的响应信息下发至所有所述进程,以使各所述进程启动所述响应信息对应的集合通信算子。
2.根据权利要求1所述的调度方法,其特征在于,所述平衡树的高度小于等于预设高度,且所述平衡树中的每一节点对应的子节点数量均小于等于预设值。
3.根据权利要求1所述的调度方法,其特征在于,所述主机设备为参与神经网络训练的所有进程构造平衡树,包括:
所述主机设备确定参与神经网络训练的所有进程所形成的物理拓扑图;
基于所述物理拓扑图构造所述平衡树,以使所述平衡树中相邻的节点对应的进程在所述物理拓扑图中的距离小于预设距离。
4.根据权利要求1所述的调度方法,其特征在于,所述通过所述辅助控制器将所述目标请求对应的响应信息下发至所有所述进程,包括:
所述总控制器将所述响应信息发送至自身所属节点的进程及自身所属节点所有子节点的进程;
所述辅助控制器在检测到发送至自身所属节点的进程的响应信息时,将所述响应信息转发至自身所属节点所有子节点的进程。
5.根据权利要求1至4任一项所述的调度方法,其特征在于,在通过所述辅助控制器将所述目标请求对应的响应信息下发至所有所述进程之后,还包括:
所述总控制器在确定神经网络正在执行首轮迭代训练时,依照响应次序将所述响应信息对应的集合通信算子信息保存至算子顺序收集表;
设置于所述根节点的算子顺序收集器在确定所述神经网络完成首轮迭代训练时,通过所有所述控制器将所述算子顺序收集表下发至所有所述进程,以使各所述进程在对所述神经网络执行其他轮迭代训练时,利用所述算子顺序收集表确定启动所述集合通信算子的时机。
6.根据权利要求5所述的调度方法,其特征在于,在所述总控制器确定神经网络正在执行首轮迭代训练之前,还包括:
所述主机设备预设专用接口及全局变量,并在启动神经网络训练时,通过所述专用接口将所述神经网络的当前训练轮次写入所述全局变量;
相应的,所述总控制器确定所述神经网络是否正在执行首轮迭代训练,包括:
所述总控制器在确定所述全局变量的值为1时,确定所述神经网络正在执行首轮迭代训练;
相应的,所述算子顺序收集器确定所述神经网络是否完成首轮迭代训练,包括:
所述算子顺序收集器在确定所述全局变量的值不为1时,确定所述神经网络完成首轮迭代训练。
7.根据权利要求5所述的调度方法,其特征在于,所述各所述进程在对所述神经网络执行其他轮迭代训练时,利用所述算子顺序收集表确定启动所述集合通信算子的时机,包括:
所述进程在执行其他轮迭代训练的过程中,在生成所述算子启动请求时,获取位向量;所述位向量的长度与所述算子顺序收集表中集合通信算子信息的总数量相同,且所述位向量中每一比特位的初值均为0;
根据本地的算子启动请求对应的集合通信算子在所述算子顺序收集表中的位置,将所述位向量中对应的比特位设置为1,得到待归并位向量;
根据所有所述进程的待归并位向量确定所有所述进程均已准备启动的目标集合通信算子,并启动所述目标集合通信算子。
8.根据权利要求7所述的调度方法,其特征在于,所述根据所有所述进程的待归并位向量确定所有所述进程均已准备启动的目标集合通信算子,包括:
所述进程与其他所述进程一同对所有所述进程的待归并位向量进行与处理,得到全局位向量;
根据所述全局位向量中已设置为1的比特位,在所述算子顺序收集表中查询对应的目标集合通信算子。
9.根据权利要求8所述的调度方法,其特征在于,所述进程与其他所述进程一同对所有所述进程的待归并位向量进行与处理,得到全局位向量,包括:
所述进程与其他所述进程一同执行Allreduce操作,以通过所述Allreduce操作对所有所述进程生成的待归并位向量进行与处理,得到所述全局位向量。
10.根据权利要求9所述的调度方法,其特征在于,所述进程与其他所述进程一同执行Allreduce操作,包括:
所述进程在指定拓扑结构中与其他所述进程一同执行所述Allreduce操作。
11.根据权利要求10所述的调度方法,其特征在于,在所述进程在指定拓扑结构中与其他所述进程一同执行所述Allreduce操作之前,还包括:
所述主机设备确定所有所述进程形成的物理拓扑图,并判断所述物理拓扑图中是否存在环状结构;
若存在,则为所有所述进程构建Ring虚拟拓扑,并将所述Ring虚拟拓扑部署至所有进程;
相应的,所述进程在指定拓扑结构中与其他所述进程一同执行所述Allreduce操作,包括:
所述进程判断是否部署有所述Ring虚拟拓扑;
若是,则在所述Ring虚拟拓扑中与其他所述进程一同执行所述Allreduce操作;
若否,则在所述平衡树中与其他所述进程一同执行所述Allreduce操作。
12.根据权利要求7所述的调度方法,其特征在于,在生成所述算子启动请求之后,还包括:
所述进程将所述算子启动请求写入请求列表;
相应的,所述根据本地的算子启动请求对应的集合通信算子在所述算子顺序收集表中的位置,将所述位向量中对应的比特位设置为1,得到待归并位向量,包括:
所述进程定期从所述请求列表中取出所述算子启动请求,并根据所述请求列表中各个算子启动请求对应的集合通信算子在所述算子顺序收集表中的位置,将所述位向量中对应的比特位设置为1,得到所述待归并位向量。
13.根据权利要求7所述的调度方法,其特征在于,在根据所有所述进程的待归并位向量确定所有所述进程均已准备启动的目标集合通信算子之后,还包括:
所述进程生成所述目标集合通信算子对应的响应信息,并将所述响应信息保存至响应列表,以根据响应列表中的响应信息启动对应的目标集合通信算子。
14.一种神经网络训练的调度***,其特征在于,包括:主机设备、进程及控制器,所述控制器包括辅助控制器和总控制器,其中:
所述主机设备,用于为参与神经网络训练的所有进程构造平衡树,并为所述平衡树中除叶子节点以外的节点配置控制器;所述进程与所述平衡树中的节点一一对应,根节点的控制器为所述总控制器,其他节点的控制器为所述辅助控制器;
所述进程,用于向自身所属节点的控制器发送算子启动请求,或向自身所属节点的父节点的控制器发送所述算子启动请求,并在接收到发送到自身的响应信息时,启动所述响应信息对应的集合通信算子;
所述控制器,用于接收来自自身所属节点的进程及自身所属节点的子节点的算子启动请求;
所述辅助控制器,还用于在发现目标请求时,将所述目标请求发送至自身所属节点的父节点对应的控制器;所述目标请求为所述控制器自身所属节点的进程及自身所属节点所有子节点的进程或控制器均已发送的算子启动请求;
所述总控制器,还用于在发现所述目标请求时,通过所述辅助控制器将所述目标请求对应的响应信息下发至所有所述进程。
15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机可执行指令,所述计算机可执行指令被处理器加载并执行时,实现如权利要求1至13任一项所述的神经网络训练的调度方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211237416.6A CN115328579B (zh) | 2022-10-11 | 2022-10-11 | 神经网络训练的调度方法、***及计算机可读存储介质 |
PCT/CN2023/084819 WO2024077881A1 (zh) | 2022-10-11 | 2023-03-29 | 神经网络训练的调度方法、***及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211237416.6A CN115328579B (zh) | 2022-10-11 | 2022-10-11 | 神经网络训练的调度方法、***及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115328579A true CN115328579A (zh) | 2022-11-11 |
CN115328579B CN115328579B (zh) | 2023-02-24 |
Family
ID=83914486
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211237416.6A Active CN115328579B (zh) | 2022-10-11 | 2022-10-11 | 神经网络训练的调度方法、***及计算机可读存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN115328579B (zh) |
WO (1) | WO2024077881A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116962438A (zh) * | 2023-09-21 | 2023-10-27 | 浪潮电子信息产业股份有限公司 | 一种梯度数据同步方法、***、电子设备及可读存储介质 |
WO2024077881A1 (zh) * | 2022-10-11 | 2024-04-18 | 山东海量信息技术研究院 | 神经网络训练的调度方法、***及计算机可读存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110574044A (zh) * | 2017-05-23 | 2019-12-13 | 英特尔公司 | 用于使用依赖树来增强二进制权重神经网络的方法和装置 |
CN111046065A (zh) * | 2019-10-28 | 2020-04-21 | 北京大学 | 可扩展的高性能分布式查询处理方法及装置 |
WO2020081399A1 (en) * | 2018-10-15 | 2020-04-23 | Nam Sung Kim | Network-centric architecture and algorithms to accelerate distributed training of neural networks |
US20220051104A1 (en) * | 2020-08-14 | 2022-02-17 | Microsoft Technology Licensing, Llc | Accelerating inference of traditional ml pipelines with neural network frameworks |
CN114743067A (zh) * | 2022-04-06 | 2022-07-12 | 平安科技(深圳)有限公司 | 训练数据的增强方法、装置、计算机设备及存储介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11693706B2 (en) * | 2018-11-21 | 2023-07-04 | Samsung Electronics Co., Ltd. | System and method for dynamic scheduling of distributed deep learning training jobs |
CN109787901B (zh) * | 2019-02-25 | 2021-07-06 | 武汉晟联智融微电子科技有限公司 | 应用于多跳网络中的逆向轮询数据反馈方法 |
CN111079921A (zh) * | 2019-11-29 | 2020-04-28 | 杭州电子科技大学舟山同博海洋电子信息研究院有限公司 | 一种基于异构分布式***的高效神经网络训练调度方法 |
CN111723933B (zh) * | 2020-06-03 | 2024-04-16 | 上海商汤智能科技有限公司 | 神经网络模型的训练方法和相关产品 |
CN115328579B (zh) * | 2022-10-11 | 2023-02-24 | 山东海量信息技术研究院 | 神经网络训练的调度方法、***及计算机可读存储介质 |
-
2022
- 2022-10-11 CN CN202211237416.6A patent/CN115328579B/zh active Active
-
2023
- 2023-03-29 WO PCT/CN2023/084819 patent/WO2024077881A1/zh unknown
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110574044A (zh) * | 2017-05-23 | 2019-12-13 | 英特尔公司 | 用于使用依赖树来增强二进制权重神经网络的方法和装置 |
WO2020081399A1 (en) * | 2018-10-15 | 2020-04-23 | Nam Sung Kim | Network-centric architecture and algorithms to accelerate distributed training of neural networks |
CN111046065A (zh) * | 2019-10-28 | 2020-04-21 | 北京大学 | 可扩展的高性能分布式查询处理方法及装置 |
US20220051104A1 (en) * | 2020-08-14 | 2022-02-17 | Microsoft Technology Licensing, Llc | Accelerating inference of traditional ml pipelines with neural network frameworks |
CN114743067A (zh) * | 2022-04-06 | 2022-07-12 | 平安科技(深圳)有限公司 | 训练数据的增强方法、装置、计算机设备及存储介质 |
Non-Patent Citations (2)
Title |
---|
YINGFANG YUAN: "A Genetic Algorithm with Tree-structured Mutation for Hyperparameter Optimisation of Graph Neural Networks", 《IEEE》 * |
李相桥等: "卷积神经网络并行训练的优化研究", 《计算机技术与发展》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024077881A1 (zh) * | 2022-10-11 | 2024-04-18 | 山东海量信息技术研究院 | 神经网络训练的调度方法、***及计算机可读存储介质 |
CN116962438A (zh) * | 2023-09-21 | 2023-10-27 | 浪潮电子信息产业股份有限公司 | 一种梯度数据同步方法、***、电子设备及可读存储介质 |
CN116962438B (zh) * | 2023-09-21 | 2024-01-23 | 浪潮电子信息产业股份有限公司 | 一种梯度数据同步方法、***、电子设备及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2024077881A1 (zh) | 2024-04-18 |
CN115328579B (zh) | 2023-02-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115328579B (zh) | 神经网络训练的调度方法、***及计算机可读存储介质 | |
CN107079059B (zh) | 区块链存储方法、装置及节点设备 | |
CN103378919B (zh) | 一种fi消息的传输方法及装置 | |
CN103516744A (zh) | 一种数据处理的方法和应用服务器及集群 | |
CN111338806B (zh) | 一种业务控制方法及装置 | |
CN106878382B (zh) | 一种分布式仲裁集群中动态改变集群规模的方法及装置 | |
CN106484528A (zh) | 分布式框架中用于实现集群动态伸缩的方法及装置 | |
CN106815080B (zh) | 分布式图数据处理方法和装置 | |
CN103544285A (zh) | 一种数据加载方法及装置 | |
JP2018503159A (ja) | 分散トランザクション・リソースを実行するための方法、装置、及びシステム | |
CN110113406B (zh) | 基于分布式的计算服务集群*** | |
WO2023115829A1 (zh) | 一种边缘计算资源的分配方法、装置、设备及存储介质 | |
CN116663639B (zh) | 一种梯度数据同步方法、***、装置及介质 | |
EP3442172A1 (en) | Network topology system and building methods for topologies and routing tables thereof | |
CN104767664A (zh) | 一种环形通信网络增减从节点的方法、装置及*** | |
CN105430028A (zh) | 服务调用方法、提供方法及节点 | |
CN111491020B (zh) | 数据处理方法、装置、计算机设备以及存储介质 | |
CN103297542A (zh) | 一种支持构件在线伸缩的云操作***总线及均衡方法 | |
CN115480882A (zh) | 一种分布式边缘云资源调度方法及*** | |
WO2014185167A1 (ja) | データ配信システム、データ配信のためのデータ通信装置およびプログラム | |
CN116962438A (zh) | 一种梯度数据同步方法、***、电子设备及可读存储介质 | |
CN103634877A (zh) | 无接入控制器的网络中接入点的管理方法和接入点设备 | |
Mukherjee et al. | Timed loops for distributed storage in wireless networks | |
CN115550173A (zh) | 一种基于wfbp和链路特性的动态计算通信调度方法 | |
CN105519055A (zh) | 一种I/O通道QoS动态均衡方法及装置 |
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 |