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

一种任务处理装置、方法、计算机设备及存储介质

文献发布时间:2023-06-19 11:45:49


一种任务处理装置、方法、计算机设备及存储介质

技术领域

本公开涉及计算机科学技术领域,具体而言,涉及一种任务处理装置、方法、计算机设备及存储介质。

背景技术

目前,深度神经网络(Deep Neural Networks,DNN)作为机器学习领域中的基础模型,在如计算机视觉、自然语言处理等很多领域具有广泛应用。深度神经网络要在某个领域得到应用,需要通过多个任务环节将神经网络部署到对应的执行环境中;当前部署神经网络的过程存在效率较低的问题。

发明内容

本公开实施例至少提供一种任务处理装置、方法、计算机设备及存储介质。

第一方面,本公开实施例提供了一种任务处理装置,包括:调度器、以及目标执行器;所述调度器,用于对待执行的任务流进行解析,得到所述任务流中任务节点的任务信息,以及确定所述任务节点对应的目标执行器;所述任务节点为至少一个;所述目标执行器,用于基于对应任务节点的任务信息,获取所述对应任务节点的目标组件,并基于所述目标组件、以及所述任务信息执行所述对应任务节点的任务。

这样,通过调度器的调度,灵活为各个任务节点确定对应的目标执行器,各个任务节点对应的目标执行器可以自动调用对应任务节点所需的目标组件进行处理,执行与任务节点对应的任务,而执行器部署的环境可以根据实际的应用需要进行灵活的设定,因而避免了在执行不同任务环节时进行执行环境切换的工作,提升任务处理的效率。

一种可选的实施方式中,所述对应任务节点的任务信息包括下述至少一项:所述对应任务节点的组件信息、参数、执行入口、以及并发度。

一种可选的实施方式中,所述调度器在确定所述任务节点对应的目标执行器时,用于:基于所述任务流的拓扑结构、以及所述任务节点的任务信息,确定所述任务节点对应的目标执行器。

这样,在利用任务流的拓扑结构以及任务节点的任务信息确定目标执行器时,在前期即可以确定多个执行器的执行顺序,在实际的任务处理中可以减少搜索对应任务节点的执行器的时间,从而提高任务处理的效率。

一种可选的实施方式中,所述调度器还用于:基于所述任务流的拓扑结构和/或所述任务节点的任务信息,确定任务执行顺序,并按照所述任务执行顺序,向所述目标执行器下发所述任务节点的任务信息。

一种可选的实施方式中,所述调度器,在向所述目标执行器下发所述任务节点的任务信息时,还用于:向所述目标执行器下发第一任务节点输出的结果数据;其中,所述第一任务节点为第二任务节点依赖的任务节点;所述第一任务节点输出的结果数据用于所述目标执行器执行所述第二任务节点的任务;所述结果数据由所述第一任务节点对应的目标执行器执行所述第一任务节点对应的任务后上报给所述调度器;所述任务节点包括所述第一任务节点和所述第二任务节点。

这样,目标执行器可以将第一任务节点输出的结果数据准确地传递给依赖于该第一任务节点的第二任务节点,以保证任务流准确且有序的进行。

一种可选的实施方式中,所述调度器在向所述目标执行器下发所述任务节点的任务信息时,用于:向所述目标执行器对应的任务队列中,下发所述任务节点对应的任务信息;所述目标执行器,还用于从对应的所述任务队列中,获取所述任务信息。

这样,可以将任务节点对应的任务信息下发到目标执行器对应的任务队列中,而不需要等待目标执行器将当前正在执行的任务处理完毕,因此效率更高。并且,目标执行器可以直接从其对应的任务队列中获取任务信息,因此不同的执行器在获取任务信息时是可以隔离开的,这样可以防止执行器错误的处理其他执行器需要处理的任务,安全性更高。

一种可选的实施方式中,所述调度器在确定所述任务节点对应的目标执行器时,用于:基于多个执行器中每个执行器的状态和/或每个执行器部署的执行环境,为各个所述任务节点确定对应的目标执行器。

这样,可以更适用于处理在多种环境下同步对任务流进行任务处理的情况,并且可以提高任务处理的安全性和准确性。

一种可选的实施方式中,所述调度器,还用于:在得到所述任务流中包含的任务节点对应的任务信息后,基于所述任务节点的任务信息,确定与所述任务节点对应的组件是否存在;在与所述任务节点对应的组件存在的情况下,为所述任务节点确定目标执行器。

一种可选的实施方式中,所述调度器,还用于在得到所述任务流中包含的任务节点对应的任务信息后,基于所述任务节点的任务信息,确定发起所述任务流的用户是否有权限使用所述任务节点对应的目标组件;在确定所述用户有权限使用所述任务节点对应目标组件的情况下,为所述任务节点确定目标执行器。

