掌桥专利:专业的专利平台
掌桥专利
首页

同步数据并行训练控制方法、系统、装置、设备及介质

文献发布时间:2024-04-18 19:56:50


同步数据并行训练控制方法、系统、装置、设备及介质

技术领域

本发明涉及计算机技术领域,特别是涉及一种同步数据并行训练控制方法、系统、装置、设备及介质。

背景技术

目前的分布式模型训练方法中最常用且应用最广泛的是数据并行方法。数据并行方法是在多个计算节点上部署相同的模型,再将待训练的输入数据进行划分,在每个计算节点上用数据的不同部分来训练模型。

在数据并行训练过程中,由于各计算节点对应的设备类型不同、实际运行状态不同,导致各计算节点之间执行训练任务的时间不同,继而导致执行训练任务的时间较长的计算节点会拖延整个分布式模型训练任务的效率。

解决分布式训练系统的计算节点中的滞后节点影响模型训练效率的问题,是本领域技术人员需要解决的技术问题。

发明内容

本发明的目的是提供一种同步数据并行训练控制方法、系统、装置、设备及介质,用于解决分布式训练系统的计算节点中的滞后节点影响模型训练效率的问题。

为解决上述技术问题,本发明提供一种同步数据并行训练控制方法,包括:

在用于执行分布式训练任务的各计算节点中未执行完当前次迭代训练的计算任务的所述计算节点中确定滞后节点;

在已完成所述当前次迭代训练的计算任务的所述计算节点中确定对所述滞后节点的帮算节点;

将所述当前次迭代训练中分配至所述滞后节点的训练数据分配至所述帮算节点进行帮算训练;

当得到所述当前次迭代训练的所有训练数据对应的梯度数据后,通知各所述计算节点结束所述当前次迭代训练的计算任务并执行梯度数据同步操作。

在一些实施中,所述在用于执行分布式训练任务的各计算节点中未执行完当前次迭代训练的计算任务的所述计算节点中确定滞后节点,包括:

当识别到N-S个已完成所述当前次迭代训练的计算任务的所述计算节点时,确定当前时刻未执行完所述当前次迭代训练的计算任务的S个所述计算节点为所述滞后节点;

其中,N和S均为正整数,且N为所述计算节点的总数。

在一些实施中,S为不大于所述计算节点总数的一半的正整数。

在一些实施中,所述在用于执行分布式训练任务的各计算节点中未执行完当前次迭代训练的计算任务的所述计算节点中确定滞后节点,包括:

若所述当前次迭代训练的执行时间超出第一滞后阈值,确定当前时刻未执行完所述当前次迭代训练的计算任务的所述计算节点为所述滞后节点。

在一些实施中,所述在用于执行分布式训练任务的各计算节点中未执行完当前次迭代训练的计算任务的所述计算节点中确定滞后节点,包括:

若所述当前次迭代训练的执行时间超出第二滞后阈值且当前时刻未执行完所述当前次迭代训练的计算任务的所述计算节点的个数不大于所述计算节点总数的一半,则确定当前时刻未执行完所述当前次迭代训练的计算任务的所述计算节点为所述滞后节点;

若所述当前次迭代训练的执行时间超出所述第二滞后阈值且当前时刻未执行完所述当前次迭代训练的计算任务的所述计算节点的个数大于所述计算节点总数的一半,则在当前时刻未执行完所述当前次迭代训练的计算任务的所述计算节点中选出S个所述节点作为所述滞后节点;

其中,S为不大于所述计算节点总数的一半的正整数。

在一些实施中,所述在已完成所述当前次迭代训练的计算任务的所述计算节点中确定对所述滞后节点的帮算节点,包括:

在已完成所述当前次迭代训练的计算任务的所述计算节点中,选择完成所述当前次迭代训练的计算任务的时间靠前的与所述滞后节点一一对应的所述计算节点作为所述帮算节点。

在一些实施中,所述在已完成所述当前次迭代训练的计算任务的所述计算节点中确定对所述滞后节点的帮算节点,包括:

以所有已完成所述当前次迭代训练的计算任务的所述计算节点为所述帮算节点;

其中,一个所述滞后节点至少对应一个所述帮算节点。

在一些实施中,所述将所述当前次迭代训练中分配至所述滞后节点的训练数据分配至所述帮算节点进行帮算训练,包括:

若未得到所述当前次迭代训练的所有训练数据对应的梯度数据且所述帮算节点进行帮算训练的时间超出第三滞后阈值,则返回所述在已完成所述当前次迭代训练的计算任务的所述计算节点中确定对所述滞后节点的帮算节点的步骤。

在一些实施中,还包括:

将连续第一迭代次数均为所述滞后节点的所述计算节点自所述分布式训练任务中剔除。

在一些实施中,所述在已完成所述当前次迭代训练的计算任务的所述计算节点中确定对所述滞后节点的帮算节点,包括:

在接收到所述当前次迭代训练分配给所述计算节点的训练数据的数据标识后,确定对应的所述计算节点已完成所述当前次迭代训练的计算任务,并将所述数据标识已录入的信息反馈至对应的所述计算节点以使所述计算节点更新本地梯度数据列表;

在已完成所述当前次迭代训练的计算任务的所述计算节点中确定对所述滞后节点的所述帮算节点。

在一些实施中,所述当得到所述当前次迭代训练的所有训练数据对应的梯度数据后,通知各所述计算节点结束所述当前次迭代训练的计算任务并执行梯度数据同步操作,包括:

当接收到所述当前次迭代训练分配出的所有训练数据的数据标识时,确定得到所述当前次迭代训练的所有训练数据对应的梯度数据;

向各所述计算节点发送梯度数据同步命令,以使各所述计算节点若所述本地梯度数据列表不为空则根据所述本地梯度数据列表执行所述梯度数据同步操作,若所述梯度数据同步操作为空则生成为0的虚拟梯度参数所述梯度数据同步操作。

在一些实施中,所述梯度数据同步操作包括参数服务器法梯度数据同步操作或全规约法梯度数据同步操作。

在一些实施中,所述全规约法梯度数据同步操作包括环形全规约法梯度数据同步操作或树形全规约法梯度数据同步操作。

在一些实施中,各所述计算节点为异构计算节点;

所述异构计算节点至少包括:图形处理器、现场可编程逻辑门阵列设备、专用集成电路设备、处理器分散处理单元设备中的至少两个。

在一些实施中,应用于独立于各所述计算节点的控制器。

在一些实施中,应用于所述计算节点中的一个。

在一些实施中,应用于连续第二迭代次数均不为所述滞后节点的所述计算节点中的一个。

在一些实施中,在在用于执行分布式训练任务的各计算节点中未执行完当前次迭代训练的计算任务的所述计算节点中确定滞后节点,包括:

在进入所述当前次迭代训练时,记录各所述计算节点的节点标识,并将所述当前次迭代训练对应的全局已完成列表、所述当前次迭代训练对应的非滞后节点列表和所述当前次迭代训练对应的滞后节点列表均置为空;

等待各所述计算节点发送的消息;

当接收到所述计算节点发送的数据标识时,若所述滞后节点列表为空,则确定当前时刻处于滞后节点识别阶段,将所述计算节点的节点标识写入所述非滞后节点列表并将数据标识写入所述全局已完成列表,并将数据标识对应的训练数据已完成训练的信息发送至所述计算节点以使所述计算节点对应更新本地梯度数据列表;若所述滞后节点列表不为空,则确定当前时刻处于帮算阶段;当满足所述当前次迭代训练的滞后节点识别条件后,将确定的所述滞后节点的节点标识写入所述滞后节点列表;所述滞后节点识别条件包括:所述非滞后节点列表中具有N-S个所述计算节点的节点标识和/或所述当前次迭代训练的执行时间超出第四滞后阈值;N和S均为正整数,且N为所述计算节点的总数;

所述在已完成所述当前次迭代训练的计算任务的所述计算节点中确定对所述滞后节点的帮算节点,包括:

将所述非滞后节点列表中完成所述当前次迭代训练的计算任务时间靠前的所述计算节点一一分配给所述滞后节点列表中的各所述滞后节点作为所述帮算节点,以生成帮算列表;或,将所述非滞后节点列表中的所有所述计算节点分配给所述滞后节点列表中的各所述滞后节点,以使各所述滞后节点均对应至少一个所述帮算节点,生成所述帮算列表;所述帮算列表包括:与所述滞后节点对应的所述帮算节点的节点标识和划分至所述滞后节点的训练数据的数据标识;

所述将所述当前次迭代训练中分配至所述滞后节点的训练数据分配至所述帮算节点进行帮算训练,包括:

根据所述帮算列表将所述当前次迭代训练中分配至所述滞后节点的训练数据分配至所述帮算节点进行帮算训练;

所述当得到所述当前次迭代训练的所有训练数据对应的梯度数据后,通知各所述计算节点结束所述当前次迭代训练的计算任务并执行梯度数据同步操作,包括:

当接收到所述计算节点发送的数据标识时,若当前时刻处于帮算阶段,则检查所述全局已完成列表,若所述全局已完成列表包含接收到的数据标识,则跳过接收到的数据标识并返回所述等待各所述计算节点发送的消息的步骤;若所述全局已完成列表不包含接收到的数据标识,则将所述计算节点的节点标识写入所述非滞后节点列表并将数据标识写入所述全局已完成列表,并将数据标识对应的训练数据已完成训练的信息发送至所述计算节点以使所述计算节点对应更新本地梯度数据列表;

若所述全局已完成列表包含所述当前次迭代训练所有训练数据的数据标识或所述全局已完成列表包含的数据标识的数量达到所述计算节点的总数,则通知各所述计算节点结束所述当前次迭代训练的计算任务并执行梯度数据同步操作;

其中,若所述计算节点的所述本地梯度数据列表中具有一份训练数据的数据标识,则所述计算节点以数据标识对应的梯度数据为待聚合梯度数据以执行所述梯度数据同步操作;若所述计算节点的所述本地梯度数据列表中具有多份训练数据的标识,则所述计算节点将多个数据标识对应的梯度数据聚合后作为所述待聚合梯度数据以执行所述梯度数据同步操作;若所述计算节点的所述本地梯度数据列表中不具有训练数据的数据标识,则所述计算节点生成为0的虚拟梯度作为所述待聚合梯度数据以执行所述梯度数据同步操作。

为解决上述技术问题,本发明还提供一种同步数据并行训练控制方法,应用于执行分布式训练任务的计算节点,包括:

当接收到当前次迭代训练中的训练数据时,执行所述当前次迭代训练的计算任务;

当完成所述当前次迭代训练的计算任务并接收到滞后节点的训练数据时,确定本地为帮算节点并进行帮算训练;

当接收到结束所述当前次迭代训练的计算任务并执行梯度数据同步操作的通知时,利用本地与训练任务对应的完整的梯度数据执行所述梯度数据同步操作;

其中,所述滞后节点在未执行完所述当前次迭代训练的计算任务的所述计算节点中确定。

在一些实施中,所述当接收到当前次迭代训练中的训练数据时,执行所述当前次迭代训练的计算任务,包括:

在进入所述当前次迭代训练时,将本地梯度数据列表置为空,启动第一线程获取所述当前次迭代训练的训练数据并基于所述第一线程利用训练数据执行计算任务;

若完成所述当前次迭代训练的计算任务,则运行第二线程将所在节点的节点标识和分配至所在节点的训练数据的数据标识发送至控制器;

当基于所述第二线程接收到所述控制器将数据标识写入全局已完成列表并反馈的数据标识对应的训练数据已完成训练的信息时,将数据标识写入本地梯度数据列表;

所述当完成所述当前次迭代训练的计算任务并接收到滞后节点的训练数据时,确定本地为帮算节点并进行帮算训练,包括:

基于所述第二线程等待接收来自所述控制器的消息;若接收到来自所述控制器的帮算消息时,根据对应的帮算列表中的数据标识获取新的训练数据,对新的训练数据返回所述基于所述第一线程利用训练数据执行计算任务的步骤;

所述当接收到结束所述当前次迭代训练的计算任务并执行梯度数据同步操作的通知时,利用本地与训练任务对应的完整的梯度数据执行所述梯度数据同步操作,包括:

基于所述第二线程等待接收来自所述控制器的消息;若接收到来自所述控制器的同步消息,则若所述第一线程正在执行计算任务则停止计算任务,若所述本地梯度数据列表中具有一份训练数据的数据标识,则以数据标识对应的梯度数据为待聚合梯度数据以执行梯度数据同步操作;若所述本地梯度数据列表中具有多份训练数据的标识,则将多个数据标识对应的梯度数据聚合后作为所述待聚合梯度数据以执行所述梯度数据同步操作;若所述本地梯度数据列表中不具有训练数据的数据标识,则生成为0的虚拟梯度作为所述待聚合梯度数据执行所述梯度数据同步操作;

其中,所述帮算列表为所述控制器在已完成所述当前次迭代训练的计算任务的所述计算节点中确定对所述滞后节点的所述帮算节点后生成的列表,包括与所述滞后节点对应的所述帮算节点的节点标识和划分至所述滞后节点的训练数据的数据标识;

所述控制器在已完成所述当前次迭代训练的计算任务的所述计算节点中确定对所述滞后节点的所述帮算节点包括:将非滞后节点列表中完成所述当前次迭代训练的计算任务时间靠前的所述计算节点一一分配给滞后节点列表中的各所述滞后节点作为所述帮算节点,以生成所述帮算列表;或,将所述非滞后节点列表中的所有所述计算节点分配给所述滞后节点列表中的各所述滞后节点,以使各所述滞后节点均对应至少一个所述帮算节点,生成所述帮算列表;所述帮算列表包括:与所述滞后节点对应的所述帮算节点的节点标识和划分至所述滞后节点的训练数据的数据标识;

所述非滞后节点列表为所述控制器用于记录自所述当前次迭代训练开始至满足滞后节点识别条件时完成所述当前次迭代训练的计算任务的所述计算节点的节点标识的列表;所述滞后节点列表为所述控制器在满足所述滞后节点识别条件后写入确定的所述滞后节点的节点标识的列表;

所述滞后节点识别条件包括:所述非滞后节点列表中具有N-S个所述计算节点的节点标识和/或所述当前次迭代训练的执行时间超出第四滞后阈值;N和S均为正整数,且N为所述计算节点的总数。

为解决上述技术问题,本发明还提供一种同步数据并行训练控制系统,包括:多个计算节点;

各所述计算节点用于接收到当前次迭代训练中的训练数据时,执行所述当前次迭代训练的计算任务;当完成所述当前次迭代训练的计算任务并接收到滞后节点的训练数据时,确定本地为帮算节点并进行帮算训练;当接收到结束所述当前次迭代训练的计算任务并执行梯度数据同步操作的通知时,利用本地与训练任务对应的完整的梯度数据执行所述梯度数据同步操作;

其中,所述滞后节点在未执行完所述当前次迭代训练的计算任务的所述计算节点中确定。

在一些实施中,还包括独立于所述计算节点的控制器;

所述控制器用于在所述计算节点中确定所述滞后节点,在已完成所述当前次迭代训练的计算任务的所述计算节点中确定对所述滞后节点的所述帮算节点,将所述当前次迭代训练中分配至所述滞后节点的训练数据分配至所述帮算节点进行帮算训练,当得到所述当前次迭代训练的所有训练数据对应的梯度数据后,通知各所述计算节点结束所述当前次迭代训练的计算任务并执行梯度数据同步操作。

为解决上述技术问题,本发明还提供一种同步数据并行训练控制装置,包括:

第一确定单元,用于在用于执行分布式训练任务的各计算节点中未执行完当前次迭代训练的计算任务的所述计算节点中确定滞后节点;

第二确定单元,用于在已完成所述当前次迭代训练的计算任务的所述计算节点中确定对所述滞后节点的帮算节点;

帮算控制单元,用于将所述当前次迭代训练中分配至所述滞后节点的训练数据分配至所述帮算节点进行帮算训练;

同步控制单元,用于当得到所述当前次迭代训练的所有训练数据对应的梯度数据后,通知各所述计算节点结束所述当前次迭代训练的计算任务并执行梯度数据同步操作。

为解决上述技术问题,本发明还提供一种同步数据并行训练控制装置,应用于执行分布式训练任务的计算节点,包括:

第一计算单元,用于当接收到当前次迭代训练中的训练数据时,执行所述当前次迭代训练的计算任务;

第二计算单元,用于当完成所述当前次迭代训练的计算任务并接收到滞后节点的训练数据时,确定本地为帮算节点并进行帮算训练;

同步执行单元,用于当接收到结束所述当前次迭代训练的计算任务并执行梯度数据同步操作的通知时,利用本地与训练任务对应的完整的梯度数据执行所述梯度数据同步操作;

其中,所述滞后节点在未执行完所述当前次迭代训练的计算任务的所述计算节点中确定。

为解决上述技术问题,本发明还提供一种同步数据并行训练控制设备,包括:

存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序,所述计算机程序被所述处理器执行时实现如上述任意一项所述同步数据并行训练控制方法的步骤。

为解决上述技术问题,本发明还提供一种介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上述任意一项所述同步数据并行训练控制方法的步骤。

本发明所提供的同步数据并行训练控制方法,通过在当前次迭代训练中确定各计算节点中的滞后节点,在已完成当前次迭代训练的计算节点中确定对滞后节点的帮算节点,并在帮算节点上分配与滞后节点相同的训练数据进行训练,在得到当前次迭代训练的所有梯度数后通知各计算节点结束计算任务并执行梯度数据同步操作,实现了同步数据并行训练,避免对模型引入陈旧性模型参数,保证了模型的收敛速度需求和精度需求,且能够避免在同步数据并行训练中有的计算节点处于空闲状态而有的计算节点处于滞后状态的情况下大量拖延迭代训练的时间,实现了高训练效率、高模型精度的兼得,充分利用了计算节点资源。

本发明还提供一种同步数据并行训练控制系统、装置、设备及介质,具有上述有益效果,在此不再赘述。

附图说明

为了更清楚的说明本发明实施例或现有技术的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的一种同步数据并行训练控制方法的流程图;

图2为本发明实施例提供的一种同步数据并行训练控制装置的结构示意图;

图3为本发明实施例提供的一种同步数据并行训练控制设备的结构示意图。

具体实施方式

本发明的核心是提供一种同步数据并行训练控制方法、系统、装置、设备及介质,用于解决分布式训练系统的计算节点中的滞后节点影响模型训练效率的问题。

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

下面对本发明实施例一进行说明。

为便于理解,首先对本发明适用的系统架构进行介绍。本发明实施例提供的具体实施方式可以适用于任意由多个计算节点构成的分布式训练系统。

具体地,本发明实施例提供的同步数据并行训练控制系统可以包括多个计算节点;

各计算节点用于接收到当前次迭代训练中的训练数据时,执行当前次迭代训练的计算任务;当完成当前次迭代训练的计算任务并接收到滞后节点的训练数据时,确定本地为帮算节点并进行帮算训练;当接收到结束当前次迭代训练的计算任务并执行梯度数据同步操作的通知时,利用本地与训练任务对应的完整的梯度数据执行梯度数据同步操作;

其中,滞后节点在未执行完当前次迭代训练的计算任务的计算节点中确定。

在具体实施中,各计算节点可以为异构计算节点,可以包括但不限于图形处理器(Graphics Processing Unit,GPU)、现场可编程逻辑门阵列设备(Field ProgrammableGate Array,FPGA)、专用集成电路设备(Application Specific Integrated Circuit,ASIC)和处理器分散处理单元设备(Data Processing Unit,DPU),也可以包括其他类型的异构计算节点。各类型计算节点的数量可以为一个或多个。

不论是采用同样类型的计算节点组成的分布式训练系统,还是采用异构计算节点组成的分布式训练系统,均有可能出现各计算节点因投入分布式训练任务的算力不同(受计算节点自身性能以及计算节点同时在执行其他任务的影响)而导致在每次迭代训练中有的计算节点完成了计算任务而有的计算节点未完成计算任务。

数据并行训练又分为同步数据并行训练和异步数据并行训练两种方法。

其中,同步数据并行方法,在执行分布式训练的所有计算节点计算完当前次迭代训练的批量(batch)数据得到梯度数据后,在所有计算节点间进行一次梯度数据同步以共享模型参数。此种方法可以减少用于计算梯度的权重的陈旧性,使模型最终能够达到较高的收敛精度。但随着各计算节点对应设备类型的不同、实际运行状态的不同,导致各计算节点间计算时间可能不同,一旦出现滞后节点(straggler,即完成一个批量数据的训练所花费的时间较长的计算节点),就会导致模型训练的效率降低。

异步数据并行方法可以解决滞后节点影响训练效率的问题,此种方法不需要等待所有计算节点完成计算,而是哪个计算节点完成计算,立即将梯度数据更新到共享模型参数,有效减少了计算节点的空闲等待时间,但此种方法存在使用陈旧性参数进行训练的问题。具体来说,由于计算速度慢的计算节点的迭代次数将少于计算速度快的计算节点,使得同一时间不同计算速度的计算节点提供的梯度数据的先进性不同,各计算节点均在每执行一次迭代训练就更新一次模型参数,而落后的计算节点会将模型向落后的方向更新,这样的模型网络中的模型参数即为陈旧性参数,后续计算节点在进行迭代训练时就是基于这些陈旧性参数训练的,这样导致的后果就是模型的收敛速度减慢,精度降低。

可以看到,相关技术中若采用同步数据并行训练方法会导致模型训练效率低,若采用异步数据并行训练方法则会导致采用了陈旧性参数进行训练而使模型收敛速度减慢、精度降低。归根究底是分布式训练系统的各计算节点中的滞后节点成为了性能瓶颈。

故本发明实施例提供一种同步数据并行训练控制系统,避免采用异步数据并行训练方法导致基于陈旧性参数训练,而在用于执行分布式训练任务的计算节点中,在未执行完当前次迭代训练的计算任务的计算节点中选定滞后节点,在已完成当前次迭代训练的计算节点中选定帮算节点,由与滞后节点对应的帮算节点执行对与滞后节点相同的训练数据的训练任务。此时若滞后节点先完成训练任务则滞后节点并未较大拖延当前次迭代训练,若帮算节点先完成帮算训练任务则避免了滞后节点较大拖延当前次迭代训练,从而有效改善了同步数据并行训练方案中受滞后节点影响导致训练效率低下、计算资源浪费的问题。

用于进行滞后节点的识别、帮算节点的确定以及分配帮算训练任务的设备可以在各计算节点中选择一个,也可以采用独立于用于执行分布式训练任务的计算节点的控制器。

则本发明实施例提供的同步数据并行训练控制系统还可以包括独立于计算节点的控制器;

该控制器用于在计算节点中确定滞后节点,在已完成当前次迭代训练的计算任务的计算节点中确定对滞后节点的帮算节点,将当前次迭代训练中分配至滞后节点的训练数据分配至帮算节点进行帮算训练,当得到当前次迭代训练的所有训练数据对应的梯度数据后,通知各计算节点结束当前次迭代训练的计算任务并执行梯度数据同步操作。

该控制器可以选用计算集群中不执行当前分布式训练任务的计算节点。

在上述架构的基础上,下面结合附图对本发明实施例提供的同步数据并行训练控制方法进行说明。

下面对本发明实施例二进行说明。

图1为本发明实施例提供的一种同步数据并行训练控制方法的流程图。

如图1所示,本发明实施例提供的同步数据并行训练控制方法包括:

S101:在用于执行分布式训练任务的各计算节点中未执行完当前次迭代训练的计算任务的计算节点中确定滞后节点。

S102:在已完成当前次迭代训练的计算任务的计算节点中确定对滞后节点的帮算节点。

S103:将当前次迭代训练中分配至滞后节点的训练数据分配至帮算节点进行帮算训练。

S104:当得到当前次迭代训练的所有训练数据对应的梯度数据后,通知各计算节点结束当前次迭代训练的计算任务并执行梯度数据同步操作。

在具体实施中,本发明实施例提供的同步数据并行训练控制方法可以应用于独立于各计算节点的控制器,也可以在各计算节点中选择一个执行本发明实施例提供的同步数据并行训练控制方法。为减少对分布式训练任务的影响,若选择各计算节点中的一个执行本发明实施例提供的同步数据并行训练控制方法,则可以选择连续第二迭代次数均不为滞后节点的计算节点中的一个执行本发明实施例提供的同步数据并行训练控制方法。

对于S101,根据执行分布式训练任务的计算节点数量(记为N),将训练任务分为N份分发至各计算节点执行(通常为均分)。设置对滞后节点的识别条件以在迭代训练中识别出各计算节点中的滞后节点,该滞后节点为拖延当前次迭代训练的效率的计算节点。对滞后节点的识别条件可以为数量条件和/或时间条件。其中,数量条件为以在当前次迭代训练中完成训练任务最末的一定数量的计算节点为滞后节点。时间条件为设置滞后阈值,使在当前次迭代训练中执行训练任务时间超出该滞后阈值的计算节点为滞后节点。数量条件和时间条件可以采用一个或均采用。对滞后节点的识别条件可以根据各计算节点的算力、当前所执行的分布式训练任务的类型以及通过实验方式测得等手段确定。

对于S102,计算节点完成当前次迭代训练的计算任务后得到与被分配的训练任务对应的梯度数据。在已完成当前次迭代训练的计算任务的计算节点中确定对滞后节点的帮算节点。同步数据并行的分布式训练在每次迭代训练中均包括基于训练数据对模型网络进行前向传播计算、反向传播计算以及对反向传播计算得到的梯度数据在各计算节点间进行梯度数据聚合得到聚合梯度数据并利用聚合梯度数据更新模型网络的模型参数的步骤。在本发明实施例提供的同步数据并行训练控制方法中,由于采用同步数据并行分布式训练方法,需要等待所有训练数据被训练完毕后才执行梯度数据同步操作。则此时在已完成当前次迭代训练的计算任务的计算节点中确定对滞后节点的帮算节点,即在已完成当前次迭代训练的反向传播计算的计算节点中确定对滞后节点的帮算节点。

为保证帮算节点起到帮算目的,S102:在已完成当前次迭代训练的计算任务的计算节点中确定对滞后节点的帮算节点,可以包括:在已完成当前次迭代训练的计算任务的计算节点中,选择完成当前次迭代训练的计算任务的时间靠前的与滞后节点一一对应的计算节点作为帮算节点。即选择在当前次迭代训练中计算最快的计算节点作为帮算节点,对滞后节点进行一对一帮助。若此时已完成当前次迭代训练的计算任务的计算节点的数量小于滞后节点的数量,则需考虑重新确定滞后节点,或从滞后节点中选定计算速度最慢的滞后节点优先进行帮算。

或者,S102:在已完成当前次迭代训练的计算任务的计算节点中确定对滞后节点的帮算节点,可以包括:以所有已完成当前次迭代训练的计算任务的计算节点为帮算节点。其中,一个滞后节点至少对应一个帮算节点。根据当前设定的对滞后节点的识别条件,若此时已完成当前次迭代训练的计算任务的计算节点的数量大于滞后节点的数量,在这些已完成当前次迭代训练的计算任务的计算节点均处于空闲的情况下,可以均作为帮算节点,使每个滞后节点可以对应一个或多个帮算节点,能够进一步提高当前次迭代训练的执行效率。在为滞后节点分配帮算节点时,可以采用平均原则将帮算节点平均分配给各滞后节点,例如帮算节点1、帮算节点2均用于采用与滞后节点5相同的训练数据执行前向传播计算和反向传播计算,节点3、4均用于采用与滞后节点6相同的训练数据执行前向传播计算和反向传播计算。如帮算节点无法平均分配给各滞后节点,则可以将无法平均分配的帮算节点闲置或随机分配给不同滞后节点。

对于S103,根据滞后节点和帮算节点的对应关系,将原分配至滞后节点上的同样的训练数据再分配给对应的帮算节点进行帮算训练。需要说明的是,分配给帮算节点的训练数据是与分配给对应的滞后数据相同的完整的训练数据。

对于S104,与S102相同的是,计算节点完成当前次迭代训练的计算任务后得到与被分配的训练任务对应的梯度数据。不论滞后节点和帮算节点谁先完成对训练数据的训练任务,均以得到最开始分配的所有训练数据对应的梯度数据为结束当前次迭代训练的计算任务的终点,通知各计算节点结束当前次迭代训练的计算任务并执行梯度数据同步操作。

同步数据并行训练下的梯度数据同步操作通常为将各份训练数据对应的梯度数据聚合后求均值得到聚合梯度数据,而后以聚合梯度数据更新模型网络中的权重参数。计算节点本地若仅有一份训练数据对应的梯度数据,则以该梯度数据与其他计算节点执行梯度数据同步操作。计算节点本地若有多份训练数据对应的梯度数据,则在本地执行梯度数据聚合操作后再与其他计算节点执行梯度数据同步操作。计算节点本地若无梯度数据,则可以初始化一个虚拟梯度{0}参与梯度数据同步操作。

本发明实施例提供的同步数据并行训练控制方法可以适用于任意类型的梯度数据同步操作。则梯度数据同步操作可以包括但不限于参数服务器(Parameter Server,PS)法梯度数据同步操作或全规约(AllReduce)法梯度数据同步操作。

其中,全规约(AllReduce)法梯度数据同步操作包括环形全规约(RingAllReduce)法梯度数据同步操作或树形全规约(Tree AllReduce)法梯度数据同步操作。

此外,本发明各实施例中所涉及的计算节点可以为异构计算节点。即用于执行分布式训练任务的各计算节点可以为图形处理器(Graphics Processing Unit,GPU)、现场可编程逻辑门阵列设备(Field Programmable Gate Array,FPGA)、专用集成电路设备(Application Specific Integrated Circuit,ASIC)和处理器分散处理单元设备(DataProcessing Unit,DPU)中的至少两个,也可以不限于这些类型的计算节点。各类型计算节点的数量可以为一个或多个。

或者,用于执行分布式训练任务的各计算节点也可以采用同样类型的计算节点。

在执行分布式训练任务时,若某计算节点始终被识别为滞后节点,则该计算节点可能出现故障或正在执行其他优先级更高的任务。则本发明实施例提供的同步数据并行训练控制方法还可以包括将连续第一迭代次数均为滞后节点的计算节点自分布式训练任务中剔除。第一迭代次数的值可以预先或动态设定。

在达到训练结束条件(如得到迭代次数或满足收敛条件)后,结束分布式训练任务。

本发明实施例提供的同步数据并行训练控制方法,通过在当前次迭代训练中确定各计算节点中的滞后节点,在已完成当前次迭代训练的计算节点中确定对滞后节点的帮算节点,并在帮算节点上分配与滞后节点相同的训练数据进行训练,在得到当前次迭代训练的所有训练数据对应的梯度数据后通知各计算节点结束计算任务并执行梯度数据同步操作,实现了同步数据并行训练,避免对模型引入陈旧性模型参数,保证了模型的收敛速度需求和精度需求,且能够避免在同步数据并行训练中有的计算节点处于空闲状态而有的计算节点处于滞后状态的情况下大量拖延迭代训练的时间,实现了高训练效率、高模型精度的兼得,充分利用了计算节点资源。

下面对本发明实施例三进行说明。

在上述实施例的基础上,本发明实施例对滞后节点的识别条件为数量条件的实施例进行进一步说明。

在本发明实施例提供的同步数据并行训练控制方法中,S101:在用于执行分布式训练任务的各计算节点中未执行完当前次迭代训练的计算任务的计算节点中确定滞后节点,可以包括:

当识别到N-S个已完成当前次迭代训练的计算任务的计算节点时,确定当前时刻未执行完当前次迭代训练的计算任务的S个计算节点为滞后节点;

其中,N和S均为正整数,且N为计算节点的总数。

在具体实施中,可以预先或在迭代训练中动态设定S的值。在开始当前次迭代训练时,训练数据被分为N份分发至各计算节点,此时可以开启计数器(counter)对已完成当前次迭代训练的计算任务的计算节点进行计数。计数器(counter)初始化为0,不论在开始训练阶段还是在帮算节点,每收到一个计算节点完成当前次迭代训练的计算任务的消息则计数器(counter)+1。对于重复接收到对相同训练数据完成计算任务的消息,则自第二次收到起不做记录,继续处理下一条消息。

当计数器(counter)的值等于N-S时,根据已完成当前次迭代训练的计算任务的计算节点的全局已完成列表生成当前时刻未执行完当前次迭代训练的计算任务的S个计算节点的列表,作为滞后节点列表。根据滞后节点列表为滞后节点分配帮算节点,将滞后节点的训练数据发送至帮算节点执行。此时帮算节点和滞后节点基于同样的训练数据进行计算。

接收各计算节点发来的已完成计算任务的消息,在全局已完成列表中查看是否已经存在相同的训练数据标识,若没有,则将该消息对应的训练数据标识存入全局已完成列表,同时计数器(counter)+1;若已有相同记录,则直接处理下一条消息。

当计数器(counter)的值等于N时,说明已获取全部训练数据对应的梯度数据,此时通知各计算节点结束当前次迭代训练的计算任务并执行梯度数据同步操作。

为保证训练效率以及避免计算资源浪费,可以设置S为不大于计算节点总数的一半的正整数。

下面对本发明实施例四进行说明。

在上述实施例的基础上,本发明实施例对滞后节点的识别条件为时间条件的实施例进行进一步说明。

在本发明实施例提供的同步数据并行训练控制方法中,S101:在用于执行分布式训练任务的各计算节点中未执行完当前次迭代训练的计算任务的计算节点中确定滞后节点,可以包括:

若当前次迭代训练的执行时间超出第一滞后阈值,确定当前时刻未执行完当前次迭代训练的计算任务的计算节点为滞后节点。

在具体实施中,可以预先或在迭代训练中动态设定第一滞后阈值。在开始当前次迭代训练时,训练数据被分为N份分发至各计算节点,此时可以开启计时器(timer)对当前次迭代训练的执行时间进行记录。计时器(timer)初始化为0。

若当前次迭代训练的所有训练数据对应的梯度数据均已得到,则停止计时器(timer)的计时并执行梯度数据同步操作,并在进入下一次迭代训练时将初始化为0的计时器(timer)重新计时。

若未得到当前次迭代训练的所有训练数据对应的梯度数据,而计时器(timer)的计时已达到第一滞后阈值,则确定此时未执行完当前次迭代训练的计算任务的计算节点为滞后节点,再进入S102:在已完成当前次迭代训练的计算任务的计算节点中确定对滞后节点的帮算节点的步骤。

为保证训练效率以及避免计算资源浪费,可以限制滞后节点的数量不超过计算节点总数的二分之一。则除了上述具体实施方式外,S101:在用于执行分布式训练任务的各计算节点中未执行完当前次迭代训练的计算任务的计算节点中确定滞后节点,可以包括:

若当前次迭代训练的执行时间超出第二滞后阈值且当前时刻未执行完当前次迭代训练的计算任务的计算节点的个数不大于计算节点总数的一半,则确定当前时刻未执行完当前次迭代训练的计算任务的计算节点为滞后节点;

若当前次迭代训练的执行时间超出第二滞后阈值且当前时刻未执行完当前次迭代训练的计算任务的计算节点的个数大于计算节点总数的一半,则在当前时刻未执行完当前次迭代训练的计算任务的计算节点中选出S个节点作为滞后节点;

其中,S为不大于计算节点总数的一半的正整数。

第二滞后阈值可以与第一滞后阈值相同。

下面对本发明实施例五进行说明。

由于各计算节点的负载可能是动态变化的,可能出现执行同样训练数据的训练任务的帮算节点和滞后节点均未能在理想时间内执行完训练任务,此时需要重新确定帮算节点以保证训练效率。则S103:将当前次迭代训练中分配至滞后节点的训练数据分配至帮算节点进行帮算训练,可以包括:

