CN113902387A - 一种工作流的处理方法、装置及电子设备 - Google Patents
一种工作流的处理方法、装置及电子设备 Download PDFInfo
- Publication number
- CN113902387A CN113902387A CN202010641414.8A CN202010641414A CN113902387A CN 113902387 A CN113902387 A CN 113902387A CN 202010641414 A CN202010641414 A CN 202010641414A CN 113902387 A CN113902387 A CN 113902387A
- Authority
- CN
- China
- Prior art keywords
- workflow
- target
- operator
- template
- running
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/10—Office automation; Time management
- G06Q10/103—Workflow collaboration or project management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/36—Software reuse
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/06—Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
- G06Q10/063—Operations research, analysis or management
- G06Q10/0631—Resource planning, allocation, distributing or scheduling for enterprises or organisations
- G06Q10/06316—Sequencing of tasks or work
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/06—Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
- G06Q10/063—Operations research, analysis or management
- G06Q10/0633—Workflow analysis
Abstract
本公开提供了一种工作流的处理方法、装置及电子设备,该方法包括:响应于创建工作流的请求,获取预设的工作流模板和至少一个选定算子;获取所述至少一个选定算子的运行顺序;对工作流模板、选定算子和运行顺序进行封装,得到目标工作流。
Description
技术领域
本公开涉及数据处理技术领域,更具体地,涉及一种工作流的处理方法、一种工作流的处理装置、一种电子设备、及一种计算机可读存储介质。
背景技术
近年来迅速崛起的人工智能研究正在一步步颠覆我们的传统认知,给我们的日常生活和工作带来了极大的改变。例如在图像识别、语音识别、自然语言处理等人工智能领域都有了长足的发展,也逐步开始商业化的进程造福全社会。
在现有技术中,通常是直接使用kubeflow工具集进行模型训练的集成。但是,直接基于kubeflow的开发还不够成熟,组件间的依赖、工作流的复用,使得工作流的开发在灵活度和可扩展性上都存在较多问题,影响算法工程师的工作进度。
发明内容
本公开的一个目的是提供一种管理工作流的新的技术方案。
根据本公开的第一方面,提供了一种工作流的处理方法,包括:
响应于创建工作流的请求,获取预设的工作流模板和至少一个选定算子;
获取所述至少一个选定算子的运行顺序;
对所述工作流模板、所述选定算子和所述运行顺序进行封装,得到目标工作流。
可选的,还包括:
响应于对目标算子的修改操作,获取修改后的目标算子;
对所述工作流模板、所述修改后的目标算子、其他选定算子和所述运行顺序重新进行封装,得到新的工作流;
其中,所述目标算子为任意一个所述选定算子;所述其他选定算子为除所述目标算子以外的选定算子。
可选的,还包括:
响应于指定任一所述选定算子所依赖的目标功能模块的请求,将所述目标功能模块封装至所述目标工作流中。
可选的,还包括:
响应于运行所述目标工作流的请求,运行所述目标工作流。
可选的,所述运行所述目标工作流包括:
基于所述运行顺序,运行所述至少一个选定算子;
并在运行所述选定算子的过程中,运行所述工作流模板。
可选的,还包括:
在运行所述目标工作流的过程中,响应于停止运行所述目标工作流的请求,停止运行所述目标工作流。
可选的,还包括:
确定所述目标工作流所对应的存储目录,作为目标存储目录;
确定运行所述目标工作流的过程中所产生的目标数据的数据类型;
根据所述数据类型,将所述目标数据挂载至所述目标存储目录下的对应存储地址中。
可选的,还包括:
响应于清理所述目标工作流的请求,清理运行所述目标工作流的过程中所产生的数据。
可选的,还包括:
按照预设的规则提供用于输入工作流名称的输入框;
通过所述输入框获取所述目标工作流的名称;
根据所述目标工作流的名称,创建所述目标工作流所对应的所述目标存储目录。
可选的,所述工作流模板包括以下至少一项:
用于断点续跑的工作流模板;
用于日志重定向的工作流模板;
用于解析运行顺序的工作流模板;
用于管理用户权限的工作流模板;
用于自动挂载数据卷的工作流模板;
用于安装指定功能模块的工作流模板;
用于执行分布式任务的工作流模板;
用于执行单机任务的工作流模板。
根据本公开的第二方面,提供了一种工作流的处理装置,包括:
第一获取模块,用于响应于创建工作流的请求,获取预设的工作流模板和至少一个选定算子;
第二获取模块,用于获取所述至少一个选定算子的运行顺序;
工作流创建模块,用于对所述工作流模板、所述选定算子和所述运行顺序进行封装,得到目标工作流。
根据本公开的第三方面,提供了一种电子设备,包括:
处理器和存储器,所述存储器用于存储指令,所述指令用于控制所述处理器执行根据本公开第一方面所述的方法。
根据本公开的第四方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序在被处理器执行时实现如本公开第一方面所述的方法。
在本公开的实施例中,通过将工作流模板、选定算子和选定算子的运行顺序进行封装,创建得到目标工作流。用户在选取多个选定算子创建目标工作流时,可以通过定义选定算子的运行顺序,而无需对每个选定算子进行二次开发,就可以创建得到目标工作流。这样,可以使得选定算子之间完全独立,用户可以专注于对所需的选定算子进行开发,而无需对其他选定算子进行改动。而且,通过将能够实现常用功能的工作流模板进行封装至目标工作流中,实现工作流模板的复用,可以避免用户对相应的代码进行重复编辑,减少用户的工作量,提升用户体验。
通过以下参照附图对本公开的示例性实施例的详细描述,本公开的其它特征及其优点将会变得清楚。
附图说明
被结合在说明书中并构成说明书的一部分的附图示出了本公开的实施例,并且连同其说明一起用于解释本公开的原理。
图1a是根据本公开第一个实施例的电子设备的硬件结构示意图。
图1b是根据本公开第二个实施例的电子设备的硬件结构示意图。
图2示出了本公开的一个实施例的应用场景示意图。
图3示出了本公开实施例的工作流的处理方法的流程图。
图4示出了本公开实施例的运行顺序的一个例子的示意图。
图5示出了本公开实施例的运行顺序的另一个例子的示意图。
图6示出了本公开实施例的工作流的处理装置的原理框图。
图7示出了本公开第三个实施例的电子设备的原理框图。
具体实施方式
现在将参照附图来详细描述本公开的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本公开的范围。
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本公开及其应用或使用的任何限制。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。
在这里示出和讨论的所有例子中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它例子可以具有不同的值。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
<硬件配置>
图1a和图1b是可用于实现本公开任意实施例的方法的电子设备1000的硬件配置的框图。
在一个实施例中,如图1a所示,电子设备1000可以是服务器1100。
服务器1100提供处理、数据库、通讯设施的计算机。服务器1100可以是整体式服务器或是跨多计算机或计算机数据中心的分散式服务器。服务器可以是各种类型的,例如但不限于,网络服务器,新闻服务器,邮件服务器,消息服务器,广告服务器,文件服务器,应用服务器,交互服务器,数据库服务器,或代理服务器。在一些实施例中,每个服务器可以包括硬件,软件,或用于执行服务器所支持或实现的合适功能的内嵌逻辑组件或两个或多个此类组件的组合。例如,服务器例如刀片服务器、云端服务器等,或者可以是由多台服务器组成的服务器群组,可以包括上述类型的服务器中的一种或多种等等。
本实施例中,服务器1100可以如图1a所示,包括处理器1110、存储器1120、接口装置1130、通信装置1140、显示装置1150、输入装置1160。
在该实施例中,服务器1100还可以包括扬声器、麦克风等等,在此不做限定。
处理器1110可以是专用的服务器处理器,也可以是满足性能要求的台式机处理器、移动版处理器等,在此不做限定。存储器1120例如包括ROM(只读存储器)、RAM(随机存取存储器)、诸如硬盘的非易失性存储器等。接口装置1130例如包括各种总线接口,例如串行总线接口(包括USB接口)、并行总线接口等。通信装置1140例如能够进行有线或无线通信。显示装置1150例如是液晶显示屏、LED显示屏触摸显示屏等。输入装置1160例如可以包括触摸屏、键盘等。
在该实施例中,服务器1100的存储器1120用于存储指令,该指令用于控制处理器1110进行操作以至少执行根据本公开任意实施例的方法。技术人员可以根据本公开所公开方案设计指令。指令如何控制处理器进行操作,这是本领域公知,故在此不再详细描述。
尽管在图1a中示出了服务器1100的多个装置,但是,本公开可以仅涉及其中的部分装置,例如,服务器1100只涉及存储器1120和处理器1110。
在一个实施例中,电子设备1000可以是操作人员使用的PC机、笔记本电脑等终端设备1200,在此不做限定。
本实施例中,参照图1b所示,终端设备1200可以包括处理器1210、存储器1220、接口装置1230、通信装置1240、显示装置1250、输入装置1260、扬声器1270、麦克风1280等等。
处理器1210可以是移动版处理器。存储器1220例如包括ROM(只读存储器)、RAM(随机存取存储器)、诸如硬盘的非易失性存储器等。接口装置1230例如包括USB接口、耳机接口等。通信装置1240例如能够进行有线或无线通信,通信装置1240可以包括短距离通信装置,例如是基于Hilink协议、WiFi(IEEE 802.11协议)、Mesh、蓝牙、ZigBee、Thread、Z-Wave、NFC、UWB、LiFi等短距离无线通信协议进行短距离无线通信的任意装置,通信装置1240也可以包括远程通信装置,例如是进行WLAN、GPRS、2G/3G/4G/5G远程通信的任意装置。显示装置1250例如是液晶显示屏、触摸显示屏等。输入装置1260例如可以包括触摸屏、键盘等。用户可以通过扬声器1270和麦克风1280输入/输出语音信息。
在该实施例中,终端设备1200的存储器1220用于存储指令,该指令用于控制处理器1210进行操作以至少执行根据本公开任意实施例的方法。技术人员可以根据本公开所公开方案设计指令。指令如何控制处理器进行操作,这是本领域公知,故在此不再详细描述。
尽管在图1b中示出了终端设备1200的多个装置,但是,本公开可以仅涉及其中的部分装置,例如,终端设备1200只涉及存储器1220和处理器1210和显示装置1250。
在本公开的实施例中,可以提供一种工作流的处理系统2000,如图2所示,该工作流的处理系统2000可以包括计算层2100,存储层2200,接口层2300,算子层2400和工作流层2500。
计算层2100可以用于灵活适配多种不同类型的计算资源,包括容器化的GPU资源,CPU资源以及一些第三方的计算资源。具体的,计算层2100可以是基于kubernetes的资源调度管理来实现的。存储层2200可以实现多种存储资源(NAS,OSS,本地存储资源等)的利用,利用容器驱动适配不同类型的存储卷,通过卷挂载的方式集成到容器内部使用。接口层2300可以用于与用户进行交互,工作流管理的接口在本层进行开发维护,便于独立管理和升级。工作流层2500和算子层2400,可以基于接口层2300的接口开发丰富类型的算子和工作流,实现多样性的算法定制需求。
在本公开的一个实施例中,算子层2400可以提供算子,工作流层2500可以提供工作流模板。用户可以通过接口层2300,从算子层2400所提供的算子中选取创建工作流所需的选定算子,并定义选定算子的运行顺序。工作流的处理系统2000将选定算子、运行顺序和工作流层2500所提供的工作流模板进行封装,得到目标工作流。
在本公开的实施例中,通过将工作流模板、选定算子和选定算子之间的运行顺序进行封装,创建得到目标工作流。用户在选取多个选定算子创建目标工作流时,可以通过定义选定算子的运行顺序,而无需对每个选定算子进行二次开发,就可以创建得到目标工作流。这样,可以使得选定算子之间完全独立,用户可以专注于对所需的选定算子进行开发,而无需对其他选定算子进行改动。而且,通过将能够实现常用功能的工作流模板进行封装至目标工作流中,实现工作流模板的复用,可以避免用户对相应的代码进行重复编辑,减少用户的工作量,提升用户体验。
<方法实施例>
在本实施例中,提供一种工作流的处理方法。该方法可以是由电子设备实施。该电子设备可以是如图1a所示的服务器1100,或者是如图1b所示终端设备1200。
根据图3所示,本实施例的工作流的处理方法可以包括如下步骤S3100~S3300:
步骤S3100,响应于创建工作流的请求,获取预设的工作流模板和选定的至少一个算子。
在本实施例中,该创建工作流的请求可以是由用户触发的。电子设备可以是提供用于与用户交互的接口,用户可以是通过该接口输入创建工作流的命令,触发创建工作流的请求。
例如,用户可以是输入“expcmd create exp”的命令,触发创建工作流的请求。
再例如,电子设备可以提供用于触发创建工作流的请求的按钮,用户可以通过点击该按钮,触发创建工作流的请求。
在本公开的一个实施例中,电子设备响应于创建工作流的请求,可以向用户提供多个算子,供用户选择,并获取用户所选择的至少一个选定算子。本实施例中的选定算子,可以是算子本身,也可以是对应算子的arena命令。
在本公开的实施例中,通过本步骤所获取的选定算子,可以是由本实施例的电子设备中预先存储的算子,也可以是用户根据应用场景或具体需求来编辑得到的算子。
在本公开的一个实施例中,工作流模板可以是预先由电子设备提供的,也可以是由用户根据应用场景或具体需求定义的。
在本说明书的一个实施例中,电子设备响应于创建工作流的请求,可以是将预先向用户提供所有可以选择的工作流模板,由用户根据应用场景或具体需求进行选择,并获取用户选择的至少一个工作流模板;也可以是获取电子设备中预先存储的所有工作流模板。
在本公开的实施例中,工作流模板可以为用于执行相应的功能的基础工作流。
本实施例中所获取的工作流模板可以包括以下至少一项:
用于断点续跑的工作流模板;
用于日志重定向的工作流模板;
用于解析运行顺序的工作流模板;
用于管理用户权限的工作流模板;
用于自动挂载数据卷的工作流模板;
用于安装指定功能模块的工作流模板;
用于执行分布式任务的工作流模板;
用于执行单机任务的工作流模板。
在本公开的一个实施例中,工作流模板可以是待创建的工作流所需继承的基本工作流,工作流模板的定义可以为:
classBasePipeline(object):
def_init(self,
expt_manager:ExptManager,
prefix:str,
dep_ops:List=[],
configs:dict={},
params:dict={},
default_params:dict={},
required_params:dict={},
allow_new_key=True):
def_already_done(self):
def_save_results(self):
def_check_resource(self,gpus):
def_add_op(self,
name:str,
command:str,
dep_ops:List=None,
params:dict=None,
image:str=“xxx/alitranx_kubeflow/dev:0.1.6",
gpus=0,cpu=0,memory=0,env=[],
requirements=None,
configs:dict={},
tensorboard=False,tensorboard_image=None,
data=["nas-data:/mnt/nas"],
sync_source=None,annotations=[],
timeout_hours=240):
步骤S3200,获取至少一个选定算子的运行顺序。
例如,在通过步骤S3100所得到的选定算子包括选定算子1~3的情况下,选定算子1~3之间的运行顺序可以为:先运行选定算子1,再运行选定算子2,再运行选定算子3。
在本说明书的一个实施例中,该运行顺序可以是由用户根据应用场景或具体需求所定义的。
在一个例子中,可以是根据用户选取选定算子的顺序,得到选定算子的运行顺序。
在本实施例中,这些选定算子的运行顺序比较单一,即每一选定算子的输出至多依赖于一个其他选定算子的输入。
例如,通过步骤S3100所获取的选定算子包括选定算子1~6,选定算子2的输入依赖于选定算子1的输出,选定算子3的输入依赖于选定算子2的输出,选定算子4的输入依赖于选定算子3的输出,选定算子5的输入依赖于选定算子4的输出,选定算子6的输入依赖于选定算子5的输出。那么,用户可以依次选择选定算子1、2、3、4、5、6,其中,当前所选取的选定算子的输入依赖于前一选定算子的输出。最终得到的运行顺序可以是如图4所示。
在另一个例子中,还可以是由用户指定每一选定算子的输入所依赖的其他选定算子的输出,得到选定算子的运行顺序。
例如,通过步骤S3100所获取的选定算子包括选定算子1~6,用户可以指定选定算子2的输入依赖于选定算子1的输出,选定算子3的输入依赖于选定算子2的输出,选定算子4的输入依赖于选定算子2的输出,选定算子5的输入依赖于选定算子3和选定算子4的输出,选定算子6的输入依赖于选定算子5的输出。对应的,得到的运行顺序可以是如图5所示。
步骤S3300,对工作流模板、选定算子和运行顺序进行封装,得到目标工作流。
本公开的实施例,通过将工作流模板、选定算子和选定算子的运行顺序进行封装,创建得到目标工作流。用户在选取多个选定算子创建目标工作流时,可以通过定义选定算子的运行顺序,而无需对每个选定算子进行二次开发,就可以创建得到目标工作流。这样,可以使得选定算子之间完全独立,用户可以专注于对所需的选定算子进行开发,而无需对其他选定算子进行改动。而且,通过将能够实现常用功能的工作流模板进行封装至目标工作流中,实现工作流模板的复用,可以避免用户对相应的代码进行重复编辑,减少用户的工作量,提升用户体验。
在本实施例中,用户可以是在创建目标工作流的情况下,为目标工作流命名。
具体的,电子设备可以是按照预设的规则提供用于输入工作流名称的输入框;通过该输入框获取目标工作流的名称。
例如,预设的规则可以是:工作流名称包含三个字段,分别为用户唯一标识USER_ID,用户组标识EXP_GROUP_ID,关于工作流的简单文本描述EXP_SHORT_DESC。
在本实施例中,电子设备可以是提供三个输入框,每个输入框通过对应的字段进行标示,以引导用户按照预设的规则为目标工作流命名。目标工作流的名称experiment_name可以为:${USER_ID}-${EXP_GROUP_ID}-${EXP_SHORT_DESC}。
在本公开的一个实施例中,在创建得到目标工作流的情况下,该方法还可以包括:
根据目标工作流的名称,创建目标工作流对应的存储目录。
具体的,可以是先创建以目标工作流的名称命名的文件夹,再在以目标工作流的名称命名的文件夹下,创建目标工作流对应的存储目录。
例如,目标工作流对应的存储目录可以是如下所示:
├──intermediate中间文件目录
│└──scm-test
│└──split_word
├──meta元数据目录
│├──run_status
│└──scm-test
│└──split_word-mkdir
│├──log
│├──run.sh
│└──done
└──output输出结果目录
└──scm-test
└──result
在本公开的一个实施例中,预先创建的目标工作流对应的存储目录,可以包括中间文件目录,输出结果目录和元数据目录。其中,中间文件目录中可以用于存储运行目标工作流所产生的中间文件;输出结果目录中可以用于存储运行目标工作流所产生的输出结果;元数据目录中可以用于存储目标工作流的元数据。
在本公开的一个实施例中,该方法还可以包括:
确定目标工作流所对应的存储目录,作为目标存储目录;确定运行目标工作流的过程中所产生的目标数据的数据类型;根据该数据类型,将目标数据挂载至目标存储目录下的对应存储地址中。
在本实施例中,目标数据的数据类型可以是输出结果或中间文件。在目标数据为中间文件的情况下,可以是将目标数据挂载至目标存储目录的中间文件目录下;在目标数据为输出结果的情况下,可以是将目标数据挂载至目标存储目录的输出结果目录下。
在本公开的一个实施例中,通过挂载在开发运行环境中的NAS(Network AttachedStorage,网络附属存储)进行数据存储。
在本实施例的基础上,还可以对NAS的存储目录进行规范定义,以便于用户检索。
例如,可以通过/mnt/nas/expts目录,来存储运行工作流所产生的数据;通过/mnt/nas/users目录,来存储用户个人的数据;通过/mnt/nas/public目录,来存储公共的代码库、工具等数据。
对应的,目标工作流对应的存储目录可以是位于/mnt/nas/expts目录之下。
在本公开的一个实施例中,该方法还可以包括:
响应于对目标算子的修改操作,获取修改后的目标算子;对工作流模板、修改后的目标算子、其他选定算子和运行顺序重新进行封装,得到新的工作流。
其中,目标算子为任意一个选定算子,其他选定算子为除目标算子以外的选定算子。
在本实施例中,由于每一选定算子具有独立性,与其他选定算子之间的关联通过运行顺序体现,因此,在目标算子需要修改的情况下,可以仅对目标算子进行修改,再将工作流模板、修改后的目标算子、其他选定算子和运行顺序重新进行封装,就可以得到新的工作流,而无需对其他选定算子进行修改。这样,可以减少用户修改工作流的工作量,提升用户体验。
在本说明书的一个实施例中,该方法还可以包括:
响应于指定任一选定算子所依赖的目标功能模块的请求,将目标功能模块封装至目标工作流中。
具体的,电子设备可以预先提供多个功能模块,用户可以根据应用场景或具体需求,为任一选定算子指定其所依赖的功能模块,作为目标功能模块。
该目标功能模块可以是对应选定算子的运行环境的安装包,例如可以是tensorflow功能模块或者pytorch功能模块。该目标功能模块还可以是运行对应算子所需预先安装的功能包。
本实施例中通过将选定算子所依赖的目标功能模块也封装至目标工作流中,可以便于后续运行目标工作流时,运行对应的选定算子。
这样,本实施例的方法在面向AI的设计时,能够对接任意的AI框架,如tensorflow、pytorch等,方便进行分布式训练。
在本公开的一个实施例中,该方法还可以包括:
响应于运行目标工作流的请求,运行目标工作流。
在本实施例中,该运行目标工作流的请求可以是由用户触发的。电子设备可以是提供用于与用户交互的接口,用户可以是通过该接口输入运行目标工作流的命令,触发运行目标工作流的请求。
例如,用户可以是输入“expcmd run XX”的命令,触发运行目标工作流的请求,其中,XX可以是目标工作流的名称。
在本公开的一个实施例中,运行目标工作流可以包括:
基于运行顺序,运行至少一个选定算子;并在运行选定算子的过程中,运行工作流模板。
例如,依赖关系包括选定算子2的输入依赖于选定算子1的输出,选定算子3的输入依赖于选定算子2的输出,选定算子4的输入依赖于选定算子2的输出,选定算子5的输入依赖于选定算子3和选定算子4的输出,选定算子6的输入依赖于选定算子5的输出,那么,可以是依次运行选定的算子1、2、3、4、5、6。
再例如,运行顺序包括选定算子2的输入依赖于选定算子1的输出,选定算子3的输入依赖于选定算子2的输出,选定算子4的输入依赖于选定算子3的输出,选定算子5的输入依赖于选定算子4的输出,选定算子6的输入依赖于选定算子5的输出,那么,可以是先运行选定算子1,在选定算子1运行结束后,将输出结果提供至选定算子2,并运行选定算子2。在选定算子2运行结束后,将输出结果分别提供至选定算子3和4,并分别运行选定算子3和4(其中,选定算子3和4可以是同时运行,也可以按照对应的运行顺序分别运行)。在选定算子3运行结束后,将输出结果提供至选定算子5;在选定算子4运行结束后,也将输出结果提供至选定算子5。选定算子5在得到选定算子3和4的输出结果的情况下运行,并在运行结束后,将运行结果提供至选定算子6,并运行选定算子6。在选定算子6运行结束的情况下,目标工作流运行结束,并将目标算子6的输出结果,作为目标工作流的输出结果。
在运行选定算子1~6的过程中,同时运行目标工作流中所封装的工作流模板。
例如,在工作流模板包括用于日志重定向的工作流模板的情况下,在运行选定算子1~6的过程中,同时生成选定算子1~6的运行日志。
再例如,在工作流模板包括用于断点续跑的工作流模板的情况下,在运行选定算子1~6的过程中,可以支持任一选定算子的断点续跑。
再例如,在工作流模板包括用于管理用户权限的工作流模板的情况下,在运行选定算子1~6的过程中,管理用户的权限。
再例如,在工作流模板包括用于自动挂载数据卷的工作流模板的情况下,在运行选定算子1~6的过程中,自动将运行每一算子所产生的数据挂载至对应目录下。
再例如,在工作流模板包括用于安装指定功能模块的工作流模板的情况下,在运行选定算子1~6之前,安装指定功能模块,以保证选定算子1~6的正常运行。
再例如,在工作流模板包括用于执行分布式任务的工作流模板的情况下,通过分布式系统运行选定算子1~6。
再例如,在工作流模板包括用于执行单机任务的工作流模板的情况下,通过单机运行选定算子1~6。
在本公开的一个实施例中,该方法还可以包括:
在运行目标工作流的过程中,响应于停止运行目标工作流的请求,停止运行目标工作流。
在本实施例中,该停止运行目标工作流的请求可以是由用户触发的。电子设备可以是提供用于与用户交互的接口,用户可以是通过该接口输入停止运行目标工作流的命令,触发停止运行目标工作流的请求。
例如,用户可以是输入“expcmdkill XX”的命令,触发停止运行目标工作流的请求,其中,XX可以是目标工作流的名称。
在本公开的一个实施例中,该方法还可以包括:
响应于清理目标工作流的请求,清理运行目标工作流的过程中所产生的数据。
在本实施例中,该清理目标工作流的请求可以是由用户触发的。电子设备可以是提供用于与用户交互的接口,用户可以是通过该接口输入清理目标工作流的命令,触发清理目标工作流的请求。
例如,用户可以是输入“expcmd clean XX”的命令,触发清理目标工作流的请求,其中,XX可以是目标工作流的名称。
在本公开的一个实施例中,本实施例的方法可以是基于kubernetes的运行框架来执行的。kubernetes是一套开源的管理docker容器的应用解决方案。
基于kubernetes的资源调度管理,该方法还可以包括:为目标工作流提供相应的计算资源。该计算资源可以包括容器化的GPU资源、CPU资源以及一些第三方的计算资源。这样,所有工作流都可以在容器中运行,能够实现自由的定制环境,高效地分配GPU、CPU和内存等资源。而且,还可以通过分布式存储,实现工作流的可移植和可扩展等特性。
在本公开的一个实施例中,该方法还可以包括:提供开发运行环境和调试测试环境。
开发运行环境可以给用户提供创建工作流和运行工作流的容器环境。由于本实施例的方法是基于kubernetes的运行框架,开发环境容器也在kubernetes的管理范围,内部预装了一些常用工具(如odpscmd,osscmd,emacs,python等)和配置,挂载了系统默认的NAS卷。
调试测试环境可以是用户自定义镜像的调试容器环境,以便于对特定场景进行调试。
在本公开的一个实施例中,该方法还可以包括:
提供第一接口,以供用户通过该第一接口输入自身需求。具体的,本实施例的电子设备可以根据用户通过该第一接口所述输入的需求,并将其展示给开发人员,以供开发人员根据用户需求开发新的功能,或者是解决用户在创建工作流的过程中所遇到的难题。
在本公开的一个实施例中,该方法还可以包括:
提供第二接口,以供用户在得到目标工作流后,通过该第二接口输入对目标工作流的满意度评分。电子设备可以通过第二接口获取用户的满意度评分,并展示给开发人员,以对开发人员进行激励。此外,开发人员还可以根据该满意度评分对本实施例的处理方法进行适当升级修正。
<装置实施例>
在本实施例中,提供一种工作流的处理装置6000,如图6所示,包括第一获取模块6100、第二获取模块6200和工作流创建模块6300。该第一获取模块6100用于响应于创建工作流的请求,获取预设的工作流模板和至少一个选定算子;该第二获取模块6200用于获取至少一个选定算子的运行顺序;该工作流创建模块6300用于对工作流模板、选定算子和运行顺序进行封装,得到目标工作流。
在本公开的一个实施例中,该工作流的处理装置6000还可以包括:
用于响应于对目标算子的修改操作,获取修改后的目标算子的模块;
用于对工作流模板、修改后的目标算子、其他选定算子和运行顺序重新进行封装,得到新的工作流的模块;
其中,目标算子为任意一个选定算子;其他选定算子为除目标算子以外的选定算子。
在本公开的一个实施例中,该工作流的处理装置6000还可以包括:
用于响应于指定任一选定算子所依赖的目标功能模块的请求,将目标功能模块封装至目标工作流中的模块。
在本公开的一个实施例中,该工作流的处理装置6000还可以包括:
用于响应于运行目标工作流的请求,运行目标工作流的模块。
在本公开的一个实施例中,运行目标工作流包括:
基于运行顺序,运行至少一个选定算子;
并在运行选定算子的过程中,运行工作流模板。
在本公开的一个实施例中,该工作流的处理装置6000还可以包括:
用于在运行目标工作流的过程中,响应于停止运行目标工作流的请求,停止运行目标工作流的模块。
在本公开的一个实施例中,该工作流的处理装置6000还可以包括:
用于确定目标工作流所对应的存储目录,作为目标存储目录的模块;
用于确定运行目标工作流的过程中所产生的目标数据的数据类型的模块;
用于根据数据类型,将目标数据挂载至目标存储目录下的对应存储地址中的模块。
在本公开的一个实施例中,该工作流的处理装置6000还可以包括:
用于响应于清理目标工作流的请求,清理运行目标工作流的过程中所产生的数据的模块。
在本公开的一个实施例中,该工作流的处理装置6000还可以包括:
用于按照预设的规则提供用于输入工作流名称的输入框的模块;
用于通过输入框获取目标工作流的名称的模块;
用于根据目标工作流的名称,创建目标工作流所对应的目标存储目录的模块。
在本公开的一个实施例中,工作流模板可以包括以下至少一项:
用于断点续跑的工作流模板;
用于日志重定向的工作流模板;
用于解析运行顺序的工作流模板;
用于管理用户权限的工作流模板;
用于自动挂载数据卷的工作流模板;
用于安装指定功能模块的工作流模板;
用于执行分布式任务的工作流模板;
用于执行单机任务的工作流模板。
本领域技术人员应当明白,可以通过各种方式来实现工作流的处理装置6000。例如,可以通过指令配置处理器来实现工作流的处理装置6000。例如,可以将指令存储在ROM中,并且当启动设备时,将指令从ROM读取到可编程器件中来实现工作流的处理装置6000。例如,可以将工作流的处理装置6000固化到专用器件(例如ASIC)中。可以将工作流的处理装置6000分成相互独立的单元,或者可以将它们合并在一起实现。工作流的处理装置6000可以通过上述各种实现方式中的一种来实现,或者可以通过上述各种实现方式中的两种或更多种方式的组合来实现。
在本实施例中,工作流的处理装置6000可以具有多种实现形式,例如,工作流的处理装置6000可以是任何的提供工作流管理服务的软件产品或者应用程序中运行的功能模块,或者是这些软件产品或者应用程序的外设嵌入件、插件、补丁件等,还可以是这些软件产品或者应用程序本身。
本公开的实施例,通过将工作流模板、选定算子和选定算子的运行顺序进行封装,创建得到目标工作流。用户在选取多个选定算子创建目标工作流时,可以通过定义选定算子的运行顺序,而无需对每个选定算子进行二次开发,就可以创建得到目标工作流。这样,可以使得选定算子之间完全独立,用户可以专注于对所需的选定算子进行开发,而无需对其他选定算子进行改动。而且,通过将能够实现常用功能的工作流模板进行封装至目标工作流中,实现工作流模板的复用,可以避免用户对相应的代码进行重复编辑,减少用户的工作量,提升用户体验。
<电子设备>
在本实施例中,还提供一种电子设备1000。该电子设备1000可以是图1所示的服务器1100或如图2所示的终端设备1200。
如图7所示,电子设备1000还可以包括处理器1300和存储器1400,该存储器1400用于存储可执行的指令;该处理器1300用于根据指令的控制运行电子设备1000执行根据本公开任意实施例的工作流的处理方法。
例如,电子设备1000可以是能够提供工作流的管理服务的计算机集群。
本公开的实施例,通过将工作流模板、选定算子和选定算子的运行顺序进行封装,创建得到目标工作流。用户在选取多个选定算子创建目标工作流时,可以通过定义选定算子的运行顺序,而无需对每个选定算子进行二次开发,就可以创建得到目标工作流。这样,可以使得选定算子之间完全独立,用户可以专注于对所需的选定算子进行开发,而无需对其他选定算子进行改动。而且,通过将能够实现常用功能的工作流模板进行封装至目标工作流中,实现工作流模板的复用,可以避免用户对相应的代码进行重复编辑,减少用户的工作量,提升用户体验。
<计算机可读存储介质>
在本实施例中,还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序在被处理器执行时实现如本公开任意实施例的工作流的处理方法。
本公开可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本公开的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
这里参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。对于本领域技术人员来说公知的是,通过硬件方式实现、通过软件方式实现以及通过软件和硬件结合的方式实现都是等价的。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。本公开的范围由所附权利要求来限定。
Claims (13)
1.一种工作流的处理方法,包括:
响应于创建工作流的请求,获取预设的工作流模板和至少一个选定算子;
获取所述至少一个选定算子的运行顺序;
对所述工作流模板、所述选定算子和所述运行顺序进行封装,得到目标工作流。
2.根据权利要求1所述的方法,还包括:
响应于对目标算子的修改操作,获取修改后的目标算子;
对所述工作流模板、所述修改后的目标算子、其他选定算子和所述运行顺序重新进行封装,得到新的工作流;
其中,所述目标算子为任意一个所述选定算子;所述其他选定算子为除所述目标算子以外的选定算子。
3.根据权利要求1所述的方法,还包括:
响应于指定任一所述选定算子所依赖的目标功能模块的请求,将所述目标功能模块封装至所述目标工作流中。
4.根据权利要求1所述的方法,还包括:
响应于运行所述目标工作流的请求,运行所述目标工作流。
5.根据权利要求4所述的方法,所述运行所述目标工作流包括:
基于所述运行顺序,运行所述至少一个选定算子;
并在运行所述选定算子的过程中,运行所述工作流模板。
6.根据权利要求4所述的方法,还包括:
在运行所述目标工作流的过程中,响应于停止运行所述目标工作流的请求,停止运行所述目标工作流。
7.根据权利要求4所述的方法,还包括:
确定所述目标工作流所对应的存储目录,作为目标存储目录;
确定运行所述目标工作流的过程中所产生的目标数据的数据类型;
根据所述数据类型,将所述目标数据挂载至所述目标存储目录下的对应存储地址中。
8.根据权利要求7所述的方法,还包括:
响应于清理所述目标工作流的请求,清理运行所述目标工作流的过程中所产生的数据。
9.根据权利要求7所述的方法,还包括:
按照预设的规则提供用于输入工作流名称的输入框;
通过所述输入框获取所述目标工作流的名称;
根据所述目标工作流的名称,创建所述目标工作流所对应的所述目标存储目录。
10.根据权利要求1所述的方法,所述工作流模板包括以下至少一项:
用于断点续跑的工作流模板;
用于日志重定向的工作流模板;
用于解析运行顺序的工作流模板;
用于管理用户权限的工作流模板;
用于自动挂载数据卷的工作流模板;
用于安装指定功能模块的工作流模板;
用于执行分布式任务的工作流模板;
用于执行单机任务的工作流模板。
11.一种工作流的处理装置,包括:
第一获取模块,用于响应于创建工作流的请求,获取预设的工作流模板和至少一个选定算子;
第二获取模块,用于获取所述至少一个选定算子的运行顺序;
工作流创建模块,用于对所述工作流模板、所述选定算子和所述运行顺序进行封装,得到目标工作流。
12.一种电子设备,包括:
处理器和存储器,所述存储器用于存储指令,所述指令用于控制所述处理器执行根据权利要求1至10中任一项所述的方法。
13.一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序在被处理器执行时实现如权利要求1至10中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010641414.8A CN113902387A (zh) | 2020-07-06 | 2020-07-06 | 一种工作流的处理方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010641414.8A CN113902387A (zh) | 2020-07-06 | 2020-07-06 | 一种工作流的处理方法、装置及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113902387A true CN113902387A (zh) | 2022-01-07 |
Family
ID=79186577
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010641414.8A Pending CN113902387A (zh) | 2020-07-06 | 2020-07-06 | 一种工作流的处理方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113902387A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114879943A (zh) * | 2022-06-30 | 2022-08-09 | 浙江大华技术股份有限公司 | 一种算法方案生成方法、装置以及计算机可读存储介质 |
WO2023241616A1 (zh) * | 2022-06-14 | 2023-12-21 | 华为云计算技术有限公司 | 一种基于云管理平台的数据处理方法以及云管理平台 |
-
2020
- 2020-07-06 CN CN202010641414.8A patent/CN113902387A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023241616A1 (zh) * | 2022-06-14 | 2023-12-21 | 华为云计算技术有限公司 | 一种基于云管理平台的数据处理方法以及云管理平台 |
CN114879943A (zh) * | 2022-06-30 | 2022-08-09 | 浙江大华技术股份有限公司 | 一种算法方案生成方法、装置以及计算机可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11093216B2 (en) | Automatic discovery of microservices from monolithic applications | |
CN106537426B (zh) | 自动生成用于工作流程的执行序列 | |
US11762634B2 (en) | Systems and methods for seamlessly integrating multiple products by using a common visual modeler | |
US11667033B2 (en) | Systems and methods for robotic process automation | |
US20070220494A1 (en) | A Method of Rapid Software Application Development for a Wireless Mobile Device | |
US10833955B2 (en) | Dynamic delivery of software functions | |
WO2020015191A1 (zh) | 业务规则的发布管理方法、电子装置及可读存储介质 | |
CN111026723B (zh) | 大数据集群管理控制方法、装置、计算机设备及存储介质 | |
WO2024077885A1 (zh) | 容器集群的管理方法、装置、设备及非易失性可读存储介质 | |
CN113902387A (zh) | 一种工作流的处理方法、装置及电子设备 | |
US10318621B2 (en) | Collating and intelligently sequencing installation documentation | |
CN106371931B (zh) | 一种基于Web框架的高性能地学计算服务系统 | |
CN110851211A (zh) | 用于显示应用信息的方法、装置、电子设备和介质 | |
US20190073198A1 (en) | Multi-flavored software execution from a singular code base | |
CN116860266A (zh) | 应用容器化部署方法、装置、电子设备及存储介质 | |
CN116360741A (zh) | 小程序开发方法、系统、设备及存储介质 | |
EP4102361A2 (en) | Method and apparatus for managing functions of a query engine | |
WO2022037627A1 (zh) | 一种人工智能应用的集成管理方法、装置及系统 | |
US11372627B2 (en) | System and method for providing integrated development environment (IDE) for programmable software system | |
US20210271458A1 (en) | Managing an app method and system | |
CN114661274A (zh) | 用于生成智能合约的方法和装置 | |
CN113032004A (zh) | 在开发环境中管理开发作业的方法、设备和程序产品 | |
CN106663007B (zh) | 使工具运作于作业环境的方法以及应用该方法的机器 | |
CN110647405A (zh) | 系统消息处理方法、电子设备和计算机可读存储介质 | |
CN113590216B (zh) | 一种定时任务集中管理方法、装置和电子设备 |
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 |