一种可选的实施方式中,还包括:权限管理单元;所述调度器,在确定发起所述任务流的用户是否有权限使用所述任务节点对应的目标组件时,用于:向所述权限管理单元发送所述用户的用户标识、以及所述目标组件对应的组件标识;接收所述权限管理单元基于所述用户标识以及所述组件标识反馈的权限验证结果;所述权限管理单元,用于基于所述组件标识,确定目标组件;基于所述目标组件的拥有者标识、所述目标组件的分享状态、以及所述用户标识,确定所述用户是否有权限使用所述目标组件。

这样,可以有效的对不同使用者进行管理,以维护目标组件安全正常的使用。

一种可选的实施方式中,还包括所述组件管理单元;所述目标执行器在基于对应任务节点的任务信息,获取所述对应任务节点的目标组件时,用于:向组件管理单元发送所述任务信息中的组件标识;接收所述组件管理单元下发的与所述组件标识对应的目标组件;所述组件管理单元,用于在接收到所述目标执行器发送的组件标识后,向所述目标执行器发送与所述组件标识对应的目标组件。

一种可选的实施方式中,所述组件管理单元,在向所述目标执行器发送与所述组件标识对应的目标组件时,用于确定发起所述任务流的用户是否有权限使用与所述组件标识对应的目标组件;在确定所述用户有权限使用与所述组件标识对应的目标组件的情况下,向所述目标执行器发送与所述组件标识对应的目标组件。

这样,用户可以自己上传或者建立对应的组件,灵活性更强。

一种可选的实施方式中,所述任务节点对应的任务包括下述至少一种:模型训练任务、数据预处理任务、模型模式测试任务、以及模型代码打包任务。

第二方面,本公开实施例还提供一种任务处理方法,应用于任务处理装置,所述任务处理装置包括:调度器、以及目标执行器;所述任务处理方法包括:所述调度器对待执行的任务流进行解析,得到所述任务流中任务节点的任务信息,以及确定所述任务节点对应的目标执行器;所述任务节点为至少一个;所述目标执行器基于对应任务节点的任务信息,获取所述对应任务节点的目标组件,并基于所述目标组件、以及所述任务信息执行所述对应任务节点的任务。

一种可选的实施方式中,所述对应任务节点的任务信息包括下述至少一项:所述对应任务节点的组件信息、参数、执行入口、以及并发度。

一种可选的实施方式中,所述调度器确定所述任务节点对应的目标执行器,包括:基于所述任务流的拓扑结构、以及所述任务节点的任务信息,确定所述任务节点对应的目标执行器。

一种可选的实施方式中,还包括:所述调度器基于所述任务流的拓扑结构和/或所述任务节点的任务信息,确定任务执行顺序,并按照所述任务执行顺序,向所述目标执行器下发所述任务节点的任务信息。

一种可选的实施方式中,所述调度器向所述目标执行器下发所述任务节点的任务信息,包括:所述调度器向所述目标执行器下发第一任务节点输出的结果数据;其中,所述第一任务节点为第二任务节点依赖的任务节点;所述第一任务节点输出的结果数据用于所述目标执行器执行所述第二任务节点的任务;所述结果数据由所述第一任务节点对应的目标执行器执行所述第一任务节点对应的任务后上报给所述调度器;所述任务节点包括所述第一任务节点和所述第二任务节点。

一种可选的实施方式中,所述调度器向所述目标执行器下发所述任务节点的任务信息,包括:所述调度器向所述目标执行器对应的任务队列中,下发所述任务节点对应的任务信息;所述目标执行器从对应的所述任务队列中,获取所述任务信息。

一种可选的实施方式中,所述调度器确定所述任务节点对应的目标执行器,包括:基于多个执行器中每个执行器的状态和/或每个执行器部署的执行环境,为各个所述任务节点确定对应的目标执行器。

一种可选的实施方式中,还包括:所述调度器,在得到所述任务流中包含的任务节点对应的任务信息后,基于所述任务节点的任务信息,确定与所述任务节点对应的组件是否存在;在与所述任务节点对应的组件存在的情况下,为所述任务节点确定目标执行器。

一种可选的实施方式中,还包括:所述调度器在得到所述任务流中包含的任务节点对应的任务信息后,基于所述任务节点的任务信息,确定发起所述任务流的用户是否有权限使用所述任务节点对应的目标组件;在确定所述用户有权限使用所述任务节点对应目标组件的情况下,为所述任务节点确定目标执行器。

一种可选的实施方式中,还包括:所述调度器确定发起所述任务流的用户是否有权限使用所述任务节点对应的目标组件,包括:所述调度器向所述权限管理单元发送所述用户的用户标识、以及所述目标组件对应的组件标识;接收所述权限管理单元基于所述用户标识以及所述组件标识反馈的权限验证结果;权限管理单元基于所述组件标识,确定目标组件;基于所述目标组件的拥有者标识、所述目标组件的分享状态、以及所述用户标识,确定所述用户是否有权限使用所述目标组件。

