一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

提交结构化机器学习计算任务到计算集群的方法与流程

2022-11-13 14:19:29 来源:中国专利 TAG:


1.本发明属于集群计算、大规模计算、机器学习技术领域,特别涉及一种提交结构化机器学习计算任务到计算集群的方法、装置及系统。


背景技术:

2.在计算机中,集群是使用多个计算机,如典型的个人计算机或unix工作站,多个存储设备和记忆冗余的互连线路来组成一个对用户来说单一的、高可用的系统。集群计算(clustering computing)能够被用来实现负载均衡。
3.集群计算还可以被用来进行成本低廉的并行计算,这些并行计算通常为科学计算、机器学习、数据分析或其它需要并行计算的应用服务。
4.本发明人经研究发现,在现有技术中,在采用诸如kubectl的集群管理工具时,用户的手动操作多,需要运行额外的命令去获得计算结果,监视状态,并进行人工判断;如果使用程序脚本来实现所有的动作、控制逻辑和工作流等,又需要较高的软件工程能力,工作难度高,并且会耗费额外的时间。


技术实现要素:

5.为了至少解决上述技术问题,本发明提供了一种提交结构化机器学习计算任务到计算集群的方法及装置。
6.根据本发明第一方面,提供了一种提交结构化机器学习计算任务到计算集群的方法,包括:获取用户创建的代码包;在用户端代理程序被调用时,运行代码包;将用户端代理程序与集群内组件建立连接,并进行数据通信。
7.进一步的,所述获取用户创建的代码包,包括:获取用户创建的包含项目文件以及定义文件的文件系统的目录,将包含项目文件以及定义文件的文件系统的目录作为代码包。
8.进一步的,所述定义文件用于定义代码包的详细信息和运行方式;其中,代码包的详细信息至少包括版本、名称、描述;运行方式至少包括目标和动作的定义。
9.进一步的,所述运行代码包,包括:用户端代理程序通过读取代码包的定义文件来执行用户指定的动作。
10.进一步的,所述将用户端代理程序与集群内组件建立连接,并进行数据通信,包括:将用户端代理程序与集群内组件暴露的公开接口建立连接,采用计算机网络应用层协议中的任一种进行用户端代理程序与集群内组件之间的数据通信。
11.进一步的,所述方法还包括:集群内组件在接收到来自用户端代理程序的请求时
首先检查用户是否具有运行该计算任务的权限。
12.进一步的,所述方法还包括:用户端代理程序设置有工作流机制;在运行某个目标时,用户端代理程序递归地解析所有依赖的目标,动态地构建一个有向无环图,串行或者并行地运行图中当前没有依赖或依赖已经运行完毕的目标。
13.进一步的,所述方法包括:获取用户创建的包含项目文件以及定义文件的文件系统的目录作为代码包;其中,定义文件用于定义代码包的详细信息和运行方式,代码包的详细信息至少包括版本、名称、描述;运行方式至少包括目标和动作的定义;在用户端代理程序被调用时,用户端代理程序通过读取代码包的定义文件来执行用户指定的动作;对于需要位于计算集群中的集群内组件提供必要支持的部分动作,用户端代理程序向集群内组件发送请求;在运行某个目标时,用户端代理程序递归地解析所有依赖的目标,动态地构建一个有向无环图,串行或者并行地运行图中当前没有依赖或依赖已经运行完毕的目标;用户端代理程序在执行动作时,与集群持续通信来监控当前动作的状态,从而根据用户预先设定的策略来处理各种情形;将用户端代理程序与集群内组件建立连接,用户端代理程序向集群内组件发送请求,并接收集群内组件返回的结果;用户端代理程序还能够与其他服务器建立连接,向与其建立连接的服务器发送请求,并能够接收返回结果。
14.根据本发明第二方面,一种提交结构化机器学习计算任务到计算集群的装置,包括:获取模块,用于获取用户创建的代码包;调用模块,用于在用户端代理程序被调用时,运行代码包;通信模块,用于将用户端代理程序与集群内组件建立连接,并进行数据通信。
15.根据本发明第三方面,一种提交结构化机器学习计算任务到计算集群的系统,包括:代码包、用户端代理程序以及集群内组件;所述代码包至少包括:包含项目文件以及定义文件的文件系统的目录,其中,定义文件用于定义代码包的详细信息和运行方式,代码包的详细信息至少包括版本、名称、描述,运行方式至少包括目标和动作的定义;所述用户端代理程序用于通过读取代码包的定义文件来执行用户指定的动作;所述用户端代理程序与所述集群内组件接口建立连接,进行数据通信。
16.根据本发明第四方面,一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如本发明第一方面任一项所述方法的步骤。
17.根据本发明第五方面,一种计算机可读存储介质,所述计算机可读存储介质存储有程序,所述程序被执行时,能够实现如本发明第一方面任一项所述的方法。
18.本发明的有益效果:提供一种分解、抽象、结构化机器学习计算任务的方法,提出
目标、动作的抽象并给出代码包的定义文件规约,其以简单清晰的方式声明代码包的运行方式,创建新的代码包或者将既有的机器学习项目修改为代码包都非常容易。进一步地,用户端代理程序能够自动解析目标的依赖关系并执行工作流,能够独立地监视动作的执行状态,并以用户预先设定的策略决定接下来的行为,从而替代人工判断和操作,节约工作时间,降低工作难度,操作简单、方便。
19.另外本发明方案引入了集群内组件,其一方面能够验证计算任务的提交具有相应的权限,保证计算集群的安全,另一方面能够为计算任务的运行提供支持。
附图说明
20.本发明上述的和 / 或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中,图1为本发明提供的一种提交结构化机器学习计算任务到计算集群的方法流程图;图2为本发明提供的一种提交结构化机器学习计算任务到计算集群的系统结构示意图。
具体实施方式
21.下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
22.为了更清楚地说明本发明,下面结合优选实施例和附图对本发明做进一步的说明。附图中相似的部件以相同的附图标记进行表示。本领域技术人员应当理解,下面所具体描述的内容是说明性的而非限制性的,不应以此限制本发明的保护范围。
23.在本发明的第一方面,提供一种提交结构化机器学习计算任务到计算集群的方法,如图1所示,包括:步骤101:获取用户创建的代码包;本发明中,用户创建的代码包至少包括:包含项目文件以及定义文件的文件系统的目录,其中,定义文件用于定义代码包的详细信息和运行方式,进一步地,代码包的详细信息至少包括版本、名称、描述。运行方式至少包括目标和动作的定义。
24.也就是说,代码包是对用户想要在计算集群中运行的完整机器学习项目的抽象。代码包是一种组织运行机器学习应用所需的所有文件的方式,通常是一个文件系统的目录,其中包含一个代码包定义文件 (codepack.yaml) 定义了代码包的详细信息和运行方式,另外还包含代码、数据文件、资源配置文件等。代码包通常由源代码版本控制系统(例如 git)进行版本管理和分发。
25.更进一步地,目标是对代码包的一个具体任务的抽象。目标从属于一个代码包,其定义了代码包的一个具体的可运行的任务。目标具有完整的、现实的、用户可以理解的含义。例如在集群中完成模型训练、部署模型为推理服务等。每个目标可以指定其依赖的其他目标,例如创建推理服务需要先完成模型训练,用户端代理程序在运行一个目标时,将递归地解析依赖,然后运行一个工作流。
26.动作是对目标的一个具体的可执行的操作的抽象,从属于一个目标,其定义目标一个具体的可执行的操作。动作具有标准化的、用户可以配置的规约。例如在集群中创建一个存储卷、创建一个进行模型训练的任务(job)等。动作定义了多种类型,每种类型针对某一类的具体操作,在本发明的一个实施例中,可以由代码包和用户端代理程序共同实现,在另一个实施例中,可以由代码包、用户端代理程序和集群内组件共同实现;用户也可以容易地定义新的类型来扩展功能。动作在执行时具有状态,用户可以设定策略,根据动作的状态来决定接下来的行为,例如是否执行下一个动作、执行的时机等。
27.工作流是由一个代码包中的一组存在依赖关系的目标构成,体现为一个有向无环图(dag)。运行这个工作流时,其中的依赖关系会被解析,当前没有依赖或依赖已经运行完毕的目标会串行或者并行地运行。
28.在本发明技术方案中,由于代码包的全部信息都维护在一个简单清晰的定义文件中,用户创建一个新的代码包或者将既有的机器学习项目修改为代码包都非常容易,并且用户可以使用通常的源代码版本控制系统(例如 git)来对代码包进行版本管理和分发。
29.步骤102:在用户端代理程序被调用时,运行代码包;本发明中,用户端代理程序通过读取代码包的定义文件来执行用户指定的动作。其中,部分动作的执行需要位于计算集群中的集群内组件提供必要的支持,此时用户端代理程序会向集群内组件发送相应的请求来完成这一过程。
30.进一步地,用户端代理程序具有工作流机制。在运行某个目标时,用户端代理程序会递归地解析所有依赖的目标,动态地构建一个有向无环图,然后串行或者并行地运行图中当前没有依赖或依赖已经运行完毕的目标。
31.用户端代理程序配置有监控机制。在执行某个动作时,用户端代理程序会与集群持续通信来监控当前动作的状态,从而根据用户预先设定的策略来处理各种情形。
32.本发明中,用户端代理程序的实现十分灵活,包括但不限于命令行工具(cli)、各种编程语言的 sdk、带有用户界面的应用程序等。
33.步骤103:将用户端代理程序与集群内组件建立连接,并进行数据通信。
34.本发明中,将用户端代理程序与集群内组件暴露的公开接口建立连接,采用计算机网络的应用层协议中的任一种进行用户端代理程序与集群内组件之间的数据通信,例如,可以采用 websocket 实现用户端代理程序与集群内组件之间的数据通信。
35.在本发明的另一个实施例中,用户端代理程序与集群内组件进行数据通信包括:用户端代理程序向集群内组件发送请求,并接收集群内组件返回的结果。用户端代理程序还可以与其他服务器建立连接,向其他服务器发送请求,并能够接收该服务器返回的结果。
36.进一步地,集群内组件在接收到来自用户端代理程序的请求时首先检查用户是否具有运行该计算任务的权限。这一过程可以有多种实现方式,例如使用集群本身的身份验证机制,使用集群管理员部署的基于 oidc、uma 等规范的安全服务等;这一过程也可以跳过,取决于集群的安全策略。
37.集群内组件会为用户端代理程序执行动作提供必要的支持,例如向集群内的资源服务器发送创建资源的请求,对集群中的容器进行端口转发等。
38.在本发明的另一个实施例中,在完全不需要上述安全机制以及动作执行的支持时,系统也可以仅由代码包和用户端代理程序构成,此时用户端代理程序会直接访问集群
的服务器。
39.在本发明的另一个实施例中,一个代码包的示例,包含定义文件codepack.yaml、代码文件以及集群的资源配置文件,具体如下,包括:mnist-keras
├──
codepack.yaml
├──
download_dataset.py
├──
main.py
├──
pvc.yaml
├──
secret.yaml
└──
trainingjob.yaml其中,codepack.yaml的内容如下:name:mnist-kerasdescription:asimpleimageclassifierbasedoncnnusingtf2.targets:-name:prepare-envactions:-name:workspace-for-trainingverb:applyfiles:[pvc.yaml]-name:secret-for-s3verb:applyfiles:[secret.yaml]-name:copy-filedeps:["prepare-env"]actions:-name:copy-codeverb:copysrc:.dst:training-pvc:mnist-keras/strategy:success:continuefailure:abort-name:copy-datasetverb:copysrc:s3://data/dst:training-pvc:mnist-keras/data/-name:run-distributed-trainingdeps:["prepare-env","copy-file"]actions:-name:jobverb:createfiles:[job.yaml]其中,定义文件包含3个目标:prepare-env、copy-file和run-distributed-training,其中copy-file依赖前一个目标,run-distributed-training依赖前两个目标。每个目标包含一个或多个动作,用于具体执行操作,例如copy-file包含copy-code和copy-dataset两个动作,都是copy类型,用于从本地和s3数据库复制文件到pvc;copy-code动作的策略为成功则继续,失败则中止运行。其中动作记为action,目标记为target。
[0040]
使用命令行工具(用户端代理程序的一个实现)来运行这个代码包的run-distributed-training目标,命令行工具会解析工作流、向集群内组件发送请求以执行动作、监视动作的执行情况。命令行的输出如下:$codepackrun
‑‑
targetrun-distributed-trainingrunningsequence:prepare-env-》copy-file-》run-distributed-trainingtarget1/3:prepare-envapplybyfiles['pvc.yaml']persistentvolumeclaimtraining-pvccreatedapplybyfiles['secret.yaml']secrettraining-secretcreatedtarget2/3:copy-filecopyfrom.totraining-pvc:mnist-keras/monitoringcopyaction...succeededcopyfroms3://data/totraining-pvc:mnist-keras/data/target3/3:run-distributed-training create by files ['trainingjob.yaml'] trainingjob mnist-keras created。
[0041]
在本发明第二方面,提供一种提交结构化机器学习计算任务到计算集群的装置,包括:获取模块,用于获取用户创建的代码包;本发明中,获取模块,用于至少获取用户创建的包含项目文件以及定义文件的文件系统的目录,其中,定义文件用于定义代码包的详细信息和运行方式,进一步地,代码包的详细信息至少包括版本、名称、描述,运行方式至少包括目标和动作的定义,将包含项目文件以及定义文件的文件系统的目录作为代码包。
[0042]
也就是说,代码包是对用户想要在计算集群中运行的完整机器学习项目的抽象。代码包是一种组织运行机器学习应用所需的所有文件的方式,通常是一个文件系统的目录,其中包含一个代码包定义文件 (codepack.yaml) 定义了代码包的详细信息和运行方式,另外还包含代码、数据文件、资源配置文件等。代码包通常由源代码版本控制系统(例如 git)进行版本管理和分发。
[0043]
更进一步地,目标是对代码包的一个具体任务的抽象。目标从属于一个代码包,其定义了代码包的一个具体的可运行的任务。目标具有完整的、现实的、用户可以理解的含义。例如在集群中完成模型训练、部署模型为推理服务等。每个目标可以指定其依赖的其他目标,例如创建推理服务需要先完成模型训练,用户端代理程序在运行一个目标时,将递归地解析依赖,然后运行一个工作流。
[0044]
动作是对目标的一个具体的可执行的操作的抽象,从属于一个目标,其定义目标一个具体的可执行的操作。动作具有标准化的、用户可以配置的规约。例如在集群中创建一个存储卷、创建一个进行模型训练的任务(job)等。动作定义了多种类型,每种类型针对某一类的具体操作,对于需要集群内组件提供必要支持的部分动作,用户端代理程序向集群内组件发送请求;用户也可以容易地定义新的类型来扩展功能。动作在执行时具有状态,用户可以设定策略,根据动作的状态来决定接下来的行为,例如是否执行下一个动作、执行的时机等。
[0045]
工作流是由一个代码包中的一组存在依赖关系的目标构成,体现为一个有向无环图(dag)。运行这个工作流时,其中的依赖关系会被解析,当前没有依赖或依赖已经运行完毕的目标会串行或者并行地运行。
[0046]
在本发明技术方案中,由于代码包的全部信息都维护在一个简单清晰的定义文件中,用户创建一个新的代码包或者将既有的机器学习项目修改为代码包都非常容易,并且用户可以使用通常的源代码版本控制系统(例如 git)来对代码包进行版本管理和分发。
[0047]
调用模块,用于在用户端代理程序被调用时,运行代码包;在本发明中,调用模块具体用于用户端代理程序通过读取代码包的定义文件来执行用户指定的动作。其中,部分动作的执行需要位于计算集群中的集群内组件提供必要的支持,此时用户端代理程序会向集群内组件发送相应的请求来完成这一过程。
[0048]
进一步地,用户端代理程序具有工作流机制。在运行某个目标时,用户端代理程序会递归地解析所有依赖的目标,动态地构建一个有向无环图,然后串行或者并行地运行图中当前没有依赖或依赖已经运行完毕的目标。
[0049]
用户端代理程序配置有监控机制。在执行某个动作时,用户端代理程序会与集群持续通信来监控当前动作的状态,从而根据用户预先设定的策略来处理各种情形。
[0050]
本发明中,用户端代理程序的实现十分灵活,包括但不限于命令行工具(cli)、各种编程语言的 sdk、带有用户界面的应用程序等。
[0051]
通信模块,用于将用户端代理程序与集群内组件建立连接,并进行数据通信。
[0052]
本发明中,通信模块具体用于将用户端代理程序与集群内组件暴露的公开接口建立连接,采用计算机网络的应用层协议中的任一种进行用户端代理程序与集群内组件之间的数据通信,例如,可以采用 websocket 实现用户端代理程序与集群内组件之间的数据通信。
[0053]
进一步地,集群内组件在接收到来自用户端代理程序的请求时首先检查用户是否具有运行该计算任务的权限。这一过程可以有多种实现方式,例如使用集群本身的身份验证机制,使用集群管理员部署的基于 oidc、uma 等规范的安全服务等;这一过程也可以跳过,取决于集群的安全策略。
[0054]
集群内组件会为用户端代理程序执行动作提供必要的支持,例如向集群内的资源服务器发送创建资源的请求,对集群中的容器进行端口转发等。
[0055]
在完全不需要上述安全机制以及动作执行的支持时,系统也可以仅由代码包和用户端代理程序构成,此时用户端代理程序会直接访问集群的服务器。
[0056]
根据本发明第三方面,提供一种提交结构化机器学习计算任务到计算集群的系统,包括:代码包、用户端代理程序以及集群内组件;所述代码包至少包括:包含项目文件以及定义文件的文件系统的目录,其中,定义文件用于定义代码包的详细信息和运行方式,代码包的详细信息至少包括版本、名称、描述,运行方式至少包括目标和动作的定义;进一步地,代码包是对用户想要在计算集群中运行的完整机器学习项目的抽象。代码包是一种组织运行机器学习应用所需的所有文件的方式,通常是一个文件系统的目录,其中包含一个代码包定义文件 (codepack.yaml) 定义了代码包的详细信息和运行方式,另外还包含代码、数据文件、资源配置文件等。代码包通常由源代码版本控制系统(例如 git)进行版本管理和分发。
[0057]
更进一步地,目标是对代码包的一个具体任务的抽象。目标从属于一个代码包,其定义了代码包的一个具体的可运行的任务。目标具有完整的、现实的、用户可以理解的含义。例如在集群中完成模型训练、部署模型为推理服务等。每个目标可以指定其依赖的其他目标,例如创建推理服务需要先完成模型训练,用户端代理程序在运行一个目标时,将递归地解析依赖,然后运行一个工作流。
[0058]
动作是对目标的一个具体的可执行的操作的抽象,从属于一个目标,其定义目标一个具体的可执行的操作。动作具有标准化的、用户可以配置的规约。例如在集群中创建一个存储卷、创建一个进行模型训练的任务等。动作定义了多种类型,每种类型针对某一类的具体操作,对于需要位于计算集群中的集群内组件提供必要支持的部分动作,用户端代理程序向集群内组件发送请求;用户也可以容易地定义新的类型来扩展功能。动作在执行时具有状态,用户可以设定策略,根据动作的状态来决定接下来的行为,例如是否执行下一个动作、执行的时机等。
[0059]
工作流是由一个代码包中的一组存在依赖关系的目标构成,体现为一个有向无环
图(dag)。运行这个工作流时,其中的依赖关系会被解析,当前没有依赖或依赖已经运行完毕的目标会串行或者并行地运行。
[0060]
在本发明技术方案中,由于代码包的全部信息都维护在一个简单清晰的定义文件中,用户创建一个新的代码包或者将既有的机器学习项目修改为代码包都非常容易,并且用户可以使用通常的源代码版本控制系统(例如 git)来对代码包进行版本管理和分发。
[0061]
所述用户端代理程序用于通过读取代码包的定义文件来执行用户指定的动作;在本发明中,用户端代理程序在执行部分动作时,需要位于计算集群中的集群内组件提供必要的支持,此时用户端代理程序会向集群内组件发送相应的请求来完成这一过程。
[0062]
进一步地,用户端代理程序具有工作流机制。在运行某个目标时,用户端代理程序会递归地解析所有依赖的目标,动态地构建一个有向无环图,然后串行或者并行地运行图中当前没有依赖或依赖已经运行完毕的目标。
[0063]
用户端代理程序配置有监控机制。在执行某个动作时,用户端代理程序会与集群持续通信来监控当前动作的状态,从而根据用户预先设定的策略来处理各种情形。
[0064]
本发明中,用户端代理程序的实现十分灵活,包括但不限于命令行工具(cli)、各种编程语言的 sdk、带有用户界面的应用程序等。
[0065]
用户端代理程序与所述集群内组件建立连接,进行数据通信;本发明中,用户端代理程序与集群内组件暴露的公开接口建立连接,采用计算机网络的应用层协议中的任一种进行用户端代理程序与集群内组件之间的数据通信,例如,可以采用 websocket 实现用户端代理程序与集群内组件之间的数据通信。
[0066]
进一步地,集群内组件在接收到来自用户端代理程序的请求时首先检查用户是否具有运行该计算任务的权限。这一过程可以有多种实现方式,例如使用集群本身的身份验证机制,使用集群管理员部署的基于 oidc、uma 等规范的安全服务等;这一过程也可以跳过,取决于集群的安全策略。
[0067]
集群内组件会为用户端代理程序执行动作提供必要的支持,例如向集群内的资源服务器发送创建资源的请求,对集群中的容器进行端口转发等。
[0068]
在完全不需要上述安全机制以及动作执行的支持时,系统也可以仅由代码包和用户端代理程序构成,此时用户端代理程序会直接访问集群的服务器。
[0069]
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、
ꢀ“
一 个”、
ꢀ“
所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措 辞“包括”是指存在所述特征、整数、步骤、操作、元件和 / 或组件,但是并不排除存在或添加 一个或多个其他特征、整数、步骤、操作、元件、组件和 / 或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时, 它可以直接连接或耦接到其他元件,或者也可以存在 中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用 的措辞“和 / 或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。
[0070] 本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语 ( 包括技术 术语和科学术语),具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中 的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式
的含义来解释。
[0071]
应当理解,以上借助优选实施例对本发明的技术方案进行的详细说明是示意性的而非限制性的。本领域的普通技术人员在阅读本发明说明书的基础上可以对各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献