若未得到当前次迭代训练的所有训练数据对应的梯度数据且帮算节点进行帮算训练的时间超出第三滞后阈值,则返回S102中在已完成当前次迭代训练的计算任务的计算节点中确定对滞后节点的帮算节点的步骤。

在一些场景下,如帮算节点突发故障或帮算节点被分配了高优先级任务,导致帮算节点及其对应的滞后节点均无法理想时间内执行完训练任务,此时可以重新在空闲计算节点中确定帮算节点执行同样训练数据的训练任务,以避免帮算节点和滞后节点同时出现滞后问题时拖延训练效率。

第三滞后阈值可以与第一滞后阈值、第二滞后阈值相同或不同。

下面对本发明实施例六进行说明。

在上述实施例中介绍了,为保证各计算节点间无重复的梯度数据,采用各计算节点在完成当前计算任务时上报已完成计算任务的消息的方式,去除重复的已完成计算任务的消息。

在本发明实施例提供的同步数据并行训练控制方法中,S102:在已完成当前次迭代训练的计算任务的计算节点中确定对滞后节点的帮算节点,可以包括:

在接收到当前次迭代训练分配给计算节点的训练数据的数据标识后,确定对应的计算节点已完成当前次迭代训练的计算任务,并将数据标识已录入的信息反馈至对应的计算节点以使计算节点更新本地梯度数据列表;

在已完成当前次迭代训练的计算任务的计算节点中确定对滞后节点的帮算节点。

通过维护全局已完成列表记录当前次迭代训练中已得到对应梯度数据的训练数据的数据标识,通过在各计算节点本地维护已录入全局已完成列表的梯度数据信息的本地梯度数据列表,以保证在各计算节点执行梯度数据同步操作时不存在重复的梯度数据。

则S104:当得到当前次迭代训练的所有训练数据对应的梯度数据后,通知各计算节点结束当前次迭代训练的计算任务并执行梯度数据同步操作,可以包括:

当接收到当前次迭代训练分配出的所有训练数据的数据标识时,确定得到当前次迭代训练的所有训练数据对应的梯度数据;

向各计算节点发送梯度数据同步命令,以使各计算节点若本地梯度数据列表不为空则根据本地梯度数据列表执行梯度数据同步操作,若梯度数据同步操作为空则生成为0的虚拟梯度参数梯度数据同步操作。

如本发明上述实施例介绍的,基于全局已完成列表记录和各计算节点的本地梯度数据列表,以全局已完成列表记录已包含所有训练数据的数据标识为得到当前次迭代训练的所有训练数据对应的梯度数据的标志,向各计算节点发送梯度数据同步命令,以使各计算节点根据本地梯度数据列表提供本地的梯度数据(如没有则提供虚拟梯度{0})。

下面对本发明实施例七进行说明。

本发明实施例提供的同步数据并行训练控制方法的一种具体执行步骤进行说明。本发明实施例提供的同步数据并行训练控制方法可以应用于独立于各计算节点的控制器,也可以应用于计算节点。

在本发明实施例提供的同步数据并行训练控制方法中,S101:在用于执行分布式训练任务的各计算节点中未执行完当前次迭代训练的计算任务的计算节点中确定滞后节点,可以包括:

在进入当前次迭代训练时,记录各计算节点的节点标识,并将当前次迭代训练对应的全局已完成列表、当前次迭代训练对应的非滞后节点列表和当前次迭代训练对应的滞后节点列表均置为空。

具体来说,在控制器初始化时,初始化计算节点数为N,滞后节点数S,此时用于记录当前已得到对应梯度数据的训练数据的数据标识的全局已完成列表为空,用于记录已完成当前次迭代训练的计算任务的非滞后节点的非滞后节点列表为空,用于记录未能如期望完成当前次迭代训练的计算任务的滞后节点的滞后节点列表为空。若计算节点总数为五,则可以设置S=2,记各计算节点编号为1、2、3、4、5,为各计算节点分配的训练数据的数据标识为D1、D2、D3、D4、D5。

等待各计算节点发送的消息。

当接收到计算节点发送的数据标识时,若滞后节点列表为空,则确定当前时刻处于滞后节点识别阶段,将计算节点的节点标识写入非滞后节点列表并将数据标识写入全局已完成列表,并将数据标识对应的训练数据已完成训练的信息发送至计算节点以使计算节点对应更新本地梯度数据列表。若滞后节点列表不为空,则确定当前时刻处于帮算阶段。

具体来说,控制器等待各计算节点发来的消息,存入消息队列。从消息队列读取到消息后,判断滞后节点列表是否为空。如果否,则确定目前处于帮算阶段;如果是,则确定目前处于滞后节点识别阶段。同时,控制器将存储到本地的梯度数据对应的训练数据的数据标识写入全局已完成列表。

当满足当前次迭代训练的滞后节点识别条件后,将确定的滞后节点的节点标识写入滞后节点列表。滞后节点识别条件包括:非滞后节点列表中具有N-S个计算节点的节点标识和/或当前次迭代训练的执行时间超出第四滞后阈值;N和S均为正整数,且N为计算节点的总数。

具体来说,在滞后节点识别阶段,若采用非滞后节点列表中具有N-S个计算节点的节点标识的识别条件,则控制器每识别到一个计算节点完成计算任务,则将节点编号存入非滞后节点列表中,计数器(counter)+1。控制器判断计数器(counter)的值是否等于设定非滞后节点的个数N-S;如果否,则返回等待各计算节点发来的消息,存入消息队列的步骤;如果是,则根据非滞后节点列表生成滞后节点列表,而后生成帮算列表发送至各非滞后节点。

若采用当前次迭代训练的执行时间超出第四滞后阈值的识别条件,则控制器在进入当前次迭代训练时将计时器(timer)初始化为0并开始计时,当计时达到第四滞后阈值时满足滞后节点识别条件。两种滞后节点识别条件可以择一使用或一起使用。

S102:在已完成当前次迭代训练的计算任务的计算节点中确定对滞后节点的帮算节点,可以包括:

将非滞后节点列表中完成当前次迭代训练的计算任务时间靠前的计算节点一一分配给滞后节点列表中的各滞后节点作为帮算节点,以生成帮算列表;或,将非滞后节点列表中的所有计算节点分配给滞后节点列表中的各滞后节点,以使各滞后节点均对应至少一个帮算节点,生成帮算列表。

帮算列表包括:与滞后节点对应的帮算节点的节点标识和划分至滞后节点的训练数据的数据标识。

具体来说,此处的帮算列表包括节点编号和数据编号。帮算列表的生成方法可以为从非滞后节点列表中获取前S个节点编号(前S个表示当前次迭代训练中运行最快的前S个计算节点)作为帮算节点,从滞后节点列表中获取各个滞后节点对应的数据编号,将滞后节点的数据编号依次分配给每个帮算节点。例如,非滞后节点列表为{1,2,4},滞后节点列表为{3,5},则生成的帮算列表为{1:D3},{2:D5}。在该过程中,计算节点1和计算节点3均在基于训练数据D3进行计算,计算节点2和计算节点5均在基于训练数据D5进行计算。

S103:将当前次迭代训练中分配至滞后节点的训练数据分配至帮算节点进行帮算训练,可以包括:

根据帮算列表将当前次迭代训练中分配至滞后节点的训练数据分配至帮算节点进行帮算训练。

S104:当得到当前次迭代训练的所有训练数据对应的梯度数据后,通知各计算节点结束当前次迭代训练的计算任务并执行梯度数据同步操作,包括:

当接收到计算节点发送的数据标识时,若当前时刻处于帮算阶段,则检查全局已完成列表。

若全局已完成列表包含接收到的数据标识,则跳过接收到的数据标识并返回等待各计算节点发送的消息的步骤。

若全局已完成列表不包含接收到的数据标识,则将计算节点的节点标识写入非滞后节点列表并将数据标识写入全局已完成列表,并将数据标识对应的训练数据已完成训练的信息发送至计算节点以使计算节点对应更新本地梯度数据列表。

若全局已完成列表包含当前次迭代训练所有训练数据的数据标识或全局已完成列表包含的数据标识的数量达到计算节点的总数,则通知各计算节点结束当前次迭代训练的计算任务并执行梯度数据同步操作。

其中,若计算节点的本地梯度数据列表中具有一份训练数据的数据标识,则计算节点以数据标识对应的梯度数据为待聚合梯度数据以执行梯度数据同步操作;若计算节点的本地梯度数据列表中具有多份训练数据的标识,则计算节点将多个数据标识对应的梯度数据聚合后作为待聚合梯度数据以执行梯度数据同步操作;若计算节点的本地梯度数据列表中不具有训练数据的数据标识,则计算节点生成为0的虚拟梯度作为待聚合梯度数据以执行梯度数据同步操作。

具体来说,具体来说,在帮算阶段,控制器判断全局已完成列表中是否有相同的数据标识;如果是,则确定该数据已经被其他计算节点提交计算过,此处不需再做处理,直接返回等待各计算节点发来的消息,存入消息队列的步骤;如果否,则将数据标识存入全局已完成列表,计数器(counter)+1,将已录入消息发送至当前消息的源头节点,告知其消息已录入。

控制器判断计数器(counter)的值是否为N或全局已完成列表中是否包含所有训练数据的数据标识,如果否,则返回等待各计算节点发来的消息,存入消息队列的步骤;如果是,则发送消息给各计算节点告知其结束当前次迭代训练的计算任务并执行梯度数据同步操作。

下面对本发明实施例八进行说明。

本发明实施例提供的同步数据并行训练控制方法的另一种具体执行步骤进行说明。本发明实施例提供的同步数据并行训练控制方法应用于执行分布式训练任务的计算节点,可以包括:

当接收到当前次迭代训练中的训练数据时,执行当前次迭代训练的计算任务;

当完成当前次迭代训练的计算任务并接收到滞后节点的训练数据时,确定本地为帮算节点并进行帮算训练;

当接收到结束当前次迭代训练的计算任务并执行梯度数据同步操作的通知时,利用本地与训练任务对应的完整的梯度数据执行梯度数据同步操作;

其中,滞后节点在未执行完当前次迭代训练的计算任务的计算节点中确定。

在具体实施中,当接收到当前次迭代训练中的训练数据时,执行当前次迭代训练的计算任务,可以包括:

在进入当前次迭代训练时,将本地梯度数据列表置为空,启动第一线程获取当前次迭代训练的训练数据并基于第一线程利用训练数据执行计算任务;

若完成当前次迭代训练的计算任务,则运行第二线程将所在节点的节点标识和分配至所在节点的训练数据的数据标识发送至控制器;

当基于第二线程接收到控制器将数据标识写入全局已完成列表并反馈的数据标识对应的训练数据已完成训练的信息时,将数据标识写入本地梯度数据列表。

具体来说,计算节点在进入当前次迭代训练时,初始化计算节点数为N,滞后节点数S,本地梯度数据列表为空。各计算节点上可以启动两个线程,分别用于执行计算任务和通信任务。假设第一线程用于执行计算任务,第二线程用于执行通信任务。则在各计算节点上,第一线程获取训练数据进行前向传播计算和反向传播计算。完成训练任务的计算节点通过第二线程发送消息给控制器,消息包括当前节点编号和训练数据的数据标识。计算节点通过第二线程接收控制器反馈的数据标识已录入的消息,将该数据标识存入本地梯度数据列表。

当完成当前次迭代训练的计算任务并接收到滞后节点的训练数据时,确定本地为帮算节点并进行帮算训练,包括:

在首次完成当前次迭代训练的计算任务后,当收到帮算列表和滞后节点的训练数据时,利用滞后节点的训练数据进行帮算训练;

基于第二线程等待接收来自控制器的消息;若接收到来自控制器的帮算消息时,根据对应的帮算列表中的数据标识获取新的训练数据,对新的训练数据返回基于第一线程利用训练数据执行计算任务的步骤。

其中,帮算列表为控制器在已完成当前次迭代训练的计算任务的计算节点中确定对滞后节点的帮算节点后生成的列表;控制器在已完成当前次迭代训练的计算任务的计算节点中确定对滞后节点的帮算节点包括:控制器将非滞后节点列表中完成当前次迭代训练的计算任务时间靠前的计算节点一一分配给滞后节点列表中的各滞后节点作为帮算节点;或,控制器将述非滞后节点列表中的所有计算节点分配给滞后节点列表中的各滞后节点,以使各滞后节点均对应至少一个帮算节点;非滞后节点列表为控制器用于记录自当前次迭代训练开始至满足滞后节点识别条件时完成当前次迭代训练的计算任务的计算节点的节点标识的列表;滞后节点识别条件包括:非滞后节点列表中具有N-S个计算节点的节点标识和/或当前次迭代训练的执行时间超出第四滞后阈值;N和S均为正整数,且N为计算节点的总数。

具体来说,计算节点通过第二线程等待接收来自控制器的消息。若接收到帮算消息,则首先根据帮算列表中的数据编号获取新的训练数据,然后根据新的训练数据执行前向传播计算和反向传播计算。

当接收到结束当前次迭代训练的计算任务并执行梯度数据同步操作的通知时,利用本地与训练任务对应的完整的梯度数据执行梯度数据同步操作,可以包括:

基于第二线程等待接收来自控制器的消息;

若接收到来自控制器的同步消息,则若第一线程正在执行计算任务则停止计算任务,若本地梯度数据列表中具有一份训练数据的数据标识,则以数据标识对应的梯度数据为待聚合梯度数据以执行梯度数据同步操作;

若本地梯度数据列表中具有多份训练数据的标识,则将多个数据标识对应的梯度数据聚合后作为待聚合梯度数据以执行梯度数据同步操作;

若本地梯度数据列表中不具有训练数据的数据标识,则生成为0的虚拟梯度作为待聚合梯度数据执行梯度数据同步操作。

其中,帮算列表为控制器在已完成当前次迭代训练的计算任务的计算节点中确定对滞后节点的帮算节点后生成的列表,包括与滞后节点对应的帮算节点的节点标识和划分至滞后节点的训练数据的数据标识。

控制器在已完成当前次迭代训练的计算任务的计算节点中确定对滞后节点的帮算节点包括:将非滞后节点列表中完成当前次迭代训练的计算任务时间靠前的计算节点一一分配给滞后节点列表中的各滞后节点作为帮算节点,以生成帮算列表;或,将非滞后节点列表中的所有计算节点分配给滞后节点列表中的各滞后节点,以使各滞后节点均对应至少一个帮算节点,生成帮算列表;帮算列表包括:与滞后节点对应的帮算节点的节点标识和划分至滞后节点的训练数据的数据标识。

非滞后节点列表为控制器用于记录自当前次迭代训练开始至满足滞后节点识别条件时完成当前次迭代训练的计算任务的计算节点的节点标识的列表;滞后节点列表为控制器在满足滞后节点识别条件后写入确定的滞后节点的节点标识的列表。

滞后节点识别条件包括:非滞后节点列表中具有N-S个计算节点的节点标识和/或当前次迭代训练的执行时间超出第四滞后阈值;N和S均为正整数,且N为计算节点的总数。

具体来说,若计算节点接收到梯度数据同步消息,则首先查看第一线程中若还有正在进行的计算,停止计算;然后根据本地梯度数据列表聚合本地的梯度数据。此处的聚合为直接相加即可。若本地梯度数据列表为空,则直接将梯度数据初始化为0。最后进行各计算节点间的梯度数据同步操作,梯度数据同步操作可以为参数服务器法同步、全规约法同步等。需要注意的是,每个计算节点都会尽力按照上述过程执行,但并不是每个计算节点都能够完整的执行以上步骤,不同的计算节点上完成的步骤会因其自身计算能力和其收到的控制信息不同而有所差异。

下面对本发明实施例九进行说明。

在上述实施例的基础上,在本发明实施例中,以计算节点数N=5,滞后节点数S=2为例对同步数据并行训练控制方法的每次迭代训练的过程进行说明。

各计算节点编号为1、2、3、4、5,为各计算节点分配的训练数据的数据标识为D1、D2、D3、D4、D5。各计算节点初始化后获取训练数据、进行前向传播计算和反向传播计算。

假设计算节点1率先完成前向传播计算和反向传播计算,并发送消息给控制器。控制器收到计算节点1发来的消息,更新非滞后节点列表为{1},全局已完成列表为{D1},计数器(counter)=1;然后控制器发消息告知计算节点1消息已录入;计算节点1收到消息后,更新本地已完成列表为{D1}。

假设计算节点2随后完成前向传播计算和反向传播计算,并发送消息给控制器。控制器收到计算节点2发来的消息,更新非滞后节点列表为{1,2},全局已完成列表为{D1,D2},计数器(counter)=2;然后控制器发消息告知计算节点2消息已录入;计算节点2收到消息后,更新本地已完成列表为{D2}。

假设计算节点4随后完成前向传播计算和反向传播计算,并发送消息给控制器。控制器收到计算节点4发来的消息,更新非滞后节点列表为{1,2,4},全局已完成列表为{D1,D2,D4},计数器(counter)=3;然后控制器发消息告知计算节点4其消息已录入;计算节点4收到消息后,更新本地已完成列表为{D4};此时控制器监测到计数器(counter)的值=3= N-S,则根据非滞后节点列表生成滞后节点列表{3,5}和帮算列表{1:D3},{2:D5}分别发送给帮算节点1和帮算节点2。

进入帮算阶段,帮算节点1和帮算节点2收到来自控制器的帮算消息后,分别获取训练数据D3和D5进行前向传播计算和反向传播计算,此时计算节点1和计算节点3均在基于训练数据D3进行计算,计算节点2和计算节点5均在基于训练数据D5进行计算。

假设计算节点5先完成前向传播计算和反向传播计算,并发送消息给控制器。控制器收到计算节点5发来的消息,全局已完成列表为{D1,D2,D4,D5},计数器(counter)=4;然后控制器发消息告知计算节点5告知其消息已录入;计算节节点5收到消息后,更新本地已完成列表为{D5}。

随后计算节点2完成基于数据D5的前向传播计算和反向传播计算,并发送消息给控制器。控制器收到计算节点2发来的消息,但检测发现全局完成列表{D1,D2,D4,D5}中已存在D5记录,则不需再做任何处理。

假设计算节点1先完成基于训练数据D3的前向传播计算和反向传播计算,并发送消息给控制器。控制器收到计算节点1发来的消息,全局已完成列表为{D1,D2,D4,D5,D3},计数器(counter)=5;然后控制器发消息告知计算节点1告知其消息已录入。计算节点1收到消息后,更新本地已完成列表为{D1,D3}。此时控制器监测到计数器(counter)的值=N,说明所有训练数据均已计算完成,则发送消息给各计算节点告知其可开始进行梯度数据同步操作。

各计算节点收到同步消息,由于计算节点3的第一线程此时还在进行前向传播计算和反向传播计算,则计算节点3首先停掉其前向传播计算和反向传播计算过程,然后查看其本地梯度数据列表为空,则将梯度数据初始化为{0},然后开启节点间同步。其他计算节点没有仍在进行的计算过程,则直接查看本地梯度数据列表,其中计算节点1的已完成列表中有两组数据标识D1和D3, 则先聚合D1和D3对应的梯度数据,然后开启节点间同步;而计算节点2、计算节点4、计算节点5节点上都只有一组梯度数据,则不需要进行本地聚合,直接开启节点间同步。

各计算节点间执行梯度数据同步操作,所有计算节点都参与,有梯度数据的使用真实梯度数据,没有梯度数据的使用初始化为{0}的虚拟梯度。

上文详述了同步数据并行训练控制方法对应的各个实施例,在此基础上,本发明还公开了与上述方法对应的同步数据并行训练控制装置、设备及介质。

下面对本发明实施例十进行说明。

图2为本发明实施例提供的一种同步数据并行训练控制装置的结构示意图。

如图2所示,本发明实施例提供的同步数据并行训练控制装置包括:

第一确定单元201,用于在用于执行分布式训练任务的各计算节点中未执行完当前次迭代训练的计算任务的计算节点中确定滞后节点;

第二确定单元202,用于在已完成当前次迭代训练的计算任务的计算节点中确定对滞后节点的帮算节点;

帮算控制单元203,用于将当前次迭代训练中分配至滞后节点的训练数据分配至帮算节点进行帮算训练;

同步控制单元204,用于当得到当前次迭代训练的所有训练数据对应的梯度数据后,通知各计算节点结束当前次迭代训练的计算任务并执行梯度数据同步操作。

在一些实施中,第一确定单元201在用于执行分布式训练任务的各计算节点中未执行完当前次迭代训练的计算任务的计算节点中确定滞后节点,可以包括:

当识别到N-S个已完成当前次迭代训练的计算任务的计算节点时,确定当前时刻未执行完当前次迭代训练的计算任务的S个计算节点为滞后节点;

其中,N和S均为正整数,且N为计算节点的总数。

其中,S为不大于计算节点总数的一半的正整数。

在一些实施中,第一确定单元201在用于执行分布式训练任务的各计算节点中未执行完当前次迭代训练的计算任务的计算节点中确定滞后节点,可以包括:

若当前次迭代训练的执行时间超出第一滞后阈值,确定当前时刻未执行完当前次迭代训练的计算任务的计算节点为滞后节点。

在一些实施中,第一确定单元201在用于执行分布式训练任务的各计算节点中未执行完当前次迭代训练的计算任务的计算节点中确定滞后节点,可以包括:

若当前次迭代训练的执行时间超出第二滞后阈值且当前时刻未执行完当前次迭代训练的计算任务的计算节点的个数不大于计算节点总数的一半,则确定当前时刻未执行完当前次迭代训练的计算任务的计算节点为滞后节点;

若当前次迭代训练的执行时间超出第二滞后阈值且当前时刻未执行完当前次迭代训练的计算任务的计算节点的个数大于计算节点总数的一半,则在当前时刻未执行完当前次迭代训练的计算任务的计算节点中选出S个节点作为滞后节点;

其中,S为不大于计算节点总数的一半的正整数。

在一些实施中,第二确定单元202在已完成当前次迭代训练的计算任务的计算节点中确定对滞后节点的帮算节点,可以包括:

在已完成当前次迭代训练的计算任务的计算节点中,选择完成当前次迭代训练的计算任务的时间靠前的与滞后节点一一对应的计算节点作为帮算节点。

在一些实施中,第二确定单元202在已完成当前次迭代训练的计算任务的计算节点中确定对滞后节点的帮算节点,可以包括:

以所有已完成当前次迭代训练的计算任务的计算节点为帮算节点;

其中,一个滞后节点至少对应一个帮算节点。

在一些实施中,帮算控制单元203将当前次迭代训练中分配至滞后节点的训练数据分配至帮算节点进行帮算训练,可以包括:

若未得到当前次迭代训练的所有训练数据对应的梯度数据且帮算节点进行帮算训练的时间超出第三滞后阈值,则返回在已完成当前次迭代训练的计算任务的计算节点中确定对滞后节点的帮算节点的步骤。

在一些实施中,本发明实施例提供的同步数据并行训练控制装置还可以包括:

剔除单元,用于将连续第一迭代次数均为滞后节点的计算节点自分布式训练任务中剔除。

在一些实施中,第二确定单元202在已完成当前次迭代训练的计算任务的计算节点中确定对滞后节点的帮算节点,可以包括:

在接收到当前次迭代训练分配给计算节点的训练数据的数据标识后,确定对应的计算节点已完成当前次迭代训练的计算任务,并将数据标识已录入的信息反馈至对应的计算节点以使计算节点更新本地梯度数据列表;

在已完成当前次迭代训练的计算任务的计算节点中确定对滞后节点的帮算节点。

在一些实施中,同步控制单元204当得到当前次迭代训练的所有训练数据对应的梯度数据后,通知各计算节点结束当前次迭代训练的计算任务并执行梯度数据同步操作,可以包括:

当接收到当前次迭代训练分配出的所有训练数据的数据标识时,确定得到当前次迭代训练的所有训练数据对应的梯度数据;

向各计算节点发送梯度数据同步命令,以使各计算节点若本地梯度数据列表不为空则根据本地梯度数据列表执行梯度数据同步操作,若梯度数据同步操作为空则生成为0的虚拟梯度参数梯度数据同步操作。

在一些实施中,梯度数据同步操作可以包括参数服务器法梯度数据同步操作或全规约法梯度数据同步操作。

其中,全规约法梯度数据同步操作可以包括环形全规约法梯度数据同步操作或树形全规约法梯度数据同步操作。

在一些实施中,各计算节点为异构计算节点;

异构计算节点至少包括:图形处理器、现场可编程逻辑门阵列设备、专用集成电路设备、处理器分散处理单元设备中的至少两个。

在一些实施中,该本发明实施例提供的同步数据并行训练控制装置可以应用于独立于各计算节点的控制器。

在一些实施中,该本发明实施例提供的同步数据并行训练控制装置可以应用于计算节点中的一个。

在一些实施中,该本发明实施例提供的同步数据并行训练控制装置可以应用于连续第二迭代次数均不为滞后节点的计算节点中的一个。

在一些实施中,第一确定单元201在用于执行分布式训练任务的各计算节点中未执行完当前次迭代训练的计算任务的计算节点中确定滞后节点,可以包括:

在进入当前次迭代训练时,记录各计算节点的节点标识,并将当前次迭代训练对应的全局已完成列表、当前次迭代训练对应的非滞后节点列表和当前次迭代训练对应的滞后节点列表均置为空;

等待各计算节点发送的消息;

当接收到计算节点发送的数据标识时,若滞后节点列表为空,则确定当前时刻处于滞后节点识别阶段,将计算节点的节点标识写入非滞后节点列表并将数据标识写入全局已完成列表,并将数据标识对应的训练数据已完成训练的信息发送至计算节点以使计算节点对应更新本地梯度数据列表;若滞后节点列表不为空,则确定当前时刻处于帮算阶段;当满足当前次迭代训练的滞后节点识别条件后,将确定的滞后节点的节点标识写入滞后节点列表;滞后节点识别条件包括:非滞后节点列表中具有N-S个计算节点的节点标识和/或当前次迭代训练的执行时间超出第四滞后阈值;N和S均为正整数,且N为计算节点的总数;

第二确定单元202在已完成当前次迭代训练的计算任务的计算节点中确定对滞后节点的帮算节点,可以包括:

将非滞后节点列表中完成当前次迭代训练的计算任务时间靠前的计算节点一一分配给滞后节点列表中的各滞后节点作为帮算节点,以生成帮算列表;或,将非滞后节点列表中的所有计算节点分配给滞后节点列表中的各滞后节点,以使各滞后节点均对应至少一个帮算节点,生成帮算列表;帮算列表包括:与滞后节点对应的帮算节点的节点标识和划分至滞后节点的训练数据的数据标识;

