CN115712830A - Ai模型的分布式训练方法和相关设备 - Google Patents

Ai模型的分布式训练方法和相关设备 Download PDF

Info

Publication number
CN115712830A
CN115712830A CN202110963715.7A CN202110963715A CN115712830A CN 115712830 A CN115712830 A CN 115712830A CN 202110963715 A CN202110963715 A CN 202110963715A CN 115712830 A CN115712830 A CN 115712830A
Authority
CN
China
Prior art keywords
training
computing node
computing
task
model
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202110963715.7A
Other languages
English (en)
Inventor
练韵文
李亿
金小贤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Cloud Computing Technologies Co Ltd
Original Assignee
Huawei Cloud Computing Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Cloud Computing Technologies Co Ltd filed Critical Huawei Cloud Computing Technologies Co Ltd
Priority to CN202110963715.7A priority Critical patent/CN115712830A/zh
Priority to PCT/CN2022/111716 priority patent/WO2023020355A1/zh
Priority to EP22857667.4A priority patent/EP4375892A1/en
Publication of CN115712830A publication Critical patent/CN115712830A/zh
Priority to US18/444,971 priority patent/US20240193477A1/en
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/214Generating training patterns; Bootstrap methods, e.g. bagging or boosting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0464Convolutional networks [CNN, ConvNet]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Artificial Intelligence (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Biophysics (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Medical Informatics (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Biology (AREA)
  • Neurology (AREA)
  • Hardware Redundancy (AREA)

Abstract

本申请涉及人工智能技术领域,提供了一种AI模型的分布式训练方法和相关设备,其中方法应用于AI平台,所述AI平台与计算资源池相关联,所述计算资源池包括用于所述AI模型分布式训练的多个计算节点,所述多个计算节点中的每个计算节点执行所述AI模型分布式训练的一个训练任务;所述方法包括:对第一计算节点进行故障隔离,所述第一计算节点为所述多个计算节点中发生故障的计算节点;确定第二计算节点,所述第二计算节点为所述计算资源池中除所述多个计算节点之外的计算节点;配置所述第二计算节点,以使所述第二计算节点替代所述第一计算节点执行训练任务。本申请实施例能够降低故障恢复的时长。

Description

AI模型的分布式训练方法和相关设备
技术领域
本申请实施例涉及人工智能(artificial intelligence,AI)技术领域,尤其涉及一种AI模型的分布式训练方法和相关设备。
背景技术
当前AI领域,主要涉及训练数据、AI模型及硬件的算力三个关键方面。AI模型的训练过程是将大量的训练数据输入至部署在硬件上的AI模型,并由AI模型利用硬件的算力支撑对训练数据进行处理和学习的过程。大部分情况下,训练数据越多,学习效果越好,AI模型的准确率越高。而随着利用AI模型解决的问题的规模增大,要求的用于进行AI模型训练的数据量也不断增加,导致对硬件的计算能力的需求也越来越大。例如当前的一些AI模型,其有1700亿的参数,其训练用的训练数据有45T,其完成训练需要355个GPU训练一年。为了减少训练的耗时,通用的做法是提高用于AI模型的训练作业的并行计算资源的规模;例如将该AI模型的训练作业的计算资源的规模提高到4096个GPU,如此,计算资源的规模是原来355个GPU的11倍以上,这使得该AI模型的训练时长可以减少到1个月左右。
然而,随着用于训练作业的计算资源规模的增加,导致训练过程中硬件、软件的故障率大幅提升,而训练过程中发生故障会导致整个训练作业失败而退出或中断。同时,因为训练作业的计算资源规模的增加,导致训练作业故障后的恢复时长增加,进而导致训练作业的整体完成时长增加。
发明内容
本申请提供一种AI模型的分布式训练方法和相关设备,能够降低训练过程中故障恢复的时长。
上述和其它目标通过独立权利要求的主体实现。其它实现方式在从属权利要求、具体实施方式和附图中显而易见。
具体实施例在所附独立权利要求中概述,其它实施例在从属权利要求中概述。
根据第一方面,本申请涉及一种人工智能AI模型的分布式训练方法,应用于AI平台,所述AI平台与计算资源池相关联,所述计算资源池包括用于所述AI模型分布式训练的多个计算节点,所述多个计算节点中的每个计算节点执行所述AI模型分布式训练的一个训练任务;所述方法包括:对第一计算节点进行故障隔离,所述第一计算节点为所述多个计算节点中发生故障的计算节点;确定第二计算节点,所述第二计算节点为所述计算资源池中除所述多个计算节点之外的计算节点;配置所述第二计算节点,以使所述第二计算节点替代所述第一计算节点执行训练任务。
在本申请中,AI平台可以对AI模型的进行分布式训练,AI平台与计算资源池相关联,计算资源池包括用于AI模型分布式训练的多个计算节点,多个计算节点中的每个计算节点执行该AI模型分布式训练的一个训练任务,例如每个计算节点执行一个AI模型分布式训练的训练任务;在AI模型的分布式训练过程中,AI平台可以确定多个计算节点中是否存在发生故障的第一计算节点,AI平台如果确定到多个计算节点中存在发生故障的第一计算节点,则对该第一计算节点进行故障隔离,以使得该第一计算节点不再用于执行该AI模型分布式训练的训练任务;并且,AI平台可以从计算资源池中确定除前述多个计算节点之外的第二计算节点,以及配置该第二计算节点,以使得采用该第二计算节点来替代该第一计算节点执行该AI模型分布式训练的训练任务。如此,本申请用于AI模型的分布式训练的计算节点发生故障时,动态隔离发生故障的第一计算节点,补充第二计算节点替代第一计算节点继续训练,保障训练过程不被中断,从而整体训练时长不受影响,实现降低故障恢复的时长。应理解,该第二计算节点的计算能力与该第一计算节点的计算能力相同或相当,或者说该第二计算节点的规格与该第一计算节点的规格相同或相当,以确保该第二计算节点可以成功替代该第一计算节点。需要说明的是,若第一计算节点除执行该AI模型分布式训练的训练任务外,还执行其他AI模型分布式训练的训练任务,对第一计算节点进行故障隔离后,第一计算节点不再用于执行因第一计算节点发生故障而受影响的训练任务;第二计算节点替代第一计算节点执行因第一计算节点发生故障而受影响的训练任务;其中,因第一计算节点发生故障而受影响的训练任务包括以下一项或多项:该AI模型分布式训练的训练任务,其他AI模型分布式训练的训练任务。
在一种可能的实现方式中,所述AI平台在监测到以下一项或多项的情况下,所述第一计算节点为发生故障的计算节点:所述第一计算节点硬件故障,所述第一计算节点执行的训练任务对应的训练进程退出,所述第一计算节点上报的故障。
在本实现方式中,第一计算节点硬件故障、第一计算节点执行的训练任务对应的训练进程退出以及第一计算节点上报到AI平台的故障均可以被AI平台监测到;如果AI平台监测到前述一项或多项,则确定第一计算节点为发生故障的计算节点,并触发确定第二计算节点替代第一计算节点执行训练任务;如此,AI平台可以及时发现AI模型分布式训练存在故障,有利于降低故障恢复的时长。需要说明的是,若第一计算节点除执行该AI模型分布式训练的训练任务外,还执行其他AI模型分布式训练的训练任务,则当第一计算节点硬件故障,因第一计算节点发生故障而受影响的训练任务包括该AI模型分布式训练的训练任务和其他AI模型分布式训练的训练任务。进一步地,第一计算节点执行的训练任务对应的训练进程退出包括第一计算节点执行的该AI模型分布式训练的训练任务对应的训练进程退出以及其他AI模型分布式训练的训练任务对应的训练进程退出,也即只要第一计算节点上有训练进程退出,第一计算节点就为发生故障的计算节点;当该AI模型分布式训练的训练任务对应的训练进程退出,因第一计算节点发生故障而受影响的训练任务为该AI模型分布式训练的训练任务;当其他AI模型分布式训练的训练任务对应的训练进程退出,因第一计算节点发生故障而受影响的训练任务为其他AI模型分布式训练的训练任务;当该AI模型分布式训练的训练任务对应的训练进程和其他AI模型分布式训练的训练任务对应的训练进程均退出,因第一计算节点发生故障而受影响的训练任务包括该AI模型分布式训练的训练任务和其他AI模型分布式训练的训练任务。此外,第一计算节点上报的故障包括第一计算节点针对该AI模型分布式训练的训练任务上报的故障以及针对其他AI模型分布式训练的训练任务上报的故障,也即只要第一计算节点上报故障,第一计算节点就为发生故障的计算节点;当第一计算节点上报的故障为第一计算节点针对该AI模型分布式训练的训练任务上报的故障,因第一计算节点发生故障而受影响的训练任务为该AI模型分布式训练的训练任务;当第一计算节点上报的故障包括第一计算节点针对其他AI模型分布式训练的训练任务上报的故障,因第一计算节点发生故障而受影响的训练任务为其他AI模型分布式训练的训练任务;当第一计算节点上报的故障包括第一计算节点针对该AI模型分布式训练的训练任务上报的故障和针对其他AI模型分布式训练的训练任务上报的故障,因第一计算节点发生故障而受影响的训练任务包括该AI模型分布式训练的训练任务和其他AI模型分布式训练的训练任务。
在一种可能的实现方式中,若所述AI平台监测到所述第一计算节点硬件故障,且未监测到所述第一计算节点执行的训练任务对应的训练进程退出;在所述对第一计算节点进行故障隔离之后,所述方法包括:向所述第一计算节点发送停止训练进程的通知,所述停止训练进程的通知用于指示所述第一计算节点停止执行的训练任务对应的训练进程。
在本实现方式中,有些类型的硬件故障不会导致计算节点上的训练进程退出或停止,仅会影响计算节点的计算性能;在第一计算节点发生硬件故障的情况下,为确保第二计算节点能成功替代第一计算节点执行训练任务,AI平台向第一计算节点发送停止训练进程的通知,指示第一计算节点停止执行的训练任务对应的训练进程;从而避免第二计算节点已经在执行原来由第一计算节点执行的训练任务的情况下,第一计算节点还在执行该训练任务。应理解,停止训练进程的通知用于指示第一计算节点停止因第一计算节点发生故障而受影响的训练任务对应的训练进程。需要说明的是,若第一计算节点除执行该AI模型分布式训练的训练任务外,还执行其他AI模型分布式训练的训练任务,则当因第一计算节点发生故障而受影响的训练任务为该AI模型分布式训练的训练任务,停止训练进程的通知用于指示第一计算节点停止该AI模型分布式训练的训练任务对应的训练进程;当因第一计算节点发生故障而受影响的训练任务为其他AI模型分布式训练的训练任务,停止训练进程的通知用于指示第一计算节点停止其他AI模型分布式训练的训练任务对应的训练进程;当因第一计算节点发生故障而受影响的训练任务包括该AI模型分布式训练的训练任务和其他AI模型分布式训练的训练任务,停止训练进程的通知用于指示第一计算节点停止该AI模型分布式训练的训练任务对应的训练进程和其他AI模型分布式训练的训练任务对应的训练进程。
在一种可能的实现方式中,在所述对第一计算节点进行故障隔离之后,在所述确定第二计算节点之前,所述方法还包括:向第三计算节点发送暂停训练进程的通知,所述第三计算节点为所述多个计算节点中未发生故障的计算节点,所述暂停训练进程的通知用于指示所述第三计算节点暂停所述AI模型分布式训练的训练任务对应的训练进程。
在本实现方式中,该AI模型分布式训练包括多个计算节点计算和梯度同步,当第一计算节点发生故障,若不暂停未发生故障的第三计算节点的训练进程,则第三计算节点计算得到梯度后,就会进行梯度同步;但是,第一计算节点因为发生故障而被故障隔离,无法参与梯度同步,在这种情况下梯度同步会出现问题;因此,为避免梯度同步出现问题,需要将第三计算节点执行的训练进程进行暂停,直到有新增的第二计算节点加入用于执行训练。
在一种可能的实现方式中,所述暂停训练进程的通知具体用于:指示所述第三计算节点在执行完所述AI模型分布式训练的梯度计算之后,暂停所述AI模型分布式训练的训练任务对应的训练进程。
在本实现方式中,在未发生故障的第三计算节点梯度计算结束后,再暂停第三计算节点执行的训练进程;如此,等新增的第二计算节点加入用于执行训练后,即可直接进行梯度同步,有利于降低故障恢复时长。
在一种可能的实现方式中,所述方法还包括:在所述确定第二计算节点之后,所述方法还包括:向所述第三计算节点发送继续训练的通知,所述继续训练的通知用于指示所述第三计算节点在所述AI模型分布式训练的训练框架中的通讯拓扑中删除所述第一计算节点和增加所述第二计算节点,以及恢复所述AI模型分布式训练的训练任务对应的训练进程,所述通讯拓扑用于所述AI模型分布式训练的梯度同步。
在本实现方式中,AI平台向第三计算节点发送继续训练的通知;第三计算节点在接收到继续训练的通知之后,知晓第二计算节点会替代发生故障的第一计算节点执行训练,故在AI模型分布式训练的训练框架中的通讯拓扑中删除第一计算节点以及增加第二计算节点;从而第三计算节点可以与第二计算节点进行梯度同步,使得第二计算节点获得同步后的训练参数。
在一种可能的实现方式中,若未确定到第二计算节点,所述方法还包括:向所述第三计算节点发送继续训练的通知,所述继续训练的通知用于指示所述第三计算节点在所述AI模型分布式训练的训练框架中的通讯拓扑中删除所述第一计算节点,以及恢复所述AI模型分布式训练的训练任务对应的训练进程,所述通讯拓扑用于所述AI模型分布式训练的梯度同步。
在本实现方式中,如果无法申请到第二计算节点用于替代发生故障的第一计算节点,为了保证训练不中断或不退出,训练能够继续进行,则舍弃发生故障的第一计算节点,仅采用未发生故障的第三计算节点用于执行训练。
根据第二方面,本申请涉及一种人工智能AI模型的分布式训练装置,有益效果可以参见第一方面的描述,此处不再赘述。所述AI模型的分布式训练装置具有实现上述第一方面的方法实施例中行为的功能。所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。在一种可能的实现方式中,该AI模型的分布式训练装置应用于AI平台,所述AI平台与计算资源池相关联,所述计算资源池包括用于所述AI模型分布式训练的多个计算节点,所述多个计算节点中的每个计算节点执行所述AI模型分布式训练的一个训练任务;所述装置包括:资源管理模块,用于对第一计算节点进行故障隔离,所述第一计算节点为所述多个计算节点中发生故障的计算节点;任务调度模块,用于确定第二计算节点,所述第二计算节点为所述计算资源池中除所述多个计算节点之外的计算节点;以及配置所述第二计算节点,以使所述第二计算节点替代所述第一计算节点执行训练任务。
在一种可能的实现方式中,所述AI平台在监测到以下一项或多项的情况下,所述第一计算节点为发生故障的计算节点:所述第一计算节点硬件故障,所述第一计算节点执行的训练任务对应的训练进程退出,所述第一计算节点上报的故障。
在一种可能的实现方式中,若所述AI平台监测到所述第一计算节点硬件故障,且未监测到所述第一计算节点执行的训练任务对应的训练进程退出;在所述对第一计算节点进行故障隔离之后,所述任务调度模块还用于:向所述第一计算节点发送停止训练进程的通知,所述停止训练进程的通知用于指示所述第一计算节点停止执行的训练任务对应的训练进程。
在一种可能的实现方式中,在所述对第一计算节点进行故障隔离之后,在所述确定第二计算节点之前,所述任务调度模块还用于:向第三计算节点发送暂停训练进程的通知,所述第三计算节点为所述多个计算节点中未发生故障的计算节点,所述暂停训练进程的通知用于指示所述第三计算节点暂停所述AI模型分布式训练的训练任务对应的训练进程。
在一种可能的实现方式中,所述暂停训练进程的通知具体用于:指示所述第三计算节点在执行完所述AI模型分布式训练的梯度计算之后,暂停所述AI模型分布式训练的训练任务对应的训练进程。
在一种可能的实现方式中,在所述确定第二计算节点之后,所述任务调度模块还用于:向所述第三计算节点发送继续训练的通知,所述继续训练的通知用于指示所述第三计算节点在所述AI模型分布式训练的训练框架中的通讯拓扑中删除所述第一计算节点和增加所述第二计算节点,以及恢复所述AI模型分布式训练的训练任务对应的训练进程,所述通讯拓扑用于所述AI模型分布式训练的梯度同步。
在一种可能的实现方式中,若未确定到第二计算节点,所述任务调度模块还用于:向所述第三计算节点发送继续训练的通知,所述继续训练的通知用于指示所述第三计算节点在所述AI模型分布式训练的训练框架中的通讯拓扑中删除所述第一计算节点,以及恢复所述AI模型分布式训练的训练任务对应的训练进程,所述通讯拓扑用于所述AI模型分布式训练的梯度同步。
根据第三方面,本申请涉及一种计算设备,计算设备包括处理器和存储器,其中:存储器中存储有计算机指令,处理器执行计算机指令,以实现第一方面及其可能的实现方式的方法。
根据第四方面,本申请涉及一种计算机可读存储介质,计算机可读存储介质存储有计算机指令,当计算机可读存储介质中的计算机指令被计算设备执行时,使得计算设备执行第一方面及其可能的实现方式的方法,或者使得计算设备实现上述第二方面及其可能的实现方式的装置的功能。
根据第五方面,本申请涉及一种包含指令的计算机程序产品,当其在计算设备上运行时,使得计算设备执行上述第一方面及其可能的实现方式的方法,或者使得计算设备实现上述第二方面及其可能的实现方式的装置的功能。
附图及以下说明中将详细描述一个或多个实施例。其它特征、目的和优点在说明、附图以及权利要求中是显而易见的。
附图说明
下面对本申请实施例用到的附图进行介绍。
图1是数据并行的分布式训练的示意图;
图2是本申请一个示例性实施例提供的AI平台210的结构示意图;
图3是本申请一个示例性实施例提供的AI平台210的应用场景示意图;
图4是本申请一个示例性实施提供的AI平台210的部署示意图;
图5是本申请一个示例性实施提供的部署AI平台210的计算设备500的结构示意图;
图6是一种训练作业的处理流程时间线的示意图;
图7是本申请一个示例性实施例提供的一种AI模型的分布式训练方法的流程示意图;
图8是本申请一个示例性实施例提供的一种用户交互界面的示意图;
图9是本申请一个示例性实施例提供的一种梯度同步的示意图;
图10是本申请一个示例性实施例提供的一种更新训练框架的通讯拓扑的示意图;
图11是本申请一个示例性实施例提供的另一种更新训练框架的通讯拓扑的示意图;
图12是本申请一个示例性实施例提供的一种训练作业的处理流程时间线的示意图;
图13是本申请一个示例性实施例提供的另一种AI模型的分布式训练方法的流程示意图;
图14是本申请一个示例性实施例提供的一种计算设备的结构示意图。
具体实施方式
目前,人工智能热潮不断,机器学习是一种实现AI的核心手段,机器学习渗透至医学、交通、教育、金融等各个行业。不仅仅是专业技术人员,就连各行业的非AI技术专业也期盼用AI、机器学习完成特定任务。
为了便于理解本申请提供的技术方案和实施例,下面对AI模型、AI模型的训练、分布式训练、AI平台等概念进行详细说明:
AI模型,是一类用机器学习思想解决实际问题的数学算法模型,AI模型中包括大量的参数和计算公式(或计算规则),AI模型中的参数是可以通过训练数据集对AI模型进行训练获得的数值,例如,AI模型的参数是AI模型中的计算公式或计算因子的权重。AI模型还包含一些超(hyper)参数,超参数是无法通过训练数据集对AI模型进行训练获得的参数,超参数可用于指导AI模型的构建或者AI模型的训练,超参数有多种。例如,AI模型训练的迭代(iteration)次数、学习率(leaning rate)、批尺寸(batch size)、AI模型的层数、每层神经元的个数。换而言之,AI模型的超参数与参数的区别在于:AI模型的超参数的值无法通过对训练数据集进行分析获得,而AI模型的参数的值可根据在训练过程中对训练数据集进行分析进行修改和确定。需要说明的是,本申请中提到的AI模型是一种泛指,AI模型包括深度学习模型、机器学习模型等。
AI模型多种多样,使用较为广泛的一类AI模型为神经网络模型,神经网络模型是一类模仿生物神经网络(动物的中枢神经系统)的结构和功能的数学算法模型。一个神经网络模型可以包括多种不同功能的神经网络层,每层包括参数和计算公式。根据计算公式的不同或功能的不同,神经网络模型中不同的层有不同的名称。例如,进行卷积计算的层称为卷积层,卷积层常用于对输入信号(如图像)进行特征提取。一个神经网络模型也可以由多个已有的神经网络模型组合构成。不同结构的神经网络模型可用于不同的场景(如分类、识别等)或在用于同一场景时提供不同的效果。神经网络模型结构不同具体包括以下一项或多项:神经网络模型中网络层的层数不同、各个网络层的顺序不同、每个网络层中的权重、参数或计算公式不同。业界已存在多种不同的用于识别或分类等应用场景的具有较高准确率的神经网络模型,其中,一些神经网络模型可以被特定的训练数据集进行训练后单独用于完成一项任务或与其他神经网络模型(或其他功能模块)组合完成一项任务。
一般的AI模型在被用于完成一项任务前都需要被训练。
训练AI模型,是指利用已有的数据通过一定方法使AI模型拟合已有数据的规律,确定AI模型中的参数。训练一个AI模型需要准备一个训练数据集,根据训练数据集中的训练数据是否有标注(即:数据是否对应有特定的标签信息,例如,类型、名称、数据中包含的标注框),可以将AI模型的训练分为监督训练(supervised training)和无监督训练(unsupervised training)。对AI模型进行监督训练时,用于训练的训练数据集中的训练数据带有标注(label)。训练AI模型时,将训练数据集中的训练数据作为AI模型的输入,由AI模型对输入的训练数据进行计算,获得AI模型输出值,将训练数据对应的标注作为AI模型的输出值的参考,利用损失函数(loss function)计算AI模型输出值与训练数据对应的标注的损失(loss)值,根据损失值调整AI模型中的参数。用训练数据集中的每个训练数据迭代地对AI模型进行训练,AI模型的参数不断调整,直到AI模型可以根据输入的训练数据准确度较高地输出与训练数据对应的标注相同或相似的输出值。对AI模型进行无监督训练,则用于训练的数据集中的训练数据没有标注,训练数据集中的训练数据依次输入至AI模型,由AI模型逐步识别训练数据集中的训练数据之间的关联和潜在规则,直到AI模型可以用于判断或识别输入的数据的类型或特征。例如,聚类,用于聚类的AI模型接收到大量的训练数据后,可学习到各个训练数据的特征以及训练数据之间的关联和区别,将训练数据自动地分为多个类型。不同的任务类型可采用不同的AI模型,一些AI模型仅可以用监督学习的方式训练,一些AI模型仅可以用无监督学习的方式训练,还有一些AI模型既可以用监督学习的方式训练又可以用无监督学习的方式训练。经过训练完成的AI模型可以用于完成一项特定的任务。通常而言,机器学习中的AI模型都需要采用有监督学习的方式进行训练,有监督学习的方式对AI模型进行训练可使AI模型在带有标注的训练数据集中更有针对性地学习到训练数据集中训练数据与对应标注的关联,使训练完成的AI模型用于预测其他输入推理数据时准确率较高。
损失函数,是用于衡量AI模型被训练的程度(也就是用于计算AI模型预测的结果与真实目标之间的差异)的函数。在训练AI模型的过程中,因为希望AI模型的输出尽可能的接近真正想要预测的值,所以可以通过比较当前AI模型根据输入数据的预测值和真正想要的目标值(即输入数据的标注),再根据两者之间的差异情况来更新AI模型中的参数。每次训练都通过损失函数判断一下当前的AI模型预测的值与真实目标值之间的差异,更新AI模型的参数,直到AI模型能够预测出真正想要的目标值或与真正想要的目标值非常接近的值,即损失函数小于阈值且较稳定,则认为AI模型被训练完成。
梯度,是包括函数的偏导数的向量。在AI模型的训练过程中,需要调整模型的参数以使下一次迭代的损失函数更小,常采用梯度下降方法来更新模型的参数,因此每一轮迭代的时候需要计算本轮训练数据对应的损失函数的梯度,进而根据梯度去更新AI模型的参数。
分布式训练,分布式训练是AI模型训练过程中常用的加速手段之一。分布式训练指:将训练拆分在多个独立的计算节点当中进行独立计算,再将结果进行周期性的汇总和重新分发,由此加速AI模型的训练过程。分布式训练可以包括数据并行的分布式训练。
数据并行的分布式训练是在多个计算节点上部署同样的AI模型,将训练数据集中的训练数据分布到多个计算节点上同时进行计算,在每个计算节点上执行对AI模型的训练,并将每个计算节点上产生的模型参数的梯度进行聚合后,再更新模型参数,具体的,将训练数据集切分到m个计算节点上时有两种选择:(1)m个计算节点中每个计算节点上的批大小与使用单个计算节点进行计算时的批大小相同,批大小指每次调整参数前在训练数据集所选取的训练数据的数目。(2)每个计算节点上的批大小是使用单个计算节点进行计算时的批大小除以m,这样聚合后的全局批大小保持不变。在本申请实施例的后续描述中,以数据并行的分布式训练为例描述AI模型的训练方法。
数据并行的分布式训练的过程可以大致划分两个阶段,分别为多个计算节点计算和梯度同步。图1为一种示例性的数据并行的分布式训练的示意图。如图1所示,该数据并行的分布式训练的计算由m个计算节点(分别为计算节点1、计算节点2、......、计算节点m)执行;在分布式训练每一轮训练中,每个计算节点上训练的样本不同,从而m个计算节点则有m批样本(分别为第1批样本、第2批样本、......、第m批样本),且m个计算节点中的每个计算节点均计算得到一个梯度,从而m个计算节点则有m个梯度(分别为梯度1、梯度2、......、梯度m);在梯度同步时,对这m个梯度求平均,得到m个梯度的平均值;根据这m个梯度的平均值更新该AI模型的参数,然后基于该更新参数后的AI模型进行下一轮的训练。
AI平台,是一种为AI开发者和用户提供便捷的AI开发环境以及便利的开发工具的平台。AI平台中内置有各种解决不同问题的预训练AI模型或者AI子模型,AI平台可以根据用户的需求搜索并且建立适用的AI模型,用户只需在AI平台中确定自己的需求,且按照提示准备好训练数据集上传至AI平台,AI平台就能为用户训练出一个可用于实现用户需要的AI模型。或者,用户按照提示准备好自己的算法(也称为初始AI模型)和训练数据集,上传至AI平台,AI平台基于用户自己的算法和训练数据集,可以训练出一个可用于实现用户需要的AI模型。用户可利用训练完成的AI模型完成自己的特定任务。应理解,本申请中在被AI平台训练前的AI模型(例如,用户上传的算法、AI平台预置的算法或者预训练模型),称为初始AI模型。
深度学习(Deep Learning),是一类基于深层次神经网络算法的机器学习技术,其主要特征是使用多重非线性变换构对数据进行处理和分析。主要应用于人工智能领域的感知、决策等场景,例如图像和语音识别、自然语言翻译、计算机博弈等。
容器(Container),是利用计算机操作系统中的一种虚拟化技术构造的用于进程运行的相对独立和隔离的环境。该环境中可以包含独立的文件系统、命名空间、资源视图等。使用容器能够简化软件的部署流程,增强软件的可移植性和安全性,并提高系统资源利用率。
作业(Job),是完成一项特定的计算业务所需要执行的一组程序的集合,通常对应于一台或多台计算机上的一组进程、容器或其他运行时实体。
任务(Task),是一个作业对应的一组程序中的单个程序,通常对应于一台计算机上的一个进程、容器或其他运行时实体。其中,一个作业包括至少一个任务。
训练作业,完成一个初始AI模型的训练所需要执行的一组程序的集合。其中,一个训练作业的完成代表完成一个初始AI模型的训练,得到训练完成的AI模型。
训练任务,是一个训练作业对应的一组程序中的单个程序;也即,用户提交的任务逻辑实例,标识任务间的区别。例如,一个初始AI模型的训练任务用于对该初始AI模型进行多轮迭代训练。其中,一个训练作业包括至少一个训练任务。
训练进程,是计算节点上执行的一个训练任务的进程。其中,一个训练进程对应一个训练任务,而一个计算节点可以执行一个或多个训练任务,故一个计算节点上存在一个或多个训练进程。
训练框架,是AI模型训练过程中所需要依赖的工具包或者函数包,是训练作业中每个训练任务需要依赖的运行程序框架。在深度学习初始阶段,每个深度学习研究者都需要写大量的重复代码;为了提高工作效率,研究者就将这些代码写成了一个框架放到网上让所有研究者一起使用,该框架也即训练框架。当前全世界最为流行的深度学习框架有Tensorflow、Caffe、Theano、MXNet、Torch和PyTorch。
计算资源池,由可用于进行AI模型训练的计算资源组成,计算资源可以是计算节点。对于一个训练作业说,计算资源是指训练过程中使用的所有计算节点,每个计算节点可以是一个计算设备(例如服务器),也可以是一个计算卡(例如GPU)。
图2是本申请实施例提供的一种AI平台210的结构示意图,应理解,图2仅是示例性地展示了AI平台210的一种结构化示意图,本申请并不限定对AI平台210中的模块的划分。如图2所示,AI平台210包括任务调度模块211、资源管理模块212和数据存储模块213。AI平台210与计算资源池220相关联,计算资源池220包括多个计算节点,AI平台可以调度计算资源池220中的计算节点,用于AI模型训练。
下面简要地描述AI平台210中的各个模块的功能:
任务调度模块211用于:配置训练作业、调度训练作业;接收用户提交的训练作业,进行训练作业的管理,为训练作业申请计算资源运行。
应理解,一个初始AI模型怎么训练、采用什么训练数据训练以及采用什么计算资源训练,可以由用户创建该初始AI模型对应的训练作业时设置;在用户没有设置的情况下,由任务调度模块211配置。其中,一个初始AI模型怎么训练包括:该初始AI模型对应的训练作业分为多少个训练任务,以及该初始AI模型对应的训练作业分为哪些训练任务等;一个初始AI模型采用什么训练数据训练包括:该初始AI模型对应的训练作业需要采用多少训练数据,该初始AI模型对应的训练作业需要采用哪些训练数据,该初始AI模型对应的训练作业中的每个训练任务分别需要采用多少训练数据,以及该初始AI模型对应的训练作业中的每个训练任务分别需要采用哪些训练数据等;一个初始AI模型采用什么计算资源训练包括:该初始AI模型对应的训练作业由多少个计算节点执行,该初始AI模型对应的训练作业由什么规格的计算节点执行,以及该初始AI模型对应的训练作业中的每个训练任务分别由什么规格的计算节点执行等。
资源管理模块212用于:计算资源管理,调度计算资源,为训练作业分配计算资源。资源管理模块212需要了解集群间的拓扑(Topo)信息,其中,集群是指由所有计算资源组成的集群;在分配计算资源时,按物理位置进行亲和性分配。其中,亲和原则指同一个物理位置在同一个机柜的资源优先分配。
任务调度模块211还用于:将训练作业中的训练任务配置到资源管理模块212分配的计算资源上执行。其中,任务调度模块211可以根据一个训练作业所需的计算节点的数量将该训练作业划分成一个或多个训练任务,例如,一个训练作业需要多少个计算节点执行,则该训练作业分成多少个训练任务,然后将每个训练任务配置在对应的计算节点上执行。
数据存储模块213(如可以是云服务提供商提供的OBS对应的数据存储资源):用于存储训练框架、用户上传的训练数据集、用户上传的初始AI模型、其他用户上传的初始AI模型以及训练完成的AI模型等。
其中,计算资源池220中,可以同时执行一个或多个训练作业,每个训练作业用于训练一个AI模型,一个AI模型的训练基于同一个训练框架,训练框架是训练作业中每个训练任务需要依赖的运行程序框架;每个训练作业包括一个或多个训练任务,每个训练作业中的所有训练任务需要依赖的运行程序框架为同一个训练框架。例如,计算资源池220执行n个训练作业,则计算资源池220用于训练n个AI模型;对于n个训练作业中的任意一个训练作业来说,其中的所有训练任务需要依赖的运行程序框架为同一个训练框架,且该训练框架可以从数据存储模块213中获取。
以一个训练作业为例来描述训练作业的启动,任务调度模块211在接收到用户提交的一个训练作业之后,任务调度模块211向资源管理模块212申请计算资源用于执行该训练作业中的多个训练任务;资源管理模块212在为这个训练作业或这多个训练任务分配多个计算节点,并将分配结果返回给任务调度模块211;任务调度模块211将训练框架、训练数据集、初始AI模型等发送给这多个计算节点,或者说这多个计算节点均可以从数据存储模块213中获取训练框架、训练数据集、初始AI模型等,以在这多个计算节点中每个计算节点中部署好训练框架;任务调度模块211将这多个训练任务分别配置在这多个计算节点上,从而启动训练。此外,任务调度模块211还可以告知这多个计算节点中的每个计算节点与其共同执行该训练作业的计算节点是哪个或哪些,以便于其知晓与哪个或哪些计算节点进行训练参数同步,训练参数同步包括梯度同步。
任务调度模块211与资源管理模块212可以通信,如此,任务调度模块211可以向资源管理模块212申请用于执行训练任务的计算资源。
任务调度模块211与计算资源池220可以通信,如此,任务调度模块211可以调用计算资源池220中的计算节点执行训练任务。
资源管理模块212与计算资源池220可以通信,如此,资源管理模块212可以对计算资源池220中的计算资源进行分配和调度。
计算资源池220中的计算节点之间可以相互通信,如此,同一训练作业对应的多个计算节点可以进行梯度同步。
需要说明的是,对于一个训练作业来说,本申请所描述的梯度同步的过程包括以下三种可能情况:
(1)多个计算节点中的每个计算节点计算得到一个梯度,每个计算节点均将计算得到的梯度发给AI平台210;故AI平台210可以接收到多个梯度,AI平台210对这多个梯度进行聚合,得到聚合后的梯度;AI平台210将聚合后的梯度发回给每个计算节点,每个计算节点基于聚合后的梯度更新模型参数。
(2)多个计算节点中的每个计算节点计算得到一个梯度,每个计算节点均将计算得到的梯度发给其他计算节点;故每个计算节点均可以得到多个梯度,每个计算节点对这多个梯度进行聚合,得到聚合后的梯度;每个计算节点基于聚合后的梯度更新模型参数。
(3)多个计算节点中的每个计算节点计算得到一个梯度,多个计算节点中的其中一个计算节点用于对梯度进行聚合,多个计算节点中的其他计算节点均将计算得到的梯度发给该其中一个计算节点;故该其中一个计算节点可以得到多个梯度,该其中一个计算节点对这多个梯度进行聚合,得到聚合后的梯度;该其中一个计算节点将聚合后的梯度发回给其他计算节点,每个计算节点基于聚合后的梯度更新模型参数。
在一种可能的实现方式中,AI平台还包括算法管理模块214(图2中未示出)。算法管理模块214用于:提供初始AI模型管理界面,用于用户上传基于自己的训练目标创建的初始AI模型;或者,用户在初始AI模型库中,获取已有的初始AI模型。或者,算法管理模211还可以用于根据用户输入的任务目标,获取AI平台上预置的初始AI模型。用户基于自己的训练目标创建的初始AI模型可以基于AI平台提供的框架进行编写。初始AI模型可以包括未进行训练的AI模型、进行训练但是未完全训练完成的AI模型。未进行训练的AI模型指构建的AI模型还未使用训练数据集进行训练,构建的AI模型中的参数均是预设的数值。
任务调度模块211与算法管理模块214可以通信,用于从算法管理模块214获取初始AI模型的访问地址。
在一种可能的实现方式中,AI平台210还包括人机交互模块215(图2中未示出),提供与用户的交互界面。人机交互模块215与任务调度模块211通信,将用户的指令转发给任务调度模块211,获取训练过程的状态信息、训练完成的AI模型等,将该状态信息、该AI模型提供给用户。
需要说明的是,本申请中的AI平台可以是一个可以与用户交互的系统,这个系统可以是软件系统也可以是硬件系统,也可以是软硬结合的系统,本申请中不进行限定。
图3为本申请实施例提供的一种AI平台210的应用场景示意图,如图3所示,在一种实施例中,AI平台210可全部部署在云环境中。云环境是云计算模式下利用基础资源向用户提供云服务的实体。云环境包括云数据中心和云服务平台,云数据中心包括云服务提供商拥有的大量基础资源(包括计算资源池、存储资源和网络资源),云数据中心包括的计算资源池可以是大量的计算节点(例如服务器)。AI平台210可以独立地部署在云数据中心中的服务器或虚拟机上,AI平台210也可以分布式地部署在云数据中心中的多台服务器上、或者分布式地部署在云数据中心中的多台虚拟机上、再或者分布式地部署在云数据中心中的服务器和虚拟机上。如图3所示,AI平台210由云服务提供商在云服务平台抽象成一种AI云服务提供给用户,用户在云服务平台购买该云服务后(可预充值再根据最终资源的使用情况进行结算),云环境利用部署在云数据中心的AI平台210向用户提供AI平台云服务。在使用AI平台云服务时,用户可以通过应用程序接口(application program interface,API)或者图形用户界面(graphical user interface,GUI)确定要AI模型完成的任务、上传训练数据集至云环境等,云环境中的AI平台210接收用户的任务信息、训练数据集,执行数据预处理、AI模型训练。AI平台通过API或者GUI向用户返回AI模型的训练过程的状态信息等内容。训练完成的AI模型可被用户下载或者在线使用,用于完成特定的任务。
在本申请的另一种实施例中,云环境下的AI平台抽象成一种AI云服务向用户提供时,用户可以购买固定资源使用量的容器的使用时长,在资源使用量固定的情况下,使用时长越长,需要的费用越高,反之越低。在该使用时长内,AI平台训练AI模型。或者,用户可以预充值,在训练完成后再根据最终使用的GPU的数量和使用时长进行结算。
本申请提供的AI平台210的部署较为灵活,如图4所示,在另一种实施例中,本申请提供的AI平台210还可以分布式地部署在不同的环境中。本申请提供的AI平台210可以在逻辑上分成多个部分,每个部分具有不同的功能。例如,在一种实施例中AI平台210包括任务调度模块211、资源管理模块212和数据存储模块213。AI平台210中的各部分可以分别部署在终端计算设备、边缘环境和云环境中的任意两个或三个环境中。终端计算设备包括:终端服务器、智能手机、笔记本电脑、平板电脑、个人台式电脑、智能摄相机等。边缘环境为包括距离终端计算设备较近的边缘计算设备集合的环境,边缘计算设备包括:边缘服务器、拥有计算能力的边缘小站等。部署在不同环境或设备的AI平台210的各个部分协同实现为用户提供训练AI模型等功能。
例如,在一种场景中,终端计算设备中部署AI平台210中的任务调度模块211,边缘环境的边缘计算设备中部署AI平台210中的资源管理模块212,云环境的云计算设备中部署AI平台210中的数据存储模块213。用户将训练作业发送至终端计算设备中的任务调度模块211,终端计算设备向边缘计算设备中的资源管理模块212申请计算资源,边缘计算设备为训练作业分配计算资源,终端计算设备将该训练作业中的训练任务配置在分配的计算资源上执行,在执行训练任务时从云计算设备中的数据存储模块213中获取需要的样本集、初始AI模型等数据。
应理解,本申请不对AI平台210的哪些部分部署具体部署在什么环境进行限制性的划分,实际应用时可根据终端计算设备的计算能力、边缘环境和云环境的资源占有情况或具体应用需求进行适应性的部署。
AI平台210也可以部署在前述任意环境中的计算设备上(如边缘环境的边缘服务器上)。图5为部署有AI平台210的计算设备500的硬件结构示意图,图5所示的计算设备500包括存储器501、处理器502、通信接口503以及总线504。其中,存储器501、处理器502、通信接口503通过总线504实现彼此之间的通信连接。
存储器501可以是只读存储器(read only memory,ROM),随机存取存储器(randomaccess memory,RAM),硬盘,快闪存储器或其任意组合。存储器501可以存储程序,当存储器501中存储的程序被处理器502执行时,处理器502和通信接口503用于执行AI平台210为用户训练AI模型。存储器还可以存储训练数据集。例如,存储器501中的一部分存储资源被划分成一个数据存储模块213,用于存储AI平台210所需的数据。
处理器502可以采用中央处理器(central processing unit,CPU),应用专用集成电路(application specific integrated circuit,ASIC),GPU或其任意组合。处理器502可以包括一个或多个芯片。处理器502可以包括AI加速器,例如神经网络处理器(neuralprocessing unit,NPU)。
通信接口503使用例如收发器一类的收发模块,来实现计算设备500与其他设备或通信网络之间的通信。例如,可以通过通信接口503获取数据。
总线504可包括在计算设备500各个部件(例如,存储器501、处理器502、通信接口503)之间传送信息的通路。
为了便于理解本申请实施例,进一步分析并提出本申请所具体要解决的技术问题。
图6是相关的训练作业的处理流程时间线示意图,该训练作业的处理流程基于图2所示的AI平台实现,该训练作业的处理流程包括以下步骤:
(1)任务调度模块211根据用户的配置启动训练作业,并向资源管理模块212申请用于执行该训练作业的计算资源;资源管理模块212为该训练作业分配多个计算节点,任务调度模块211在多个计算节点上启动该训练作业中的训练任务。多个计算节点中的每个计算节点进行数据加载,以及在完成数据加载之后开始执行训练(计算)。其中,数据加载是指准备好训练所需的数据,包括获取训练框架、训练数据集、初始AI模型等,以及部署好训练框架等。
(2)每个计算节点在执行训练任务的过程中,在训练任务的训练脚本中周期性保存Ckpt(check point)文件。其中,训练脚本是训练任务运行的训练程序;Ckpt文件为执行训练任务的过程中保存的文件,其为二进制文件,其中保存了所有的权重(weights)、偏差(biases)、梯度(gradients)等变量,用于训练任务失败后恢复训练进度。
(3)每个计算节点在执行训练任务的过程中,若发生硬件故障或软件故障(例如训练任务僵死、训练任务超时、训练任务退出等),则导致执行的训练任务异常,从而训练任务失败并退出。应理解,只要训练作业中有一个训练任务失败并退出,就会导致整个训练作业失败并退出,也即导致训练作业中断。
(4)该训练作业中断之后,AI平台更新该训练作业的状态。例如,AI平台可以向用户展示该训练作业中断的情况。
(5)用户在AI平台上发现该训练作业中断,从而在AI平台中重启该训练作业。
(6)用户重启该训练作业以后,AI平台为该训练作业重新申请计算资源,也即AI平台为该训练作业重新申请多个计算节点,重新申请的每个计算节点用于执行训练作业中的一个训练任务;重新申请的每个计算节点均进行数据加载。
(7)重新申请的每个计算节点完成数据加载之后,进行Ckpt文件拉取。其中,重新申请的每个计算节点拉取的Ckpt文件为发生故障之前在需要其执行的训练任务的训练脚本中保存的Ckpt文件。应理解,需要重新申请的每个计算节点执行的训练任务为该训练作业中的训练任务。
(8)重新申请的每个计算节点基于拉取得到的Ckpt文件继续训练,也即重新申请的每个计算节点基于拉取得到的Ckpt文件执行需要其执行的训练任务。
由图6可知,上述AI模型的训练流程中,存在以下问题:
(1)训练任务发生故障时,该训练任务所归属的训练作业中断,需要人工介入重启该训练作业,AI平台为该训练作业重新申请计算资源,且重新申请计算资源的耗时较长以及在重新申请的计算资源上启动训练任务的耗时也较长,使得故障恢复的耗时较长。
(2)因需要为该训练作业重新申请计算资源,使得用于执行该训练作业的计算资源规模增大,然而受到整个计算资源池的规模限制,重启训练作业后,若要重新申请大规模的计算资源用于执行该训练作业,存在着计算资源无法申请成功的可能,导致故障无法恢复。
(3)在AI模型训练时,通过Ckpt文件保存训练数据以用于故障后的恢复,由于Ckpt文件比较大,Ckpt文件获取的耗时较长,使得故障恢复的耗时较长。
(4)由于Ckpt文件比较大,Ckpt文件保存的耗时也较长,在训练过程中无法高频保存Ckpt文件,故在故障恢复时无法恢复Ckpt文件保存至训练任务发生故障之间的训练数据,也即从Ckpt文件保存至训练任务发生故障之间的训练数据都会损失掉。
综上分析,相关技术中,计算节点发生故障后,故障恢复的耗时较长或故障可能无法恢复,且因故障导致的训练损失较大。
鉴于上述相关技术中存在的问题,本申请主要解决在AI模型训练过程中,因用于执行训练任务的计算节点发生故障而存在的故障恢复的耗时较长的问题。本申请提供的技术方案,提供动态故障恢复能力,在训练过程发生故障时,保障整个训练无损恢复。具体地,在AI模型的训练过程中,用于执行训练的计算节点发生故障时,在训练作业不中断的前提下,动态隔离发生故障的计算节点,补充新的计算节点替代发生故障的计算节点,保障AI模型的训练过程不被中断,使得完成该AI模型的训练的时长不受影响。其中,新的计算节点为在资源申请时未用于执行训练的计算节点,或新的计算节点为在资源申请时已经用于执行训练的计算节点,但其执行的训练任务与发生故障的计算节点执行的训练任务不归属于同一个训练作业。
下面结合具体实施方式对本申请提供的技术方案进行详细的介绍。
本申请对图2所示的AI平台210的功能进行改进,包括对任务调度模块211以及资源管理模块212进行能力增强,使得任务调度模块211具备故障恢复等功能,以及使得资源管理模块212具备故障隔离、资源动态调整等功能。具体如下介绍。
在一种可能的实现方式中,本申请的资源管理模块212还用于:对用于执行训练任务的任意一个计算节点进行故障监测;在监测到计算节点发生故障后,对该发生故障的第一计算节点进行故障隔离;以及向任务调度模块211进行故障上报,也即告知任务调度模块211第一计算节点发生故障。其中,第一计算节点是指发生故障的一类计算节点,可以为一个或多个计算节点。
作为一示例,在进行故障监测方面,本申请的资源管理模块212具体用于:监测用于执行训练任务的任意一个计算节点是否发生硬件故障,以及监测该任意一个计算节点上的训练进程是否退出。其中,若满足以下一种或多种的情况时:该任意一个计算节点发生硬件故障、该任意一个计算节点上的训练进程退出,则该任意一个计算节点发生故障,也即该任意一个计算节点为第一计算节点。
需要说明的是,故障隔离包括两层含义:第一层含义,一个训练作业的训练任务由多个计算节点执行,在该多个计算节点中存在第一计算节点的情况下,将该第一计算节点从该多个计算节点中剔除,以使该第一计算节点不再用于执行该训练作业的训练任务;第二层含义,在该第一计算节点是发生硬件故障的情况下,该第一计算节点在被故障隔离之后,该第一计算节点在被故障恢复之前,该第一计算节点不会被用于执行任何训练作业的训练任务。
在一种可能的实现方式中,任务调度模块211还用于:接收来自第一计算节点上报的故障。本申请的每个计算节点在执行训练任务时,也会监测该训练任务对应的训练进程是否发生运行故障,当监测到该训练任务对应的训练进程发生运行故障时,确定自己发生故障,也即确定自己为第一计算节点,并向任务调度模块211进行故障上报。从软件层面来看,本申请的每个计算节点在执行训练任务时,该计算节点中的监测程序会监测该训练任务对应的训练进程是否发生运行故障,当该监测程序监测到该训练任务对应的训练进程发生运行故障时,确定该计算节点发生故障,也即确定该计算节点为第一计算节点,该监测程序向任务调度模块211进行故障上报。
在一种可能的实现方式中,资源管理模块212还用于:接收来自第一计算节点上报的故障;在接收到来自第一计算节点上报的故障之后,对该第一计算节点进行故障隔离,以及将该故障向任务调度模块211进行上报。本申请的每个计算节点在执行训练任务时,当监测到该训练任务对应的训练进程发生运行故障时,确定自己发生故障,也即确定自己为第一计算节点,并向资源管理模块212进行故障上报;资源管理模块212在接收到该第一计算节点上报的故障后,对该第一计算节点进行故障隔离,以及将该故障转发给任务调度模块211。从软件层面来看,本申请的每个计算节点在执行训练任务时,该计算节点中的监测程序会监测该训练任务对应的训练进程是否发生运行故障,当该监测程序监测到该训练任务对应的训练进程发生运行故障时,确定该计算节点发生故障,也即确定该计算节点为第一计算节点,该监测程序向资源管理模块212进行故障上报。
需要说明的是,前述训练进程发生运行故障不包括训练进程从计算节点上退出。
在一种可能的实现方式中,本申请的任务调度模块211还用于:在计算节点在执行训练任务的过程中发生故障后,进行故障恢复;也即,在接收到来自资源管理模块212或第一计算节点上报的故障后,进行故障恢复。
作为一示例,在资源管理模块212向任务调度模块211进行故障上报的情况下,在故障恢复方面,本申请的任务调度模块211具体用于:通知未发生故障的第三计算节点暂停训练任务的执行,也即通知第三计算节点暂停训练进程,向资源管理模块212申请第二计算节点用于替代第一计算节点。其中,第二计算节点是指用于替代第一计算节点的一类计算节点,可以为一个或多个计算节点;第二计算节点用于执行原来由第一计算节点执行的训练任务;第二计算节点可以为计算资源池220中未用于执行训练任务的计算节点;或第二计算节点可以为计算资源池220中已经用于执行训练任务的计算节点,但第二计算节点执行的训练任务与第一计算节点执行的训练任务不归属于同一个训练作业。第三计算节点是指未发生故障的一类计算节点,可以为一个或多个计算节点;第三计算节点与第一计算节点用于执行同一个训练作业中的训练任务。
作为另一示例,在第一计算节点向任务调度模块211进行故障上报的情况下,在故障恢复方面,本申请的任务调度模块211具体用于:通知资源管理模块212对该第一计算节点进行故障隔离,通知第三计算节点暂停训练任务的执行,向资源管理模块212申请第二计算节点用于替代该第一计算节点。
在一种可能的实现方式中,本申请的资源管理模块212还用于:在接收来自任务调度模块211的申请第二计算节点的申请后,重新分配计算资源,也即从计算资源池220中分配用于替代该第一计算节点的第二计算节点;以及在重新分配计算资源之后,将重新分配计算资源的结果告知任务调度模块211。
如此,资源管理模块212在训练任务执行过程中可以进行计算节点的增加,也即资源动态调整。例如,若某个计算节点在执行某个或某些训练任务时,发生故障,资源管理模块212可以增加第二计算节点替代该第一计算节点执行该训练任务。
在一种可能的实现方式中,本申请的任务调度模块211还用于:接收来自资源管理模块212的重新分配计算资源的结果,调用增加的第二计算节点执行该第一计算节点原来执行的训练任务;以及通知第三计算节点继续训练任务的执行,也即通知第三计算节点继续执行之前暂停的训练进程。
由于任务调度模块211与资源管理模块212可以通信,如此,资源管理模块212可以向任务调度模块211进行故障上报,以及任务调度模块211可以通知资源管理模块212对第一计算节点进行故障隔离等。
由于任务调度模块211与计算资源池220可以通信,如此,任务调度模块211可以通知计算资源池220中的计算节点暂停训练任务的执行以及继续训练任务的执行等。
由于资源管理模块212与计算资源池220可以通信,如此,资源管理模块212可以监测计算资源池220中的计算节点在执行训练任务时是否发生故障,以及对计算资源池220中的第一计算节点进行故障隔离等。
如前所述,数据并行的分布式训练分为多个计算节点计算和梯度同步两个阶段。如此,对于一个AI模型的训练作业来说,该训练作业分为多个训练任务,这多个训练任务由多个计算节点执行;在多个计算节点计算阶段,多个计算节点分别独立完成自己的计算得到对应的梯度;在梯度同步阶段,多个计算节点中的每个计算节点均提供自己计算得到的梯度,共同完成梯度同步。由于多个计算节点在计算阶段是独立完成的,对于多个计算节点中的任意一个计算节点来说,其并不知道自己需要与哪个或哪些节点进行梯度同步,而多个计算节点在执行训练任务时是基于同一个训练框架的,因此可以在该训练框架中设置通讯拓扑,该通讯拓扑用于多个计算节点进行梯度同步。通讯拓扑为由执行一个训练作业的多个计算节点组成的拓扑结构,该通讯拓扑记录该训练作业由哪些计算节点共同执行,以及在梯度同步时有哪些计算节点参与;该通讯拓扑记录可以用于这多个计算节点之间进行通信。
在一种可能的实现方式中,本申请还对训练框架的能力进行优化,在现有的训练框架中增加训练任务的容错处理;也即,支持在训练过程中在训练框架的通讯拓扑中动态增删计算节点,保证任务高可用。
具体地,一个训练作业中的多个训练任务由多个计算节点执行,在训练过程中,当多个计算节点中存在第一计算节点时,资源管理模块212会对该第一计算节点进行故障隔离,以及分配第二计算节点替代该第一计算节点;此种情况下,需要更新训练框架中的通讯拓扑,也即在训练框架中的通讯拓扑中删除该第一计算节点,并且增加该第二计算节点。
作为一种示例,资源管理模块212分配第二计算节点替代该第一计算节点之后,通知任务调度模块211;任务调度模块211将该第二计算节点的信息告知多个计算节点中的第三计算节点,第三计算节点在其上的训练框架中的通讯拓扑中删除该第一计算节点以及增加该第二计算节点;任务调度模块211将训练框架、训练数据集、初始AI模型等发送给第二计算节点,或者说第二计算节点可以从数据存储模块213中获取训练框架、训练数据集、初始AI模型等;任务调度模块211还将第三计算节点的信息发给第二计算节点,第二计算节点可以部署训练框架以及基于自己的信息和第三计算节点的信息在部署的训练框架中构建通讯拓扑;任务调度模块211还第二计算节点可以部署训练框架之后,在该第二计算节点中配置启动原来由第一计算节点执行的训练任务。
应理解,在第三计算节点以及该第二计算节点均更新了训练框架中的通讯拓扑之后,以及第二计算节点基于自己的信息和第三计算节点的信息在部署训练框架中构建通讯拓扑之后,第三计算节点以及第二计算节点上的训练框架中的通讯拓扑是相同的,从而第三计算节点以及第二计算节点可以进行梯度同步。其中,因第二计算节点还没有执行过原来由第一计算节点执行的训练任务,故不存在相应的训练参数,所以第二计算节点在本次梯度同步时不提供训练参数。
通过上述各模块的功能,本申请实施例提供的AI平台210,训练发生故障时,动态隔离发生故障的第一计算节点,补充第二计算节点,第二计算节点替代发生故障的第一计算节点执行训练,保障训练过程不被中断,从而整体训练时长不受影响,实现降低故障恢复的时长。
请参阅图7,图7是本申请实施例提供的一种AI模型的分布式训练方法的流程示意图,图7所示的AI模型的分布式训练方法可以基于图2所示的AI平台210实现。图7中的任务调度模块、资源管理模块可以分别为图2中的任务调度模块211、资源管理模块212,图7中的计算资源可以为计算资源池220或计算资源池220中的计算资源。
下面以AI平台210对一个初始AI模型进行分布式训练以得到训练完成的AI模型为例,介绍本申请提供的AI模型的分布式训练方法。该初始AI模型的分布式训练对应一个训练作业,该初始AI模型的分布式训练需要的计算资源为多个计算节点;该训练作业可以分为多个训练任务,多个训练任务采用同一训练框架,多个计算节点与多个训练任务一一对应;多个计算节点中的每个计算节点执行对应的训练任务,也即多个计算节点中的每个计算节点为对应的训练任务跑一个训练进程,从而有多个训练进程,且多个训练任务与多个训练进程一一对应。此外,多个计算节点中的每个计算节点可以仅执行一个训练任务,即每个计算节点上仅有一个训练进程,每个计算节点上仅有一个训练框架。
如图7所示,图7中的计算资源可以表示多个计算节点中的全部或部分计算节点,多个计算节点中的每个计算节点用于执行多个训练任务中的其中一个训练任务;图7中的第一计算节点可以表示多个计算节点中的任意一个发生故障的计算节点;图7中的第三计算节点可以表示多个计算节点中的任意一个未发生故障的计算节点;图7中的第二计算节点可以表示用于替代任意一个第一计算节点的计算节点,第二计算节点用于执行原来由第一计算节点执行的训练任务。该AI模型的分布式训练方法的流程包括任务启动、状态监测、故障隔离以及故障恢复四个阶段,下面对前述各个阶段进行详细介绍。
第一阶段,任务启动。
步骤S1:用户启动训练作业。
具体地,用户通过人机交互模块215创建并提交用于对初始AI模型进行训练的训练作业,人机交互模块215根据用户提交的训练作业生成用户的指令,并将用户的指令转发给任务调度模块211;任务调度模块211接收用户提交的训练作业,从而实现用户启动训练作业。
请参阅图8,图8是本申请实施例提供的一种用户交互界面的示意图,图8所示的界面为人机交互模块215中展示的创建训练作业的界面。创建训练作业包括服务选型、规格确认和完成三个步骤。用户在服务选型过程中,本申请AI平台210可以基于按需计费的计费模式向用户提供AI模型的训练服务。在创建训练作业过程中,可以设定训练作业的名称,以及一键式参数设置。训练使用的算法可以基于不同的来源,按需获取,例如选择使用过的算法、预置算法、常用框架(也即常用训练框架)、自定义算法;在选择算法时,可以基于算法的名称进行选择。计算资源池220分为公共资源池和专用资源池,用户可以根据需求选择对应的计算资源池用于训练;公共资源池和专用资源池中均可以包括不同规格的计算资源,用户可以根据所需计算资源的规模从不同规格的计算资源中选择合适的计算资源用于训练;在选择计算资源时,可以基于训练需求设置计算节点的数量。在用户服务选型完成后,用户进行规格确认,规格确认完成后,用户完成创建训练作业。
应理解,任务调度模块211接收到用户提交的训练作业之后,获知用户启动了训练作业的执行,从而申请计算资源用于执行训练作业,也即执行步骤S2。
步骤S2:任务调度模块向资源管理模块申请计算资源。
具体地,由于用户在创建训练作业时,设置了用于执行训练作业的计算节点的数量、计算节点的规格等,任务调度模块211会根据用户的设置向资源管理模块212申请计算资源。例如,用户设置需要多少个计算节点执行训练作业,任务调度模块211就会向资源管理模块212申请多少个计算节点;以及用户设置用于执行训练作业的计算节点的规格是什么,任务调度模块211就会向资源管理模块212申请什么规格的计算节点。
步骤S3:资源管理模块分配计算资源。
具体地,资源管理模块212在接收到来自任务调度模块211的申请计算资源的申请之后,根据申请计算资源的申请从计算资源池220中为训练作业分配多个计算节点,且分配的多个计算节点的规格是任务调度模块211申请的计算节点的规格。
此外,资源管理模块212会将分配计算资源的结果返回给任务调度模块211,因此任务调度模块211可以知晓资源管理模块212为训练作业分配的计算资源是哪些计算节点;其中,分配计算资源的结果可选地包括:计算节点的名称、计算节点的标识以及计算节点的规格等。
步骤S4:任务调度模块启动训练。
具体地,任务调度模块211会根据用户在创建训练作业时设置的计算节点的数量将训练作业划分为多个训练任务,其中,多个训练任务中的训练任务的数量等于设置的计算节点的数量,训练作业中的每个训练任务为初始AI模型的分布式训练的训练任务,训练作业中的每个训练任务用于对初始AI模型进行多轮迭代训练;任务调度模块211会从多个计算节点中确定用于执行每个训练任务的计算节点,并将每个训练任务配置在为该训练任务确定的计算节点上执行,故多个训练任务与多个计算节点一一对应。应理解,一个训练任务会在一个计算节点中运行,从而多个计算节点中的每个计算节点均会针对训练作业中的一个训练任务跑一个训练进程用于训练,故多个训练任务与多个训练进程一一对应。
其中,任务调度模块211从多个计算节点中确定用于执行每个训练任务的计算节点时,可以基于每个训练任务所需的计算节点的规格从多个计算节点中匹配合适的计算节点用于执行每个训练任务;任务调度模块211将训练任务配置在确定的计算节点上执行时,可以基于计算节点的名称或计算节点的标识等精准将训练任务配置在对应的计算节点上执行。
如图8所示,用户在创建训练作业时,设置计算节点的数量为4个,那么任务调度模块211会将训练作业分为4个训练任务,并且向资源管理模块212申请4个计算节点用于执行训练作业,以及将4个训练任务一一对应配置在这4个计算节点上执行。
第二阶段,状态监测。
本申请中,对于用于执行训练作业的多个计算节点中的每个计算节点,计算节点在执行训练任务的过程中,AI平台210提供状态监测能力,AI平台210周期性的对计算节点进行状态监测;状态监测包括资源管理模块212对计算节点进行故障监测以及计算节点进行自我故障监测,具体如下:
步骤S5:资源管理模块对计算资源进行故障监测。
资源管理模块212对计算资源进行故障监测,也即资源管理模块212对计算节点进行故障监测。具体地,资源管理模块212对多个计算节点中的每个计算节点进行周期性的故障监测,以确定这多个计算节点中的每个计算节点在执行训练任务时是否发生故障。其中,资源管理模块212对计算节点进行故障监测包括监测计算节点是否发生硬件故障和/或监测计算节点上的训练进程是否退出;当监测到计算节点发生硬件故障和/或监测计算节点上的训练进程退出时,确认计算节点发生故障。
需要说明的是,本申请的硬件故障可以分为第一类硬件故障和第二类硬件故障。第一类硬件故障:会导致计算节点上的训练进程退出或停止;例如,计算节点发生掉电、计算节点和与其共同用于执行同一训练作业的其他计算节点之间的网络断开。第二类硬件故障:不会导致计算节点上的训练进程退出或停止,仅会影响计算节点的计算性能;例如,计算节点的计算很慢且计算节点上的训练进程没有退出。此外,计算节点发生硬件故障仅是导致计算节点上的训练进程退出的其中一种可能,本申请对导致计算节点上的训练进程退出的原因不进行具体限定,任何一种原因导致计算节点上的训练进程退出时,均可以被资源管理模块212监测到。
步骤S6:每个计算节点进行自我故障监测。
具体地,多个计算节点中的每个计算节点在执行训练任务时,均会监测训练任务对应的训练进程是否发生运行故障。从软件层面来看,本申请的每个计算节点在执行训练任务时,其中的监测程序均会监测训练任务对应的训练进程是否发生运行故障。
应理解,上述步骤S5和S6不存在执行时间的先后的关系,且当执行了上述步骤S5时,S6是可选的,当执行了上述步骤S6时,上述步骤S5是可选的。
第三阶段,故障隔离。
由状态监测阶段可知,本申请中,资源管理模块212对计算资源(也即计算节点)进行故障监测和/或计算节点进行自我故障监测,两种监测方式监测到故障均可以认为计算节点发生故障;其中,计算节点发生故障则导致计算节点执行的训练任务发生故障,训练任务发生故障也即训练作业发生故障,训练作业发生故障也即初始AI模型的分布式训练发生故障。为保证初始AI模型的分布式训练能顺利进行,一旦监测到发生故障,则需要对发生故障的第一计算节点进行故障隔离。由于存在两种监测方式监测到的故障,故触发故障隔离的触发方式也有两种,下面分别描述。
方式一:资源管理模块触发故障隔离。如下步骤S7-步骤S9为由资源管理模块触发故障隔离的步骤。
步骤S7:资源管理模块对第一计算节点进行故障隔离。
具体地,资源管理模块212监测到多个计算节点中的第一计算节点发生故障时,对第一计算节点进行故障隔离,以使第一计算节点不再用于执行训练作业中的训练任务;以及第一计算节点是发生硬件故障的情况下,避免第一计算节点在故障恢复之前被再次调用。其中,资源管理模块212监测到的故障包括计算节点发生硬件故障和/或计算节点上的训练进程退出。
步骤S8:资源管理模块向任务调度模块进行故障上报。
具体地,资源管理模块212将监测到故障上报到任务调度模块211,例如将第一计算节点发生硬件故障或第一计算节点上的训练进程退出的信息上报到任务调度模块211,由任务调度模块211对第一计算节点上的训练进程进行处理。
步骤S9:任务调度模块向第一计算节点发送停止训练进程的通知。
应理解,步骤S9是可选的,当资源管理模块212监测到第一计算节点发生第一类硬件故障或监测到第一计算节点上的训练进程退出时,第一计算节点上的训练进程自动停止,不执行步骤S9;当资源管理模块212监测到第一计算节点发生第二类硬件故障时,第一计算节点上训练进程并没有停止,需要执行步骤S9。
具体地,任务调度模块211向发生第二类硬件故障的第一计算节点发送停止训练进程的通知,停止训练进程的通知用于停止发生第二类硬件故障的第一计算节点上的训练进程。
方式二:计算节点触发故障隔离。如下步骤S10-步骤S12为由计算节点触发故障隔离的步骤。
步骤S10:第一计算节点监测到训练进程运行故障。
具体地,多个计算节点中的每个计算节点在监测到其上的训练进程发生运行故障时,确定自己发生故障,也即确定自己为第一计算节点。从软件层面来看,多个计算节点中的每个计算节点上的监测程序在监测到该计算节点上的训练进程发生运行故障时,确定该计算节点发生故障,也即确定该计算节点为第一计算节点。其中,计算节点上的训练进程发生运行故障,也即训练进程对应的训练任务发生运行故障。
步骤S11:第一计算节点向任务调度模块进行故障上报。
具体地,第一计算节点上的训练进程发生运行故障,第一计算节点向任务调度模块进行故障上报;从软件层面来看,由第一计算节点上的监测程序将故障上报到任务调度模块211。
步骤S12:任务调度模块向资源管理模块发送对第一计算节点进行故障隔离的通知,资源管理模块对第一计算节点进行故障隔离。
也即,任务调度模块211先向资源管理模块212发送对第一计算节点进行故障隔离的通知,资源管理模块212在接收到来自任务调度模块211的对第一计算节点进行故障隔离的通知之后,对第一计算节点进行故障隔离。
上述步骤S11和S12中,第一计算节点先将故障上报到任务调度模块211,再被资源管理模块212故障隔离。可选地,第一计算节点也可以先将故障上报到资源管理模块212,然后资源管理模块212将故障上报到任务调度模块211以及资源管理模块212对第一计算节点进行故障隔离。需要说明的是,此种情况时,资源管理模块212向任务调度模块211进行故障上报以及资源管理模块212对第一计算节点进行故障隔离的动作执行时间可以是有先后顺序,也可以同时发生。
在一种可能的实现方式中,S11:第一计算节点向资源管理模块进行故障上报,资源管理模块向任务调度模块进行故障上报;S12:资源管理模块对第一计算节点进行故障隔离。
第四阶段,故障恢复。
需要说明的是,故障恢复阶段是可选执行的。如图8所示,本申请提供的创建训练作业的界面存在“启动故障恢复”的可选配置项;对于由多个计算节点共同执行的训练作业来说,用户在创建训练作业时勾选了“启动故障恢复”的配置项的情况下,若多个计算节点中存在发生故障的第一计算节点,则执行步骤S13-步骤S18,否则不执行步骤S13-步骤S18。同时,本申请提供的创建训练作业的界面存在“故障率”的配置项,用户在勾选了“启动故障恢复”的配置项的情况下,用户还可以设置故障率的阈值;对于由多个计算节点共同执行的训练作业来说,若多个计算节点中发生故障的第一计算节点的数量与多个计算节点中的计算节点的数量的比值超过故障率的阈值,则不执行步骤S13-步骤S18,否则执行步骤S13-步骤S18。例如,用户在创建训练作业时,设置该训练作业由4个计算节点执行,故障率的阈值设置为50%,若4个计算节点中的第一计算节点的数量超过2个,则不进行故障恢复,否则进行故障恢复。
本申请中,当计算节点发生硬件故障或计算节点上的训练进程退出时,该计算节点发生故障。此种情况,由资源管理模块212监测到该计算节点发生故障以及将故障上报到任务调度模块211,由任务调度模块211判断因该计算节点发生故障而受影响的训练任务。
本申请中,当计算节点监测到其上的训练进程发生运行故障时,该计算节点发生故障。此种情况,由该计算节点直接将故障上报到任务调度模块211,或由计算节点间接将故障上报到任务调度模块211(计算节点先将故障上报到资源管理模块212,资源管理模块212再将故障上报到任务调度模块211),且在故障上报时直接告知任务调度模块211哪个或哪些训练进程发生运行故障,也即告知任务调度模块211哪个或哪些训练任务发生运行故障。
综上,在资源管理模块212监测到计算节点发生故障,并上报到任务调度模块211的情况下,任务调度模块211判断到计算节点上执行的训练任务发生故障;在计算节点监测到训练进程发生运行故障,并直接或间接将故障上报到任务调度模块211的情况下,任务调度模块211接收到计算节点执行的训练任务发生故障。
任务调度模块211在判断到计算节点上执行的训练任务发生故障或接收到计算节点执行的训练任务发生故障后,触发故障恢复操作。下面对故障恢复的阶段进行具体说明:
步骤S13:任务调度模块向未发生故障的第三计算节点发送暂停训练进程的通知。
由于数据并行的分布式训练过程中,多个计算节点计算和梯度同步是交替进行的。在执行初始AI模型的训练过程中,当多个计算节点中存在第一计算节点时,第一计算节点无法参与梯度同步;如此,因为缺少了第一计算节点,故梯度同步可能会出现问题,所以在故障恢复过程中,需要通知多个计算节点中的未发生故障的第三计算节点暂停训练。
具体地,由于训练作业中的训练任务发生故障,则该训练作业发生故障,任务调度模块211向多个计算节点中的第三计算节点发送暂停训练进程的通知,暂停训练进程的通知用于暂停第三计算节点上的训练进程,其中,暂停的训练进程对应的训练任务为发生故障的训练作业中的训练任务。
步骤S14:第三计算节点在接收到来自任务调度模块的暂停训练进程的通知之后,进行训练进程的暂停。
具体地,第三计算节点在接收到暂停训练进程的通知之后,暂停其上的训练进程,且等待接收继续训练的通知,以便继续执行被暂停的训练进程。
在一种可能的实现方式中,第三计算节点在接收到暂停训练进程的通知之后,继续完成训练进程的计算,在得到训练进程对应的梯度之后,暂停训练进程。
具体地,第三计算节点完成训练进程的计算,得到训练进程对应的梯度之后,本应进入梯度同步;但因接收到暂停训练进程的通知,故暂停梯度同步,开始循环等待(不超时不退出),直到接收到继续训练的通知。
请参阅图9,图9是本申请实施例提供的一种梯度同步的示意图。如图9所示,分布式训练在未发生故障时,多个计算节点完成各自的计算,然后多个计算节点进行梯度同步;当发生故障时,例如多个计算节点中的第一计算节点发生故障,则去掉第一计算节点(也即资源管理模块212对第一计算节点进行故障隔离),从而第一计算节点不再用于当前的训练,并且多个计算节点中的第三计算节点在完成计算后暂停执行当前的训练,也即暂停梯度同步。
在一种可能的实现方式中,第三计算节点暂停训练进程之后,进入循环等待,本申请可以设置一个最长等待时长,若第三计算节点循环等待的时长超过最长等待时长,则退出循环等待,训练失败,由运维人员修复,从而避免无限挂死,增加程序的健壮性。
步骤S15:任务调度模块向资源管理模块重新申请计算资源。
具体地,任务调度模块211向资源管理模块212申请第二计算节点用于替代多个计算节点中的第一计算节点,以便基于第二计算节点和多个计算节点中的第三计算节点继续执行训练;其中,第二计算节点为多个计算节点之外的计算节点;任务调度模块211向资源管理模块212申请第二计算节点时,基于第一计算节点的规格进行申请,例如申请的第二计算节点与第一计算节点的规格相同或相当。
步骤S16:资源管理模块重新分配计算资源。
具体地,资源管理模块212接收到来自任务调度模块211的申请第二计算节点的申请后,从计算资源池220中重新分配第二计算节点,以及向给任务调度模块211返回重新分配计算资源的结果。其中,重新分配计算资源的结果存在两种可能情况,分别如下描述。
第一种情况,重新分配计算资源的结果为已分配第二计算节点;重新分配计算资源的结果还可以可选地包括:第二计算节点的名称、第二计算节点的标识以及第二计算节点的规格等。此种可能情况,便于任务调度模块211将发生故障的训练任务配置在第二计算节点上执行,以实现采用第二计算节点替代第一计算节点。
第二种情况,重新分配计算资源的结果为未分配第二计算节点。此种可能情况是因为计算资源池220受限,其中没有可供重新分配的计算资源。发生此种可能情况时,可按发生故障之前的配置,基于第三计算节点继续训练。
步骤S17:任务调度模块向第三计算节点发送继续训练的通知。
具体地,任务调度模块211向第三计算节点发送继续训练的通知,该继续训练的通知用于第三计算节点更新其上的训练框架中的通讯拓扑,以及在更新训练框架中的通讯拓扑之后继续执行训练进程。其中,继续训练的通知需要通知继续执行的训练进程为之前暂停的训练进程。
需要说明的是,第三计算节点上需要更新通讯拓扑的训练框架为发生故障的训练作业对应的训练框架,也即需要更新通讯拓扑的训练框架为训练发生故障的初始AI模型的训练框架。
由于资源管理模块212向任务调度模块211返回的重新分配计算资源的结果有已分配第二计算节点和未分配第二计算节点两种可能情况,则任务调度模块211向第三计算节点发送的继续训练的通知包括的内容以及用途也有两种可能情况,分别如下描述。
第一种情况:若重新分配计算资源的结果为已分配第二计算节点,继续训练的通知可以包括第二计算节点的信息(例如第二计算节点的名称、第二计算节点的标识以及第二计算节点的规格等);继续训练的通知用于第三计算节点在训练框架中的通讯拓扑中删除第一计算节点以及增加第二计算节点,以及在更新训练框架中的通讯拓扑之后继续执行训练进程;其中,更新通讯拓扑的训练框架为发生故障的训练作业对应的训练框架,也即训练发生故障初始AI模型的训练框架。此种情况下,执行步骤S18,之后基于第三计算节点和第二计算节点继续训练。
请参阅图10,图10是本申请实施例提供的一种更新训练框架的通讯拓扑的示意图。如图10所示,训练作业分为4个训练任务(分别为训练任务1、训练任务2、训练任务3和训练任务4),从而训练作业由4个计算节点(分别为计算节点1、计算节点2、计算节点3和计算节点4)执行;在发生故障之前,计算节点1、计算节点2、计算节点3和计算节点4中的训练框架中的通讯拓扑均是以计算节点1、计算节点2、计算节点3和计算节点4构成的通信网络。若计算节点1、计算节点2和计算节点3未发生故障,也即计算节点1、计算节点2和计算节点3为第三计算节点;以及计算节点4发生故障,也即计算节点4为第一计算节点;重新分配计算节点5替代计算节点4,也即计算节点5为第二计算节点;计算节点1、计算节点2和计算节点3均在训练框架中的通讯拓扑中删除计算节点4以及增加计算节点5,更新为以计算节点1、计算节点2、计算节点3和计算节点5构成的通信网络。如此,计算节点1、计算节点2、计算节点3和计算节点5可以继续训练,也即之后训练作业由计算节点1、计算节点2、计算节点3和计算节点5执行。
第二种情况:若重新分配计算资源的结果为未分配第二计算节点,继续训练的通知不包括第二计算节点的信息;继续训练的通知用于第三计算节点在训练框架中的通讯拓扑中删除第一计算节点,以及在更新训练框架中的通讯拓扑之后继续执行训练进程;其中,更新通讯拓扑的训练框架为发生故障的训练作业对应的训练框架,也即训练发生故障初始AI模型的训练框架。此种情况下,不执行步骤S18,之后基于第三计算节点继续训练。
需要说明的是,上述第二种情况,由于第一计算节点发生故障后,剔除第一计算节点,仅基于第三计算节点继续训练,因为每个计算节点训练的样本数(BatchSize)没有变更,所以在发生故障过程中,每个第三计算节点的训练时间没有变化,从而整体训练时间没有变化。对于整个训练作业来说,若每个训练任务的每轮训练的样本数(BatchSize)不变,则每轮训练少训练了n/m份样本,n为发生故障的第一计算节点的数量,m为用于执行训练作业的计算节点的总数量。也即,训练作业总共对应m个计算节点,每轮训练的样本分为1/m份,每个计算节点每次使用1/m份样本训练,发生故障的第一计算节点有n个,故有n个计算节点无法继续训练,则每轮训练少训练n/m份样本。
请参阅图11,图11是本申请实施例提供的另一种更新训练框架的通讯拓扑的示意图。如图11所示,训练作业分为4个训练任务(分别为训练任务1、训练任务2、训练任务3和训练任务4),从而训练作业由4个计算节点(分别为计算节点1、计算节点2、计算节点3和计算节点4)执行;在发生故障之前,计算节点1、计算节点2、计算节点3和计算节点4中的训练框架中的通讯拓扑均是以计算节点1、计算节点2、计算节点3和计算节点4构成的通信网络;若计算节点1、计算节点2和计算节点3未发生故障,也即计算节点1、计算节点2和计算节点3为第三计算节点;以及计算节点4发生故障,也即计算节点4为第一计算节点;计算节点1、计算节点2和计算节点3均在训练框架中的通讯拓扑中删除计算节点4,更新为以计算节点1、计算节点2和计算节点3构成的通信网络。如此,计算节点1、计算节点2和计算节点3可以继续训练,也即之后训练作业仅由3个计算节点执行,每轮训练少训练1/4份样本。
步骤S18:第二计算节点进行数据恢复。
具体地,任务调度模块211将训练框架、训练数据集、初始AI模型等发送给第二计算节点,或者说第二计算节点可以从数据存储模块213中获取训练框架、训练数据集、初始AI模型等,从而第二计算节点可以部署训练框架以及采用训练数据集中的训练数据对初始AI模型进行训练;任务调度模块211还将第三计算节点的信息(例如第三计算节点的名称、第三计算节点的标识以及第三计算节点的规格等)发给第二计算节点,第二计算节点可以部署训练框架以及基于自己的信息和第三计算节点的信息在部署的训练框架中构建通讯拓扑;任务调度模块211将原来由第一计算节点执行的训练任务配置在第二计算节点上执行,也即第二计算节点会针对原来由第一计算节点执行的训练任务跑一个训练进程。
应理解,在第三计算节点更新了训练框架中的通讯拓扑,以及第二计算节点在训练框架中构建通讯拓扑之后,第三计算节点以及第二计算节点上的训练框架中的通讯拓扑是相同的,从而第三计算节点与第二计算节点可以进行梯度同步。
其中,第二计算节点参与梯度同步时,通过加载第一计算节点在发生故障之前保存的Ckpt文件启动,该Ckpt文件是针对发生故障的训练任务保存的,从而第二计算节点可以恢复得到第一计算节点在发生故障之前的数据。
如图9所示,在第三计算节点在更新训练框架中的通讯拓扑,且第二计算节点在训练框架中构建通讯拓扑以及数据恢复完成之后,第二计算节点与第三计算节点进行梯度同步;第二计算节点与第三计算节点在完成一次梯度同步之后,第二计算节点和第三计算节点训练的AI模型中的模型参数相同,从而可以基于第二计算节点与第三计算节点进行AI模型的下一轮训练。
应理解,图7所示的AI模型的分布式训练方法是以一个初始AI模型的训练、一个训练作业、每个计算节点仅执行一个训练任务、每个计算节点上仅有一个训练进程、每个计算节点上仅有一个训练框架为例描述的。
需要说明的是,AI平台210可能同时对多个初始AI模型进行训练。当AI平台210同时对多个初始AI模型进行训练时,多个初始AI模型对应多个训练作业;此种情况下,每个计算节点执行一个或多个训练任务(多个训练任务中的每个训练任务归属于多个训练作业中的其中一个训练作业),每个计算节点上存在一个或多个训练进程以及一个或多个训练框架;多个初始AI模型训练时,训练的步骤与图7描述的过程是相同的,具体的步骤请参阅图7的描述,但以下几个步骤需要进一步说明:
步骤S2和步骤S3:对于多个训练作业来说,使用的计算资源可能存在重合,也可能不重合;当存在重合时,重合的计算节点用于执行多个训练任务,这多个训练任务归属于不同的训练作业。
步骤S5:每个计算节点用于执行一个或多个训练任务(多个训练任务中的每个训练任务归属于多个训练作业中的其中一个训练作业),那么每个计算节点上存在一个或多个训练进程;当监测到第一计算节点发生硬件故障时,第一计算节点上的一个或多个训练进程均因第一计算节点发生故障而受到影响;当监测到第一计算节点上的训练进程退出时,第一计算节点上退出的训练进程受到影响,第一计算节点上退出的训练进程受到影响,第一计算节点上没有退出的训练进程继续正常运行。
步骤S6:每个计算节点会监测其上的一个或多个训练进程是否发生运行故障,也即每个计算节点会监测其上的每个训练进程是否发生运行故障。
步骤S7:第一计算节点可能执行一个或多个训练任务(多个训练任务中的每个训练任务归属于多个训练作业中的其中一个训练作业),那么第一计算节点上可能存在一个或多个训练进程;当监测第一计算节点硬件故障时,第一计算节点为发生故障的计算节点,对第一计算节点进行故障隔离后,第一计算节点不再用于执行这一个或多个训练任务。当监测到第一计算节点上的至少一个训练进程退出时,第一计算节点为发生故障的计算节点;也即,只要第一计算节点上有训练进程退出,则说明第一计算节点发生故障;对第一计算节点进行故障隔离后,第一计算节点仅不再用于执行退出的训练进程对应的训练任务,而第一计算节点上没有退出的训练进程继续正常运行;且后面仅需对退出的训练进程对应的训练任务进行故障恢复,而无需对没有退出的训练进程对应的训练任务进行故障恢复。
步骤S9:当第一计算节点发生第一类硬件故障时,第一计算节点上的一个或多个训练进程均会受到影响,停止训练进程的通知可选地用于停止第一计算节点上的一个或多个训练进程;从而后面可选的对这一个或多个训练进程对应的训练任务进行故障恢复。
步骤S10:第一计算节点监测到一个或多个训练进程中的任意一个训练进程发生运行故障,则第一计算节点为发生故障的计算节点;也即,只要第一计算节点上有训练进程运行故障,则说明第一计算节点发生故障。
步骤S11:第一计算节点故障上报时,仅针对发生运行故障的训练进程进行故障上报,不对没有发生运行故障的训练进程进行故障上报;也即,第一计算节点仅请求AI平台对运行故障的训练进程对应的训练任务进行故障恢复,而无需对正常运行的训练进程对应的训练任务进行故障恢复。
步骤S12:对第一计算节点进行故障隔离后,第一计算节点仅不再用于执行发生运行故障的训练进程对应的训练任务,而第一计算节点继续用于执行没有发生运行故障的训练进程对应的训练任务,也即第一计算节点上没有发生运行故障的训练进程继续正常运行。
步骤S13和步骤14:第三计算节点可能用于执行一个或多个训练任务(多个训练任务中的每个训练任务归属于多个训练作业中的其中一个训练作业),那么第三计算节点上可能存在一个或多个训练进程;第三计算节点上需要暂停的训练进程为发生故障的训练作业中的训练任务对应的训练进程。
步骤S15和步骤16:因第一计算节点可能用于执行一个或多个训练任务,针对一个第一计算节点,补充进来的第二计算节点可能是一个或多个。例如,补充一个第二计算节点替代一个第一计算节点执行这一个或多个训练任务;或者,补充多个第二计算节点替代一个第一计算节点执行这一个或多个训练任务,这多个第二计算节点中的每个第二计算节点执行这多个训练任务中的至少一个训练任务。
步骤S17:不同的初始AI模型的训练基于不同的训练框架实现,也即不同的训练作业对应不同的训练框架,不归属于同一训练作业的训练任务对应的训练框架不同;因第三计算节点可能用于执行一个或多个训练任务,那么第三计算节点上可能存在一个或多个训练框架;第三计算节点上需要更新通讯拓扑的训练框架为发生故障的训练任务对应的训练框架,也即第三计算节点上需要更新通讯拓扑的训练框架为发生故障的训练作业对应的训练框架。
请参阅图12,图12是本申请实施例提供的一种训练作业的处理流程时间线示意图。该训练作业的处理流程时间线为图7所示的AI模型的分布式训练的训练作业的处理流程时间线,该训练作业的处理流程包括以下步骤:
(1)多个计算节点中的每个计算节点用于执行该训练作业的其中一个训练任务,在启动该训练作业后,每个计算节点进行数据加载以及在完成数据加载之后开始执行训练。
(2)多个计算节点中存在发生故障的第一计算节点。
当多个计算节点中存在第一计算节点时,进行训练作业的故障恢复,训练作业的故障恢复包括训练作业硬件修复阶段和训练作业软件恢复阶段,训练作业硬件修复阶段包括以下步骤(3)和(4),训练作业软件恢复阶段包括以下步骤(5)、(6)和(7)。
(3)AI平台自动对第一计算节点进行故障隔离。
(4)AI平台自动分配第二计算节点,用于替代第一计算节点。
(5)第二计算节点进行数据加载。
(6)多个计算节点中未发生故障的第三计算节点更新训练框架中的通讯拓扑,且第二计算节点在训练框架中创建通讯拓扑。
(7)第二计算节点与第三计算节点进行训练参数同步。之后基于第二计算节点与第三计算节点正常训练。
由图12可知,本申请提供的AI模型的训练流程中,至少存在以下有益效果:
(1)训练过程中,第一计算节点发生故障时,训练作业发生故障,但训练作业不是直接退出;AI平台210在知道训练作业发生故障后,自动为训练作业分配第二计算节点以用于替代第一计算节点继续执行训练;如此,在训练作业不中断的情况下,完成故障恢复,无需人工介入重启发生故障的训练作业,减少故障恢复的耗时。
(2)第一计算节点发生故障时,剔除第一计算节点并暂停未发生故障的第三计算节点上的训练任务的执行,分配第二计算节点替代第一计算节点后,再恢复第三计算节点上的训练任务的执行。如此,仅需重新申请第二计算节点替代第一计算节点,避免重新申请训练作业所需的所有计算节点,减少了因重新申请计算资源失败而导致故障恢复失败的可能性。
(3)由于仅重新分配了第二计算节点用于替代发生故障的第一计算节点,故仅需第二计算节点拉取Ckpt文件启动,避免训练作业所需的所有计算节点均拉取Ckpt文件重启,减少了通过Ckpt文件启动时导致的训练时长的损失。
(4)故障恢复过程中,仅需第二计算节点进行数据加载,避免训练作业所需的计算节点均进行数据加载,减少了加载数据时所需要的带宽。
(5)第二计算节点通过与第三计算节点进行梯度同步以获取最新的训练结果,减少了因Ckpt文件无法高频保存而带来的训练损失。对于发生故障的训练作业,其受影响的阶段为:第一计算节点从发生故障到第二计算节点加入的过程中,第一计算节点没有参与训练的那部分样本的计算。其中,受影响的样本计算结果为(T/t)×(n/m),T为故障恢复时间,t为每轮训练的训练时长,n为第一计算节点的数量,m为训练作业所需的计算节点的总数量。并且,可以通过任务调度模块的优化减少故障恢复时间T,从而可以减少因发生故障对整个训练作业的影响;故障恢复时间T一般是在1~2分钟,对于执行时间为小时级的训练作业(大规模的训练作业)来说,基本可以做到训练作业的无损故障恢复。
请参阅图13,图13是本申请实施例提供的另一种人工智能AI模型的分布式训练方法的过程1300的流程图。过程1300描述为一系列的步骤或操作,应当理解的是,过程1300可以以各种顺序执行和/或同时发生,不限于图13所示的执行顺序。过程1300应用于AI平台,所述AI平台与计算资源池相关联,所述计算资源池包括用于所述AI模型分布式训练的多个计算节点,所述多个计算节点中的每个计算节点执行所述AI模型分布式训练的一个训练任务;过程1300包括但不限于如下步骤或操作:
步骤1301:对第一计算节点进行故障隔离,所述第一计算节点为所述多个计算节点中发生故障的计算节点;
步骤1302:确定第二计算节点,所述第二计算节点为所述计算资源池中除所述多个计算节点之外的计算节点;
步骤1303:配置所述第二计算节点,以使所述第二计算节点替代所述第一计算节点执行训练任务。
在本申请中,AI平台可以对AI模型的进行分布式训练,AI平台与计算资源池相关联,计算资源池包括用于AI模型分布式训练的多个计算节点,多个计算节点中的每个计算节点执行该AI模型分布式训练的一个训练任务,例如每个计算节点执行一个AI模型分布式训练的训练任务;在AI模型的分布式训练过程中,AI平台可以确定多个计算节点中是否存在发生故障的第一计算节点,AI平台如果确定到多个计算节点中存在发生故障的第一计算节点,则对该第一计算节点进行故障隔离,以使得该第一计算节点不再用于执行该AI模型分布式训练的训练任务;并且,AI平台可以从计算资源池中确定除前述多个计算节点之外的第二计算节点,以及配置该第二计算节点,以使得采用该第二计算节点来替代该第一计算节点执行该AI模型分布式训练的训练任务。如此,本申请用于AI模型的分布式训练的计算节点发生故障时,动态隔离发生故障的第一计算节点,补充第二计算节点替代第一计算节点继续训练,保障训练过程不被中断,从而整体训练时长不受影响,实现降低故障恢复的时长。应理解,该第二计算节点的计算能力与该第一计算节点的计算能力相同或相当,或者说该第二计算节点的规格与该第一计算节点的规格相同或相当,以确保该第二计算节点可以成功替代该第一计算节点。需要说明的是,若第一计算节点除执行该AI模型分布式训练的训练任务外,还执行其他AI模型分布式训练的训练任务,对第一计算节点进行故障隔离后,第一计算节点不再用于执行因第一计算节点发生故障而受影响的训练任务;第二计算节点替代第一计算节点执行因第一计算节点发生故障而受影响的训练任务;其中,因第一计算节点发生故障而受影响的训练任务包括以下一项或多项:该AI模型分布式训练的训练任务,其他AI模型分布式训练的训练任务。
在一种可能的实现方式中,所述AI平台在监测到以下一项或多项的情况下,所述第一计算节点为发生故障的计算节点:所述第一计算节点硬件故障,所述第一计算节点执行的训练任务对应的训练进程退出,所述第一计算节点上报的故障。
在本实现方式中,第一计算节点硬件故障、第一计算节点执行的训练任务对应的训练进程退出以及第一计算节点上报到AI平台的故障均可以被AI平台监测到;如果AI平台监测到前述一项或多项,则确定第一计算节点为发生故障的计算节点,并触发确定第二计算节点替代第一计算节点执行训练任务;如此,AI平台可以及时发现AI模型分布式训练存在故障,有利于降低故障恢复的时长。需要说明的是,若第一计算节点除执行该AI模型分布式训练的训练任务外,还执行其他AI模型分布式训练的训练任务,则当第一计算节点硬件故障,因第一计算节点发生故障而受影响的训练任务包括该AI模型分布式训练的训练任务和其他AI模型分布式训练的训练任务。进一步地,第一计算节点执行的训练任务对应的训练进程退出包括第一计算节点执行的该AI模型分布式训练的训练任务对应的训练进程退出以及其他AI模型分布式训练的训练任务对应的训练进程退出,也即只要第一计算节点上有训练进程退出,第一计算节点就为发生故障的计算节点;当该AI模型分布式训练的训练任务对应的训练进程退出,因第一计算节点发生故障而受影响的训练任务为该AI模型分布式训练的训练任务;当其他AI模型分布式训练的训练任务对应的训练进程退出,因第一计算节点发生故障而受影响的训练任务为其他AI模型分布式训练的训练任务;当该AI模型分布式训练的训练任务对应的训练进程和其他AI模型分布式训练的训练任务对应的训练进程均退出,因第一计算节点发生故障而受影响的训练任务包括该AI模型分布式训练的训练任务和其他AI模型分布式训练的训练任务。此外,第一计算节点上报的故障包括第一计算节点针对该AI模型分布式训练的训练任务上报的故障以及针对其他AI模型分布式训练的训练任务上报的故障,也即只要第一计算节点上报故障,第一计算节点就为发生故障的计算节点;当第一计算节点上报的故障为第一计算节点针对该AI模型分布式训练的训练任务上报的故障,因第一计算节点发生故障而受影响的训练任务为该AI模型分布式训练的训练任务;当第一计算节点上报的故障包括第一计算节点针对其他AI模型分布式训练的训练任务上报的故障,因第一计算节点发生故障而受影响的训练任务为其他AI模型分布式训练的训练任务;当第一计算节点上报的故障包括第一计算节点针对该AI模型分布式训练的训练任务上报的故障和针对其他AI模型分布式训练的训练任务上报的故障,因第一计算节点发生故障而受影响的训练任务包括该AI模型分布式训练的训练任务和其他AI模型分布式训练的训练任务。
在一种可能的实现方式中,若所述AI平台监测到所述第一计算节点硬件故障,且未监测到所述第一计算节点执行的训练任务对应的训练进程退出;在所述对第一计算节点进行故障隔离之后,所述方法包括:向所述第一计算节点发送停止训练进程的通知,所述停止训练进程的通知用于指示所述第一计算节点停止执行的训练任务对应的训练进程。
在本实现方式中,有些类型的硬件故障不会导致计算节点上的训练进程退出或停止,仅会影响计算节点的计算性能;在第一计算节点发生硬件故障的情况下,为确保第二计算节点能成功替代第一计算节点执行训练任务,AI平台向第一计算节点发送停止训练进程的通知,指示第一计算节点停止执行的训练任务对应的训练进程;从而避免第二计算节点已经在执行原来由第一计算节点执行的训练任务的情况下,第一计算节点还在执行该训练任务。应理解,停止训练进程的通知用于指示第一计算节点停止因第一计算节点发生故障而受影响的训练任务对应的训练进程。需要说明的是,若第一计算节点除执行该AI模型分布式训练的训练任务外,还执行其他AI模型分布式训练的训练任务,则当因第一计算节点发生故障而受影响的训练任务为该AI模型分布式训练的训练任务,停止训练进程的通知用于指示第一计算节点停止该AI模型分布式训练的训练任务对应的训练进程;当因第一计算节点发生故障而受影响的训练任务为其他AI模型分布式训练的训练任务,停止训练进程的通知用于指示第一计算节点停止其他AI模型分布式训练的训练任务对应的训练进程;当因第一计算节点发生故障而受影响的训练任务包括该AI模型分布式训练的训练任务和其他AI模型分布式训练的训练任务,停止训练进程的通知用于指示第一计算节点停止该AI模型分布式训练的训练任务对应的训练进程和其他AI模型分布式训练的训练任务对应的训练进程。
在一种可能的实现方式中,在所述对第一计算节点进行故障隔离之后,在所述确定第二计算节点之前,所述方法还包括:向第三计算节点发送暂停训练进程的通知,所述第三计算节点为所述多个计算节点中未发生故障的计算节点,所述暂停训练进程的通知用于指示所述第三计算节点暂停所述AI模型分布式训练的训练任务对应的训练进程。
在本实现方式中,该AI模型分布式训练包括多个计算节点计算和梯度同步,当第一计算节点发生故障,若不暂停未发生故障的第三计算节点的训练进程,则第三计算节点计算得到梯度后,就会进行梯度同步;但是,第一计算节点因为发生故障而被故障隔离,无法参与梯度同步,在这种情况下梯度同步会出现问题;因此,为避免梯度同步出现问题,需要将第三计算节点执行的训练进程进行暂停,直到有新增的第二计算节点加入用于执行训练。
在一种可能的实现方式中,所述暂停训练进程的通知具体用于:指示所述第三计算节点在执行完所述AI模型分布式训练的梯度计算之后,暂停所述AI模型分布式训练的训练任务对应的训练进程。
在本实现方式中,在未发生故障的第三计算节点梯度计算结束后,再暂停第三计算节点执行的训练进程;如此,等新增的第二计算节点加入用于执行训练后,即可直接进行梯度同步,有利于降低故障恢复时长。
在一种可能的实现方式中,所述方法还包括:在所述确定第二计算节点之后,所述方法还包括:向所述第三计算节点发送继续训练的通知,所述继续训练的通知用于指示所述第三计算节点在所述AI模型分布式训练的训练框架中的通讯拓扑中删除所述第一计算节点和增加所述第二计算节点,以及恢复所述AI模型分布式训练的训练任务对应的训练进程,所述通讯拓扑用于所述AI模型分布式训练的梯度同步。
在本实现方式中,AI平台向第三计算节点发送继续训练的通知;第三计算节点在接收到继续训练的通知之后,知晓第二计算节点会替代发生故障的第一计算节点执行训练,故在AI模型分布式训练的训练框架中的通讯拓扑中删除第一计算节点以及增加第二计算节点;从而第三计算节点可以与第二计算节点进行梯度同步,使得第二计算节点获得同步后的训练参数。
在一种可能的实现方式中,若未确定到第二计算节点,所述方法还包括:向所述第三计算节点发送继续训练的通知,所述继续训练的通知用于指示所述第三计算节点在所述AI模型分布式训练的训练框架中的通讯拓扑中删除所述第一计算节点,以及恢复所述AI模型分布式训练的训练任务对应的训练进程,所述通讯拓扑用于所述AI模型分布式训练的梯度同步。
在本实现方式中,如果无法申请到第二计算节点用于替代发生故障的第一计算节点,为了保证训练不中断或不退出,训练能够继续进行,则舍弃发生故障的第一计算节点,仅采用未发生故障的第三计算节点用于执行训练。
需要说明的是,图13所示的实施例的描述可以参阅图1-图12所示的实施例的描述。
前述图2中AI平台210中的任务调度模块211、资源管理模块212的功能可以由AI模型的分布式训练装置执行,该AI模型的分布式训练装置应用于AI平台,所述AI平台与计算资源池相关联,所述计算资源池包括用于所述AI模型分布式训练的多个计算节点,所述多个计算节点中的每个计算节点执行所述AI模型分布式训练的一个训练任务。该AI模型的分布式训练装置可以通过软件、硬件或者两者的结合实现成为装置中的部分或者全部。该AI模型的分布式训练装置可以实现本申请其他实施例所描述的流程。该AI模型的分布式训练装置:资源管理模块212,用于对第一计算节点进行故障隔离,所述第一计算节点为所述多个计算节点中发生故障的计算节点;任务调度模块211,用于确定第二计算节点,所述第二计算节点为所述计算资源池中除所述多个计算节点之外的计算节点;以及配置所述第二计算节点,以使所述第二计算节点替代所述第一计算节点执行训练任务。
在一种可能的实现方式中,所述AI平台在监测到以下一项或多项的情况下,所述第一计算节点为发生故障的计算节点:所述第一计算节点硬件故障,所述第一计算节点执行的训练任务对应的训练进程退出,所述第一计算节点上报的故障。
在一种可能的实现方式中,若所述AI平台监测到所述第一计算节点硬件故障,且未监测到所述第一计算节点执行的训练任务对应的训练进程退出;在所述对第一计算节点进行故障隔离之后,所述任务调度模块211还用于:向所述第一计算节点发送停止训练进程的通知,所述停止训练进程的通知用于指示所述第一计算节点停止执行的训练任务对应的训练进程。
在一种可能的实现方式中,在所述对第一计算节点进行故障隔离之后,在所述确定第二计算节点之前,所述任务调度模块211还用于:向第三计算节点发送暂停训练进程的通知,所述第三计算节点为所述多个计算节点中未发生故障的计算节点,所述暂停训练进程的通知用于指示所述第三计算节点暂停所述AI模型分布式训练的训练任务对应的训练进程。
在一种可能的实现方式中,所述暂停训练进程的通知具体用于:指示所述第三计算节点在执行完所述AI模型分布式训练的梯度计算之后,暂停所述AI模型分布式训练的训练任务对应的训练进程。
在一种可能的实现方式中,在所述确定第二计算节点之后,所述任务调度模块211还用于:向所述第三计算节点发送继续训练的通知,所述继续训练的通知用于指示所述第三计算节点在所述AI模型分布式训练的训练框架中的通讯拓扑中删除所述第一计算节点和增加所述第二计算节点,以及恢复所述AI模型分布式训练的训练任务对应的训练进程,所述通讯拓扑用于所述AI模型分布式训练的梯度同步。
在一种可能的实现方式中,若未确定到第二计算节点,所述任务调度模块211还用于:向所述第三计算节点发送继续训练的通知,所述继续训练的通知用于指示所述第三计算节点在所述AI模型分布式训练的训练框架中的通讯拓扑中删除所述第一计算节点,以及恢复所述AI模型分布式训练的训练任务对应的训练进程,所述通讯拓扑用于所述AI模型分布式训练的梯度同步。
本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时也可以有另外的划分方式,另外,在本申请各个实施例中的各功能模块可以集成在一个处理器中,也可以是单独物理存在,也可以两个或两个以上模块集成为一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
本申请还提供一种如图5所示的计算设备500,计算设备500中的处理器502读取存储器501存储的程序和数据集合以执行前述AI平台执行的方法。
由于本申请提供的AI平台210中的各个模块可以分布式地部署在同一环境或不同环境中的多个计算机上,因此,本申请还提供一种如图14所示的计算设备,该计算设备包括多个计算机1400,每个计算机1400包括存储器1401、处理器1402、通信接口1403以及总线1404。其中,存储器1401、处理器1402、通信接口1403通过总线1404实现彼此之间的通信连接。
存储器1401可以是只读存储器,静态存储设备,动态存储设备或者随机存取存储器。存储器1401可以存储程序,当存储器1401中存储的程序被处理器1402执行时,处理器1402和通信接口1403用于执行AI平台训练AI模型的部分方法。存储器还可以存储训练数据集,例如,存储器1401中的一部分存储资源被划分成一个数据集存储模块,用于存储AI平台所需的训练数据集。
处理器1402可以采用通用的中央处理器,微处理器,应用专用集成电路,图形处理器或者一个或多个集成电路。
通信接口1403使用例如但不限于收发器一类的收发模块,来实现计算机1400与其他设备或通信网络之间的通信。例如,可以通过通信接口1403获取训练数据集。
总线1404可包括在计算机1400各个部件(例如,存储器1401、处理器1402、通信接口1403)之间传送信息的通路。
上述每个计算机1400间通过通信网络建立通信通路。每个计算机1400上运行任务调度模块211、资源管理模块212、数据存储模块213、算法管理模块214和人机交互模块215中的任意一个或多个。任一计算机1400可以为云数据中心中的计算机(例如,服务器),或边缘数据中心中的计算机,或终端计算设备。
所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、双绞线或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质存储有提供AI平台的计算机程序指令。所述计算机可读存储介质可以是计算机能够存取的任何介质或者是包含一个或多个介质集成的服务器、数据中心等数据存储设备。所述介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,光盘)、或者半导体介质(如固态硬盘)。
上述各个附图对应的流程的描述各有侧重,某个流程中没有详述的部分,可以参见其他流程的相关描述。
本申请还提供一种计算机可读存储介质,计算机可读存储介质存储有计算机指令,当计算机可读存储介质中的计算机指令被计算设备执行时,使得计算设备执行本申请实施例所描述的流程或功能。
在上述实施例中,可以全部或部分地通过软件、硬件或者其组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。本申请提供AI平台的计算机程序产品包括一个或多个进AI平台的计算机指令,在计算机上加载和执行这些计算机程序指令时,全部或部分地产生按照本申请实施例所描述的流程或功能。
应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
上述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所示方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本申请实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减。
本申请实施例装置中的模块可以根据实际需要进行合并、划分和删减。
以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。

Claims (17)

1.一种人工智能AI模型的分布式训练方法,其特征在于,应用于AI平台,所述AI平台与计算资源池相关联,所述计算资源池包括用于所述AI模型分布式训练的多个计算节点,所述多个计算节点中的每个计算节点执行所述AI模型分布式训练的一个训练任务;所述方法包括:
对第一计算节点进行故障隔离,所述第一计算节点为所述多个计算节点中发生故障的计算节点;
确定第二计算节点,所述第二计算节点为所述计算资源池中除所述多个计算节点之外的计算节点;
配置所述第二计算节点,以使所述第二计算节点替代所述第一计算节点执行训练任务。
2.根据权利要求1所述的方法,其特征在于,所述AI平台在监测到以下一项或多项的情况下,所述第一计算节点为发生故障的计算节点:
所述第一计算节点硬件故障,所述第一计算节点执行的训练任务对应的训练进程退出,所述第一计算节点上报的故障。
3.根据权利要求2所述的方法,其特征在于,若所述AI平台监测到所述第一计算节点硬件故障,且未监测到所述第一计算节点执行的训练任务对应的训练进程退出;在所述对第一计算节点进行故障隔离之后,所述方法包括:
向所述第一计算节点发送停止训练进程的通知,所述停止训练进程的通知用于指示所述第一计算节点停止执行的训练任务对应的训练进程。
4.根据权利要求1-3任一项所述的方法,其特征在于,在所述对第一计算节点进行故障隔离之后,在所述确定第二计算节点之前,所述方法还包括:
向第三计算节点发送暂停训练进程的通知,所述第三计算节点为所述多个计算节点中未发生故障的计算节点,所述暂停训练进程的通知用于指示所述第三计算节点暂停所述AI模型分布式训练的训练任务对应的训练进程。
5.根据权利要求4所述的方法,其特征在于,所述暂停训练进程的通知具体用于:指示所述第三计算节点在执行完所述AI模型分布式训练的梯度计算之后,暂停所述AI模型分布式训练的训练任务对应的训练进程。
6.根据权利要求4或5所述的方法,其特征在于,在所述确定第二计算节点之后,所述方法还包括:
向所述第三计算节点发送继续训练的通知,所述继续训练的通知用于指示所述第三计算节点在所述AI模型分布式训练的训练框架中的通讯拓扑中删除所述第一计算节点和增加所述第二计算节点,以及恢复所述AI模型分布式训练的训练任务对应的训练进程,所述通讯拓扑用于所述AI模型分布式训练的梯度同步。
7.根据权利要求4或5所述的方法,其特征在于,若未确定到第二计算节点,所述方法还包括:
向所述第三计算节点发送继续训练的通知,所述继续训练的通知用于指示所述第三计算节点在所述AI模型分布式训练的训练框架中的通讯拓扑中删除所述第一计算节点,以及恢复所述AI模型分布式训练的训练任务对应的训练进程,所述通讯拓扑用于所述AI模型分布式训练的梯度同步。
8.一种人工智能AI模型的分布式训练装置,其特征在于,应用于AI平台,所述AI平台与计算资源池相关联,所述计算资源池包括用于所述AI模型分布式训练的多个计算节点,所述多个计算节点中的每个计算节点执行所述AI模型分布式训练的一个训练任务;所述装置包括:
资源管理模块,用于对第一计算节点进行故障隔离,所述第一计算节点为所述多个计算节点中发生故障的计算节点;
任务调度模块,用于确定第二计算节点,所述第二计算节点为所述计算资源池中除所述多个计算节点之外的计算节点;
以及配置所述第二计算节点,以使所述第二计算节点替代所述第一计算节点执行训练任务。
9.根据权利要求8所述的装置,其特征在于,所述AI平台在监测到以下一项或多项的情况下,所述第一计算节点为发生故障的计算节点:
所述第一计算节点硬件故障,所述第一计算节点执行的训练任务对应的训练进程退出,所述第一计算节点上报的故障。
10.根据权利要求9所述的装置,其特征在于,若所述AI平台监测到所述第一计算节点硬件故障,且未监测到所述第一计算节点执行的训练任务对应的训练进程退出;在所述对第一计算节点进行故障隔离之后,所述任务调度模块还用于:
向所述第一计算节点发送停止训练进程的通知,所述停止训练进程的通知用于指示所述第一计算节点停止执行的训练任务对应的训练进程。
11.根据权利要求8-10任一项所述的装置,其特征在于,在所述对第一计算节点进行故障隔离之后,在所述确定第二计算节点之前,所述任务调度模块还用于:
向第三计算节点发送暂停训练进程的通知,所述第三计算节点为所述多个计算节点中未发生故障的计算节点,所述暂停训练进程的通知用于指示所述第三计算节点暂停所述AI模型分布式训练的训练任务对应的训练进程。
12.根据权利要求11所述的装置,其特征在于,所述暂停训练进程的通知具体用于:指示所述第三计算节点在执行完所述AI模型分布式训练的梯度计算之后,暂停所述AI模型分布式训练的训练任务对应的训练进程。
13.根据权利要求11或12所述的装置,其特征在于,在所述确定第二计算节点之后,所述任务调度模块还用于:
向所述第三计算节点发送继续训练的通知,所述继续训练的通知用于指示所述第三计算节点在所述AI模型分布式训练的训练框架中的通讯拓扑中删除所述第一计算节点和增加所述第二计算节点,以及恢复所述AI模型分布式训练的训练任务对应的训练进程,所述通讯拓扑用于所述AI模型分布式训练的梯度同步。
14.根据权利要求11或12所述的装置,其特征在于,若未确定到第二计算节点,所述任务调度模块还用于:
向所述第三计算节点发送继续训练的通知,所述继续训练的通知用于指示所述第三计算节点在所述AI模型分布式训练的训练框架中的通讯拓扑中删除所述第一计算节点,以及恢复所述AI模型分布式训练的训练任务对应的训练进程,所述通讯拓扑用于所述AI模型分布式训练的梯度同步。
15.一种计算设备,其特征在于,所述计算设备包括存储器和处理器,所述存储器用于存储计算机指令;
所述处理器执行所述存储器存储的计算机指令,以执行上述权利要求1-7中任一项所述的方法。
16.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序代码,当所述计算机程序代码被计算设备执行时,所述计算设备执行上述权利要求1-7中任一项所述的方法。
17.一种计算机程序产品,当其在计算设备上运行时,使得所述计算设备执行上述权利要求1-7中任一项所述的方法。
CN202110963715.7A 2021-08-20 2021-08-20 Ai模型的分布式训练方法和相关设备 Pending CN115712830A (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN202110963715.7A CN115712830A (zh) 2021-08-20 2021-08-20 Ai模型的分布式训练方法和相关设备
PCT/CN2022/111716 WO2023020355A1 (zh) 2021-08-20 2022-08-11 Ai模型的分布式训练方法和相关设备
EP22857667.4A EP4375892A1 (en) 2021-08-20 2022-08-11 Distributed training method for ai model and related device
US18/444,971 US20240193477A1 (en) 2021-08-20 2024-02-19 Distributed training method for ai model and related device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110963715.7A CN115712830A (zh) 2021-08-20 2021-08-20 Ai模型的分布式训练方法和相关设备

Publications (1)

Publication Number Publication Date
CN115712830A true CN115712830A (zh) 2023-02-24

Family

ID=85230161

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110963715.7A Pending CN115712830A (zh) 2021-08-20 2021-08-20 Ai模型的分布式训练方法和相关设备

Country Status (4)

Country Link
US (1) US20240193477A1 (zh)
EP (1) EP4375892A1 (zh)
CN (1) CN115712830A (zh)
WO (1) WO2023020355A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116755941A (zh) * 2023-08-21 2023-09-15 之江实验室 一种模型训练的方法、装置、存储介质及电子设备

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117349026B (zh) * 2023-12-04 2024-02-23 环球数科集团有限公司 一种用于aigc模型训练的分布式算力调度系统
CN118153649A (zh) * 2024-05-13 2024-06-07 北京晟世天安科技有限公司 集成大模型训练与推理的软硬一体机和大模型训练方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9633315B2 (en) * 2012-04-27 2017-04-25 Excalibur Ip, Llc Method and system for distributed machine learning
US11003992B2 (en) * 2017-10-16 2021-05-11 Facebook, Inc. Distributed training and prediction using elastic resources
CN110852445A (zh) * 2019-10-28 2020-02-28 广州文远知行科技有限公司 分布式机器学习训练方法、装置、计算机设备和存储介质
CN111078480B (zh) * 2019-12-17 2023-09-01 北京奇艺世纪科技有限公司 一种异常恢复方法和服务器
CN113656175B (zh) * 2021-08-18 2022-07-08 北京百度网讯科技有限公司 基于分布式系统训练模型的方法及设备

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116755941A (zh) * 2023-08-21 2023-09-15 之江实验室 一种模型训练的方法、装置、存储介质及电子设备
CN116755941B (zh) * 2023-08-21 2024-01-09 之江实验室 一种节点故障感知的分布式模型训练的方法及装置

Also Published As

Publication number Publication date
US20240193477A1 (en) 2024-06-13
EP4375892A1 (en) 2024-05-29
WO2023020355A1 (zh) 2023-02-23

Similar Documents

Publication Publication Date Title
CN115712830A (zh) Ai模型的分布式训练方法和相关设备
CN110704164A (zh) 一种基于Kubernetes技术的云原生应用平台构建方法
US9952852B2 (en) Automated deployment and servicing of distributed applications
US11030002B2 (en) Optimizing simultaneous startup or modification of inter-dependent machines with specified priorities
CN108243012B (zh) 在线计费系统ocs中计费应用处理系统、方法及装置
EP3798930A2 (en) Machine learning training resource management
EP3191948A1 (en) Computing instance launch time
CN112416585A (zh) 面向深度学习的gpu资源管理与智能化调度方法
CN111383100A (zh) 基于风险模型的全生命周期管控方法和装置
CN112905297A (zh) 容器集群资源调度方法和装置
EP4280051A1 (en) Inference service deployment method and apparatus, device, and storage medium
CN115373861B (zh) Gpu资源调度方法、装置、电子设备及存储介质
US20240143479A1 (en) Using machine learning for automatically generating a recommendation for a configuration of production infrastructure, and applications thereof
CN112799596A (zh) 一种存储资源的扩容控制方法、装置及电子设备
CN111767145A (zh) 容器调度系统、方法、装置和设备
EP3798931A1 (en) Machine learning training resource management
WO2023165512A1 (zh) 一种故障文件保存方法及相关装置
CN107621980A (zh) 一种虚拟机迁移方法、集群控制系统和控制装置
US20220058060A1 (en) Ranking computing resources
US11900325B2 (en) Utilizing a combination of machine learning models to determine a success probability for a software product
CN108958889A (zh) 云数据系统中虚拟机的管理方法和装置
CN114443057A (zh) 对话模型的部署和对话方法、装置、电子设备及存储介质
CN114153427A (zh) 持续集成流水线的优化方法及系统
CN117992078B (zh) 一种基于TensorRT-LLM模型推理加速服务的自动化部署方法
US20240143369A1 (en) Using rule engine with push mechanism for configuration data of a containerized computing cluster

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication