CN109766196A - 一种任务调度方法、装置及设备 - Google Patents
一种任务调度方法、装置及设备 Download PDFInfo
- Publication number
- CN109766196A CN109766196A CN201811552105.2A CN201811552105A CN109766196A CN 109766196 A CN109766196 A CN 109766196A CN 201811552105 A CN201811552105 A CN 201811552105A CN 109766196 A CN109766196 A CN 109766196A
- Authority
- CN
- China
- Prior art keywords
- task
- database
- workflow
- scheduling
- stored
- 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
Links
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本申请公开了一种任务调度方法、装置及设备,其中方法包括:获取调度请求,所述调度请求用于请求调度存储于数据库中工作流中的任务;所述工作流包括多个任务;响应于获取到的所述调度请求,从所述数据库中调度出所述工作流中的第一任务,且将所述第一任务存入消息队列;判断所述第一任务是否为空闲的任务,如果所述第一任务是空闲的任务,则执行所述第一任务,并将所述第一任务的执行状态写入到所述数据库中;从所述数据库中查询所述第一任务的执行状态,如果所述第一任务执行成功,则从所述数据库中调度出第二任务;所述第二任务为所述工作流中所述第一任务的下游任务。采用本申请,可提高机器学习系统的资源利用率。
Description
技术领域
本申请涉及机器学习技术领域,尤其涉及一种任务调度方法、装置及设备。
背景技术
随着机器学习的广泛应用,机器学习受到了业界的广泛关注。机器学习过程包含数据集预处理、特征处理、模型训练及模型部署等步骤,例如,算法工程师建立数据模型时,先编写个脚本做数据预处理,之后再写一个脚本做特征处理、模型训练脚本最后到模型训练部署的脚本编辑结束为止。可见,每次需要花费大量时间和精力重新构建不同的机器学习步骤来完成机器学习框架的搭建,这不仅提高了机器学习使用门槛,降低算法工程师的工作效率,而且降低了机器学习系统的资源利用率。
发明内容
本申请提供一种任务调度方法、装置及设备,通过组成一个包括第一任务、第二任务的工作流,第一任务成功执行完成之后,自动执行第一任务的下游任务(第二任务),一方面,可自动且迅速构建不同的机器学习步骤以完成学习框架的搭建,降低了机器学习使用门槛,提高了算法工程师的工作效率;另一方面,在第一任务成功执行完成之后,自动执行第一任务的下游任务,因而,执行工作流中任务的CPU资源几乎不会闲置,进而提高了机器学习系统的资源利用率。
第一方面,本申请提供了一种任务调度方法,该方法包括:
获取调度请求,所述调度请求用于请求调度存储于数据库中工作流中的任务,其中,所述工作流包括多个任务;
响应于获取到的所述调度请求,从所述数据库中调度出所述工作流中的第一任务,且将所述第一任务存入消息队列;
判断所述第一任务是否为空闲的任务,如果所述第一任务是空闲的任务,则执行所述第一任务,并将所述第一任务的执行状态写入到所述数据库中;
从所述数据库中查询所述第一任务的执行状态,如果所述第一任务执行成功,则从所述数据库中调度出第二任务;所述第二任务为所述工作流中所述第一任务的下游任务。
结合第一方面,在一些可能的实施例中,
所述从所述数据库中查询所述第一任务的执行状态之后,还包括:
如果所述第一任务执行失败,则清空所述消息队列中的任务。
结合第一方面,在一些可能的实施例中,
所述如果所述第一任务执行成功,则从所述数据库中调度出第二任务,包括:
如果所述第一任务执行成功,则判断包含所述第一任务的工作流是否运行成功;如果运行成功,则判断所述第一任务是否存在下游任务,如果存在,则从所述数据库中调度出第二任务;所述第二任务为所述工作流中所述第一任务的下游任务。
结合第一方面,在一些可能的实施例中,
所述获取调度请求,包括:
接收调度请求或查询调度请求。
结合第一方面,在一些可能的实施例中,
所述从所述数据库中调度出所述工作流中的第一任务之前,还包括:
对通过由互联网端拖拉组件形成的工作流进行解析;
将解析后的所述由互联网端拖拉组件形成的工作流存储于所述数据库。
结合第一方面,在一些可能的实施例中,
所述从所述数据库中调度出所述工作流中的第一任务之前,还包括:
通过基于py文件定义的工作流进行解析;
将解析后的所述基于py文件定义的工作流存储于所述数据库。
结合第一方面,在一些可能的实施例中,
所述从所述数据库中调度出所述工作流中的第一任务,且将所述第一任务存入消息队列,包括:
从所述数据库中调度出一个或多个入度为零的第一任务,且将所述一个或多个入度为零的第一任务存入消息队列。
第二方面,本申请提供了一种装置,该装置包括:
获取单元,用于获取调度请求,所述调度请求用于请求调度存储于数据库中工作流中的任务,其中,所述工作流包括多个任务;
调度单元,用于响应于获取到的所述调度请求,从所述数据库中调度出所述工作流中的第一任务,且将所述第一任务存入消息队列;
判断单元,用于判断所述第一任务是否为空闲的任务,如果所述第一任务是空闲的任务,则执行所述第一任务,并将所述第一任务的执行状态写入到所述数据库中;
查询单元,用于从所述数据库中查询所述第一任务的执行状态;
所述调度单元,还用于如果所述第一任务执行成功,则从所述数据库中调度出第二任务;所述第二任务为所述工作流中所述第一任务的下游任务。
结合第二方面,在一些可能的实施例中,
获取单元,具体用于:
接收调度请求或查询调度请求。
结合第二方面,在一些可能的实施例中,
调度单元,具体还用于:
如果所述第一任务执行成功,则判断包含所述第一任务的工作流是否运行成功;如果运行成功,则判断所述第一任务是否存在下游任务,如果存在,则从所述数据库中调度出第二任务;所述第二任务为所述工作流中所述第一任务的下游任务。
结合第二方面,在一些可能的实施例中,
所述装置还可以包括:解析单元。
解析单元,用于:
从所述数据库中调度出所述工作流中的第一任务之前,对通过由互联网端拖拉组件形成的工作流进行解析;
或者,
从所述数据库中调度出所述工作流中的第一任务之前,
对基于py文件定义的工作流进行解析。
所述装置还可以包括:清理单元,具体用于:
在查询单元从所述数据库中查询所述第一任务的执行状态之后,如果第一任务执行失败,则清空所述消息队列中的任务。
第三方面,本申请提供了一种设备,包括输入设备、输出设备、处理器和存储器,所述处理器、输入设备、输出设备和存储器相互连接,其中,所述存储器用于存储支持设备执行上述方法的应用程序代码,所述处理器被配置用于执行上述第一方面的任务调度方法。
第四方面,本申请提供了一种计算机可读的存储介质,用于存储一个或多个计算机程序,上述一个或多个计算机程序包括指令,当上述计算机程序在计算机上运行时,上述指令用于执行上述第一方面的任务调度方法。
第五方面,本申请提供了一种计算机程序,该计算机程序包括任务调度指令,当该计算机程序在计算机上执行时,上述利用任务调度指令用于执行上述第一方面提供的任务调度方法。
本申请提供了一种任务调度方法、装置及设备。首先,获取调度请求,调度请求用于请求调度存储于数据库中工作流中的任务,其中,工作流包括多个任务。进而,响应于获取到的所述调度请求,从数据库中调度出工作流中的第一任务,且将第一任务存入消息队列。然后,判断第一任务是否为空闲的任务,如果第一任务是空闲的任务,则执行第一任务,并将第一任务的执行状态写入到数据库中。最后,从数据库中查询第一任务的执行状态,如果第一任务执行成功,则从数据库中调度出第二任务;第二任务所述工作流中第一任务的下游任务。采用本申请,通过组成一个包括第一任务、第二任务的工作流,第一任务成功执行完成之后,自动执行第一任务的下游任务(第二任务),一方面,可自动且迅速构建不同的机器学习步骤以完成学习框架的搭建,降低了机器学习使用门槛,提高了算法工程师的工作效率;另一方面,在第一任务成功执行完成之后,自动执行第一任务的下游任务,因而,执行工作流中任务的CPU资源几乎不会闲置,进而提高了机器学习系统的资源利用率。
附图说明
为了更清楚地说明本申请实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请提供的一种任务调度系统的架构的示意流程图;
图2是本申请提供的一种工作流的示意图;
图3是本申请提供的一种任务调度方法的示意图;
图4是本申请提供的一种工作流的任务的处理过程的示意图;
图5是本申请提供的一种装置的示意性框图;
图6是本申请提供的一种设备示意性框图。
具体实施方式
下面将结合本申请中的附图,对本申请中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本申请说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本申请。如在本申请说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
还应当进一步理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
具体实现中,本申请中描述的设备包括但不限于诸如具有触摸敏感表面(例如,触摸屏显示器和/或触摸板)的移动电话、膝上型计算机或平板计算机之类的其它便携式设备。还应当理解的是,在某些实施例中,所述设备并非便携式通信设备,而是具有触摸敏感表面(例如,触摸屏显示器和/或触摸板)的台式计算机。
在接下来的讨论中,描述了包括显示器和触摸敏感表面的设备。然而,应当理解的是,设备可以包括诸如物理键盘、鼠标和/或控制杆的一个或多个其它物理用户接口设备。
设备支持各种应用程序,例如以下中的一个或多个:绘图应用程序、演示应用程序、文字处理应用程序、网站创建应用程序、盘刻录应用程序、电子表格应用程序、游戏应用程序、电话应用程序、视频会议应用程序、电子邮件应用程序、即时消息收发应用程序、锻炼支持应用程序、照片管理应用程序、数码相机应用程序、数字摄影机应用程序、web浏览应用程序、数字音乐播放器应用程序和/或数字视频播放器应用程序。
可以在设备上执行的各种应用程序可以使用诸如触摸敏感表面的至少一个公共物理用户接口设备。可以在应用程序之间和/或相应应用程序内调整和/或改变触摸敏感表面的一个或多个功能以及设备上显示的相应信息。这样,设备的公共物理架构(例如,触摸敏感表面)可以支持具有对用户而言直观且透明的用户界面的各种应用程序。
为了更好地理解本申请,下面对本申请适用的实时渲染系统的架构图进行描述。请参阅图1,图1是本申请提供一种实时渲染系统的架构图。如图1所示,系统可包括但不限于:网络产品界面设计(Website User Interface,WebUi)、状态转移接口(Restful Api)、操作引擎(Operator Engine)、有向无环图引擎(DAG Engine)、数据库(Database)以及执行器(Excutor)。
应当说明的,基于http请求的状态转移接口,通过浏览器等互联网(World WideWeb,Web)端拖拉组件形成工作流。应当说明的,还可以通过py文件定义工作流。应当说明的,工作流包括多个任务(task),py文件是python脚本文件。
下面例举一个示例对工作流(workflow)以及工作流中的任务进行简单阐述。
具体的,一次完整的包括数据集预处理、特征处理、模型训练、模型评估以及模型部署等步骤的机器学习过程可为一个工作流,其中,每一个步骤(如:模型训练)可为该工作流中的一个任务,步骤与步骤之间的关联组成一个工作流,工作流可为有向无环图的形式。
图2示例性示出了一种工作流的示意图。
如图2所示,通过数据标记函数(Data Labeling Function)对数据集(Dataset-1)中数据进行标记,获取标记后的数据;进而,通过预处理函数(Preprocessing Function)对上述标记后的数据进行特征提取,获取相应的特征;然后,通过将上述相应的特征输入到预训练模型(Pretraining Model)中,对预训练模型进行训练,获得训练好的训练函数(Training Function);接着,将测试数据集(Test Dataset)输入到训练函数中,获得评价函数(Evaluation Function),最后,一方面,对获得的评价函数进行部署,得到部署功能(Deploy Function);另一方面,获得的评价函数结合Dataset-1获得推导功能(inferenceFunction)。
应当说明的,例如:通过数据标记函数对数据集中数据进行标记,可被视为一个任务;通过预处理函数对上述数据标记后的数据进行特征提取,获取相应的特征,也可被视为一个任务;或者,对预训练模型进行训练,也还可被视为一个任务。
有向无环图引擎可用于对形成的工作流进行解析,还可用于向操作引擎发送调度请求。
操作引擎可用于接收有向无环图引擎发送的调度请求,响应于获取到的调度请求,通过操作引擎中的scheduler进程从数据库中查询数据流,并调度出工作流中的第一任务,且将第一任务存入消息队列。其中,数据库可为mysql、postgresql等关系数据库或者MongoDb等非关系型数据库。
其中,操作引擎可包括但不限于scheduler进程、worker进程、消息队列以及数据库。应当说明的,该数据库可嵌入在操作引擎中,也可为独立部署在操作引擎之外的云端数据库,本申请实施例不作限制。
通过操作引擎中的worker进程查询到消息队列中的第一任务,如果第一任务是空闲的任务,则通过执行器执行第一任务,并通过worker进程将第一任务的执行状态写入到数据库中。应当说明的,执行状态可包括但不限于:任务执行成功以及任务执行失败。
应当说明的,如果第一任务执行成功,则从数据库中调度出第二任务,具体可包括以下工作过程:
过程1:通过操作引擎对第一任务的执行状态进行判断,如果第一任务执行成功,判断第一任务所处的工作流是否运行成功,如果是,则判断第一任务是否存在下游任务。
过程2:如果第一任务存在下游任务,则通过操作引擎从数据库中查询,并调度出第二任务;第二任务工作流中第一任务的下游任务。
综上所述,通过操作引擎从有向无环图引擎获取调度请求,调度请求用于请求调度存储于数据库中工作流中的任务;工作流包括多个任务。进而,响应于获取到的所述调度请求,通过操作引擎从数据库中调度出工作流中的第一任务,且将第一任务存入消息队列。然后,通过操作引擎的worker判断第一任务是否为空闲的任务,如果第一任务是空闲的任务,则通过执行器执行第一任务,并通过worker进程将第一任务的执行状态写入到数据库中。最后,通过操作引擎从数据库中查询第一任务的执行状态,如果第一任务执行成功,则通过操作引擎从数据库中调度出第二任务;第二任务所述工作流中第一任务的下游任务。采用本申请,通过组成一个包括第一任务、第二任务的工作流,第一任务成功执行完成之后,自动执行第一任务的下游任务(第二任务),一方面,可自动且迅速构建不同的机器学习步骤以完成学习框架的搭建,降低了机器学习使用门槛,提高了算法工程师的工作效率;另一方面,在第一任务成功执行完成之后,自动执行第一任务的下游任务,因而,执行工作流中任务的CPU资源几乎不会闲置,进而提高了机器学习系统的资源利用率。
应当说明的,图2仅仅用于解释本申请实施例,不应对本申请做出限制。
参见图3,是本申请提供一种实时渲染方法的示意流程图,如图3所示,该方法可以至少包括以下几个步骤:
S301、获取调度请求。
本申请实施例中,调度请求用于请求调度存储于数据库中工作流中的任务;工作流包括多个任务。
应当说明的,获取调度请求可包括但不限于以下两种方式:
方式1:操作引擎可用于接收有向无环图引擎发送的调度请求。
方式2:操作引擎可用于从有向无环图引擎中查询调度请求。
应当说明的,该数据库可嵌入在操作引擎中,也可独立部署在操作引擎之外的云端数据库。其中,数据库可为mysql、postgresql等关系数据库或者MongoDb等非关系型数据库。
应当说明的,一次完整的包括数据集预处理、特征处理、模型训练、模型评估以及模型部署等步骤的机器学习过程可为一个工作流,其中,每一个步骤(如:模型训练)可为该工作流中的一个任务,步骤与步骤之间的关联组成一个工作流,工作流可为有向无环图的形式。
S302、响应于获取到的调度请求,从数据库中调度出工作流中的第一任务,且将第一任务存入消息队列。
应当说明的,从所述数据库中调度出所述工作流中的第一任务之前,还包括以下步骤:
有向无环图引擎对通过由Web端拖拉组件形成的工作流进行解析,将解析后的所述由Web端拖拉组件形成的工作流存储于数据库。
应当说明的,工作流在数据库中可通过以下两种方式进行存储。
第一种方式:工作流在数据库中可通过邻接矩阵的形式进行存储。
第二种方式:工作流在数据库中可以邻接图的形式进行存储。
或者,
有向无环图引擎通过基于py文件定义的工作流进行解析;
将解析后的所述基于py文件定义的工作流存储于数据库,py文件是python脚本文件。
响应于获取到的调度请求,从数据库中调度出工作流中的第一任务,且将第一任务存入消息队列,具体可包括以下步骤:
操作引擎中的scheduler进程从所述数据库中调度出一个或多个入度为零的第一任务,且将所述一个或多个入度为零的第一任务按照广度优先遍历的方式存入消息队列,其中,每一个队列对应于一个消息队列。本申请实施例中,广度优先遍历即为从一个顶点开始,辐射状地遍历其周围较广的区域。
应当说明的,如果第一任务的入度为零,也即是说,第一任务没有上游任务,第一任务存在下游任务,或者,第一任务可能存在下游任务。
举例来说,对于一个包括数据集预处理、特征处理、模型训练、模型评估以及模型部署等步骤的工作流,数据集预处理步骤即可为一个入度为零的第一任务。
本申请实施例中的任务从一端发出后,首先进入一个容器进行临时存储,当达到某种条件后,再由这个容器发生给另一端,其中,这个容器的一种具体实现即为本申请实施例中的消息队列。
下面例举一个例子对工作流中的任务的处理过程进行阐述。
图4示例性示出了一个工作流的任务的处理过程。
如图4所示,操作引擎中的scheduler进程从数据库中调度出一个或多个入度为零的第一任务,进而,将上述一个或多个入度为零的任务通过广度优先遍历的方式存入n个消息队列,其中,每一个工作流对应于一个消息队列。然后,通过操作引擎中的s个worker进程分别查询到消息队列中的第一任务,如果第一任务是空闲的任务,则通过执行器执行第一任务,并通过worker进程将第一任务的执行状态写入到数据库中。
S303、判断第一任务是否为空闲的任务,如果第一任务是空闲的任务,则执行第一任务,并将第一任务的执行状态写入到数据库中。
具体的,判断第一任务是否为空闲的任务,如果第一任务是空闲的任务,则执行第一任务,并将第一任务的执行状态写入到数据库中,具体可包括以下步骤:
通过操作引擎中的worker进程查询到消息队列中的第一任务,如果第一任务是空闲的任务,则通过执行器执行第一任务,并通过worker进程将第一任务的执行状态写入到数据库中。
本申请实施例中,消息队列中的第一任务是空闲的任务,换句话说,消息队列中的第一任务未被执行。
应当说明的,执行状态可包括但不限于:任务执行成功以及任务执行失败。
S304、从数据库中查询第一任务的执行状态,如果第一任务执行成功,则从数据库中调度出第二任务。
本申请实施例中,如果第一任务执行成功,则从数据库中调度出第二任务,具体可包括以下步骤:
步骤1:通过操作引擎中worker进程对第一任务的执行状态进行判断,如果第一任务执行成功,判断第一任务所处的工作流是否运行成功,如果是,则判断第一任务是否存在下游任务。
步骤2:如果第一任务存在下游任务,则通过操作引擎中的scheduler进程从数据库中查询,并调度出第二任务;第二任务为工作流中第一任务的下游任务。
举例来说,一次完整的包括数据集预处理、特征处理、模型训练、模型评估以及模型部署等步骤的机器学习过程可为一个工作流,其中,每一个步骤(如:模型训练)可为该工作流中的一个任务。
应当说明的,执行完步骤2之后,还包括:
步骤3:将第二任务存入消息队列,通过操作引擎中的worker进程查询到消息队列中的第二任务,如果第二任务是空闲的任务,则通过执行器执行第二任务,并通过worker进程将第二任务的执行状态写入到数据库中。
应当说明的,数据集预处理可为第一任务,第二任务(特征处理)为第一任务(数据集预处理)的下游任务。
综上所述,本申请实施例中,首先,通过操作引擎从有向无环图引擎获取调度请求,调度请求用于请求调度存储于数据库中工作流中的任务;工作流包括多个任务。进而,响应于获取到的所述调度请求,操作引擎的scheduler进程从数据库中调度出工作流中的第一任务,且将第一任务存入消息队列。然后,通过操作引擎的worker进程判断第一任务是否为空闲的任务,如果第一任务是空闲的任务,则通过操作引擎的执行器执行第一任务,并将第一任务的执行状态写入到数据库中。最后,从数据库中查询第一任务的执行状态,如果第一任务执行成功,则通过操作引擎的scheduler进程从数据库中调度出第二任务;第二任务所述工作流中第一任务的下游任务。采用本申请,通过组成一个包括第一任务、第二任务的工作流,第一任务成功执行完成之后,自动执行第一任务的下游任务(第二任务),一方面,可自动且迅速构建不同的机器学习步骤以完成学习框架的搭建,降低了机器学习使用门槛,提高了算法工程师的工作效率;另一方面,在第一任务成功执行完成之后,自动执行第一任务的下游任务,因而,执行工作流中任务的CPU资源几乎不会闲置,进而提高了机器学习系统的资源利用率。
应当说明的,图4仅仅用于解释本申请实施例,不应对本申请做出限制。
可理解的,图3方法实施例中未提供的相关定义和说明可参考图1的实施例,此处不再赘述。
为了便于实施本申请实施例,本申请提供了一种装置,用于实现图3实施例所述的方法。图5所示的装置可以用于执行上述全部内容所述的分别对应的实施例中的描述。如图5所示,装置50可包括:获取单元501、调度单元502、判断单元503以及查询单元504,其中:
获取单元501,用于获取调度请求,调度请求用于请求调度存储于数据库中工作流中的任务;工作流包括多个任务;
调度单元502,用于响应于获取到的调度请求,从数据库中调度出工作流中的第一任务,且将第一任务存入消息队列;
判断单元503,用于判断第一任务是否为空闲的任务,如果第一任务是空闲的任务,则执行第一任务,并将第一任务的执行状态写入到数据库中;
查询单元504,用于从数据库中查询第一任务的执行状态;
调度单元502,具体用于:
从数据库中调度出一个或多个入度为零的第一任务,且将一个或多个入度为零的第一任务存入消息队列。
调度单元502,还用于如果第一任务执行成功,则从数据库中调度出第二任务;第二任务为工作流中第一任务的下游任务。
获取单元501,具体用于:
接收调度请求或查询调度请求。
调度单元501,具体还用于:
如果第一任务执行成功,则判断包含第一任务的工作流是否运行成功;如果运行成功,则判断第一任务是否存在下游任务,如果存在,则从数据库中调度出第二任务;第二任务为工作流中第一任务的下游任务。
装置50可包括:获取单元501、调度单元502、判断单元503以及查询单元504之外,还可以包括:解析单元。
解析单元,用于:
从数据库中调度出工作流中的第一任务之前,对通过由互联网端拖拉组件形成的工作流进行解析;
或者,
从数据库中调度出工作流中的第一任务之前,
对基于py文件定义的工作流进行解析。
装置50可包括:获取单元501、调度单元502、判断单元503以及查询单元504之外,还可以包括:清理单元。
清理单元,具体用于:
在查询单元504从数据库中查询第一任务的执行状态之后,如果第一任务执行失败,则清空消息队列中的任务。
综上所述,首先,装置50通过获取单元501获取调度请求,调度请求用于请求调度存储于数据库中工作流中的任务;工作流包括多个任务。进而,响应于获取到的所述调度请求,装置50通过调度单元502从数据库中调度出工作流中的第一任务,且将第一任务存入消息队列。然后,装置50通过判断单元503判断第一任务是否为空闲的任务,如果第一任务是空闲的任务,则执行第一任务,并将第一任务的执行状态写入到数据库中。最后,装置50通过查询单元504从数据库中查询第一任务的执行状态,如果第一任务执行成功,则从数据库中调度出第二任务;第二任务工作流中第一任务的下游任务。采用本申请实施例,通过组成一个包括第一任务、第二任务的工作流,第一任务成功执行完成之后,自动执行第一任务的下游任务(第二任务),一方面,可自动且迅速构建不同的机器学习步骤以完成学习框架的搭建,降低了机器学习使用门槛,提高了算法工程师的工作效率;另一方面,在第一任务成功执行完成之后,自动执行第一任务的下游任务,因而,执行工作流中任务的CPU资源几乎不会闲置,进而提高了机器学习系统的资源利用率。
应当理解,装置50仅为本申请实施例提供的一个例子,并且,装置50可具有比示出的部件更多或更少的部件,可以组合两个或更多个部件,或者可具有部件的不同配置实现。
可理解的,关于图5的装置50包括的功能块的具体实现方式,可参考前述图3所述的方法实施例,这里不再赘述。
图6是本申请提供的一种设备的结构示意图。本申请实施例中,设备可以包括移动手机、平板电脑、个人数字助理(Personal Digital Assistant,PDA)、移动互联网设备(Mobile Internet Device,MID)、智能穿戴设备(如智能手表、智能手环)等各种设备,本申请实施例不作限定。如图6所示,设备60可包括:基带芯片601、存储器602(一个或多个计算机可读存储介质)、外围系统603。这些部件可在一个或多个通信总线604上通信。
基带芯片601可包括:一个或多个处理器(CPU)605。
处理器605,具体可用于以下步骤:
获取调度请求,调度请求用于请求调度存储于数据库中工作流中的任务;工作流包括多个任务;
响应于获取到的所述调度请求,从数据库中调度出所述工作流中的第一任务,且将所述第一任务存入消息队列;
判断第一任务是否为空闲的任务,如果第一任务是空闲的任务,则执行第一任务,并将第一任务的执行状态写入到数据库中;
从数据库中查询第一任务的执行状态,如果第一任务执行成功,则从数据库中调度出第二任务;第二任务工作流中第一任务的下游任务。
存储器602与处理器605耦合,可用于存储各种软件程序和/或多组指令。具体实现中,存储器602可包括高速随机存取的存储器,并且也可包括非易失性存储器,例如一个或多个磁盘存储设备、闪存设备或其他非易失性固态存储设备。存储器602可以存储操作系统(下述简称系统),例如ANDROID,IOS,WINDOWS,或者LINUX等嵌入式操作系统。存储器602还可以存储网络通信程序,该网络通信程序可用于与一个或多个附加设备,一个或多个设备设备,一个或多个网络设备进行通信。存储器602还可以存储用户接口程序,该用户接口程序可以通过图形化的操作界面将应用程序的内容形象逼真的显示出来,并通过菜单、对话框以及按键等输入控件接收用户对应用程序的控制操作。
可理解的,存储器602可用于存储实现目标点的位置的确定方法的实现代码。
存储器602还可以存储一个或多个应用程序。如图6所示,这些应用程序可包括:社交应用程序(例如Facebook),图像管理应用程序(例如相册),地图类应用程序(例如谷歌地图),浏览器(例如Safari,Google Chrome)等等。
外围系统603主要用于实现设备600和用户/外部环境之间的交互功能,主要包括设备600的输入输出装置。具体实现中,外围系统603可包括:显示屏控制器607、摄像头控制器608以及音频控制器609。其中,各个控制器可与各自对应的外围设备(如显示屏610、摄像头611以及音频电路612)耦合。在一些实施例中,显示屏可以配置有自电容式的悬浮触控面板的显示屏,也可以是配置有红外线式的悬浮触控面板的显示屏。在一些实施例中,摄像头611可以是3D摄像头。需要说明的,外围系统603还可以包括其他I/O外设。
综上所述,设备60通过处理器605获取调度请求,调度请求用于请求调度存储于数据库中工作流中的任务;工作流包括多个任务。进而,响应于获取到的调度请求,设备60通过处理器605从数据库中调度出工作流中的第一任务,且将第一任务存入消息队列。然后,设备60通过处理器605判断第一任务是否为空闲的任务,如果第一任务是空闲的任务,则设备60通过处理器605执行第一任务,并将第一任务的执行状态写入到数据库中。最后,设备60通过处理器605从数据库中查询第一任务的执行状态,如果第一任务执行成功,则设备60通过处理器605从数据库中调度出第二任务;第二任务所述工作流中第一任务的下游任务。采用本申请实施例,通过组成一个包括第一任务、第二任务的工作流,第一任务成功执行完成之后,自动执行第一任务的下游任务(第二任务),一方面,可自动且迅速构建不同的机器学习步骤以完成学习框架的搭建,降低了机器学习使用门槛,提高了算法工程师的工作效率;另一方面,在第一任务成功执行完成之后,自动执行第一任务的下游任务,因而,执行工作流中任务的CPU资源几乎不会闲置,进而提高了机器学习系统的资源利用率。
应当理解,设备60仅为本申请实施例提供的一个例子,并且,设备60可具有比示出的部件更多或更少的部件,可以组合两个或更多个部件,或者可具有部件的不同配置实现。
可理解的,关于图6的设备60包括的功能模块的具体实现方式,可参考图3的方法实施例,此处不再赘述。
本申请提供一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行时实现。
该计算机可读存储介质可以是前述任一实施例所述的设备的内部存储单元,例如设备的硬盘或内存。该计算机可读存储介质也可以是设备的外部存储设备,例如设备上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步的,该计算机可读存储介质还可以既包括设备的内部存储单元也包括外部存储设备。该计算机可读存储介质用于存储计算机程序以及设备所需的其他程序和数据。该计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。
本申请还提供一种计算机程序产品,该计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,该计算机程序可操作来使计算机执行如上述方法实施例中记载的任一方法的部分或全部步骤。该计算机程序产品可以为一个软件安装包,该计算机包括电子装置。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的设备和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。例如,以描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
上述描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、设备或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本申请实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种任务调度方法,其特征在于,包括:
获取调度请求,所述调度请求用于请求调度存储于数据库中工作流中的任务,其中,所述工作流包括多个任务;
响应于获取到的所述调度请求,从所述数据库中调度出所述工作流中的第一任务,且将所述第一任务存入消息队列;
判断所述第一任务是否为空闲的任务,如果所述第一任务是空闲的任务,则执行所述第一任务,并将所述第一任务的执行状态写入到所述数据库中;
从所述数据库中查询所述第一任务的执行状态,如果所述第一任务执行成功,则从所述数据库中调度出第二任务;所述第二任务为所述工作流中所述第一任务的下游任务。
2.根据权利要求1所述的方法,其特征在于,所述从所述数据库中查询所述第一任务的执行状态之后,还包括:
如果所述第一任务执行失败,则清空所述消息队列中的任务。
3.根据权利要求1所述的方法,其特征在于,所述如果所述第一任务执行成功,则从所述数据库中调度出第二任务,包括:
如果所述第一任务执行成功,则判断包含所述第一任务的工作流是否运行成功;如果运行成功,则判断所述第一任务是否存在下游任务,如果存在,则从所述数据库中调度出第二任务;所述第二任务为所述工作流中所述第一任务的下游任务。
4.根据权利要求1所述的方法,其特征在于,所述获取调度请求,包括:
接收调度请求或查询调度请求。
5.根据权利要求1所述的方法,其特征在于,所述从所述数据库中调度出所述工作流中的第一任务之前,还包括:
对通过由互联网端拖拉组件形成的工作流进行解析;
将解析后的所述由互联网端拖拉组件形成的工作流存储于所述数据库。
6.根据权利要求1所述的方法,其特征在于,所述从所述数据库中调度出所述工作流中的第一任务之前,还包括:
对基于py文件定义的工作流进行解析;
将解析后的所述基于py文件定义的工作流存储于所述数据库。
7.根据权利要求1所述的方法,其特征在于,所述从所述数据库中调度出所述工作流中的第一任务,且将所述第一任务存入消息队列,包括:
从所述数据库中调度出一个或多个入度为零的第一任务,且将所述一个或多个入度为零的第一任务存入消息队列。
8.一种任务调度装置,其特征在于,包括:
获取单元,用于获取调度请求,所述调度请求用于请求调度存储于数据库中工作流中的任务,其中,所述工作流包括多个任务;
调度单元,用于响应于获取到的所述调度请求,从所述数据库中调度出所述工作流中的第一任务,且将所述第一任务存入消息队列;
判断单元,用于判断所述第一任务是否为空闲的任务,如果所述第一任务是空闲的任务,则执行所述第一任务,并将所述第一任务的执行状态写入到所述数据库中;
查询单元,用于从所述数据库中查询所述第一任务的执行状态;
所述调度单元,还用于如果所述第一任务执行成功,则从所述数据库中调度出第二任务;所述第二任务为所述工作流中所述第一任务的下游任务。
9.一种任务调度设备,其特征在于,包括:输入设备、输出设备、存储器以及耦合于所述存储器的处理器,所述输入设备、输出设备、处理器和存储器相互连接,其中,所述存储器用于存储应用程序代码,所述处理器被配置用于调用所述程序代码,执行如权利要求1-7任一项所述的任务调度方法。
10.一种计算机可读存储介质,其特征在于,所述计算机存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行如权利要求1-7任一项所述的任务调度方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811552105.2A CN109766196A (zh) | 2018-12-18 | 2018-12-18 | 一种任务调度方法、装置及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811552105.2A CN109766196A (zh) | 2018-12-18 | 2018-12-18 | 一种任务调度方法、装置及设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109766196A true CN109766196A (zh) | 2019-05-17 |
Family
ID=66451301
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811552105.2A Pending CN109766196A (zh) | 2018-12-18 | 2018-12-18 | 一种任务调度方法、装置及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109766196A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111274013A (zh) * | 2020-01-16 | 2020-06-12 | 北京思特奇信息技术股份有限公司 | 容器内基于内存数据库的定时任务调度的优化方法及系统 |
CN111506406A (zh) * | 2020-04-10 | 2020-08-07 | 深圳前海微众银行股份有限公司 | 工作流调度方法、装置、系统与计算机可读存储介质 |
CN112367205A (zh) * | 2020-11-12 | 2021-02-12 | 深圳前海微众银行股份有限公司 | 一种对http调度请求的处理方法及调度系统 |
CN112596885A (zh) * | 2020-12-25 | 2021-04-02 | 网易(杭州)网络有限公司 | 任务调度方法、装置、设备及存储介质 |
CN113051175A (zh) * | 2021-04-19 | 2021-06-29 | 杭州至千哩科技有限公司 | 一种可扩展的通用工作流框架系统 |
CN113094164A (zh) * | 2021-04-27 | 2021-07-09 | 上海商汤科技开发有限公司 | 一种任务处理装置、方法、计算机设备及存储介质 |
CN117634866A (zh) * | 2024-01-25 | 2024-03-01 | 中国人民解放军国防科技大学 | 工作流调度引擎节点间数据处理方法、装置、设备及介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103455886A (zh) * | 2013-09-03 | 2013-12-18 | 西安电子科技大学 | 基于工作流的诊疗决策支持系统及其方法 |
EP3171303A1 (en) * | 2015-11-19 | 2017-05-24 | Alcatel Lucent | Method, system and computer readable medium to execute a flexible workflow |
CN106779088A (zh) * | 2016-12-06 | 2017-05-31 | 北京物思创想科技有限公司 | 执行机器学习流程的方法及系统 |
CN108510081A (zh) * | 2018-03-23 | 2018-09-07 | 北京京东尚科信息技术有限公司 | 机器学习方法和平台 |
-
2018
- 2018-12-18 CN CN201811552105.2A patent/CN109766196A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103455886A (zh) * | 2013-09-03 | 2013-12-18 | 西安电子科技大学 | 基于工作流的诊疗决策支持系统及其方法 |
EP3171303A1 (en) * | 2015-11-19 | 2017-05-24 | Alcatel Lucent | Method, system and computer readable medium to execute a flexible workflow |
CN106779088A (zh) * | 2016-12-06 | 2017-05-31 | 北京物思创想科技有限公司 | 执行机器学习流程的方法及系统 |
CN108510081A (zh) * | 2018-03-23 | 2018-09-07 | 北京京东尚科信息技术有限公司 | 机器学习方法和平台 |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111274013A (zh) * | 2020-01-16 | 2020-06-12 | 北京思特奇信息技术股份有限公司 | 容器内基于内存数据库的定时任务调度的优化方法及系统 |
CN111506406A (zh) * | 2020-04-10 | 2020-08-07 | 深圳前海微众银行股份有限公司 | 工作流调度方法、装置、系统与计算机可读存储介质 |
CN112367205A (zh) * | 2020-11-12 | 2021-02-12 | 深圳前海微众银行股份有限公司 | 一种对http调度请求的处理方法及调度系统 |
CN112367205B (zh) * | 2020-11-12 | 2023-04-18 | 深圳前海微众银行股份有限公司 | 一种对http调度请求的处理方法及调度系统 |
CN112596885A (zh) * | 2020-12-25 | 2021-04-02 | 网易(杭州)网络有限公司 | 任务调度方法、装置、设备及存储介质 |
CN113051175A (zh) * | 2021-04-19 | 2021-06-29 | 杭州至千哩科技有限公司 | 一种可扩展的通用工作流框架系统 |
CN113094164A (zh) * | 2021-04-27 | 2021-07-09 | 上海商汤科技开发有限公司 | 一种任务处理装置、方法、计算机设备及存储介质 |
CN117634866A (zh) * | 2024-01-25 | 2024-03-01 | 中国人民解放军国防科技大学 | 工作流调度引擎节点间数据处理方法、装置、设备及介质 |
CN117634866B (zh) * | 2024-01-25 | 2024-04-19 | 中国人民解放军国防科技大学 | 工作流调度引擎节点间数据处理方法、装置、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109766196A (zh) | 一种任务调度方法、装置及设备 | |
CN110610240B (zh) | 基于人工智能的虚拟自动化辅助 | |
CN113011828B (zh) | 更新或重新训练并更新动态人工智能/机器学习模型 | |
CN104246659B (zh) | 可实例化的手势对象 | |
JP2022551833A (ja) | ロボティックプロセスオートメーションのための人工知能ベースのプロセス識別、抽出、および自動化 | |
CN112241581A (zh) | 重新训练机器人视觉模型以用于机器人过程自动化 | |
CN104813318B (zh) | 用于翻译的基于上下文对消息分组的技术 | |
US20220334868A1 (en) | Synchronous business process execution engine for action orchestration in a single execution transaction context | |
KR20220079834A (ko) | 로봇 프로세스 자동화를 위한 인공 지능 계층 기반 프로세스 추출 | |
US11126405B1 (en) | Utilizing augmented reality and artificial intelligence to automatically generate code for a robot | |
WO2013106355A1 (en) | Declarative dynamic control flow in continuation-based runtime | |
Skripcak et al. | Toward nonconventional human–machine interfaces for supervisory plant process monitoring | |
CN111782181A (zh) | 代码生成方法、装置、电子设备以及存储介质 | |
JP2023545253A (ja) | コンピュータビジョンを使ったアプリケーション、画面、およびユーザーインターフェース要素を認識するための人工知能/機械学習モデルの訓練 | |
CN116070712A (zh) | 使用针对机器人流程自动化的长运行工作流的构建和管理人工智能流 | |
US9460304B1 (en) | Data services generation | |
WO2022271345A1 (en) | Triggering dynamic robotic process automation | |
CN113626798A (zh) | 一种应用系统管理平台、方法、设备及介质 | |
US8212818B2 (en) | Windowless shape drawing | |
CN108885556A (zh) | 控制数字输入 | |
CN111767059A (zh) | 深度学习模型的部署方法、装置、电子设备和存储介质 | |
Design et al. | MIT Architecture | |
US11797770B2 (en) | Self-improving document classification and splitting for document processing in robotic process automation | |
CN105531661A (zh) | 全屏内容查看界面进入 | |
US9007398B1 (en) | Rotated rectangle drawing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190517 |