WO2022033024A1 - 深度学习模型的分布式训练方法以及装置 - Google Patents
深度学习模型的分布式训练方法以及装置 Download PDFInfo
- Publication number
- WO2022033024A1 WO2022033024A1 PCT/CN2021/080496 CN2021080496W WO2022033024A1 WO 2022033024 A1 WO2022033024 A1 WO 2022033024A1 CN 2021080496 W CN2021080496 W CN 2021080496W WO 2022033024 A1 WO2022033024 A1 WO 2022033024A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- training
- node
- elastic scaling
- nodes
- task
- Prior art date
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
- 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
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- 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
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Abstract
本申请公开了一种深度学习模型的分布式训练方法以及装置,具体实现方案为:方法包括:获取深度学习平台发送的训练任务对应的训练状态数据;根据训练任务对应的集群资源需求生成弹性伸缩策略;采用弹性伸缩策略动态调整训练任务对应的训练节点的数量;根据训练状态数据和调整后的训练节点,执行训练任务。提高了训练任务对应的集群资源需求的适应性,提高了GPU或CPU资源利用率,能够确保在任何时候加入或删除训练节点的情况下,利用调整后的训练节点都能够正确并高效的执行训练任务。
Description
相关申请的交叉引用
本申请要求于2020年8月12日申请的专利申请号CN202010806430.8且发明名称为“深度学习模型的分布式训练方法以及装置”的优先权,其全部内容通过引用并入本文。
本申请涉及深度学习领域,尤其涉及分布式训练领域。
深度学习框架/平台支持分布式训练模式,即使用多台设备,每台设备上可以设置多个GPU(图形处理器,Graphics Processing Unit),深度学习模型在各台设备中的GPU上并行化地训练。现有的深度学习框架/平台,例如,TensorFlow(基于数据流编程,dataflow programming)原生的PS(参数服务,Parameter server)架构,支持异步训练模式。在深度学习框架/平台运行时,可以将深度学习框架/平台部署到具体的物理集群,TensorFlow集群中的节点被分为两类:参数服务器(parameter server)和工作服务器(worker)。参数服务器存放模型的参数,而工作服务器负责计算参数的梯度,给工作服务器配置GPU。在每个迭代过程,工作服务器从参数服务器中获得参数,然后将计算的梯度返回给参数服务器,参数服务器聚合从工作服务器传回的梯度,然后更新参数,并将新的参数广播给工作服务器。
然而,由于深度学习模型在进行不同的训练任务时,一些训练任务需要更多的GPU,另一些训练任务中则仅仅需要较少的GPU,或者一些特殊的训练任务使用GPU时会呈现一定的周期性特征,存在使用峰值和谷值,导致在一些训练任务中,GPU会出现空置状态。因此,针对不同的训练任务,无法对工作服务器的数量进行适应性调整,导致GPU集群利用率较低。
发明内容
本申请实施例提供一种深度学习模型的分布式训练方法以及装置,以解决相关技术存在的问题,技术方案如下:
第一方面,本申请实施方式提供了一种深度学习模型的分布式训练方法,包括:
获取深度学习平台发送的训练任务对应的训练状态数据;
根据训练任务对应的集群资源需求生成弹性伸缩策略;
采用弹性伸缩策略动态调整训练任务对应的训练节点的数量;
根据训练状态数据和调整后的训练节点,执行训练任务。
在一种实施方式中,获取深度学习平台发送的训练任务对应的训练状态数据,包括:
获取深度学习平台发送的第一应用程序接口,第一应用程序接口是深度学习平台根据用户发送的调用指令调用得到的;
其中,第一应用程序接口包括训练状态数据,训练状态数据包括梯度和更新轮次N(N大于或等于1),梯度是调整前的训练节点完成第N轮参数更新之后计算得到的。
在一种实施方式中,根据训练任务对应的集群资源需求生成弹性伸缩策略,包括:
根据用户发送的集群资源需求生成第一弹性伸缩策略,第一弹性伸缩策略包括增加或减少训练节点的数量。
在一种实施方式中,根据训练任务对应的集群资源需求生成弹性伸缩策略,包括:
对集群资源进行监控,确定闲置资源,并根据闲置资源生成第二弹性伸缩策略,第二弹性伸缩策略包括增加训练节点的数量。
在一种实施方式中,根据训练任务对应的集群资源需求生成弹性伸缩策略,包括:
对训练任务对应的训练节点进行监控,确定故障节点,并根据故障节点 所释放的集群资源生成第三弹性伸缩策略,第三弹性伸缩策略包括删除故障节点。
在一种实施方式中,根据训练任务对应的集群资源需求生成弹性伸缩策略,包括:
根据优先级大于阈值的训练任务所需的集群资源,生成第四弹性伸缩策略,第四弹性伸缩策略包括减少训练节点的数量。
在一种实施方式中,采用弹性伸缩策略动态调整训练任务对应的训练节点的数量,包括:
调用第二应用程序接口,并将第二应用程序接口发送至算力平台,以使算力平台采用弹性伸缩策略动态调整训练任务对应的训练节点的数量;其中,第二应用程序接口包括第一弹性伸缩策略、第二弹性伸缩策略、第三弹性伸缩策略以及第四弹性伸缩策略中的至少一种。
在一种实施方式中,针对训练状态数据,根据训练状态数据和调整后的训练节点,执行训练任务,包括:
在训练任务启动的情况下,控制调整前的训练节点执行主节点选举进程,以确定主节点,并控制主节点执行构建调整前的训练节点的通信拓扑的步骤。
在一种实施方式中,根据训练状态数据和调整后的训练节点,执行训练任务,包括:
在增加训练节点的情况下,控制主节点执行基于调整前的训练节点的通信拓扑和新增加的训练节点,构建新的通信拓扑,并将新的通信拓扑和训练状态数据同步于调整后的训练节点的步骤;
算力平台根据弹性伸缩策略将增加后的训练节点调度至对应的物理节点,以使物理节点针对训练状态数据,按照新的通信拓扑执行训练任务。
在一种实施方式中,根据训练状态数据和调整后的训练节点,执行训练任务,包括:
在减少训练节点的数量情况下,控制主节点基于调整后的训练节点构建新的通信拓扑,并将新的通信拓扑同步于调整后的训练节点;
算力平台根据弹性伸缩策略将减少后的训练节点调度至对应的物理节点,以使物理节点针对训练状态数据,按照新的通信拓扑执行训练任务。
在一种实施方式中,还包括:
控制主节点存储训练状态数据至数据库中;
在训练节点执行训练任务失败的情况下,重新启动训练节点,并加载数据库中的训练状态数据,以恢复执行训练任务。
在一种实施方式中,还包括:
控制主节点针对多个数据分区建立分区索引,数据分区是对训练过程中所需的训练元数据集合进行划分得到的;
在主节点接收训练节点发送的数据读取请求的情况下,控制主节点执行利用分区索引为训练节点配置数据分区的步骤。
在一种实施方式中,还包括:
记录各个数据分区被读取的次数,并在训练节点执行训练任务时,分配被读取次数小于阈值的数据分区。
第二方面,本申请实施例提供一种深度学习模型的分布式训练装置,包括:
训练状态数据获取模块,用于获取深度学习平台发送的训练任务对应的训练状态数据;
弹性伸缩策略生成模块,用于根据训练任务对应的集群资源需求生成弹性伸缩策略;
训练节点数量调整模块,用于采用弹性伸缩策略动态调整训练任务对应的训练节点的数量;
训练任务执行模块,用于根据训练状态数据和调整后的训练节点,执行训练任务。
在一种实施方式中,训练状态数据获取模块,包括:
第一应用程序发送子模块,用于获取深度学习平台发送的第一应用程序接口,第一应用程序接口是深度学习平台根据用户发送的调用指令调用得到的;
其中,第一应用程序接口包括训练状态数据,训练状态数据包括梯度和更新轮次N(N大于或等于1),梯度是调整前的训练节点完成第N轮参数更新之后计算得到的。
在一种实施方式中,弹性伸缩策略生成模块,包括:
第一策略生成子模块,用于根据用户发送的集群资源需求生成第一弹性伸缩策略,第一弹性伸缩策略包括增加或减少训练节点的数量。
在一种实施方式中,弹性伸缩策略生成模块,包括:
第二策略生成子模块,用于对集群资源进行监控,确定闲置资源,并根据闲置资源生成第二弹性伸缩策略,第二弹性伸缩策略包括增加训练节点的数量。
在一种实施方式中,弹性伸缩策略生成模块,包括:
第三策略生成子模块,用于对训练任务对应的训练节点进行监控,确定故障节点,并根据故障节点所释放的集群资源生成第三弹性伸缩策略,第三弹性伸缩策略包括删除故障节点。
在一种实施方式中,弹性伸缩策略生成模块,包括:
第四策略生成子模块,用于根据优先级大于阈值的训练任务所需的集群资源,生成第四弹性伸缩策略,第四弹性伸缩策略包括减少训练节点的数量。
在一种实施方式中,训练节点数量调整模块,包括:
第二应用程序发送子模块,用于调用第二应用程序接口,并将第二应用程序接口发送至算力平台,以使算力平台采用弹性伸缩策略动态调整训练任务对应的训练节点的数量;其中,第二应用程序接口包括第一弹性伸缩策略、第二弹性伸缩策略、第三弹性伸缩策略以及第四弹性伸缩策略中的至少一种。
在一种实施方式中,训练任务执行模块包括:
主节点选举子模块,在训练任务启动的情况下,控制调整前的训练节点执行主节点选举进程,以确定主节点,并控制主节点执行构建调整前的训练节点的通信拓扑的步骤。
在一种实施方式中,训练任务执行模块,包括:
第一通信拓扑重建子模块,用于主节点执行基于调整前的训练节点的通信拓扑和新增加的训练节点,构建新的通信拓扑,并将新的通信拓扑和训练状态数据同步于调整后的训练节点的步骤;
第一训练任务执行子模块,用于算力平台根据弹性伸缩策略将增加后的训练节点调度至对应的物理节点,以使物理节点针对训练状态数据,按照新 的通信拓扑执行训练任务。
在一种实施方式中,训练任务执行模块,包括:
第二通信拓扑重建子模块,用于在减少训练节点的数量情况下,控制主节点基于减少后的训练节点构建新的通信拓扑,并将新的通信拓扑同步于调整后的训练节点;
第二训练任务执行子模块,用于算力平台根据弹性伸缩策略将减少后的训练节点调度至对应的物理节点,以使物理节点针对训练状态数据,按照新的通信拓扑执行训练任务。
在一种实施方式中,还包括:
数据存储模块,用于控制主节点存储训练状态数据至数据库中;
容错恢复模块,用于在训练节点执行训练任务失败的情况下,重新启动训练节点,并加载数据库中的训练状态数据,以恢复执行训练任务。
在一种实施方式中,还包括:
索引建立模块,用于控制主节点针对多个数据分区建立分区索引,数据分区是对训练过程中所需的训练元数据集合进行划分得到的;
数据分区配置模块,用于在主节点接收训练节点发送的数据读取请求的情况下,控制主节点执行利用分区索引为训练节点配置数据分区的步骤。
在一种实施方式中,还包括:
数据管理模块,用于记录各个数据分区被读取的次数,并在训练节点执行训练任务时,分配被读取次数小于阈值的数据分区。
第三方面,提供了一种电子设备,包括:
至少一个处理器;以及
与至少一个处理器通信连接的存储器;其中,
存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行上述任一项的方法。
第四方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,计算机指令用于使计算机执行上述任一项的方法。
上述申请中的一个实施例具有如下优点或有益效果:由于根据训练任务对应的集群资源需求来确定弹性伸缩策略,提高了训练任务对应的集群 资源需求的适应性,提高了GPU或CPU资源利用率。由于采用弹性伸缩策略动态调整训练任务对应的训练节点的数量,根据训练状态数据和调整后的训练节点,执行训练任务,所以,能够确保在任何时候加入或删除训练节点的情况下,利用调整后的训练节点都能够正确并高效的执行训练任务。
上述可选方式所具有的其他效果将在下文中结合具体实施例加以说明。
附图用于更好地理解本方案,不构成对本申请的限定。其中:
图1是根据本申请一实施例的一种深度学习模型的分布式训练方法的示意图;
图2是根据本申请一实施例的一种深度学习模型的分布式训练方法的场景示意图;
图3是根据本申请一实施例的另一种深度学习模型的分布式训练方法的示意图;
图4是根据本申请一实施例的另一种深度学习模型的分布式训练方法的示意图;
图5是根据本申请一实施例的另一种深度学习模型的分布式训练方法的示意图;
图6是根据本申请一实施例的另一种深度学习模型的分布式训练装置的示意图;
图7是根据本申请一实施例的另一种深度学习模型的分布式训练装置的示意图;
图8是根据本申请一实施例的另一种深度学习模型的分布式训练装置的示意图;
图9是根据本申请一实施例的另一种深度学习模型的分布式训练装置的示意图;
图10是用来实现本申请实施例的一种深度学习模型的分布式训练方 法的电子设备的框图。
以下结合附图对本申请的示范性实施例做出说明,其中包括本申请实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本申请的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
如图1所示,本实施方式提供了一种深度学习模型的分布式训练方法,包括如下步骤:
步骤S110:获取深度学习平台发送的训练任务对应的训练状态数据;
步骤S120:根据训练任务对应的资源需求生成弹性伸缩策略;
步骤S130:采用弹性伸缩策略动态调整训练任务对应的训练节点的数量;
步骤S140:根据训练状态数据和调整后的训练节点,执行训练任务。
一种示例中,深度学习平台可以包括TensorFlow(基于数据流编程,dataflow programming)原生的PS(参数服务,Parameter server)架构、飞浆(PaddlePaddle)以及Caffe(Convolutional Architecture for Fast Feature Embedding)等。深度学习平台选择训练任务和预训练的神经网络模型,并利用训练元数据对预训练的神经网络模型进行多次训练,得到训练好的神经网络模型。其中,训练元数据包括:预训练的神经网络模型的参数、数据集索引以及参数的更新轮次等。例如,创建多个mini-batch(小批数据集),对每一个mini-batch,采用梯度下降法来对参数(例如,权重等参数)进行多次更新,最终得到训练好的参数,进而得到训练好的神经网络模型。在训练的过程中,在完成第N轮参数更新之后,计算梯度,训练状态数据包括梯度和更新轮次。深度学习平台(TensorFlow)将训练任务对应的训练状态数据发送至弹性伸缩装置。
如图2所示,弹性伸缩装置包括训练任务管理模块、弹性伸缩调度模块、容错恢复模块、数据传输模块以及数据管理模块。集群资源指的是CPU资源或GPU资源。集群资源需求可以包括用户发送的资源需求、闲置资源、更高 级别的训练任务所需的资源、故障节点所释放资源等多种情况下的需求。由于不同的训练任务所需要的集群资源需求可能不同,或者同一训练任务在不同阶段或者状况下的集群资源需求也可能不同。所以,弹性伸缩调度模块根据训练任务对应的集群资源需求生成弹性伸缩策略。弹性伸缩策略包括训练节点的增加或减少的策略。不同的集群资源需求对应不同的弹性伸缩策略。
TensorFlow中的所有计算都会被转化为计算图上的节点,即训练节点。例如,TensorFlow集群中的训练节点包括参数服务器(parameter server)和工作服务器(worker)。训练任务管理模块对所有的训练节点进行管理,对于每个训练任务,都会在执行训练任务的全部训练节点中选出主节点。主节点管理剩余的训练节点,例如,主节点监控工作服务器(worker)执行训练任务,工作服务器(worker)的训练进度,构建工作服务器(worker)之间的通信拓扑,保存不同的工作服务器(worker)中模型训练的训练元数据。训练元数据包括模型参数、数据集索引、模型参数更新轮次等。
弹性伸缩调度模块获取深度学习平台(TensorFlow)发送的训练状态数据,并将训练状态数据和弹性伸缩策略发送至训练任务对应的主节点。训练任务管理模块控制主节点执行根据调整后的训练节点的数量,重新构建计算图的步骤。例如,弹性伸缩策略为增加训练节点的情况下,在不停止原有计算图的情况下,添加新的训练节点,重新构建计算图。弹性伸缩策略为减少训练节点的情况下,在不停止原有计算图的情况下,删除训练节点,重新构建计算图。可以预先设置重新构建计算图所需的时间,有效降低由于弹性伸缩策略动态调整训练节点的数量而产生的延时。
算力平台采用弹性伸缩策略,来动态调整训练任务对应的训练节点的数量。算力平台可以包括K8S系统(Kubernetes,容器集群管理系)等GPU集群调度管理系统。K8S系统为调整后的训练节点分配CPU或GPU的集群资源。K8S系统采用弹性伸缩策略动态增加或删除训练节点。K8S系统的物理节点包括master节点(主节点)和node节点(计算节点),master节点上的调度器根据弹性伸缩策略,将调整后的训练节点(worker)调度到node节点上。由于前面已经确定了调整后的训练节点对应的新的计算图,所以,在node节点上,针对训练状态数据,按照新的通信拓扑执行训练任 务。
本实施方式中,弹性伸缩装置设计为TensorFlow和K8S之间的模块。由于弹性伸缩装置根据训练任务对应的集群资源需求来确定弹性伸缩策略,提高了训练任务对应的集群资源需求的适应性,提高了GPU资源利用率。由于采用弹性伸缩策略动态调整训练任务对应的训练节点的数量,根据训练状态数据和调整后的训练节点,执行训练任务,所以,能够确保在任何时候加入或删除训练节点的情况下,能够确保在任何时候加入或删除训练节点的情况下,利用调整后的训练节点都能够正确并高效的执行训练任务。
在一种实施方式中,如图3所示,步骤S110包括:
步骤S111:获取深度学习平台发送的第一应用程序接口,第一应用程序接口是深度学习平台根据用户发送的调用指令调用得到的;
其中,第一应用程序接口包括训练状态数据,训练状态数据包括梯度和更新轮次N(N大于或等于1),梯度是调整前的训练节点完成第N轮参数更新之后计算得到的。
一种示例中,将弹性伸缩装置作为一个库引入到Python中。深度学习平台根据用户发送的调用指令调用第一应用程序接口,并将第一应用程序接口发送至弹性伸缩装置,使得弹性伸缩调度模块接收第一应用程序。具有高可移植性,面向集群及深度学习框架提供简单的API,可适应多种GPU集群管理调度方案及深度学习框架。
本实施方式中,深度学习平台通过调用第一应用程序的方式将训练状态数据发送至弹性伸缩装置,有效避免对深度学习平台的侵入式修改。
在一种实施方式中,如图3所示,步骤S120,包括:
步骤S121:根据用户发送的集群资源需求生成第一弹性伸缩策略,第一弹性伸缩策略包括增加或减少训练节点的数量。
一种示例中,在显示界面中,具有集群资源需求的设置按键,用户可以根据训练任务适应性的设置集群资源需求。响应于用户点击按键的指令,弹性伸缩调度模块用于根据用户发送的集群资源需求生成第一弹性伸缩策略,第一弹性伸缩策略包括增加或减少训练节点的数量。弹性伸缩调度 模块将第一弹性伸缩策略发送至算力平台,例如K8S系统,算力平台根据第一伸缩策略为增加的训练节点分配CPU或GPU资源,或者获取减少的训练节点释放的CPU或GPU资源。
本实施方式中,通过用户发送的集群资源需求来增加或减少训练节点的数量,使得深度学习模型的分布式训练过程中对集群资源需求的灵活性和适应性。
在一种实施方式中,如图3所示,步骤S120,包括:
步骤S122:对集群资源进行监控,确定闲置资源,并根据闲置资源生成第二弹性伸缩策略,第二弹性伸缩策略包括增加训练节点的数量。
本实施方式中,弹性伸缩调度模块对集群资源进行监控,确定闲置资源,并根据闲置资源的大小增加对应数量的训练节点,得到第二弹性伸缩策略。弹性伸缩调度模块将第二弹性伸缩策略发送至算力平台,例如K8S系统,算力平台根据第二伸缩策略将闲置的CPU或GPU资源分配给增加的训练节点,有效提高闲置资源的利用率。
在一种实施方式中,如图3所示,步骤S120,包括:
步骤S123:对训练任务对应的训练节点进行监控,确定故障节点,并根据故障节点所释放的集群资源生成第三弹性伸缩策略,第三弹性伸缩策略包括删除故障节点。
本实施方式中,由于故障节点无法执行训练任务,所以将故障节点删除,以释放对应的集群资源,得到第三弹性伸缩策略。弹性伸缩调度模块将第三弹性伸缩策略发送至算力平台,例如K8S系统,算力平台根据第三伸缩策略将释放的CPU或GPU资源返回至深度学习平台,以便于其它训练任务再次使用,有效提高了CPU或GPU资源的利用率。
在一种实施方式中,如图3所示,步骤S120,包括:
步骤S124:根据优先级大于阈值的训练任务所需的集群资源,生成第四弹性伸缩策略,第四弹性伸缩策略包括减少训练节点的数量。
本实施方式中,由于优先级较高的训练任务可能需要大量集群资源, 所以,根据优先级大于阈值的训练任务所需的集群资源减少训练节点的数量,释放已减少的训练节点对应的CPU或GPU资源。弹性伸缩调度模块将第四弹性伸缩策略发送至算力平台,例如K8S系统,算力平台根据第四伸缩策略将释放的CPU或GPU资源返回至深度学习平台,以便于优先级较高的训练任务使用,有效提高了CPU或GPU资源的适应性。
在一种实施方式中,如图3所示,步骤S130包括:
步骤S131:调用第二应用程序接口,并将训练状态数据和第二应用程序接口发送至算力平台,以使算力平台采用弹性伸缩策略动态调整训练任务对应的训练节点的数量;其中,第二应用程序接口包括第一弹性伸缩策略、第二弹性伸缩策略、第三弹性伸缩策略以及第四弹性伸缩策略中的至少一种。
一种示例中,弹性伸缩调度模块调用第二应用程序接口,并将第二应用程序接口发送至训练节点中的主节点,主节点将第二应用程序转发至算力平台。算力平台根据第二应用程序中的弹性伸缩策略增加或删除训练节点,用户方面并无明显感知,具有高可移植性,可适应多种GPU集群管理调度系统和深度学习平台。
在一种实施方式中,如图4所示,步骤140,包括:
步骤141:在训练任务启动的情况下,控制调整前的训练节点执行主节点选举进程,以确定主节点,并控制主节点执行构建调整前的训练节点的通信拓扑的步骤。
一种示例中,当一个训练任务启动时,训练任务管理模块控制调整前的每个训练节点执行主节点选举过程,以确定主节点。每一个加入或退出的训练节点都需要通知主节点。将主节点的地址作为连接信息,训练节点通过请求该信息与主节点连接。对于环状的分布式训练结构(ringallreduce),每个工作服务器(worker)通过向相邻工作服务器(worker)注册形成连接,每次只需要保存起始的工作服务器(worker)的地址信息即可。对于参数管理的分布式训练结构(parameter server worker),所有的工作服务器(worker)向参数服务器(parameter server)注册,保存参数服务器(parameter server)的地 址信息,并将该地址信息写入ETCD,并成为主节点。
主节点需要定期刷新其地址信息。如果主节点没有定期刷新更新地址信息,则该地址信息将自动过期。如果连接信息无效或过期,训练节点再次进行主节点选举,可以随机选择一个训练节点,将选择的训练节点的地址写入ETCD(分布式一致性键值存储系统),并将随机选择的训练节点作为主节点。
充当主节点角色的训练节点可能会因为计算图的扩张或缩小而退出。因此,在每个训练节点中都运行一个主节点发现/选举进程,当主节点对所有训练节点不可见时,该进程会启动选举产生一个新的主节点。在选择了一个主节点之后,其他训练节点将连接到该主节点并发送注册消息以加入训练任务。在训练任务执行期间,主节点将从每个mini-batch训练之后的梯度同步请求中推断出训练节点进程的活跃程度。
在一种实施方式中,如图4所示,步骤140,包括:
步骤142:在增加训练节点的情况下,控制主节点执行基于调整前的训练节点的通信拓扑和新增加的训练节点,构建新的通信拓扑,并将新的通信拓扑和训练状态数据同步于调整后的训练节点的步骤;
步骤143:算力平台根据弹性伸缩策略将增加后的训练节点调度至对应的物理节点,以使物理节点针对训练状态数据,按照新的通信拓扑执行训练任务。
一种示例中,为了减少并行调整训练节点的时间,弹性伸缩调度模块可以使得整个计算在不停止的情况下构建计算图,并在集群资源充足的情况下,添加新的训练节点进程。在增加训练节点的情况下,向正在运行的训练任务添加新的训练节点进程需要三个步骤:第一、执行上下文准备;第二、通信拓扑构建;第三、模型准备。执行上下文准备包括加载动态库,例如cuDNN(用于深度神经网络的GPU加速库)、cuBLAS(CUDA标准的线代库,CUDA,Compute Unified Device Architecture,通用并行计算架构),准备训练状态数据,在GPU内存和CPU内存上分配空间等,耗时最长的步骤。类似TensorFlow这样的声明性框架也需要构建和优化计算图。对于通信拓扑构建,新的训练节点加入需要链接至主节点进程,所有的训练节点都需要形成一个新的环形拓扑来进行模型参数的同步。新的训练节点在开始训练之前还需要同步至最 新的模型。
当新的训练节点加入时,不需要停止调整前的训练节点的进程。每个新的训练节点线程启动两个独立的线程,一个主线程和一个后台线程。主线程执行上下文准备,同时后台线程执行主节点选举线程并向主节点发送注册请求。主节点在接收到新训练节点的注册请求后,训练任务管理模块控制主节点构建一个新的通信拓扑,并将其广播给所有训练节点。此时调整前的训练节点的通信拓扑还没有被破坏,因此,调整前的训练节点可以继续训练而不受影响。当新的训练节点进程完成执行上下文准备并接收到新的通信拓扑时,它会向主节点发送一个准备完成的消息。主节点接收到准备完成的消息后,监控调整前的训练节点的通信拓扑,训练节点完成mini-batch的t轮的训练之后,由主节点随机选择一个训练节点将其参数同步给新的训练节点,并通知训练任务的所有训练节点按照新的通信拓扑组织,并执行训练任务。
在一种实施方式中,如图4所示,步骤140,包括:
步骤144:在减少训练节点的数量情况下,控制主节点基于调整后的训练节点构建新的通信拓扑,并将新的通信拓扑同步于调整后的训练节点;
步骤145:算力平台根据弹性伸缩策略将减少后的训练节点调度至对应的物理节点,以使物理节点针对训练状态数据,按照新的通信拓扑执行训练任务。
在一种示例中,在减少训练节点的数量情况下,例如删除故障点或根据用户需求减少训练节点等,在一个mini-batch训练结束时,K8S系统终止并剔除训练节点,保证不影响调整前的训练节点的执行任务过程。主节点在接收到减少训练节点的请求时,训练任务管理模块控制主节点将构造一个新的通信拓扑,并将其广播给其余的训练节点。同时主节点监控调整前的训练节点完成t轮的训练之后,再允许训练节点退出。剩余训练节点按照新的通信拓扑开始训练。如果此时主节点离开,它将删除其与训练节点连接的地址,以便训练节点可以选举新主节点。旧的主节点将在退出前将训练元数据发送给新的主节点,其余所有训练节点将在预定时间连接到新的主节点。在正常退出的情况下,其余训练节点不需要停下来等待训练节点退出,因此延时可以忽略不计。
在一种实施方式中,如图4所示,还包括:
步骤S161:控制主节点存储训练状态数据至数据库中;
步骤S162:在训练节点执行训练任务失败的情况下,重新启动训练节点,并加载数据库中的训练状态数据,以恢复执行训练任务。
一种示例中,训练任务管理模块控制主节点定期将训练状态数据写入数据库中,例如,持久化存储库(ETCD)。如果一个训练节点进程在完成所有同步之前失败,那么其他训练节点进程上的模型只能完成部分更新。所以,当训练失败时,容错恢复模块可以通过加载训练状态数据,恢复训练任务。
本实施方式中,提出一致性恢复策略使得训练从故障中恢复,定期存储的训练状态数据可以一定程度上确保模型更新的一致性。近似性恢复粗略则是基于现有的训练节点构建新的通信拓扑,继续训练。
在一种实施方式中,如图5所示,还包括:
步骤S171:控制主节点针对多个数据分区建立分区索引,数据分区是对训练过程中所需的训练元数据集合进行划分得到的;
步骤S172:在主节点接收训练节点发送的数据读取请求的情况下,控制主节点执行利用分区索引为训练节点配置数据分区的步骤。
一种示例中,数据集在逻辑上被划分为多个数据分区,训练任务管理模块控制主节点建立数据集的分区索引,当一个训练节点需要一个新的数据分区时,向主节点发送一个数据读取请求,主节点使用未分配分区的元数据(文件大小、路径、偏移量等)来响应请求,使得训练节点读取未分配分区的数据。按照不同训练节点的训练需求动态地将数据分区分配给训练节点。数据传输模块使得GPU或CPU训练一直在相对饱和的状态。数据传输模块都可以保证每个epoch(一代训练)都可以对数据集进行一次遍历。
为了跟踪数据分配的进度,每个训练节点在其当前任务中记录一个偏移量,该偏移量指示下一个batch(数据集)应该从当前数据分区的何处开始读取。训练节点在每次mini-batch训练结束时,向主节点同步偏移量和模型参数。当新的训练节点加入一个训练任务时,主节点只需为他们分配一些未处理的分区数据。当一个训练节点进程在正常退出状态下离开时,它向主节点报告当前分区的元数据及其在分区中的偏移量,以便主节点可以将此分区中 剩余的未处理数据分配给另一个训练节点进程。如果主节点需要离开,它会在新主节点退出之前将分区索引列表和所有训练节点的训练进度发送给新主节点。主节点同时也会将数据分区的索引列表和不同训练节点对数据的使用进度一起存入持久化存储库(ETCD)中,以便在训练失败时及时的恢复训练任务。
在一种实施方式中,如图5所示,还包括:
步骤S180:记录各个数据分区被读取的次数,并在训练节点执行训练任务时,分配被读取次数小于阈值的数据分区。
一种示例中,为了跟踪数据分配的进度,指定特定的数据管理模块,数据管理模块被弹性调度模块监控,主要记录每个数据块被读取的情况,例如读取次数,随着训练节点的数据读取而更新,当新的训练节点加入一个训练任务时,由数据管理模块为训练节点分配被读取次数较少的分区数据。
在另一种具体实施方式中,如图6所示,提供了一种深度学习模型的分布式训练装置,包括:
训练状态数据获取模块110,用于获取深度学习平台发送的训练任务对应的训练状态数据;
弹性伸缩策略生成模块120,用于根据训练任务对应的集群资源需求生成弹性伸缩策略;
训练节点数量调整模块130,用于采用弹性伸缩策略动态调整训练任务对应的训练节点的数量;
训练任务执行模块140,用于根据训练状态数据和调整后的训练节点,执行训练任务。
在一种实施方式中,如图7所示,训练状态数据获取模块110,包括:
第一应用程序发送子模块111,用于获取深度学习平台发送的第一应用程序接口,第一应用程序接口是深度学习平台根据用户发送的调用指令调用得到的;
其中,第一应用程序接口包括训练状态数据,训练状态数据包括梯度和更新轮次N(N大于或等于1),梯度是调整前的训练节点完成第N轮参数更新之后计算得到的。
在一种实施方式中,如图7所示,弹性伸缩策略生成模块120,包括:
第一策略生成子模块121,用于根据用户发送的集群资源需求生成第一弹性伸缩策略,第一弹性伸缩策略包括增加或减少训练节点的数量。
在一种实施方式中,弹性伸缩策略生成模块120,包括:
第二策略生成子模块122,用于对集群资源进行监控,确定闲置资源,并根据闲置资源生成第二弹性伸缩策略,第二弹性伸缩策略包括增加训练节点的数量。
在一种实施方式中,如图7所示,弹性伸缩策略生成模块120,包括:
第三策略生成子模块123,用于对训练任务对应的训练节点进行监控,确定故障节点,并根据故障节点所释放的集群资源生成第三弹性伸缩策略,第三弹性伸缩策略包括删除故障节点。
在一种实施方式中,如图7所示,弹性伸缩策略生成模块120,包括:
第四策略生成子模块124,用于根据优先级大于阈值的训练任务所需的集群资源,生成第四弹性伸缩策略,第四弹性伸缩策略包括减少训练节点的数量。
在一种实施方式中,如图7所示,训练节点数量调整模块130,包括:
第二应用程序发送子模块131,用于调用第二应用程序接口,并将第二应用程序接口发送至算力平台,以使算力平台采用弹性伸缩策略动态调整训练任务对应的训练节点的数量;其中,第二应用程序接口包括第一弹性伸缩策略、第二弹性伸缩策略、第三弹性伸缩策略以及第四弹性伸缩策略中的至少一种。
在一种实施方式中,如图8所示,训练任务执行模块140,包括:
主节点选举子模块141,在训练任务启动的情况下,控制调整前的训练节点执行主节点选举进程,以确定主节点,并控制主节点执行构建调整前的训练节点的通信拓扑的步骤。
在一种实施方式中,如图8所示,训练任务执行模块140,包括:
第一通信拓扑重建子模块142,用于主节点执行基于调整前的训练节点的通信拓扑和新增加的训练节点,构建新的通信拓扑,并将新的通信拓扑和训练状态数据同步于调整后的训练节点的步骤;
第一训练任务执行子模块143,用于算力平台根据弹性伸缩策略将增加后的训练节点调度至对应的物理节点,以使物理节点针对训练状态数据,按照新的通信拓扑执行训练任务。
在一种实施方式中,如图8所示,训练任务执行模块140,包括
第二通信拓扑重建子模块144,用于在减少训练节点的数量情况下,控制主节点基于减少后的训练节点构建新的通信拓扑,并将新的通信拓扑同步于调整后的训练节点;
第二训练任务执行子模块145,用于算力平台根据弹性伸缩策略将减少后的训练节点调度至对应的物理节点,以使物理节点针对训练状态数据,按照新的通信拓扑执行训练任务。
在一种实施方式中,如图8所示,还包括:
数据存储模块161,用于控制主节点存储训练状态数据至数据库中;
容错恢复模块162,用于在训练节点执行训练任务失败的情况下,重新启动训练节点,并加载数据库中的训练状态数据,以恢复执行训练任务。
在一种实施方式中,如图9所示,还包括:
索引建立模块171,用于控制主节点针对多个数据分区建立分区索引,数据分区是对训练过程中所需的训练元数据集合进行划分得到的;
数据分区配置模块172,用于在主节点接收训练节点发送的数据读取请求的情况下,控制主节点执行利用分区索引为训练节点配置数据分区的步骤。
在一种实施方式中,如图9所示,还包括:
数据管理模块180,用于记录各个数据分区被读取的次数,并在训练节点执行训练任务时,分配被读取次数小于阈值的数据分区。
请实施例各装置中的各模块的功能可以参见上述方法中的对应描述,在此不再赘述。
根据本申请的实施例,本申请还提供了一种电子设备和一种可读存储介质。
如图10所示,是根据本申请实施例的一种深度学习模型的分布式训练方法的电子设备的框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片 式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本申请的实现。
如图10所示,该电子设备包括:一个或多个处理器1001、存储器1002,以及用于连接各部件的接口,包括高速接口和低速接口。各个部件利用不同的总线互相连接,并且可以被安装在公共主板上或者根据需要以其它方式安装。处理器可以对在电子设备内执行的指令进行处理,包括存储在存储器中或者存储器上以在外部输入/输出装置(诸如,耦合至接口的显示设备)上显示GUI的图形信息的指令。在其它实施方式中,若需要,可以将多个处理器和/或多条总线与多个存储器和多个存储器一起使用。同样,可以连接多个电子设备,各个设备提供部分必要的操作(例如,作为服务器阵列、一组刀片式服务器、或者多处理器系统)。图10中以一个处理器1001为例。
存储器1002即为本申请所提供的非瞬时计算机可读存储介质。其中,存储器存储有可由至少一个处理器执行的指令,以使至少一个处理器执行本申请所提供的一种深度学习模型的分布式训练方法。本申请的非瞬时计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行本申请所提供的一种深度学习模型的分布式训练方法。
存储器1002作为一种非瞬时计算机可读存储介质,可用于存储非瞬时软件程序、非瞬时计算机可执行程序以及模块,如本申请实施例中的一种深度学习模型的分布式训练方法对应的程序指令/模块(例如,附图6所示的训练状态数据获取模块110、弹性伸缩策略生成模块120、训练节点数量调整模块130、训练任务执行模块140)。处理器1001通过运行存储在存储器1002中的非瞬时软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例中的一种深度学习模型的分布式训练方法。
存储器1002可以包括存储程序区和存储数据区,其中,存储程序区 可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据一种深度学习模型的分布式训练方法的电子设备的使用所创建的数据等。此外,存储器1002可以包括高速随机存取存储器,还可以包括非瞬时存储器,例如至少一个磁盘存储器件、闪存器件、或其他非瞬时固态存储器件。在一些实施例中,存储器1002可选包括相对于处理器1001远程设置的存储器,这些远程存储器可以通过网络连接至一种深度学习模型的分布式训练方法的电子设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
一种深度学习模型的分布式训练方法的电子设备还可以包括:输入装置1003和输出装置1004。处理器1001、存储器1002、输入装置1003和输出装置1004可以通过总线或者其他方式连接,图10中以通过总线连接为例。
输入装置1003可接收输入的数字或字符信息,以及产生与一种方法的电子设备的用户设置以及功能控制有关的键信号输入,例如触摸屏、小键盘、鼠标、轨迹板、触摸板、指示杆、一个或者多个鼠标按钮、轨迹球、操纵杆等输入装置。输出装置1004可以包括显示设备、辅助照明装置(例如,LED)和触觉反馈装置(例如,振动电机)等。该显示设备可以包括但不限于,液晶显示器(LCD)、发光二极管(LED)显示器和等离子体显示器。在一些实施方式中,显示设备可以是触摸屏。
此处描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、专用ASIC(专用集成电路)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
这些计算程序(也称作程序、软件、软件应用、或者代码)包括可编程处理器的机器指令,并且可以利用高级过程和/或面向对象的编程语言、 和/或汇编/机器语言来实施这些计算程序。如本文使用的,术语“机器可读介质”和“计算机可读介质”指的是用于将机器指令和/或数据提供给可编程处理器的任何计算机程序产品、设备、和/或装置(例如,磁盘、光盘、存储器、可编程逻辑装置(PLD)),包括,接收作为机器可读信号的机器指令的机器可读介质。术语“机器可读信号”指的是用于将机器指令和/或数据提供给可编程处理器的任何信号。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本申请中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本申请公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本申请保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本申请的精神和原则之内所作的修改、等同替换和改进等,均应包含在本申请保护范围之内。
Claims (28)
- 一种深度学习模型的分布式训练方法,其特征在于,包括:获取深度学习平台发送的训练任务对应的训练状态数据;根据所述训练任务对应的集群资源需求生成弹性伸缩策略;采用所述弹性伸缩策略动态调整所述训练任务对应的训练节点的数量;根据所述训练状态数据和调整后的训练节点,执行所述训练任务。
- 根据权利要求1所述的方法,其特征在于,所述获取深度学习平台发送的训练任务对应的训练状态数据,包括:获取所述深度学习平台发送的第一应用程序接口,所述第一应用程序接口是所述深度学习平台根据用户发送的调用指令调用得到的;其中,所述第一应用程序接口包括所述训练状态数据,所述训练状态数据包括梯度和更新轮次N(N大于或等于1),所述梯度是调整前的训练节点完成第N轮参数更新之后计算得到的。
- 根据权利要求1所述的方法,其特征在于,根据所述训练任务对应的集群资源需求生成弹性伸缩策略,包括:根据用户发送的集群资源需求生成第一弹性伸缩策略,所述第一弹性伸缩策略包括增加或减少所述训练节点的数量。
- 根据权利要求1所述的方法,其特征在于,根据所述训练任务对应的集群资源需求生成弹性伸缩策略,包括:对所述集群资源进行监控,确定闲置资源,并根据所述闲置资源生成第二弹性伸缩策略,所述第二弹性伸缩策略包括增加所述训练节点的数量。
- 根据权利要求1所述的方法,其特征在于,根据所述训练任务对应的集群资源需求生成弹性伸缩策略,包括:对所述训练任务对应的训练节点进行监控,确定故障节点,并根据所述故障节点所释放的集群资源生成第三弹性伸缩策略,所述第三弹性伸缩策略包括删除所述故障节点。
- 根据权利要求1所述的方法,其特征在于,根据所述训练任务对应的 集群资源需求生成弹性伸缩策略,包括:根据优先级大于阈值的训练任务所需的集群资源,生成第四弹性伸缩策略,所述第四弹性伸缩策略包括减少所述训练节点的数量。
- 根据权利要求3-6任一项所述的方法,其特征在于,采用所述弹性伸缩策略动态调整所述训练任务对应的训练节点的数量,包括:调用第二应用程序接口,并将所述第二应用程序接口发送至算力平台,以使所述算力平台采用所述弹性伸缩策略动态调整所述训练任务对应的训练节点的数量;其中,所述第二应用程序接口包括所述第一弹性伸缩策略、所述第二弹性伸缩策略、所述第三弹性伸缩策略以及所述第四弹性伸缩策略中的至少一种。
- 根据权利要求7所述的方法,其特征在于,根据所述训练状态数据和调整后的训练节点,执行所述训练任务,包括:在所述训练任务启动的情况下,控制调整前的训练节点执行主节点选举进程,以确定主节点,并控制所述主节点执行构建调整前的训练节点的通信拓扑的步骤。
- 根据权利要求8所述的方法,其特征在于,根据所述训练状态数据和调整后的训练节点,执行所述训练任务,包括:在增加所述训练节点的情况下,控制所述主节点执行基于所述调整前的训练节点的通信拓扑和新增加的训练节点,构建新的通信拓扑,并将所述新的通信拓扑和所述训练状态数据同步于所述调整后的训练节点的步骤;所述算力平台根据所述弹性伸缩策略将增加后的训练节点调度至对应的物理节点,以使所述物理节点针对所述训练状态数据,按照所述新的通信拓扑执行所述训练任务。
- 根据权利要求8所述的方法,其特征在于,根据所述训练状态数据和调整后的训练节点,执行所述训练任务,包括:在减少所述训练节点的数量情况下,控制所述主节点基于调整后的训练节点构建新的通信拓扑,并将所述新的通信拓扑同步于所述调整后的训练节点;所述算力平台根据所述弹性伸缩策略将减少后的训练节点调度至对应的 物理节点,以使所述物理节点针对所述训练状态数据,按照所述新的通信拓扑执行所述训练任务。
- 根据权利要求8所述的方法,其特征在于,还包括:控制所述主节点存储所述训练状态数据至数据库中;在所述训练节点执行所述训练任务失败的情况下,重新启动所述训练节点,并加载所述数据库中的训练状态数据,以恢复执行所述训练任务。
- 根据权利要求1所述的方法,其特征在于,还包括:控制所述主节点针对多个数据分区建立分区索引,所述数据分区是对训练过程中所需的训练元数据集合进行划分得到的;在所述主节点接收所述训练节点发送的数据读取请求的情况下,控制所述主节点执行利用所述分区索引为所述训练节点配置数据分区的步骤。
- 根据权利要求11所述的方法,其特征在于,还包括:记录各个所述数据分区被读取的次数,并在所述训练节点执行所述训练任务时,分配被读取次数小于阈值的数据分区。
- 一种深度学习模型的分布式训练装置,其特征在于,包括:训练状态数据获取模块,用于获取深度学习平台发送的训练任务对应的训练状态数据;弹性伸缩策略生成模块,用于根据所述训练任务对应的集群资源需求生成弹性伸缩策略;训练节点数量调整模块,用于采用所述弹性伸缩策略动态调整所述训练任务对应的训练节点的数量;训练任务执行模块,用于根据所述训练状态数据和调整后的训练节点,执行所述训练任务。
- 根据权利要求14所述的装置,其特征在于,所述训练状态数据获取模块,包括:第一应用程序发送子模块,用于获取所述深度学习平台发送的第一应用程序接口,所述第一应用程序接口是所述深度学习平台根据用户发送的调用指令调用得到的;其中,所述第一应用程序接口包括所述训练状态数据,所述训练状态数 据包括梯度和更新轮次N(N大于或等于1),所述梯度是调整前的训练节点完成第N轮参数更新之后计算得到的。
- 根据权利要求14所述的装置,其特征在于,所述弹性伸缩策略生成模块,包括:第一策略生成子模块,用于根据用户发送的集群资源需求生成第一弹性伸缩策略,所述第一弹性伸缩策略包括增加或减少所述训练节点的数量。
- 根据权利要求14所述的装置,其特征在于,所述弹性伸缩策略生成模块,包括:第二策略生成子模块,用于对所述集群资源进行监控,确定闲置资源,并根据所述闲置资源生成第二弹性伸缩策略,所述第二弹性伸缩策略包括增加所述训练节点的数量。
- 根据权利要求14所述的装置,其特征在于,所述弹性伸缩策略生成模块,包括:第三策略生成子模块,用于对所述训练任务对应的训练节点进行监控,确定故障节点,并根据所述故障节点所释放的集群资源生成第三弹性伸缩策略,所述第三弹性伸缩策略包括删除所述故障节点。
- 根据权利要求14所述的装置,其特征在于,所述弹性伸缩策略生成模块,包括:第四策略生成子模块,用于根据优先级大于阈值的训练任务所需的集群资源,生成第四弹性伸缩策略,所述第四弹性伸缩策略包括减少所述训练节点的数量。
- 根据权利要求16-19所述的装置,其特征在于,所述训练节点数量调整模块,包括:第二应用程序发送子模块,用于调用第二应用程序接口,并将所述第二应用程序接口发送至算力平台,以使所述算力平台采用所述弹性伸缩策略动态调整所述训练任务对应的训练节点的数量;其中,所述第二应用程序接口包括所述第一弹性伸缩策略、所述第二弹性伸缩策略、所述第三弹性伸缩策略以及所述第四弹性伸缩策略中的至少一种。
- 根据权利要求20所述的装置,其特征在于,所述训练任务执行模块 包括:主节点选举子模块,在所述训练任务启动的情况下,控制调整前的训练节点执行主节点选举进程,以确定主节点,并控制所述主节点执行构建调整前的训练节点的通信拓扑的步骤。
- 根据权利要求21所述的装置,其特征在于,所述训练任务执行模块,包括:第一通信拓扑重建子模块,用于在增加所述训练节点的情况下,所述主节点执行基于所述调整前的训练节点的通信拓扑和新增加的训练节点,构建新的通信拓扑,并将所述新的通信拓扑和所述训练状态数据同步于所述调整后的训练节点的步骤;第一训练任务执行子模块,用于所述算力平台根据所述弹性伸缩策略将增加后的训练节点调度至对应的物理节点,以使所述物理节点针对所述训练状态数据,按照所述新的通信拓扑执行所述训练任务。
- 根据权利要求21所述的装置,其特征在于,所述训练任务执行模块,包括:第二通信拓扑重建子模块,用于在减少所述训练节点的数量情况下,控制所述主节点基于减少后的训练节点构建新的通信拓扑,并将所述新的通信拓扑同步于所述调整后的训练节点;第二训练任务执行子模块,用于所述算力平台根据所述弹性伸缩策略将所述减少后的训练节点调度至对应的物理节点,以使所述物理节点针对所述训练状态数据,按照所述新的通信拓扑执行所述训练任务。
- 根据权利要求21所述的装置,其特征在于,还包括:数据存储模块,用于控制所述主节点存储所述训练状态数据至数据库中;容错恢复模块,用于在所述训练节点执行所述训练任务失败的情况下,重新启动所述训练节点,并加载所述数据库中的训练状态数据,以恢复执行所述训练任务。
- 根据权利要求21所述的装置,其特征在于,还包括:索引建立模块,用于控制所述主节点针对多个数据分区建立分区索引,所述数据分区是对训练过程中所需的训练元数据集合进行划分得到的;数据分区配置模块,用于在所述主节点接收所述训练节点发送的数据读取请求的情况下,控制所述主节点执行利用所述分区索引为所述训练节点配置数据分区的步骤。
- 根据权利要求24所述的装置,其特征在于,还包括:数据管理模块,用于记录各个所述数据分区被读取的次数,并在所述训练节点执行所述训练任务时,分配被读取次数小于阈值的数据分区。
- 一种电子设备,其特征在于,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-13中任一项所述的方法。
- 一种存储有计算机指令的非瞬时计算机可读存储介质,其特征在于,所述计算机指令用于使所述计算机执行权利要求1-13中任一项所述的方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010806430.8 | 2020-08-12 | ||
CN202010806430.8A CN112000473A (zh) | 2020-08-12 | 2020-08-12 | 深度学习模型的分布式训练方法以及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2022033024A1 true WO2022033024A1 (zh) | 2022-02-17 |
Family
ID=73463950
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/CN2021/080496 WO2022033024A1 (zh) | 2020-08-12 | 2021-03-12 | 深度学习模型的分布式训练方法以及装置 |
Country Status (3)
Country | Link |
---|---|
CN (1) | CN112000473A (zh) |
TW (1) | TWI783355B (zh) |
WO (1) | WO2022033024A1 (zh) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114675965A (zh) * | 2022-03-10 | 2022-06-28 | 北京百度网讯科技有限公司 | 联邦学习方法、装置、设备和介质 |
CN114741175A (zh) * | 2022-04-15 | 2022-07-12 | 支付宝(杭州)信息技术有限公司 | 任务执行方法、装置、中心节点和下游节点设备 |
CN114756385A (zh) * | 2022-06-16 | 2022-07-15 | 合肥中科类脑智能技术有限公司 | 一种深度学习场景下的弹性分布式训练方法 |
CN114764601A (zh) * | 2022-05-05 | 2022-07-19 | 北京瑞莱智慧科技有限公司 | 一种梯度数据融合方法、装置及存储介质 |
CN115031363A (zh) * | 2022-05-27 | 2022-09-09 | 约克广州空调冷冻设备有限公司 | 预测空调性能的方法和装置 |
CN115829053A (zh) * | 2022-11-25 | 2023-03-21 | 北京百度网讯科技有限公司 | 模型运行策略确定方法、装置、电子设备以及存储介质 |
CN116089477A (zh) * | 2023-04-10 | 2023-05-09 | 荣耀终端有限公司 | 分布式训练方法及系统 |
CN116301796A (zh) * | 2023-02-15 | 2023-06-23 | 四川省气象探测数据中心 | 一种基于人工智能技术的气象数据分析系统及方法 |
CN116483546A (zh) * | 2023-06-21 | 2023-07-25 | 苏州浪潮智能科技有限公司 | 分布式训练任务调度方法、装置、设备及存储介质 |
CN116541338A (zh) * | 2023-06-27 | 2023-08-04 | 苏州浪潮智能科技有限公司 | 一种计算系统、模型训练方法、装置及产品 |
CN116934572A (zh) * | 2023-09-18 | 2023-10-24 | 荣耀终端有限公司 | 图像处理方法和设备 |
CN116954873A (zh) * | 2023-09-21 | 2023-10-27 | 浪潮电子信息产业股份有限公司 | 异构计算系统及其算力节点选择方法、装置、设备、介质 |
CN117332878A (zh) * | 2023-10-31 | 2024-01-02 | 慧之安信息技术股份有限公司 | 一种基于自组网系统的模型训练方法和系统 |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112000473A (zh) * | 2020-08-12 | 2020-11-27 | 中国银联股份有限公司 | 深度学习模型的分布式训练方法以及装置 |
CN112463056B (zh) * | 2020-11-28 | 2023-06-09 | 苏州浪潮智能科技有限公司 | 一种多节点分布式训练方法、装置、设备及可读介质 |
TWI756974B (zh) * | 2020-12-09 | 2022-03-01 | 財團法人工業技術研究院 | 機器學習系統及其資源配置方法 |
CN112416602B (zh) * | 2020-12-10 | 2022-09-16 | 清华大学 | 一种分布式数据流资源弹性伸缩增强插件及增强方法 |
CN112463340A (zh) * | 2020-12-10 | 2021-03-09 | 武汉工程大学 | 基于tensorflow的多任务弹性调度方法及系统 |
CN112596863A (zh) * | 2020-12-28 | 2021-04-02 | 南方电网深圳数字电网研究院有限公司 | 监控训练任务的方法、系统及计算机存储介质 |
CN112860400A (zh) * | 2021-02-09 | 2021-05-28 | 山东英信计算机技术有限公司 | 一种处理分布式训练任务的方法、系统、设备及介质 |
CN113032117A (zh) * | 2021-03-10 | 2021-06-25 | 北京百度网讯科技有限公司 | 深度学习框架的训练方法、装置及存储介质 |
CN115271025A (zh) * | 2021-04-29 | 2022-11-01 | 华为技术有限公司 | 数据处理方法、装置及系统 |
CN113505520A (zh) * | 2021-05-17 | 2021-10-15 | 京东科技控股股份有限公司 | 用于支持异构联邦学习的方法、装置和系统 |
CN117396850A (zh) * | 2021-05-28 | 2024-01-12 | 华为云计算技术有限公司 | 用于为深度学习作业弹性分配资源的系统、方法和介质 |
CN113504966B (zh) * | 2021-06-22 | 2023-10-31 | 中国科学院计算技术研究所 | Gpu集群调度策略模拟方法及gpu集群模拟器 |
CN113326116A (zh) * | 2021-06-30 | 2021-08-31 | 北京九章云极科技有限公司 | 一种数据处理方法和系统 |
CN114936117A (zh) * | 2021-09-02 | 2022-08-23 | 华为技术有限公司 | 模型训练的方法、服务器、芯片以及系统 |
CN114169427B (zh) * | 2021-12-06 | 2022-10-04 | 北京百度网讯科技有限公司 | 基于端到端自适应的分布式训练方法、装置、设备 |
CN114327886B (zh) * | 2021-12-24 | 2022-12-16 | 国家石油天然气管网集团有限公司 | 一种基于大数据深度学习的动态资源调度方法 |
US11811676B2 (en) | 2022-03-30 | 2023-11-07 | International Business Machines Corporation | Proactive auto-scaling |
CN114979141B (zh) * | 2022-05-13 | 2024-04-26 | 北京百度网讯科技有限公司 | 一种任务处理方法、装置、设备以及存储介质 |
CN114820279B (zh) * | 2022-05-18 | 2023-03-24 | 北京百度网讯科技有限公司 | 基于多gpu的分布式深度学习方法、装置及电子设备 |
CN114676795B (zh) * | 2022-05-26 | 2022-08-23 | 鹏城实验室 | 一种深度学习模型的训练方法、装置、设备及存储介质 |
CN116523030B (zh) * | 2023-06-30 | 2023-09-15 | 支付宝(杭州)信息技术有限公司 | 动态调度模型训练资源的方法及装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108874779A (zh) * | 2018-06-21 | 2018-11-23 | 东北大学 | 基于K8s集群建立的依图写诗系统的控制方法 |
CN109559734A (zh) * | 2018-12-18 | 2019-04-02 | 百度在线网络技术(北京)有限公司 | 声学模型训练的加速方法和装置 |
CN110502340A (zh) * | 2019-08-09 | 2019-11-26 | 广东浪潮大数据研究有限公司 | 一种资源动态调整方法、装置、设备及存储介质 |
CN110738322A (zh) * | 2018-07-03 | 2020-01-31 | 杭州海康威视数字技术股份有限公司 | 一种分布式训练方法、装置、设备及系统 |
US20200133731A1 (en) * | 2018-10-30 | 2020-04-30 | Google Llc | Resource Conservation for Containerized Systems |
CN112000473A (zh) * | 2020-08-12 | 2020-11-27 | 中国银联股份有限公司 | 深度学习模型的分布式训练方法以及装置 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11087234B2 (en) * | 2016-01-29 | 2021-08-10 | Verizon Media Inc. | Method and system for distributed deep machine learning |
CN110659127A (zh) * | 2018-06-29 | 2020-01-07 | 杭州海康威视数字技术股份有限公司 | 一种处理任务的方法、装置及系统 |
CN109189401A (zh) * | 2018-07-06 | 2019-01-11 | 曙光信息产业(北京)有限公司 | 一种深度学习框架的部署方法以及系统 |
CN111090456A (zh) * | 2019-12-06 | 2020-05-01 | 浪潮(北京)电子信息产业有限公司 | 一种深度学习开发环境的构建方法、装置、设备及介质 |
-
2020
- 2020-08-12 CN CN202010806430.8A patent/CN112000473A/zh active Pending
-
2021
- 2021-01-26 TW TW110102762A patent/TWI783355B/zh active
- 2021-03-12 WO PCT/CN2021/080496 patent/WO2022033024A1/zh active Application Filing
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108874779A (zh) * | 2018-06-21 | 2018-11-23 | 东北大学 | 基于K8s集群建立的依图写诗系统的控制方法 |
CN110738322A (zh) * | 2018-07-03 | 2020-01-31 | 杭州海康威视数字技术股份有限公司 | 一种分布式训练方法、装置、设备及系统 |
US20200133731A1 (en) * | 2018-10-30 | 2020-04-30 | Google Llc | Resource Conservation for Containerized Systems |
CN109559734A (zh) * | 2018-12-18 | 2019-04-02 | 百度在线网络技术(北京)有限公司 | 声学模型训练的加速方法和装置 |
CN110502340A (zh) * | 2019-08-09 | 2019-11-26 | 广东浪潮大数据研究有限公司 | 一种资源动态调整方法、装置、设备及存储介质 |
CN112000473A (zh) * | 2020-08-12 | 2020-11-27 | 中国银联股份有限公司 | 深度学习模型的分布式训练方法以及装置 |
Cited By (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114675965B (zh) * | 2022-03-10 | 2023-05-02 | 北京百度网讯科技有限公司 | 联邦学习方法、装置、设备和介质 |
CN114675965A (zh) * | 2022-03-10 | 2022-06-28 | 北京百度网讯科技有限公司 | 联邦学习方法、装置、设备和介质 |
CN114741175A (zh) * | 2022-04-15 | 2022-07-12 | 支付宝(杭州)信息技术有限公司 | 任务执行方法、装置、中心节点和下游节点设备 |
CN114764601A (zh) * | 2022-05-05 | 2022-07-19 | 北京瑞莱智慧科技有限公司 | 一种梯度数据融合方法、装置及存储介质 |
CN114764601B (zh) * | 2022-05-05 | 2024-01-30 | 北京瑞莱智慧科技有限公司 | 一种梯度数据融合方法、装置及存储介质 |
CN115031363A (zh) * | 2022-05-27 | 2022-09-09 | 约克广州空调冷冻设备有限公司 | 预测空调性能的方法和装置 |
CN115031363B (zh) * | 2022-05-27 | 2023-11-28 | 约克广州空调冷冻设备有限公司 | 预测空调性能的方法和装置 |
CN114756385A (zh) * | 2022-06-16 | 2022-07-15 | 合肥中科类脑智能技术有限公司 | 一种深度学习场景下的弹性分布式训练方法 |
CN115829053A (zh) * | 2022-11-25 | 2023-03-21 | 北京百度网讯科技有限公司 | 模型运行策略确定方法、装置、电子设备以及存储介质 |
CN115829053B (zh) * | 2022-11-25 | 2023-09-19 | 北京百度网讯科技有限公司 | 模型运行策略确定方法、装置、电子设备以及存储介质 |
CN116301796A (zh) * | 2023-02-15 | 2023-06-23 | 四川省气象探测数据中心 | 一种基于人工智能技术的气象数据分析系统及方法 |
CN116089477A (zh) * | 2023-04-10 | 2023-05-09 | 荣耀终端有限公司 | 分布式训练方法及系统 |
CN116089477B (zh) * | 2023-04-10 | 2023-08-08 | 荣耀终端有限公司 | 分布式训练方法及系统 |
CN116483546A (zh) * | 2023-06-21 | 2023-07-25 | 苏州浪潮智能科技有限公司 | 分布式训练任务调度方法、装置、设备及存储介质 |
CN116483546B (zh) * | 2023-06-21 | 2023-09-05 | 苏州浪潮智能科技有限公司 | 分布式训练任务调度方法、装置、设备及存储介质 |
CN116541338A (zh) * | 2023-06-27 | 2023-08-04 | 苏州浪潮智能科技有限公司 | 一种计算系统、模型训练方法、装置及产品 |
CN116541338B (zh) * | 2023-06-27 | 2023-11-03 | 苏州浪潮智能科技有限公司 | 一种计算系统、模型训练方法、装置及产品 |
CN116934572A (zh) * | 2023-09-18 | 2023-10-24 | 荣耀终端有限公司 | 图像处理方法和设备 |
CN116934572B (zh) * | 2023-09-18 | 2024-03-01 | 荣耀终端有限公司 | 图像处理方法和设备 |
CN116954873A (zh) * | 2023-09-21 | 2023-10-27 | 浪潮电子信息产业股份有限公司 | 异构计算系统及其算力节点选择方法、装置、设备、介质 |
CN116954873B (zh) * | 2023-09-21 | 2024-01-23 | 浪潮电子信息产业股份有限公司 | 异构计算系统及其算力节点选择方法、装置、设备、介质 |
CN117332878A (zh) * | 2023-10-31 | 2024-01-02 | 慧之安信息技术股份有限公司 | 一种基于自组网系统的模型训练方法和系统 |
CN117332878B (zh) * | 2023-10-31 | 2024-04-16 | 慧之安信息技术股份有限公司 | 一种基于自组网系统的模型训练方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN112000473A (zh) | 2020-11-27 |
TWI783355B (zh) | 2022-11-11 |
TW202207030A (zh) | 2022-02-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2022033024A1 (zh) | 深度学习模型的分布式训练方法以及装置 | |
US10817501B1 (en) | Systems and methods for using a reaction-based approach to managing shared state storage associated with a distributed database | |
CN108132949B (zh) | 数据库集群中数据迁移的方法及装置 | |
US7676635B2 (en) | Recoverable cache preload in clustered computer system based upon monitored preload state of cache | |
US11372688B2 (en) | Resource scheduling method, scheduling server, cloud computing system, and storage medium | |
CN103647830A (zh) | 一种集群管理系统中多层次配置文件的动态管理方法 | |
CN105786603B (zh) | 一种基于分布式的高并发业务处理系统及方法 | |
CN111488121B (zh) | 基于动态应用存取的映射系统和方法 | |
US10785350B2 (en) | Heartbeat in failover cluster | |
JP2023025146A (ja) | エンドツーエンドの自己適応に基づく分散型トレーニング方法、装置、及び機器 | |
CN103716397B (zh) | 一种面向服务仿真时钟推进方法 | |
US20200112499A1 (en) | Multiple quorum witness | |
TW201702908A (zh) | 資料庫彈性調度方法以及裝置 | |
Stavrinides et al. | The impact of checkpointing interval selection on the scheduling performance of real‐time fine‐grained parallel applications in SaaS clouds under various failure probabilities | |
US20200389546A1 (en) | State replication, allocation and failover in stream processing | |
CN110413369A (zh) | 用于虚拟化环境中的备份的系统和方法 | |
US20140164324A1 (en) | Utilization of data structures to synchronize copies of a resource | |
US20200371845A1 (en) | Anticipating future resource consumption based on user sessions | |
WO2023280208A1 (zh) | 数据处理方法、执行工作站、电子设备和存储介质 | |
US11561777B2 (en) | System and method for intelligent update flow across inter and intra update dependencies | |
CN113472886B (zh) | 分布式集群系统及其控制方法 | |
US8762776B2 (en) | Recovering from a thread hang | |
CN114780170B (zh) | 容器资源的配置方法、装置、设备及存储介质 | |
JP7191493B2 (ja) | スケジュール設定されたアンチエントロピー修復の設計のための技法 | |
CN114676291B (zh) | 一种数据库系统及数据库系统的控制方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 21855080 Country of ref document: EP Kind code of ref document: A1 |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 21855080 Country of ref document: EP Kind code of ref document: A1 |