本申请涉及训练任务处理技术领域,更具体地说,涉及一种分布式训练任务处理方法、装置、设备及计算机可读存储介质。
背景技术:
目前,一些比较复杂的分布式训练任务需要借助高性能的服务器进行训练,其耗时比较长(一般训练时间长达十几天甚至数月)。如果由于某些原因导致用于进行分布式训练任务训练的服务器出现宕机、重启或者网络不通等异常情况,则会导致分布式训练任务发生中断而无法进行训练。
综上所述,如何降低服务器异常对分布式训练任务的训练所带来的影响,是目前本领域技术人员亟待解决的技术问题。
技术实现要素:
有鉴于此,本申请的目的是提供一种分布式训练任务处理方法、装置、设备及计算机可读存储介质,用于降低服务器异常对分布式训练任务的训练所带来的影响。
为了实现上述目的,本申请提供如下技术方案:
一种分布式训练任务处理方法,包括:
创建分布式训练任务的运行环境,将所述分布式训练任务放入所述运行环境,并将所述运行环境调度到服务器上;
监测所述运行环境的状态及所述服务器的状态,若所述运行环境的状态及所述服务器的状态均为不正常,则将所述分布式训练任务的状态设置为需要容错;
创建新运行环境,将状态为需要容错的目标分布式训练任务放入所述新运行环境,并将所述新运行环境调度到状态为正常的服务器上,以利用状态为正常的服务器对所述目标分布式训练任务进行训练。
优选的,在将所述新运行环境调度到状态为正常的服务器上之后,还包括:
将所述目标分布式训练任务的容错次数加1;其中,每个所述目标分布式训练任务的初始容错次数均为0;
相应地,在创建新运行环境之前,还包括:
判断所述目标分布式训练任务的容错次数是否小于容错阈值,若是,则执行所述创建新运行环境的步骤,若否,则终止所述目标分布式训练任务并发出处理异常的通知。
优选的,在终止所述目标分布式训练任务之后,还包括:
若接收到所述目标分布式训练任务,则记录所述目标分布式训练任务在接收后的新容错次数;
判断所述新容错次数是否小于新容错阈值;其中,所述新容错阈值小于所述目标分布式训练任务对应的容错阈值;
若是,则执行所述创建新运行环境的步骤;若否,则终止所述目标分布式训练任务并发出处理异常的通知,且将所述目标分布式训练任务的状态设置为不可容错。
优选的,若所述运行环境的状态及所述服务器的状态均为不正常,还包括:
记录所述服务器的不正常次数;
相应地,将所述新运行环境调度到状态为正常的服务器上,包括:
获取状态为正常的服务器的不正常次数,并将所述新运行环境调度到不正常次数最小的服务器上
优选的,创建分布式训练任务的运行环境,包括:
通过kubernetes创建所述分布式训练任务的pod。
优选的,在监测所述运行环境的状态及所述服务器的状态时,还包括:
若所述运行环境的状态为运行中,则结束所述监测所述运行环境的状态及所述服务器的状态的步骤,并上报所述运行环境的状态;
若所述运行环境的状态为不正常且所述服务器的状态为正常,则结束所述监测所述运行环境的状态及所述服务器的状态的步骤,并上报所述运行环境的状态及所述服务器的状态。
优选的,在将所述分布式训练任务的状态设置为需要容错之后,还包括:
上报所述分布式训练任务的状态。
一种分布式训练任务处理装置,包括:
第一创建模块,用于创建分布式训练任务的运行环境,将所述分布式训练任务放入所述运行环境,并将所述运行环境调度到服务器上;
监测模块,用于监测所述运行环境的状态及所述服务器的状态,若所述运行环境的状态及所述服务器的状态均为不正常,则将所述分布式训练任务的状态设置为需要容错;
第二创建模块,用于创建新运行环境,将状态为需要容错的目标分布式训练任务放入所述新运行环境,并将所述新运行环境调度到状态为正常的服务器上,以利用状态为正常的服务器对所述目标分布式训练任务进行训练。
一种分布式训练任务处理设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如上述任一项所述的分布式训练任务处理方法的步骤。
一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被处理器执行时实现如上述任一项所述的分布式训练任务处理方法的步骤。
本申请提供了一种分布式训练任务处理方法、装置、设备及计算机可读存储介质,其中,该方法包括:创建分布式训练任务的运行环境,将分布式训练分布放入运行环境,并将运行环境调度到服务器上;监测运行环境的状态及服务器的状态,若运行环境的状态及服务器的状态均为不正常,则将分布式训练任务的状态设置为需要容错;创建新运行环境,将状态为需要容错的目标分布式训练任务放入新运行环境,并将新运行环境调度到状态为正常的服务器上,以利用状态为正常的服务器对目标分布式训练任务进行训练。
本申请公开的上述技术方案,在将分布式训练任务放入运行环境并将运行环境调度到服务器上之后,若监测到运行环境的状态及服务器的状态均为不正常,则将该分布式训练任务的状态设置为需要容错,并将需要容错的目标分布式训练放入创建的新运行环境中,且将新运行环境调度到状态为正常的服务器上,以通过状态为正常的服务器使得状态为需要容错的目标分布式训练任务能够保持训练,从而避免因服务器异常而导致分布式训练任务出现训练中断,即可以降低服务器异常对分布式训练任务的影响。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例提供的一种分布式训练任务处理方法的流程图;
图2为本申请实施例提供的pod、worker及服务器之间的关系图;
图3为本申请实施例提供的一种分布式训练任务处理装置的结构示意图;
图4为本申请实施例提供的一种分布式训练处理设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
参见图1,其示出了本申请实施例提供的一种分布式训练任务处理方法的流程图,本申请实施例提供的一种分布式训练任务处理方法,可以包括:
s11:创建分布式训练任务的运行环境,将分布式训练任务放入运行环境,并将运行环境调度到服务器上。
在对分布式训练任务进行处理时,先创建分布式训练任务的运行环境,并将分布式训练任务放入所创建的运行环境中,相当于将原来在每个服务器启动的那个训练进程放入到所创建的运行环境中,具体地,是将分布式训练任务的worker(指的是分布式训练任务单元)放入到运行环境中,然后,将分布有分布式训练任务的运行环境调度到不同的服务器上,以使得分布式训练任务可以在服务器中进行训练和运行。
s12:监测运行环境的状态及服务器的状态,若运行环境的状态及服务器的状态均为不正常,则将分布式训练任务的状态设置为需要容错。
在深度学习训练平台上启动一个监控进程模块,利用该监控进程模块监测与分布式训练任务相关的运行环境的状态以及所在服务器的状态。
若在监测过程中监测到运行环境的状态及服务器的状态均为不正常,则表明该服务器所训练的分布式训练任务会出现中断,此时,为了保证该分布式训练任务能够进行训练而不中断,则可以将分布式训练任务的状态设置为需要容错,以便于后续可以根据分布式训练任务的状态而对其执行相对应的操作。
s13:创建新运行环境,将状态为需要容错的目标分布式训练任务放入新运行环境,并将新运行环境调度到状态为正常的服务器上,以利用状态为正常的服务器对目标分布式训练任务进行训练。
在深度学习平台上启动一个容错进程模块,利用该容错进程模块获取分布式训练任务的状态,并轮询各个分布式训练任务的状态,若发现有状态为需要容错的目标分布式训练任务,则创建新运行环境,并将状态为需要容错的目标分布式训练任务放入新运行环境中,且将新运行环境调度到状态为正常的服务器上,以利用状态为正常的服务器对目标分布式训练任务进行训练,即实现对目标分布式训练任务的重启,以保证目标分布式训练任务可以进行训练而不发生中断,从而避免因服务器异常而对其内部所训练的分布式训练任务带来影响,进而增加深度学习训练平台的容错性。之后,可以监测该目标分布式训练任务对应的新运行环境的状态及服务器的状态,即相当于返回执行步骤s12及相关步骤,以便于及时发现异常并便于及时实现容错,从而避免目标分布式训练任务发生中断。
另外,由于上述过程是自动进行监测的,因此,可以及时且快速地发现运行环境及服务器的异常,同时由于上述过程可以在运行环境及服务器异常时自动进行目标分布式训练任务的重启,因此,可以避免因分布式训练任务中断而导致训练时间的浪费,从而可以提高分布式训练任务的训练效率。
本申请公开的上述技术方案,在将分布式训练任务放入运行环境并将运行环境调度到服务器上之后,若监测到运行环境的状态及服务器的状态均为不正常,则将该分布式训练任务的状态设置为需要容错,并将需要容错的目标分布式训练放入创建的新运行环境中,且将新运行环境调度到状态为正常的服务器上,以通过状态为正常的服务器使得状态为需要容错的目标分布式训练任务能够保持训练,从而避免因服务器异常而导致分布式训练任务出现训练中断,即可以降低服务器异常对分布式训练任务的影响。
本申请实施例提供的一种分布式训练任务处理方法,在将新运行环境调度到状态为正常的服务器上之后,还可以包括:
将目标分布式训练任务的容错次数加1;其中,每个目标分布式训练任务的初始容错次数均为0;
相应地,在创建新运行环境之前,还可以包括:
判断目标分布式训练任务的容错次数是否小于容错阈值,若是,则执行创建新运行环境的步骤,若否,则终止目标分布式训练任务。
在将新运行环境调度到状态为正常的服务器上之后,即在实现对目标分布式训练任务的重启之后,可以将目标分布式训练任务的容错次数在原有的基础上加1,其中,每个分布式训练任务的初始容错次数均为0,以便于通过容错次数获取目标分布式训练任务的重启次数。
当记录目标分布式训练任务的容错次数之后,若该目标分布式训练任务对应的新运行环境的状态及服务器的状态均为不正常,即若该目标分布式训练任务的状态又被设置为需要容错,则在创建新运行环境之前,可以判断目标分布式训练任务的容错次数是否小于该目标分布式训练任务对应的容错阈值(可以表示为n,且其具体可以根据深度学习训练平台的性能等进行设置),若目标分布式训练任务的容错次数小于容错阈值,则表明可以继续对该目标分布式训练任务进行容错,这时则可以执行创建新运行环境的步骤,即可以继续执行步骤s13,以实现对该目标分布式训练任务的重启,从而避免该目标分布式训练任务发生中断;若目标分布式训练任务的容错次数不小于容错阈值,则表明容错任务达到容错上限,说明整个任务训练系统不稳定,这时可以终止该目标分布式训练任务,以便于对整个任务训练系统造成影响。
其中,在终止该目标分布式训练任务的同时可以发出处理异常的通知,以使得算法人员可以通过通知及时地获知目标分布式训练任务因被终止而没有完成训练,从而便于算法人员可以及时地采取应对措施。需要说明的是,具体可以通过邮件、短信、警报提醒、语音提醒中的任意一种或任意多种的组合发出处理异常的通知,本申请对发出处理异常的通知的具体方式不做任何限定。
本申请实施例提供的一种分布式训练任务处理方法,在终止目标分布式训练任务之后,还可以包括:
若接收到目标分布式训练任务,则记录目标分布式训练任务在接收后的新容错次数;
判断新容错次数是否小于新容错阈值;其中,新容错阈值小于目标分布式训练任务对应的容错阈值;
若是,则执行创建新运行环境的步骤;若否,则终止目标分布式训练任务并发出处理异常的通知,且将目标分布式训练任务的状态设置为不可容错。
在本申请中,对于容错次数达到其对应的容错阈值的目标分布式训练任务而言,深度学习训练平台提供再次提交该目标分布式训练任务的功能,即用户可以再次手动提交上述目标分布式训练任务,但是,如果重新提交的目标分布式训练任务再次发生容错,则有可能是目标分布式训练任务造成服务器负荷过大而导致服务器异常从而导致容错,因此,为了避免因服务器负荷过大而导致服务器产生异常出现容错,则可以减小深度学习训练平台对重新提交的目标分布式训练任务的容错上限。
具体地,在接收到重新提交的目标分布式训练任务之后,可以在目标分布式训练任务的训练过程中从0开始重新记录其对应的容错次数,以得到该目标分布式训练任务对应的新容错次数;
在记录其对应的新容错次数的同时,可以判断该目标分布式训练任务对应的新容错次数是否小于新容错阈值(可以表示为m),其中,该新容错阈值小于该目标分布式训练任务对应的容错阈值,具体地,m=[n/2],即新容错阈值可以等于容错阈值除以2并向上取整数,例如:若n=3,则m=1;
若目标分布式训练任务的新容错次数小于新容错阈值,则表明可以继续对该目标分布式训练任务进行容错,这时则可以执行创建新运行环境的步骤,即可以继续执行步骤s13,以实现对该目标分布式训练任务的重启,从而避免该目标分布式训练任务发生中断;若目标分布式训练任务的新容错次数不小于新容错阈值,则表明容错任务达到容错上限,说明整个任务训练系统不稳定,此时,可以终止该目标分布式训练任务,并将目标分布式训练任务的状态设置为不可容错,即无法再在目标分布式训练任务出现中断时通过创建新运行环境并将目标分布式训练任务放入新运行环境中且将新运行环境调度到状态为正常的服务器中而实现目标分布式训练任务的重启,以避免服务器因目标分布式训练任务过大而再次发生异常,从而保证整个任务训练系统的稳定性。
另外,在终止该目标分布式训练任务的同时,可以发出处理异常的通知,以使得算法人员可以通过通知及时地获知目标分布式训练任务因被终止而没有完成训练,从而便于算法人员可以及时地采取应对措施。
本申请实施例提供的一种分布式训练任务处理方法,若运行环境的状态及服务器的状态均为不正常,还可以包括:
记录所述服务器的不正常次数;
相应地,将所述新运行环境调度到状态为正常的服务器上,包括:
获取状态为正常的服务器的不正常次数,并将所述新运行环境调度到不正常次数最小的服务器上。
在监测到运行环境的状态及服务器的状态均为不正常时,可以记录该服务器的不正常次数,之后,在将新运行环境调度到状态为正常的服务器上时,可以获取状态为正常的服务器的不正常次数,并可以将新运行环境调度到不正常次数最小的服务器上,以尽量降低因服务器不正常而导致目标分布式训练任务中断的几率,从而提高目标分布式训练任务训练的可靠性。
本申请实施例提供的一种分布式训练任务处理方法,创建分布式训练任务的运行环境,可以包括:
通过kubernetes创建分布式训练任务的pod。
在创建分布式训练任务的运行环境时,具体可以通过kubernetes创建分布式训练任务的pod,其中,kubernetes是一个开源的、用于管理云平台中多个主机的容器化的应用,pod是kubernetes一种资源类型,是kubernetes中能够创建和部署的最小单元。
在创建完pod之后,可以将分布式训练任务的worker放到kubernetes的pod中,并可以将运行有分布式任务的pod调度到不同的服务器上,具体可以参见图2,其示出了本申请实施例提供的pod、worker及服务器之间的关系图,在将运行有分布式任务的pod调度到不同的服务器上之后,可以执行监测等相关步骤。
本申请实施例提供的一种分布式训练任务处理方法,在监测运行环境的状态及服务器的状态时,还可以包括:
若运行环境的状态为运行中,则结束监测运行环境的状态及服务器的状态的步骤,并上报运行环境的状态;
若运行环境的状态为不正常且服务器的状态为正常,则结束监测运行环境的状态及服务器的状态的步骤,并上报运行环境的状态及服务器的状态。
在监测运行环境的状态及服务器的状态时,若运行环境的状态为运行中,则表明分布式训练任务处于正常训练中,此时,可以结束监测运行的状态及服务器的状态的步骤,并向深度学习训练平台上报运行环境的状态,即相当于上报该分布式训练任务的状态;若运行环境的状态为不正常且服务器的状态为正常,则表明分布式训练任务可能已经结束训练,此时,可以向深度学习训练平台上报运行环境的状态及服务器的状态,以便于深度学习训练平台可以根据两者的状态获知分布式训练任务的状态。
本申请实施例提供的一种分布式训练任务处理方法,在将分布式训练任务的状态设置为需要容错之后,还可以包括:
上报分布式训练任务的状态。
在将分布式训练任务的状态设置为需要容错之后,可以向深度学习训练平台上报分布式训练任务的状态,以便于深度学习训练平台可以及时地获知分布式训练任务的状态,并便于算法人员可以通过深度学习训练平台知分布式训练任务的状态。
本申请实施例还提供了一种分布式训练任务处理装置,参见图3,其示出了本申请实施例提供的一种分布式训练任务处理装置的结构示意图,可以包括:
第一创建模块31,用于创建分布式训练任务的运行环境,将分布式训练任务放入运行环境,并将运行环境调度到服务器上;
监测模块32,用于监测运行环境的状态及服务器的状态,若运行环境的状态及服务器的状态均为不正常,则将分布式训练任务的状态设置为需要容错;
第二创建模块33,用于创建新运行环境,将状态为需要容错的目标分布式训练任务放入新运行环境,并将新运行环境调度到状态为正常的服务器上,以利用状态为正常的服务器对目标分布式训练任务进行训练。
本申请实施例提供的一种分布式训练任务处理装置,还可以包括:
加一模块,用于在将新运行环境调度到状态为正常的服务器上之后,将目标分布式训练任务的容错次数加1;其中,每个目标分布式训练任务的初始容错次数均为0;
相应地,还可以包括:
第一判断模块,用于在创建新运行环境之前,判断目标分布式训练任务的容错次数是否小于容错阈值,若是,则执行创建新运行环境的步骤,若否,则终止目标分布式训练任务并发出处理异常的通知。
本申请实施例提供的一种分布式训练任务处理装置,还可以包括:
第一记录模块,用于若接收到目标分布式训练任务,则记录目标分布式训练任务在接收后的新容错次数;
第二判断模块,用于判断新容错次数是否小于新容错阈值;其中,新容错阈值小于目标分布式训练任务对应的容错阈值;
执行模块,用于若新容错次数小于新容错阈值,则执行创建新运行环境的步骤;
终止模块,用于若新容错次数不小于新容错阈值,则终止目标分布式训练任务并发出处理异常的通知,且将目标分布式训练任务的状态设置为不可容错。
本申请实施例提供的一种分布式训练任务处理装置,还可以包括:
第二记录模块,用于若运行环境的状态及服务器的状态均为不正常,则记录服务器的不正常次数;
相应地,第二创建模块33可以包括:
获取单元,用于获取状态为正常的服务器的不正常次数,并将新运行环境调度到不正常次数最小的服务器上。
本申请实施例提供的一种分布式训练任务处理装置,第一创建模块31可以包括:
创建单元,用于通过kubernetes创建分布式训练任务的pod
本申请实施例提供的一种分布式训练任务处理装置,还可以包括:
第一上报模块,用于在监测运行环境的状态及服务器的状态时,若运行环境的状态为运行中,则结束监测运行环境的状态及服务器的状态的步骤,并上报运行环境的状态;
第二上报模块,用于若运行环境的状态为不正常且服务器的状态为正常,则结束监测运行环境的状态及服务器的状态的步骤,并上报运行环境的状态及服务器的状态。
本申请实施例提供的一种分布式训练任务处理装置,还可以包括:
第三上报模块,用于在将分布式训练任务的状态设置为需要容错之后,上报分布式训练任务的状态。
本申请实施例还提供了一种分布式训练任务处理设备,参见图4,其示出了本申请实施例提供的一种分布式训练任务处理设备的结构示意图,可以包括:
存储器41,用于存储计算机程序;
处理器42,用于执行存储器41存储的计算机程序时可实现如下步骤:
创建分布式训练任务的运行环境,将分布式训练分布放入运行环境,并将运行环境调度到服务器上;监测运行环境的状态及服务器的状态,若运行环境的状态及服务器的状态均为不正常,则将分布式训练任务的状态设置为需要容错;创建新运行环境,将状态为需要容错的目标分布式训练任务放入新运行环境,并将新运行环境调度到状态为正常的服务器上,以利用状态为正常的服务器对目标分布式训练任务进行训练。
本申请实施例还提供了一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序,计算机程序被处理器执行时时可实现如下步骤:
创建分布式训练任务的运行环境,将分布式训练分布放入运行环境,并将运行环境调度到服务器上;监测运行环境的状态及服务器的状态,若运行环境的状态及服务器的状态均为不正常,则将分布式训练任务的状态设置为需要容错;创建新运行环境,将状态为需要容错的目标分布式训练任务放入新运行环境,并将新运行环境调度到状态为正常的服务器上,以利用状态为正常的服务器对目标分布式训练任务进行训练。
本申请实施例提供的一种分布式训练任务处理装置、设备及计算机可读存储介质中相关部分的描述可以参见本申请实施例提供的一种分布式训练任务处理方法中对应部分的详细说明,在此不再赘述。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。另外,本申请实施例提供的上述技术方案中与现有技术中对应技术方案实现原理一致的部分并未详细说明,以免过多赘述。
对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。