发明内容
本发明旨在至少在一定程度上解决相关技术中的技术问题之一。
为此,本发明的第一个目的在于提出一种深度学习任务调度方法,基于深度学习对应各个节点的优先级来进行深度学习任务的资源调度工作,提高深度学习任务调度的效率。
本发明的第二个目的在于提出一种深度学习任务调度装置。
本发明的第三个目的在于提出一种电子设备。
本发明的第四个目的在于提出一种存储有计算机指令的非瞬时计算机可读存储介质。
为达上述目的,本发明第一方面实施例提出了一种深度学习任务调度方法,所述方法包括:
获取预设的第一时间周期内已调度的序列深度学习任务,其中,序列深度学习任务是基于各个深度学习任务的数据量大小进行排序得到的;
获取深度学习对应各个节点中任一目标处理器处理所述序列深度学习任务时对应的平均处理频率和平均处理时长;
基于所述平均处理频率和平均处理时长,确定各个所述节点的优先级;
基于所述优先级,将第二时间周期内对应实时序列深度学习任务中的各个实时深度学习任务调度到对应的目标节点进行处理,其中,所述第一时间周期与所述第二时间周期是连续周期且时长相同。
为达上述目的,本发明第二方面实施例提出了一种深度学习任务调度装置,所述装置包括:
第一获取模块,用于获取预设的第一时间周期内已调度的序列深度学习任务,其中,序列深度学习任务是基于各个深度学习任务的数据量大小进行排序得到的;
第二获取模块,用于获取深度学习对应各个节点中任一目标处理器处理所述序列深度学习任务时对应的平均处理频率和平均处理时长;
确定模块,用于基于所述平均处理频率和平均处理时长,确定各个所述节点的优先级;
调度模块,用于基于所述优先级,将第二时间周期内对应实时序列深度学习任务中的各个实时深度学习任务调度到对应的目标节点进行处理,其中,所述第一时间周期与所述第二时间周期是连续周期且时长相同。
为达上述目的,本发明第三方面实施例提出了一种电子设备,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行第一方面所述的方法。
为了实现上述目的,本发明第四方面实施例提出了一种存储有计算机指令的非瞬时计算机可读存储介质,计算机指令用于使所述计算机执行第一方面所述的方法。
本发明实施例提供的深度学习任务调度方法、装置、电子设备和存储介质,获取预设的第一时间周期内已调度的序列深度学习任务,其中,序列深度学习任务是基于各个深度学习任务的数据量大小进行排序得到的;获取深度学习对应各个节点中任一目标处理器处理序列深度学习任务时对应的平均处理频率和平均处理时长;基于平均处理频率和平均处理时长,确定各个节点的优先级;基于优先级,将第二时间周期内对应实时序列深度学习任务中的各个实时深度学习任务调度到对应的目标节点进行处理,其中,第一时间周期与第二时间周期是连续周期且时长相同,由此,基于深度学习对应各个节点的优先级来进行深度学习任务的资源调度工作,提高深度学习任务调度的效率。
本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。
其中,需要说明的是,本发明技术方案中对数据的获取、存储、使用、处理等均符合国家法律法规的相关规定。
下面参考附图描述本发明实施例的深度学习任务调度方法、装置、电子设备及存储介质。
图1为本发明实施例所提供的一种深度学习任务调度方法的流程示意图。
如图1所示,该方法包括以下步骤:
步骤101,获取预设的第一时间周期内已调度的序列深度学习任务,其中,序列深度学习任务是基于各个深度学习任务的数据量大小进行排序得到的。
可选地,预设的第一时间周期可以结合调度序列深度学习任务时对应的历史数据进行确定,也可以由相关技术人员进行设定,该实施例对此不做具体限定。
可选地,深度学习任务可以是进行机器学习时对应的待处理任务,但不仅限于此。
在一些实施例中,可以以深度学习任务为task,预设的第一时间周期为interval为例,获取多个深度学习任务task,并基于各个深度学习任务的数据量大小进行排序,形成序列深度学习任务TL,,其中,/>,/>是第i个任务使用的模型,/>是第i个任务的数据量。
步骤102,获取深度学习对应各个节点中任一目标处理器处理序列深度学习任务时对应的平均处理频率和平均处理时长。
在一些实施例中,深度学习对应各个节点可以为ML,,进而基于第一时间周期interval内已调度的序列深度学习任务TL,获取第i个节点/>的第j个目标处理器在第一时间周期interval内的平均工作频率/>、平均负载率。
其中,目标处理器可以是图形处理器(graphics processing unit,GPU),但不仅限于此,该实施例对此不做具体限定。
步骤103,基于平均处理频率和平均处理时长,确定各个节点的优先级。
在一些实施例中,在平均工作频率为、平均负载率为/>的情况下,可以基于平均工作频率/>,确定目标处理器的最大工作频率/>,由此,根据平均工作频率/>、平均负载率/>,最大工作频率/>计算/>的优先级/>,其中,/>的可算公式可以为:
步骤104,基于优先级,将第二时间周期内对应实时序列深度学习任务中的各个实时深度学习任务调度到对应的目标节点进行处理,其中,第一时间周期与第二时间周期是连续周期且时长相同。
在一些实施例中,基于优先级,将第二时间周期内对应实时序列深度学习任务中的各个实时深度学习任务调度到对应的目标节点进行处理的一种实施方式可以为:获取第二时间周期内对应实时序列深度学习任务中待调度的任一目标任务;基于各个节点的优先级对目标任务进行匹配,以从各个节点中选取匹配到优先级最高的目标空闲节点;将目标空闲节点作为目标节点,并将目标任务调度到目标节点进行处理,由此,基于各个节点的优先级,实现对实时序列深度学习任务中的各个实时深度学习任务的精确调度。
具体地,可以以实时序列深度学习任务的当前队首任务/>的数据/>为目标任务为例,在目标任务为/>的情况下, 以基于/>且/>各个节点中选取匹配到优先级最高的目标空闲节点。
其中,FNL为空闲节点队列。
可以理解的是,将目标空闲节点作为目标节点,并将目标任务调度到目标节点进行处理的一种实施方式可以为,在目标节点的可用内存量大于等于目标任务的数据量的情况下,则将目标任务的数据量调配到目标节点的目标处理器中进行处理;在目标节点的可用内存量小于目标任务的数据量的情况下,则将目标任务分割出可用内存量大小的分割数据,和除分割数据外的备用数据;将分割数据调配到目标节点的目标处理器中进行处理,并将备用数据调配给低于目标节点优先级的候选节点中进行处理,直至目标任务处理完成,由此,实现对目标任务快速处理,提高各个节点的处理效率。
具体地,在目标节点为,处理器为GPU的情况下,获取目标节点/>的可用内存量/>,如果可用内存量/>大于等于任务/>的数据量/>,将目标任务/>的数据复制到目标节点/>的第j个GPU内存中,其中,/>=0。,/>=0表示在第i个节点的第j个GPU处于空闲状态。
如果目标节点的可用内存量/>小于目标任务/>的数据量/>,将目标任务/>的数据由前到后,分割出/>大小的分割数据数据转移到目标节点/>的第j个GPU内存中,其中/>=0,并得到除分割数据/>外的备用数据,备用数据的计算方式可以为:/>,在计算出备用数据之后将备用数据调配给低于目标节点优先级的候选节点中进行处理,直至目标任务处理完成,即,/>,/>,,/>=0。
其中,=0表示第i个节点的第j个GPU空闲;/>表示任务/>的GPU集合,如果/>,表示第1个节点的第2个GPU被任务/>占用;表示/>的节点集合,如果元素/>,表示第1个节点被任务/>占用。
此外,在基于优先级,将第二时间周期内对应实时序列深度学习任务中的各个实时深度学习任务调度到对应的目标节点进行处理之后,还包括:获取将第二时间周期内对应实时序列深度学习任务中的各个实时深度学习任务调度到对应的目标节点进行处理之后的完成进度集合;依次检查完成进度集合中的每个已调度深度学习任务,在每个已调度深度学习任务均调度到对应的目标节点并进行处理的情况下,停止实时序列深度学习任务调度的调配,由此,实现对实时序列深度学习任务的全面调度。
具体地,在第二时间周期interval内,获取第i个节点的第j个GPU在第二时间周期interval内的GPU平均工作频率和平均负载率/>,并存放到历史数据集合/>中。其中,/>,t表示获取平均工作频率和平均负载率/>的时间。由此,基于历史数据集合/>,确定实时序列深度学习任务的完成进度集合/>=/>,/>。如果依次检查完成进度集合/>中的每个每个已调度深度学习任务。如果每个已调度深度学习任务/>的完成进度/>,则继续检查下个已调度深度学习任务。如果每个已调度深度学习任务/>的完成进度/>,对于每个已调度深度学习任务/>,令,对于每个已调度深度学习任务/>,令/>=1。继续检查下个已调度深度学习任务,直到完成进度集合/>中的每个已调度深度学习任务全部检查完毕。
其中,可以理解的是,在存在第三时间周期的序列深度学习任务的情况下,基于第二时间周期内的历史数据集合,从历史数据集合/>中取出任务/>的历史数据/>,重新计算节点/>的优先级/>,优先级/>的计算方式可以为:
其中,为获取序列深度学习任务/>数据的次数,t为获取序列深度学习任务数据的时间,/>。
本发明实施例的深度学习任务调度方法,获取预设的第一时间周期内已调度的序列深度学习任务,其中,序列深度学习任务是基于各个深度学习任务的数据量大小进行排序得到的;获取深度学习对应各个节点中任一目标处理器处理序列深度学习任务时对应的平均处理频率和平均处理时长;基于平均处理频率和平均处理时长,确定各个节点的优先级;基于优先级,将第二时间周期内对应实时序列深度学习任务中的各个实时深度学习任务调度到对应的目标节点进行处理,其中,第一时间周期与第二时间周期是连续周期且时长相同,由此,基于深度学习对应各个节点的优先级来进行深度学习任务的资源调度工作,提高深度学习任务调度的效率。
为了清楚说明上一实施例,图2为本发明实施例所提供的另一种深度学习任务调度方法的流程示意图。
步骤201,获取预设的第一时间周期内已调度的序列深度学习任务,其中,序列深度学习任务是基于各个深度学习任务的数据量大小进行排序得到的。
步骤202,获取深度学习对应各个节点中任一目标处理器处理序列深度学习任务时对应的平均处理频率和平均处理时长。
步骤203,基于平均处理频率和平均处理时长,确定各个节点的优先级。
步骤204,基于优先级,将第二时间周期内对应实时序列深度学习任务中的各个实时深度学习任务调度到对应的目标节点进行处理,其中,第一时间周期与第二时间周期是连续周期且时长相同。
其中,需要说明的是,关于步骤201至步骤204的具体实现方式,可参见上述实施例中的相关描述。
步骤205,在将第二时间周期内对应实时序列深度学习任务中的各个实时深度学习任务调度到对应的目标节点进行处理时存在异常节点的情况下,获取调配到异常节点的待处理深度学习任务。
在一些实施例中,异常节点可以是当前节点的处于使用状态或当前节点故障无法处理实时深度学习任务,该实施例对此不做具体限定。
步骤206,将待处理深度学习任务转移到与当异常节点之间网络延迟最低的备用节点进行处理。
在一些实施例中,将待处理深度学习任务转移到与当异常节点之间网络延迟最低的备用节点进行处理的一种实施方式可以为,获取各个节点之间的网络延迟,以构建出延迟矩阵;基于延迟矩阵,确定出和异常节点之间网络延迟最低的备用节点,并将待处理深度学习任务转移到备用节点进行处理。
其中,节点为与节点/>之间的网络延迟/>,单位为ms,生成延迟矩阵L,其中/>。
本发明实施例的深度学习任务调度方法,获取预设的第一时间周期内已调度的序列深度学习任务,其中,序列深度学习任务是基于各个深度学习任务的数据量大小进行排序得到的;获取深度学习对应各个节点中任一目标处理器处理序列深度学习任务时对应的平均处理频率和平均处理时长;基于平均处理频率和平均处理时长,确定各个节点的优先级;基于优先级,将第二时间周期内对应实时序列深度学习任务中的各个实时深度学习任务调度到对应的目标节点进行处理,其中,第一时间周期与第二时间周期是连续周期且时长相同,在将第二时间周期内对应实时序列深度学习任务中的各个实时深度学习任务调度到对应的目标节点进行处理时存在异常节点的情况下,获取调配到异常节点的待处理深度学习任务,将待处理深度学习任务转移到与当异常节点之间网络延迟最低的备用节点进行处理。由此,基于深度学习对应各个节点的优先级来进行深度学习任务的资源调度工作,在深度学习任务调配异常时,能合理选择替换节点,确保深度学习任务及时完成。
综上,为更好的理解本发明,本发明还提出一种深度学习任务调度方法,如图3所示,获取已调度的深度学习任务task,以生成序列深度学习任务TL,再获取到深度学习对应计算节点队列ML,设置预设的第一时间周期interval,空闲节点队列FNL,空闲GPU矩阵FG,并获取网络各个节点之间的网络延迟,以生成延迟矩阵L,再获取到第一时间周期interval内处理序列深度学习任务时GPU平均工作频率和平均负载率以及最大工作频率,由此,计算出各个节点的优先级,在实时序列深度学习任务TL为不为空(未调配完成)的情况下,获取实时序列深度学习任务TL的队首的目标任务的数据量,以及处理目标任务的目标节点,在目标节点的可用内存量大于等于目标任务的数据量的情况下,则将目标任务的数据量调配到目标节点的目标处理器中进行处理,在目标节点的可用内存量小于目标任务的数据量的情况下,则将目标任务分割出可用内存量大小的分割数据,和除分割数据外的备用数据;将分割数据调配到目标节点的目标处理器中进行处理,同时修改空闲GPU矩阵FG和空闲节点队列FNL,以将备用数据调配给低于目标节点优先级的候选节点中进行处理,直至目标任务处理完成;在实时序列深度学习任务TL为空(调配完成)且各个实时深度学习任务未处理完成的情况下,获取在第二时间周期内处理各个实时深度学习任务时对应的运行数据(GPU目标平均工作频率和目标平均负载率),并存放到历史数据集合中,进而确定实时序列深度学习任务的完成进度集合,同时检测是否有新的实时深度学习任务处理完成,在每个实时深度学习任务均调度到对应的目标节点并进行处理的情况下,获取处理实时序列深度学习任务时对应的运行数据,以重新计算各个节点的优先级,同时获取各个节点的状态和所有GPU的状态,若GPU的状态为正常,则GPU正常处理实时深度学习任务,若GPU的状态为异常(异常节点),进一步判断空闲GPU矩阵FG是否为空,在空闲GPU矩阵FG是为空,将异常节点对应待处理深度学习任务加入到实时序列深度学习任务TL的末尾,并释放待处理深度学习任务占用资源,若GPU的状态为使用且空闲GPU矩阵FG不为空,则将待处理深度学习任务转移到备用节点进行处理;在实时序列深度学习任务TL为空(调配完成)且各个实时深度学习任务全部处理完成的情况下,停止实时序列深度学习任务调度的调配,由此,在实时序列深度学习任务完成后重新计算优先级,动态调整深度学习任务分配策略,提高深度学习任务的分配效率,在深度学习任务出错时,能合理选择替换节点,确保深度学习任务及时完成。
为了实现上述实施例,本发明还提出一种深度学习任务调度装置。
图4为本发明实施例提供的一种深度学习任务调度装置的结构示意图。
如图4所示,该深度学习任务调度装置40包括:第一获取模块41,第二获取模块42、确定模块43以及调度模块44。
第一获取模块41,用于获取预设的第一时间周期内已调度的序列深度学习任务,其中,序列深度学习任务是基于各个深度学习任务的数据量大小进行排序得到的;
第二获取模块42,用于获取深度学习对应各个节点中任一目标处理器处理所述序列深度学习任务时对应的平均处理频率和平均处理时长;
确定模块43,用于基于所述平均处理频率和平均处理时长,确定各个所述节点的优先级;
调度模块44,用于基于所述优先级,将第二时间周期内对应实时序列深度学习任务中的各个实时深度学习任务调度到对应的目标节点进行处理,其中,所述第一时间周期与所述第二时间周期是连续周期且时长相同。
进一步地,在本发明实施例的一种可能的实现方式中,所述调度模块44,包括:
获取单元,用于获取所述第二时间周期内对应实时序列深度学习任务中待调度的任一目标任务;
匹配单元,用于基于各个所述节点的优先级对所述目标任务进行匹配,以从各个所述节点中选取匹配到优先级最高的目标空闲节点;
调度单元,用于将所述目标空闲节点作为目标节点,并将所述目标任务调度到所述目标节点进行处理。
进一步地,在本发明实施例的一种可能的实现方式中,所述调度单元,具体用于:
在所述目标节点的可用内存量大于等于所述目标任务的数据量的情况下,则将所述目标任务的数据量调配到所述目标节点的目标处理器中进行处理;
在所述目标节点的可用内存量小于所述目标任务的数据量的情况下,则将所述目标任务分割出所述可用内存量大小的分割数据,和除所述分割数据外的备用数据;将所述分割数据调配到所述目标节点的目标处理器中进行处理,并将所述备用数据调配给低于所述目标节点优先级的候选节点中进行处理,直至所述目标任务处理完成。
进一步地,在本发明实施例的一种可能的实现方式中,所述装置,还包括:
第三获取模块,用于获取将所述第二时间周期内对应实时序列深度学习任务中的各个实时深度学习任务调度到对应的目标节点进行处理之后的完成进度集合;
检查模块,用于依次检查所述完成进度集合中的每个已调度深度学习任务,在每个所述已调度深度学习任务均调度到对应的目标节点并进行处理的情况下,停止所述实时序列深度学习任务调度的调配。
进一步地,在本发明实施例的一种可能的实现方式中,所述装置,还包括:
第四获取模块,用于在将所述第二时间周期内对应实时序列深度学习任务中的各个实时深度学习任务调度到对应的目标节点进行处理时存在异常节点的情况下,获取调配到异常节点的待处理深度学习任务;
转移模块,用于将所述待处理深度学习任务转移到与当所述异常节点之间网络延迟最低的备用节点进行处理。
进一步地,在本发明实施例的一种可能的实现方式中,所述转移模块,具体用于:
获取各个所述节点之间的网络延迟,以构建出延迟矩阵;
基于所述延迟矩阵,确定出和所述异常节点之间网络延迟最低的备用节点,并将所述待处理深度学习任务转移到所述备用节点进行处理。
需要说明的是,前述对方法实施例的解释说明也适用于该实施例的装置,此处不再赘述。
本发明实施例的深度学习任务调度装置,获取预设的第一时间周期内已调度的序列深度学习任务,其中,序列深度学习任务是基于各个深度学习任务的数据量大小进行排序得到的;获取深度学习对应各个节点中任一目标处理器处理序列深度学习任务时对应的平均处理频率和平均处理时长;基于平均处理频率和平均处理时长,确定各个节点的优先级;基于优先级,将第二时间周期内对应实时序列深度学习任务中的各个实时深度学习任务调度到对应的目标节点进行处理,其中,第一时间周期与第二时间周期是连续周期且时长相同,由此,基于深度学习对应各个节点的优先级来进行深度学习任务的资源调度工作,提高深度学习任务调度的效率。
为了实现上述实施例,本发明还提出一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行前述的方法。
为了实现上述实施例,本发明还提出一种存储有计算机指令的非瞬时计算机可读存储介质,计算机指令用于使所述计算机执行前述的方法。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、 “示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现定制逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。如,如果用硬件来实现和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形似实现,也可以采用软件功能模块的形似实现。所述集成的模块如果以软件功能模块的形似实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
上述提到的存储介质可以是只读存储器,磁盘或光盘等。尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。