一种可选的实施方式中,所述目标执行器基于对应任务节点的任务信息,获取所述对应任务节点的目标组件,包括:所述目标执行器向组件管理单元发送所述任务信息中的组件标识;接收所述组件管理单元下发的与所述组件标识对应的目标组件;所述组件管理单元在接收到所述目标执行器发送的组件标识后,向所述目标执行器发送与所述组件标识对应的目标组件。

一种可选的实施方式中,所述组件管理单元向所述目标执行器发送与所述组件标识对应的目标组件,包括:所述组件管理单元确定发起所述任务流的用户是否有权限使用与所述组件标识对应的目标组件;在确定所述用户有权限使用与所述组件标识对应的目标组件的情况下,向所述目标执行器发送与所述组件标识对应的目标组件。

一种可选的实施方式中,所述任务节点对应的任务包括下述至少一种:模型训练任务、数据预处理任务、模型模式测试任务、以及模型代码打包任务。

第三方面,本公开可选实现方式还提供一种计算机设备,处理器、存储器,所述存储器存储有所述处理器可执行的机器可读指令,所述处理器用于执行所述存储器中存储的机器可读指令,所述机器可读指令被所述处理器执行时,所述机器可读指令被所述处理器执行时执行上述第二方面,或第二方面中任一种可能的实施方式中的步骤。

第四方面,本公开可选实现方式还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被运行时执行上述第二方面,或第二方面中任一种可能的实施方式中的步骤。

关于上述任务处理方法、计算机设备、及计算机可读存储介质的效果描述参见上述任务处理装置的说明,这里不再赘述。

为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

附图说明

为了更清楚地说明本公开实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,此处的附图被并入说明书中并构成本说明书中的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。应当理解,以下附图仅示出了本公开的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1示出了本公开实施例所提供的一种任务处理装置的示意图;

图2示出了本公开实施例所提供的两种任务流的示意图;

图3示出了本公开实施例所提供的一种任务处理装置应用于具体实施例时的结构图;

图4示出了本公开实施例所提供的一种任务流的示意图;

图5示出了本公开实施例所提供的一种任务处理方法的流程图。

具体实施方式

为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通常在此处描述和示出的本公开实施例的组件可以以各种不同的配置来布置和设计。因此,以下对本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。

经研究发现,要实现深度神经网络的部署,需要很多应用环节;而任务环节不同,所需要的任务执行时部署的执行环境也不相同,这导致需要在执行不同的任务环节对应的任务时,需要进行部署的执行环境的切换,部署的执行环境的切换工作使得深度神经网络从模型训练到落地需要非常复杂且耗时的重复工作,如代码在不同执行环境下的迁移等,从而导致效率较低。

基于上述研究,本公开提供了一种任务处理装置,通过调度器的调度,灵活为各个任务节点确定对应的目标执行器,各个任务节点对应的目标执行器可以自动调用对应任务节点所需的目标组件进行处理,执行与任务节点对应的任务,而执行器的部署的执行环境可以根据实际的应用需要进行灵活的设定,因而避免了在执行不同任务环节时进行执行环境切换的工作,提升任务处理的效率。

不需要对使用部署的执行环境进行切换;并且对于任务流而言,由于调度器可以利用其中包括的任务节点确定目标组件,并利用目标组件完成任务,因此任务处理装置可以对任务流中的所有任务进行管理,效率较高。

针对以上方案所存在的缺陷,均是发明人在经过实践并仔细研究后得出的结果,因此,上述问题的发现过程以及下文中本公开针对上述问题所提出的解决方案,都应该是发明人在本公开过程中对本公开做出的贡献。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。

下面对本公开实施例提供的一种任务处理装置加以说明。

参见图1所示,为本公开实施例提供的一种任务处理装置的示意图,所述任务处理装置包括:调度器10、以及目标执行器20;

调度器10,用于对待执行的任务流进行解析,得到任务流中任务节点的任务信息,以及确定任务节点对应的目标执行器;任务节点为至少一个;

目标执行器20,用于基于对应任务节点的任务信息,获取对应任务节点的目标组件,并基于目标组件、以及任务信息执行对应任务节点的任务。

本公开实施例通过利用调度器对待执行的任务流进行解析,确定各个任务节点的任务信息以及对应的目标执行器,并由目标执行器根据任务信息获取对应任务节点的目标组件,从而执行对应任务节点的任务。这样,通过调度器的调度,灵活为各个任务节点确定对应的目标执行器,各个任务节点对应的目标执行器可以自动调用对应任务节点所需的目标组件进行处理,执行与任务节点对应的任务,而执行器部署的环境可以根据实际的应用需要进行灵活的设定,因而避免了在执行不同任务环节时进行执行环境切换的工作,提升任务处理的效率。

其中,待执行的任务流可以包括多个任务节点,每个任务节点均对应一个待处理的任务。例如,对于深度神经网络由训练到应用至实际应用场景中的过程,对应的多个待处理的任务可以包括数据预处理任务、模型训练任务、模型模式测试任务以及模型代码打包任务中至少一种。多个待处理的任务可以构成一个待执行的任务流。

参见图2所示,为本公开实施例提供的两种任务流的示意图;其中,在图2中(a)示出的一种任务流的示意图中,包括数据预处理任务对应的任务节点A、模型训练任务对应的任务节点B、模型模式测试任务对应的任务节点C以及模型代码打包任务对应的任务节点D。在图2所示的任务流的示意图中,由于多个任务串行处理,因此其对应的流向仅有一个。在另一种可能的实施方式中,在一个任务流中可能会存在并行操作的多个任务节点,例如在多模型训练的任务中,对应于图2中(a)示出的模型训练任务对应的任务节点B,可能会存在多个模型分别对应的模型训练任务的任务节点,例如在包括3个模型的情况下,对应模型训练任务的任务节点可以包括B1、B2以及B3;此时,多模型训练的任务流例如可以如图2中(b)所示,由于存在部分任务并行处理,因此在对任务流进行处理时,其对应的流向可能存在多个。或者,将对3个模型分别对应的模型训练任务的任务对应为一个任务节点,则其对应的任务流可以直接表示为图2中(a)所示的形式。

另外,由于任务流中的各个任务节点依据从数据预处理任务至模型代码打包任务的顺序依次执行,因此任务流中的任务节点存在输入的任务节点,例如上述图2中(a)示出的数据预处理任务对应的任务节点A;并存在输出的任务节点,例如上述图2中(a)示出的模型代码打包任务对应的任务节点D。

在本公开实施例提供的任务处理装置中,任务流可以构成有向无环图(DirectedAcyclic Graph,DAG)。任务处理装置可以提供给用户自定义任务流的功能,也即任务流可以由用户自主确定。示例性的,用户可以通过下述两种不同的方式确定任务流:浏览器界面可视化拖拉拽、或者强调以数据作为中心的置标语言(Yet Another Markup Language,YAML)格式的文本。在用户确定任务流时,通过确定不同的任务对应的任务节点,可以在任务流中定义出任务节点之间的依赖关系,也即任务流的执行顺序。

对于任务流中的每个任务节点而言,均对应有任务节点的任务信息。每个任务节点对应的任务信息与其对应的组件有关。

示例性的,组件可以包括不同的类型,例如分布式版本控制系统Git和应用容器引擎Docker两种。Git类型的组件,主要包括可执行脚本或者文件;Docker类型的组件,主要是按照Docker格式打包的镜像。

组件对应的任务信息(也可以称为属性信息),可以包括下述至少一项:对应任务节点的组件信息、参数、执行入口、以及并发度。

对应任务节点的组件信息例如可以包括对应的目标组件的组件标识。以任务节点包括模型代码打包任务对应的任务节点为例,对应的目标组件可以包括打包组件,则任务节点的组件信息对应包括该打包组件对应的组件标识。在对应任务节点的组件存在多个的情况下,则对应任务节点的组件信息包括多个组件分别对应的组件标识。对应任务节点的参数例如可以包括组件运行时的参数,包括输入(input)参数和输出(output)参数。对应节点的执行入口例如可以包括该对应节点的目标组件执行的入口。对应任务节点的并发度例如可以包括根据与该对应任务节点在任务流中可以同步进行处理的任务节点的数量进行确定。以图2中(b)示出的一种任务流为例,在第一个任务节点后,包括B1、B2以及B3共3个任务节点,因此可以将该3个任务节点的并发度信息设置为3。具体地,任务节点的任务信息可以根据实际情况确定,在此不做限定。

在调度器对待执行的任务流进行解析后,可以确定任务节点对应的目标执行器20。

在一种可能的实施方式中,例如可以基于任务流的拓扑结构、以及任务节点的任务信息,确定任务节点对应的目标执行器20。

具体地,在调度器10根据任务流的拓扑结构确定任务节点对应的目标执行器20时,例如可以是预先根据任务流确定了多个执行器的执行顺序,然后在确定为任务节点确定对应的目标执行器20时,可以根据任务节点在任务流中的位置,确定在多个执行器中对应位置的执行器,作为该任务节点对应的目标执行器20。

以图2中(a)示出的一种任务流为例。在任务节点A对应的执行器包括执行器a、任务节点B对应的执行器包括执行器b、任务节点C对应的执行器包括执行器c、任务节点D对应的执行器包括执行器d时,可以先利用任务节点与执行器之间的对应的关系以及任务流的拓扑结构,确定多个执行器的执行顺序,也即执行器a、执行器b、执行器c、执行器d。在调度器10为任务节点C确定对应的目标执行器20时,由于任务节点C在任务流的拓扑图中位于顺序第三位的位置,因此可以确定在执行器的执行顺序中第三位对应的执行器,也即执行器c作为任务节点C对应的目标执行器20。这种方式在前期即可以确定多个执行器的执行顺序,在实际的任务处理中可以减少搜索对应任务节点的执行器的时间,从而提高任务处理的效率。