帮算控制单元203将当前次迭代训练中分配至滞后节点的训练数据分配至帮算节点进行帮算训练,包括:

根据帮算列表将当前次迭代训练中分配至滞后节点的训练数据分配至帮算节点进行帮算训练;

同步控制单元204当得到当前次迭代训练的所有训练数据对应的梯度数据后,通知各计算节点结束当前次迭代训练的计算任务并执行梯度数据同步操作,可以包括:

当接收到计算节点发送的数据标识时,若当前时刻处于帮算阶段,则检查全局已完成列表,若全局已完成列表包含接收到的数据标识,则跳过接收到的数据标识并返回等待各计算节点发送的消息的步骤;若全局已完成列表不包含接收到的数据标识,则将计算节点的节点标识写入非滞后节点列表并将数据标识写入全局已完成列表,并将数据标识对应的训练数据已完成训练的信息发送至计算节点以使计算节点对应更新本地梯度数据列表;

若全局已完成列表包含当前次迭代训练所有训练数据的数据标识或全局已完成列表包含的数据标识的数量达到计算节点的总数,则通知各计算节点结束当前次迭代训练的计算任务并执行梯度数据同步操作;

其中,若计算节点的本地梯度数据列表中具有一份训练数据的数据标识,则计算节点以数据标识对应的梯度数据为待聚合梯度数据以执行梯度数据同步操作;若计算节点的本地梯度数据列表中具有多份训练数据的标识,则计算节点将多个数据标识对应的梯度数据聚合后作为待聚合梯度数据以执行梯度数据同步操作;若计算节点的本地梯度数据列表中不具有训练数据的数据标识,则计算节点生成为0的虚拟梯度作为待聚合梯度数据以执行梯度数据同步操作。

由于装置部分的实施例与方法部分的实施例相互对应,因此装置部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。

下面对本发明实施例十一进行说明。

应用于执行分布式训练任务的计算节点,本发明实施例提供的同步数据并行训练控制装置可以包括:

第一计算单元,用于当接收到当前次迭代训练中的训练数据时,执行当前次迭代训练的计算任务;

第二计算单元,用于当完成当前次迭代训练的计算任务并接收到滞后节点的训练数据时,确定本地为帮算节点并进行帮算训练;

同步执行单元,用于当接收到结束当前次迭代训练的计算任务并执行梯度数据同步操作的通知时,利用本地与训练任务对应的完整的梯度数据执行梯度数据同步操作;

其中,滞后节点在未执行完当前次迭代训练的计算任务的计算节点中确定。

在一些实施中,第一计算单元当接收到当前次迭代训练中的训练数据时,执行当前次迭代训练的计算任务,可以包括:

在进入当前次迭代训练时,将本地梯度数据列表置为空,启动第一线程获取当前次迭代训练的训练数据并基于第一线程利用训练数据执行计算任务;

若完成当前次迭代训练的计算任务,则运行第二线程将所在节点的节点标识和分配至所在节点的训练数据的数据标识发送至控制器;

当基于第二线程接收到控制器将数据标识写入全局已完成列表并反馈的数据标识对应的训练数据已完成训练的信息时,将数据标识写入本地梯度数据列表;

第二计算单元当完成当前次迭代训练的计算任务并接收到滞后节点的训练数据时,确定本地为帮算节点并进行帮算训练,可以包括:

基于第二线程等待接收来自控制器的消息;若接收到来自控制器的帮算消息时,根据对应的帮算列表中的数据标识获取新的训练数据,对新的训练数据返回基于第一线程利用训练数据执行计算任务的步骤;

同步执行单元当接收到结束当前次迭代训练的计算任务并执行梯度数据同步操作的通知时,利用本地与训练任务对应的完整的梯度数据执行梯度数据同步操作,可以包括:

基于第二线程等待接收来自控制器的消息;若接收到来自控制器的同步消息,则若第一线程正在执行计算任务则停止计算任务,若本地梯度数据列表中具有一份训练数据的数据标识,则以数据标识对应的梯度数据为待聚合梯度数据以执行梯度数据同步操作;若本地梯度数据列表中具有多份训练数据的标识,则将多个数据标识对应的梯度数据聚合后作为待聚合梯度数据以执行梯度数据同步操作;若本地梯度数据列表中不具有训练数据的数据标识,则生成为0的虚拟梯度作为待聚合梯度数据执行梯度数据同步操作;

其中,帮算列表为控制器在已完成当前次迭代训练的计算任务的计算节点中确定对滞后节点的帮算节点后生成的列表,包括与滞后节点对应的帮算节点的节点标识和划分至滞后节点的训练数据的数据标识;

控制器在已完成当前次迭代训练的计算任务的计算节点中确定对滞后节点的帮算节点包括:将非滞后节点列表中完成当前次迭代训练的计算任务时间靠前的计算节点一一分配给滞后节点列表中的各滞后节点作为帮算节点,以生成帮算列表;或,将非滞后节点列表中的所有计算节点分配给滞后节点列表中的各滞后节点,以使各滞后节点均对应至少一个帮算节点,生成帮算列表;帮算列表包括:与滞后节点对应的帮算节点的节点标识和划分至滞后节点的训练数据的数据标识;

非滞后节点列表为控制器用于记录自当前次迭代训练开始至满足滞后节点识别条件时完成当前次迭代训练的计算任务的计算节点的节点标识的列表;滞后节点列表为控制器在满足滞后节点识别条件后写入确定的滞后节点的节点标识的列表;

滞后节点识别条件包括:非滞后节点列表中具有N-S个计算节点的节点标识和/或当前次迭代训练的执行时间超出第四滞后阈值;N和S均为正整数,且N为计算节点的总数。

由于装置部分的实施例与方法部分的实施例相互对应,因此装置部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。

下面对本发明实施例十二进行说明。

图3为本发明实施例提供的一种同步数据并行训练控制设备的结构示意图。

如图3所示,本发明实施例提供的同步数据并行训练控制设备包括:

存储器310,用于存储计算机程序311;

处理器320,用于执行计算机程序311,该计算机程序311被处理器320执行时实现如上述任意一项实施例所述同步数据并行训练控制方法的步骤。

其中,处理器320可以包括一个或多个处理核心,比如3核心处理器、8核心处理器等。处理器320可以采用数字信号处理DSP(Digital Signal Processing)、现场可编程门阵列FPGA(Field-Programmable Gate Array)、可编程逻辑阵列PLA(Programmable LogicArray)中的至少一种硬件形式来实现。处理器320也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称中央处理器CPU(CentralProcessing Unit);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器320可以集成有图像处理器GPU(Graphics Processing Unit),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器320还可以包括人工智能AI(Artificial Intelligence)处理器,该AI处理器用于处理有关机器学习的计算操作。

存储器310可以包括一个或多个介质,该介质可以是非暂态的。存储器310还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。本实施例中,存储器310至少用于存储以下计算机程序311,其中,该计算机程序311被处理器320加载并执行之后,能够实现前述任一实施例公开的同步数据并行训练控制方法中的相关步骤。另外,存储器310所存储的资源还可以包括操作系统312和数据313等,存储方式可以是短暂存储或者永久存储。其中,操作系统312可以为Windows。数据313可以包括但不限于上述方法所涉及到的数据。

在一些实施例中,同步数据并行训练控制设备还可包括有显示屏330、电源340、通信接口350、输入输出接口360、传感器370以及通信总线380。

本领域技术人员可以理解,图3中示出的结构并不构成对同步数据并行训练控制设备的限定,可以包括比图示更多或更少的组件。

本发明实施例提供的同步数据并行训练控制设备,包括存储器和处理器,处理器在执行存储器存储的程序时,能够实现如上所述的同步数据并行训练控制方法,效果同上。

下面对本发明实施例十三进行说明。

需要说明的是,以上所描述的装置、设备实施例仅仅是示意性的,例如,模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。

集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,执行本发明各个实施例所述方法的全部或部分步骤。

为此,本发明实施例还提供一种介质,该介质上存储有计算机程序,计算机程序被处理器执行时实现如同步数据并行训练控制方法的步骤。

该介质可以包括:U盘、移动硬盘、只读存储器ROM(Read-Only Memory)、随机存取存储器RAM(Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

本实施例中提供的介质所包含的计算机程序能够在被处理器执行时实现如上所述的同步数据并行训练控制方法的步骤,效果同上。

以上对本发明所提供的一种同步数据并行训练控制方法、系统、装置、设备及介质进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置、设备及介质而言,由于其与实施例公开的方法、系统相对应,所以描述的比较简单,相关之处参见方法、系统部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

相关技术
  • 缝纫机双轴同步控制方法、装置、设备、系统和存储介质
  • 基于双控的存储设备数据同步方法、装置、设备及介质
  • 产品数据的数据同步方法、装置、计算机设备及存储介质
  • 数据库同步恢复方法、装置、计算机可读存储介质和电子设备
  • 数据同步方法、装置、计算机设备及存储介质
  • 一种并行同步数据的方法、装置、设备及存储介质
  • 一种并行同步数据的方法、装置、设备及存储介质
技术分类

06120116437087