在调度器根据任务节点的任务信息确定任务节点对应的目标执行器20时,由于不同的执行器可以处理不同的任务,因此对于任务流中的任一任务节点,均存在可以执行该任务节点对应的处理任务的执行器。

同样以图2中(a)示出的一种任务流为例,对于任务节点A,其对应数据预处理任务,则在执行器中存在至少一个执行器可以执行数据预处理任务。其他的任务节点同样具有这样的对应关系,因此在为任务节点确定目标执行器20时,可以根据任务节点对应的任务,从任务处理装置中的多个执行器中搜索可以完成该任务的执行器,并将该执行器作为目标执行器20。这样,对于任务流中的任一任务节点,可以完成该任务节点对应任务的执行器仅包括一个的情况下,调度器10可以很快的根据执行器的功能搜索到目标执行器20。

另外,调度器10还可以基于任务流的拓扑结构和/或任务节点的任务信息,确定任务执行顺序,并按照任务执行顺序,向目标执行器20下发任务节点的任务信息。

调度器10向目标执行器下发任务节点的任务信息时,用于向目标执行器20对应的任务队列中,下发任务节点对应的任务信息;目标执行器20还用于从对应的任务队列中,获取任务信息。

由于调度器10向目标执行器20下发的任务节点的任务信息可能包括多个,而目标执行器20的算力是有限的,因此可能会存在下发至目标执行器20但未被目标执行器20执行的任务信息,则可以为目标执行器20设置对应的任务队列。在调度器10依据任务节点向目标执行器20下发任务节点的任务信息时,可以将该任务节点对应的任务信息下发到目标执行器20对应的任务队列中,而不需要等待目标执行器20将当前执行的任务处理完毕,效率更高;并且,目标执行器20可以直接从其对应的任务队列中获取任务信息,因此不同的执行器在获取任务信息时是可以隔离开的,这样可以防止执行器错误的处理其他执行器需要处理的任务,安全性更高。

调度器10向目标执行器20下发任务节点的任务信息时,可以向目标执行器20下发第一任务节点输出的结果数据。其中,第一任务节点为第二任务节点依赖的任务节点;结果数据由第一任务节点对应的目标执行器执行第一任务节点对应的任务后上报给调度器10;任务节点包括第一任务节点和第二任务节点。第一任务节点输出的结果数据用于所述目标执行器执行所述第二任务节点的任务。

示例性的,对于图2中(a)示出的任务流,数据预处理任务对应任务节点A与模型训练对应任务节点B之间存在依赖关系,也即任务节点A的任务由其对应的目标执行器20处理完毕后,会继续由任务节点B对应的目标执行器20进行处理。此时,将任务节点A作为第一任务节点时,依赖于第一任务节点的任务节点则对应任务节点B,也即任务节点B作为第二任务节点。

在第一任务节点A对应的目标执行器20将其对应的任务处理完毕后,也即在第一任务节点A将其对应的任务队列中的任务信息处理完毕后,可以将处理后得到的结果数据输出,并上报至调度器10;调度器10在接受到第一任务节点上报的结果数据后,再向第二任务节点B对应的目标执行器20下发第一任务节点输出的结果数据。

对于在任务流中其余存在依赖关系的任务节点,调度器10分别对其对应的第一任务节点与第二任务节点对应的目标执行器20下发任务节点的任务信息的方式,与上述示例中任务节点A与任务节点B的过程相似,在此不再赘述。

在另一种可能的实施方式中,调度器10还可以基于多个执行器中每个执行器的状态和/或每个执行器部署的执行环境,为各个任务节点确定对应的目标执行器20。

示例性的,执行器例如可以对应三种不同的执行环境,例如包括Slurm Executor、kubernetes Executor(K8s)以及SSH Executor。其中,在Slurm集群,执行器主要执行数据预处理任务、模型训练任务等任务;在Kubernetes集群,执行器主要执行数据预处理任务、模型训练任务等任务;在SSH Executor集群,执行器主要执行远程到联网的嵌入式设备,然后再执行用户任务,主要用于执行模型模式测试任务等任务。

由于可以执行相同任务的执行器可能会对应在不同的执行环境中,而不同执行环境中的任务流可能存在相似的任务节点,并对应执行相同任务的执行器。在这种情况下,仅根据任务节点对应的任务确定目标执行器20可能会存在确定的目标执行器20对应的执行环境不支持的问题,例如在任务流中的任务节点对应处理在Slurm集群下的数据预处理任务任务,则确定的在Kubernetes集群下的执行器不能正确的对该数据预处理任务进行处理,因此调度器10还可以根据每个执行器部署的执行环境,确定对应执行环境下可以完成任务处理的目标执行器20。这种方式更适用于处理在多种执行环境下同步对任务流进行任务处理的情况,并且可以提高任务处理的安全性和准确性。

另外,在对应的执行环境下,若在执行器中可以确定多个可作为目标执行器20的执行器,则调度器10还可以根据每个执行器部署的执行环境,从多个执行器中搜索到空闲的执行器作为目标执行器20;这种确定目标执行器20的方法更为灵活。

在具体实施中,由于组件的数量是有限的,可能会出现任务节点对应的组件不存在的情况,因此调度器10还用于在得到任务流中包含的任务节点对应的任务信息后,基于任务节点的任务信息,确定与任务节点对应的组件是否存在,并在与任务节点对应的组件存在的情况下,为任务节点确定目标执行器20。

在调度器10确定不存在与任务节点对应的组件的情况下,可以停止对任务流的处理,并向用户上报对应的错误信息,例如包括“错误:未查询至任务节点A的组件信息”。

另外,组件可以是用户自己上传或者通过任务处理装置建立的。示例性的,用户在生成DAG时,可以建立与DAG中至少部分任务节点对应的组件,并存储在组件数据库,被纳入至组件管理单元的管理。其中,组件管理单元对组件的管理可以参见下述实施例所述,在此不再赘述。

另外,由于任务处理装置可以面向不同的使用群体,而不同的使用群体在使用该任务处理装置时所需要的功能不同,因此可以为不同的使用群体确定其可以使用的权限不同。

示例性的,使用群体可以包括所有者(owner)、开发者(developer)、使用者(user)以及浏览者(guest)。对于所有者,其对应的权限例如可以包括使用、删除、修改以及分享。对于所有者权限中的分享功能,在所有者开启分享功能的情况下,其他使用群体才能够获取到其对应的权限;在所有者关闭分享功能的情况下,仅能由所有者使用任务处理装置中的组件。对于开发者,其对应的权限例如可以包括使用以及修改。对于使用者,其对应的权限例如可以包括使用。对于浏览者,其对应的权限例如可以包括浏览。

因此,调度器10还可以用于在得到任务流中包含的任务节点对应的任务信息后,基于任务节点的任务信息,确定发起任务流的用户是否有权限使用任务节点对应的目标组件;在确定用户有权限使用任务节点对应目标组件的情况下,为任务节点确定目标执行器20。

示例性的,可以为任务流中的包括的多个任务节点分别确定不同使用群体的权限。例如对于任务节点A,浏览者对应的权限包括浏览,因此在浏览者在发起任务节点A时,调度器10确定发起任务流的浏览者没有权限使用任务节点A的任务信息,则不会授权浏览者使用任务节点A对应的目标组件。而使用者对应的权限包括使用,因此在使用者在发起任务节点A时,调度器10确定发起任务流的使用者有权限使用任务节点A的任务信息,则会授权使用者使用任务节点A对应的目标组件。

具体地,在任务处理装置中,还包括权限管理单元。在调度器10确定发起任务流的用户是否有权限使用任务节点对应的目标组件时,可以向权限管理单元发送用户的用户标识、以及目标组件对应的组件标识;以及,接收权限管理单元基于用户标识以及组件标识反馈的权限验证结果。

示例性的,上述使用群体,也即所有者、开发者、使用者以及浏览者均可以对应一个标识,例如其对应的英文缩写O、D、U、G。不同使用群体的用户,可以根据对应的使用群体,确定其对应的用户标识。例如对于所有者,其对应的用户标识中包括“O”;对于开发者,其对应的用户标识中包括“D”。

调度器10在向权限管理单元发送用户的用户标识以及目标组件对应的组件标识后,权限管理单元可以基于组件标识确定目标组件,并基于目标组件的拥有者标识、目标组件的分享状态以及用户标识,确定用户是否有权限使用目标组件。

示例性的,调度器10可以将目标组件的组件标识发送至权限管理单元,权限管理单元根据组件标识确定目标组件,并查询用户标识对应的用户群体对于该目标组件的权限。首先,由于拥有者有分享权限,若拥有者没有开启分享权限,则其他使用群体的用户均并能利用目标组件进行操作,因此先判断该目标组件的拥有者标识。在确定拥有者后,若拥有者没有开启分享权限,则在用户标识不包括“O”的情况下,也即用户不包括所有者的情况下,用户没有权限使用目标组件,只有作为拥有者的用户可以有对目标组件调用的权限。在拥有者开启分享权限的情况下,若用户标识包括“D”,也即用户为开发者,则根据开发者对应的权限,例如包括使用和修改,确定用户可以对目标组件进行使用和修改。

利用这种方式,可以有效的对不同使用者进行管理,以维护目标组件安全正常的使用。

另外,在任务处理装置中,还包括组件管理单元,目标执行器20在基于对应任务节点的任务信息,获取对应任务节点的目标组件时,用于向组件管理单元发送任务信息中的组件标识。组件管理单元在接收到目标执行器20发送的组件标识后,向目标执行器20发送与组件标识对应的目标组件。

其中,组件管理单元向目标执行器20发送与组件标识对应的目标组件时,确定发起任务流的用户是否有权限使用与所述组件标识对应的目标组件情况下,向目标执行器20发送与组件标识对应的目标组件。确定用户权限的方式在此不再重复赘述。

针对组件管理单元,组件管理单元可以管理所有组件,并且例如可以存储有不同组件分别对应的组件标识,在接收到目标执行器20发送任务信息中的组件标识后,根据确定的组件标识与组件之间的对应关系,从管理的多个组件中确定与接收到的该组件标识对应的组件,并将其作为目标组件。然后,组件管理单元将确定的目标组件发送至目标执行器20,以使目标执行器20可以利用目标组件完成对应的任务。

另外,组件管理单元还提供了用户自定义任务的管理,对于组件管理单元而言,每个任务对应的组件都是一个可执行文件、脚本或者打包后的镜像。用户可以自己上传或者建立对应的组件。

本公开实施例还提供了一种利用任务处理装置对任务流进行处理的具体实施例。参见图3所示,为本公开实施例提供的一种任务处理装置应用于具体实施例时的结构图。

用户利用任务处理装置的入口自定义任务流DAG_1,并定义在任务流中各个任务节点,包括任务节点A、任务节点B以及任务节点C,任务流DAG_1对应的示意图如图4所示,三个任务节点顺序串行执行。

在用户定义任务节点的同时,还包括对应任务节点的任务信息,包括对应节点的组件信息、参数、执行入口、以及并发度。并且,在确定任务流DAG_1时,也确定了任务流DAG_1的执行顺序,也即任务节点A、任务节点B以及任务节点C之间的依赖关系。

调度器10在对任务流DAG_1进行解析时,根据解析得到的多个任务节点、以及拓扑结构,为任务节点A确定目标执行器为执行器a、为任务节点B确定目标执行器为执行器b、为任务节点C确定目标执行器为执行器c。并且组件管理单元30可以根据任务节点对应的组件标识,确定每个任务节点分别对应的组件。

在任一用户发起任务流时,调度器10向权限管理单元40确认确定发起任务流的用户是否有权限使用任务节点对应的目标组件。在具体实施例中,用户为拥有者,对应有使用的权限。

调度器10先向执行器a下发任务节点A对应的任务队列下发任务信息,在执行器a将其对应的任务队列中的任务处理完毕后,将处理后得到的结果数据输出,并上报至调度器10。调度器10再向第二任务节点B对应的目标执行器下发该任务节点A输出的结果数据。

然后,调度器10再向任务节点B对应的任务队列下发任务信息,并将任务节点A输出的结果数据下发至任务节点B,在任务节点B对应的执行器b将其对应的任务队列中的任务处理完毕后,将处理后得到的结果数据输出,并上报至调度器10。调度器10再向第三任务节点C对应的目标执行器下发该任务节点B输出的结果数据。

然后,调度器10再向任务节点C对应的任务队列下发任务信息,并将任务节点B输出的结果数据下发至任务节点C,在任务节点C对应的执行器c将其对应的任务队列中的任务处理完毕后,将处理后得到的结果数据输出,并上报至调度器10。

此时,任务节点C数据结果数据后,完成对任务流DAG_1全部任务的执行。

另外,在任务处理装置中,还包括日志(log)和附件(Artifacts)。其中,日志50用于收集执行器执行任务时的日志的收集和存储,之后,用户可以随时随地查询当次执行的日志记录,方便跟踪任务执行进度。附件60用于收集文件形式的任务返回值,统一存储,方便用户在浏览器下载,主要管理训练得到的模型文件,生成报告等。

本领域技术人员可以理解,在具体实施方式的装置中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。

基于同一发明构思,本公开实施例中还提供了与任务处理装置对应的任务处理方法,由于本公开实施例中的方法解决问题的原理与本公开实施例上述任务处理装置相似,因此方法的实施可以参见方法的实施,重复之处不再赘述。

参见图5所示,为本公开实施例提供的一种任务处理方法的流程图,所述任务数据方法应用于任务处理装置,包括步骤S501~S502,其中:

S501:调度器对待执行的任务流进行解析,得到任务流中任务节点的任务信息,以及确定任务节点对应的目标执行器;任务节点为至少一个;

S502:目标执行器基于对应任务节点的任务信息,获取对应任务节点的目标组件,并基于目标组件、以及任务信息执行对应任务节点的任务。

一种可选的实施方式中,所述对应任务节点的任务信息包括下述至少一项:所述对应任务节点的组件信息、参数、执行入口、以及并发度。

一种可选的实施方式中,所述调度器确定所述任务节点对应的目标执行器,包括:基于所述任务流的拓扑结构、以及所述任务节点的任务信息,确定所述任务节点对应的目标执行器。

一种可选的实施方式中,还包括:所述调度器基于所述任务流的拓扑结构和/或所述任务节点的任务信息,确定任务执行顺序,并按照所述任务执行顺序,向所述目标执行器下发所述任务节点的任务信息。

一种可选的实施方式中,所述调度器向所述目标执行器下发所述任务节点的任务信息,包括:所述调度器向所述目标执行器下发第一任务节点输出的结果数据;其中,所述第一任务节点为第二任务节点依赖的任务节点;所述第一任务节点输出的结果数据用于所述目标执行器执行所述第二任务节点的任务;所述结果数据由所述第一任务节点对应的目标执行器执行所述第一任务节点对应的任务后上报给所述调度器;所述任务节点包括所述第一任务节点和所述第二任务节点。

一种可选的实施方式中,所述调度器向所述目标执行器下发所述任务节点的任务信息,包括:所述调度器向所述目标执行器对应的任务队列中,下发所述任务节点对应的任务信息;所述目标执行器从对应的所述任务队列中,获取所述任务信息。

一种可选的实施方式中,所述调度器确定所述任务节点对应的目标执行器,包括:基于多个执行器中每个执行器的状态和/或每个执行器部署的执行环境,为各个所述任务节点确定对应的目标执行器。

一种可选的实施方式中,还包括:所述调度器,在得到所述任务流中包含的任务节点对应的任务信息后,基于所述任务节点的任务信息,确定与所述任务节点对应的组件是否存在;在与所述任务节点对应的组件存在的情况下,为所述任务节点确定目标执行器。

一种可选的实施方式中,还包括:所述调度器在得到所述任务流中包含的任务节点对应的任务信息后,基于所述任务节点的任务信息,确定发起所述任务流的用户是否有权限使用所述任务节点对应的目标组件;在确定所述用户有权限使用所述任务节点对应目标组件的情况下,为所述任务节点确定目标执行器。

一种可选的实施方式中,还包括:所述调度器确定发起所述任务流的用户是否有权限使用所述任务节点对应的目标组件,包括:所述调度器向所述权限管理单元发送所述用户的用户标识、以及所述目标组件对应的组件标识;接收所述权限管理单元基于所述用户标识以及所述组件标识反馈的权限验证结果;权限管理单元基于所述组件标识,确定目标组件;基于所述目标组件的拥有者标识、所述目标组件的分享状态、以及所述用户标识,确定所述用户是否有权限使用所述目标组件。

一种可选的实施方式中,所述目标执行器基于对应任务节点的任务信息,获取所述对应任务节点的目标组件,包括:所述目标执行器向组件管理单元发送所述任务信息中的组件标识;接收所述组件管理单元下发的与所述组件标识对应的目标组件;所述组件管理单元在接收到所述目标执行器发送的组件标识后,向所述目标执行器发送与所述组件标识对应的目标组件。

一种可选的实施方式中,所述组件管理单元向所述目标执行器发送与所述组件标识对应的目标组件,包括:所述组件管理单元确定发起所述任务流的用户是否有权限使用与所述组件标识对应的目标组件;在确定所述用户有权限使用与所述组件标识对应的目标组件的情况下,向所述目标执行器发送与所述组件标识对应的目标组件。

一种可选的实施方式中,所述任务节点对应的任务包括下述至少一种:模型训练任务、数据预处理任务、模型模式测试任务、以及模型代码打包任务。

本公开实施例还提供一种计算机设备,包括:指令存储器和本公开实施例提供的任务处理装置。

本公开实施例提供的任务处理装置可以包括芯片、AI芯片等。本公开实施例提供的计算机设备可以包括手机等智能终端,或者也可以是其他可以用于进行任务处理的设备、服务器等,这里并不限制。

本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述方法实施例中所述的任务处理方法的步骤。其中,该存储介质可以是易失性或非易失的计算机可读取存储介质。

本公开实施例还提供一种计算机程序产品,该计算机程序产品承载有程序代码,所述程序代码包括的指令可用于执行上述方法实施例中所述的任务处理方法的步骤,具体可参见上述方法实施例,在此不再赘述。

其中,上述计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(Software Development Kit,SDK)等等。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本公开所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

最后应说明的是:以上所述实施例,仅为本公开的具体实施方式,用以说明本公开的技术方案,而非对其限制,本公开的保护范围并不局限于此,尽管参照前述实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本公开实施例技术方案的精神和范围,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应所述以权利要求的保护范围为准。

相关技术
  • 一种任务处理装置、方法、计算机设备及存储介质
  • 任务调度方法、任务调度系统、存储介质和计算机设备
技术分类

06120113047859