面向多模型训练任务的算子调度方法与装置与流程

文档序号:33551450发布日期:2023-03-22 10:44阅读:32来源:国知局
面向多模型训练任务的算子调度方法与装置与流程

1.本发明属于机器学习技术领域,更具体地,涉及一种面向多模型训练任务的算子调度方法与装置。


背景技术:

2.随着人工智能技术进入落地期,众多的理论模型由学术界进入产业界,与实际业务场景紧密结合,产生出与领域相关的落地应用。越来越多的开发人员开始接触人工智能理论和技术。在这种背景下,迫切需要设计门槛低、低编码、入门快的人工智能训练平台,让不同知识背景的用户能够快速上手机器学习模型,快速将领域需求、知识和数据与机器学习技术相结合,转化成可嵌入现有业务场景的代码,从而实现人工智能技术在具体场景的落地。
3.搭建一套人工智能训练平台,除了嵌入各类模型和算子之外,重要的模块是算子运行流程的调度。算子的调度是将复杂的算子上下游关系转化为一定逻辑顺序的执行链,按照串行或者并行的方式执行该链路上的算子节点,从而完整有序的执行整个算子流。
4.目前,算子调度技术主要分为两类,各有不足:第一类是,在人为通过先验的知识对算子流进行排布,这种方案一般用于顺序执行的场景,需要人为确定算子执行的先后顺序;第二类是,通过将算子流视为有向无环图的方式,按照一定理论生成执行顺序,在本地执行,这种方案的不足是本地硬件条件限制,可能会限制算子执行的效率。


技术实现要素:

5.基于目前算子调度方法的不足,本发明提供了一种面向多模型训练任务的算子调度方法,按照算子之间的树拓扑连接关系生成符合逻辑顺序的串行或者并行执行链路;根据算子的计算量等信息,访问不同的算子服务;在多模型训练场景下充分利用集群资源,提升算子执行效率;支持在计算异常中止的情况下,根据计算状态记录继续完成计算流程。
6.为实现上述目的,按照本发明的一个方面,提供了一种面向多模型训练任务的算子调度方法,所述方法包括如下步骤:
7.对算子进行形式化,规定算子的输入参数和输出参数;各个算子通过上下游连接,形成一棵算子树拓扑结构,其中树的节点是算子,树的边是算子的父子连接关系;
8.输入算子树拓扑结构,按照该算子树拓扑结构,利用图论中的树深度优先遍历算法,生成一定顺序的串行或者并行执行链路,根据深度优先算法的原理,生成的执行链路能够保证原树中父算子先于子算子执行;
9.根据执行链路的顺序,依次启动算子计算服务,根据算子的计算量信息启动不同物理资源支持下的算子服务,在并行执行场景下,同时启动多个算子服务;并利用集群资源运行算子计算服务以提升算子执行效率。
10.本发明的一个实施例中,所述算子包括以下一种或多种:
11.数据io算子:从远程地址获取数据流,计算完成后向远程地址写入数据流;
12.数据规范化算子:包括异常处理和归一化处理;
13.特征工程算子:包括奇异值分解svd数据降维和主成分分析算法应用,用以降低数据维度,选出具有表征力的特征;
14.模型生成算子:将经过以上步骤处理后的数据作为训练集,对原始模型进行训练,得到参数化之后的模型实例;
15.模型评价算子:该算子存在两个输入,即需要评价的模型和用来评价模型的数据集合,为了保持算子单输入的形式从而不破坏整体的树形拓扑结构,做如下特殊处理::模型评价算子作为直接连接模型算子的子算子,模型算子的模型输出作为评价算子的模型输入参数;模型算子本身的数据输入中未参与训练的部分,作为评价算子的数据输入参数。
16.本发明的一个实施例中,所述输入算子树拓扑结构,按照该算子树拓扑结构,利用图论中的树深度优先遍历算法,生成一定顺序的串行或者并行执行链路,包括:
17.在多模型训练任务场景下,一个父算子能够连接多个子算子,算子规范化后输入的算子拓扑为树形结构,不同的树支路path代表不同的模型训练任务,根据深度优先遍历算法,生成具体的算子执行链,确定算子执行的顺序。
18.本发明的一个实施例中,所述根据执行链路的顺序,依次启动算子计算服务,包括:
19.在串行执行链场景下,从根节点root开始,依次访问链路上节点对应的算子服务;
20.在并行执行链场景下,根据算子中计算量信息,针对不同的计算量分配不同的物理资源启动相应的算子服务,保证并行执行的效率。
21.本发明的一个实施例中,所述算子计算服务以微服务形式提供服务,用户侧以post方式传入算子信息,获取算子计算结果,post消息体中包含:算子的字典node_dict、算子连接关系树node_tree、计算起点root;算子服务分为两类,分别是op_scheduler算子调度器和op_executor算子执行器,算子调度器接收到post消息体后,根据算子树拓扑获得执行链,按照执行链的顺序依次将对应算子的参数打包成post消息,访问算子执行器。
22.本发明的一个实施例中,所述利用集群资源运行算子计算服务以提升算子执行效率,具体包括:在整个计算过程中,算子所需数据存放在远程位置,算子所需的参数是表的位置和名字字符串,其生成的数据也直接写入远程位置,向下游算子输出的也是该表名和位置字符串,整个计算过程中,算子使用方和算子服务端都不在本地存储数据文件。
23.本发明的一个实施例中,所述方法还包括:在计算异常中止的情况下进行计算回溯并继续完成计算流程。
24.本发明的一个实施例中,所述在计算异常中止的情况下进行计算回溯并继续完成计算流程,具体包括:
25.计算过程中,维护一份执行记录表并持久化在数据库中,记录整个执行链以及已经完成的步骤,当计算过程遇到异常中止时,根据该状态记录,从上一次正确执行的位置继续完成剩余计算。
26.本发明的一个实施例中,对算子进行形式化为字典格式,字典格式中包括operator、input_name、other_params,其中:
27.所述operator的值代表算子名;
28.所述input_name表示远程位置的数据表名或者是模型名,作为算子的输入;
column表示需要参与计算过程的数据列;
29.所述other_params代表附属信息包含不同种类算子特有的参数以及计算量等附属信息,计算量op_cost由输入数据的容量和不同类别的算子运算复杂度确定;
30.算子输出一个远程存储位置上的output_name表或者模型文件,在正确执行完该算子后,将output_name值写入其邻接下游一个或者多个算子的input_name,作为它们的输入参数。
31.按照本发明的另一方面,还提供了一种面向多模型训练任务的算子调度装置,包括至少一个处理器和存储器,所述至少一个处理器和存储器之间通过数据总线连接,所述存储器存储能被所述至少一个处理器执行的指令,所述指令在被所述处理器执行后,用于完成所述的面向多模型训练任务的算子调度方法。
32.总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有如下有益效果:
33.本发明设计了一种在多模型训练场景下的算子调度方法,根据算子树信息生成串行或并行执行链,当以并行方式执行时,可以提升计算效率,减少任务运行时间;根据算子信息中的计算量等信息,度量其所需的计算资源,按需启动或访问不同的计算服务,提高计算效率;为整个计算流维护状态记录,当计算中断时可以恢复,继续计算。
附图说明
34.图1为本发明实施例中面向多模型训练任务的算子调度方法的流程示意图;
35.图2为本发明实施例中算子形式化的原理示意图;
36.图3为本发明实施例中算子执行链路的生成过程示意图;
37.图4为本发明实施例中根据不同硬件资源配置按需启动算子服务实例的原理示意图;
38.图5为本发明实施例中一个执行记录表的实例图。
具体实施方式
39.为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
40.本发明应用在人工智能训练平台构建领域,具体属于机器学习算子流程编排。本发明的应用场景是:按照算子之间的树(tree)拓扑连接关系生成符合机器学习逻辑顺序的执行流程。在多个分支模型训练任务的条件下,实现算子的并行化执行,提升执行效率。
41.如图1所示,本发明提供的面向多模型训练任务的算子调度方法,其核心流程为:在将算子规范化成单输入多输出的形式之后,以树形拓扑输入算子流。树中每个节点代表一个算子,树的边代表算子上下游关系。树根节点代表计算流程的入口。树可以是多个分支的,每个从入口节点到叶子节点的路径path代表一个模型的训练过程,因此支持多模型同时训练。利用深度优先或者宽度优先算法遍历算子树拓扑中每一个节点,遍历过程要保证上游节点计算完毕后再计算下游节点。按照这种规则获取的遍历结果即算子的执行链。在
集群上按照不同硬件资源启动计算服务,按照算子执行链的顺序访问对应的服务,将计算结果进行保存。若计算过程中某个算子出错,则根据执行记录表进行回溯。
42.具体地,所述方法包括以下步骤:
43.s1.对算子进行形式化,规定算子的输入参数和输出参数;各个算子通过上下游连接,形成一棵算子树拓扑结构,其中树的节点是算子,树的边是算子的父子连接关系;
44.附图2描述了算子形式化。由于要满足树拓扑的输入要求,需要将算子进行形式化转化为单上游多下游的形式。所述算子包括以下一种或多种:
45.数据io(输入输出)算子:从远程地址获取数据流,计算完成后向远程地址写入数据流;
46.数据规范化算子:异常处理(空值填充、平滑)、归一化处理;
47.特征工程算子:奇异值分解(svd,singular value decomposition)数据降维、主成分分析(principal component analysis,pca)等算法应用,目的是降低数据维度,选出具有表征力的特征。
48.模型生成算子:将经过以上步骤处理后的数据作为训练集,对原始模型进行训练,得到参数化之后的模型实例。
49.模型评价算子:该算子存在两个输入,即需要评价的模型和用来评价模型的数据集合,为了保持算子单输入的形式从而不破坏整体的树形拓扑结构,做如下特殊处理::模型评价算子作为直接连接模型算子的子算子,模型算子的模型输出作为评价算子的模型输入参数;模型算子本身的数据输入中未参与训练的部分,作为评价算子的数据输入参数。
50.模型评价算子的输入参数是两个(模型文件和数据集),我们做如下处理将其转变成单上游算子:即模型评价算子紧跟在模型生成算子之后,其父算子的输出就是模型文件参数;继续回溯找到父算子的父算子(某个数据输出算子)的输出,作为数据集参数。
51.对算子进行形式化为字典格式,字典格式中包括operator、input_name、other_params,其中:
52.所述operator的值代表算子名;
53.所述input_name表示远程位置的数据表名或者是模型名,作为算子的输入;column表示需要参与计算过程的数据列;
54.所述other_params代表附属信息包含不同种类算子特有的参数以及计算量等附属信息,计算量op_cost由输入数据的容量和不同类别的算子运算复杂度确定;
55.算子输出一个远程存储位置上的output_name表或者模型文件,在正确执行完该算子后,将output_name值写入其邻接下游一个或者多个算子的input_name,作为它们的输入参数。
56.以下为本发明实施例中一种算子形式化为字典格式的示例,如下:
[0057][0058]
operator的值代表算子名;
[0059]
input_name表示远程位置的数据表名(或者是模型名),作为算子的输入;column表示需要参与计算过程的数据列;
[0060]
other_params代表附属信息,可以包含不同种类算子特有的参数以及计算量等附属信息,计算量op_cost由输入数据的容量和不同类别的算子运算复杂度确定。
[0061]
算子输出一个远程存储位置上的output_name表(或者模型文件)。在正确执行完该算子后,将output_name值写入其邻接下游一个或者多个算子的input_name,作为它们的输入参数。
[0062]
参考附图2(a),b算子节点(数据标准化),其上游节点为a(数据io),下游节点为c(pca降维),满足算子单个上游的规定。对比较特殊的模型评价算子(输入参数是两个,即模型文件和数据集),做如下处理将其转变成单上游算子:模型评价算子紧跟在模型生成算子之后,其父算子的输出就是模型文件参数;继续回溯找到父算子的父算子(某个数据输出算子)的输出,作为数据集参数。处理后的结果,见附图2(b)。
[0063]
s2.输入算子树拓扑结构,按照该算子树拓扑结构,利用图论中的树深度优先遍历算法,生成一定顺序的串行或者并行执行链路,根据深度优先算法的原理,生成的执行链路能够保证原树中父算子先于子算子执行;
[0064]
在多模型训练任务场景下,一个父算子能够连接多个子算子,算子规范化后输入的算子拓扑为树形结构,不同的树支路path代表不同的模型训练任务,根据深度优先遍历算法,生成具体的算子执行链,确定算子执行的顺序。对算子流生成执行链的模块进行微服务化,从而可以远程访问。
[0065]
附图3描述算子链的生成过程,生成算子执行链的环节由算子服务负责。附图中3的节点边为
[0066]
root-》d
[0067]
root-》h
[0068]
d-》b
[0069]
d-》c
[0070]
b-》e
[0071]
c-》f
[0072]
e-》g
[0073]
根据上述关系,根据深度优先搜索算法,得到串行执行链(之一):
[0074]
root,h,d,b,e,g,c,f
[0075]
根据广度优先搜索算法,得到并行执行链:
[0076]
root,(d,h),(c,b),(e,f),g
[0077]
其中括号中是单个执行步骤中可并行执行的一批算子,可以根据并发度parallelism值控制单次执行的并行度。
[0078]
s3.根据执行链路的顺序,依次启动算子计算服务,根据算子的计算量信息启动不同物理资源支持下的算子服务,在并行执行场景下,同时启动多个算子服务;并利用集群资源运行算子计算服务以提升算子执行效率。
[0079]
为了克服本地物理资源的限制,将算子服务化。按照不同的资源配比级别启动多个实例,等待算子计算需求。所述根据执行链路的顺序,依次启动算子计算服务,具体包括:
[0080]
在串行执行链场景下,从根节点root开始,依次访问链路上节点对应的算子服务;
[0081]
在并行执行链场景下,根据算子中计算量信息,针对不同的计算量分配不同的物理资源启动相应的算子服务,保证并行执行的效率。具体地,在并行执行链场景下,根据算子中计算量信息,访问不同硬件资源支持的计算服务,计算量大的算子可以访问cpu或内存等资源充裕的服务,从而节省并行执行的总时间。
[0082]
图4表示在计算集群中,根据不同硬件资源配置,可以按需启动算子服务实例。所述算子计算服务以微服务形式提供服务,用户侧以post方式传入算子信息,获取算子计算结果。post消息体中包含:算子的字典node_dict、算子连接关系树node_tree、计算起点root。算子服务分为两类,分别是op_scheduler算子调度器和op_executor算子执行器。算子调度器接收到post消息体后,根据算子树拓扑获得执行链,按照执行链的顺序,依次将对应算子的参数打包成post消息,访问算子执行器。对应算子中的参数中包含计算量信息,因此可以根据计算量信息访问不同服务级别的算子执行器。若算子执行链包含可并行执行的节点(例如上述d,h节点),则在满足不超过最大并行度的条件下,将相应算子集参数打包成不同的post消息,同时并行访问对应的算子服务。
[0083]
进一步地,所述利用集群资源运行算子计算服务以提升算子执行效率,具体包括:
[0084]
整个计算过程中,算子所需数据存放在远程位置(例如hive表),算子所需的参数是表的位置和名字字符串。其生成的数据也直接写入远程位置(hive表),向下游算子输出的也是该表名和位置字符串。整个计算过程中,算子使用方(client)和算子服务端(server)都不在本地存储数据文件。
[0085]
进一步地,所述方法还包括:
[0086]
s4.在计算异常中止的情况下进行计算回溯并继续完成计算流程;
[0087]
具体地,计算过程中,维护一份执行记录表以记录计算状态(持久化在数据库中),记录整个执行链以及已经完成的步骤。当计算过程遇到异常中止时,可以根据该状态记录,从上一次正确执行的位置继续完成剩余计算。
[0088]
具体地,如图5所示,在算子执行过程中,维护一个执行记录表,分别记录算子的执行时间、算子名称、输入、输出、执行日志、报错信息。若整个算子执行链顺利执行完毕,则所有算子的执行日志字段中会标记success,并向用户返回执行成功的消息。若其中某个算子的执行出错,则会在该算子的执行日志字段标记fail,并在报错信息字段写入错误原因,便于排查。在排查出报错原因后,可以从算子链中报错的位置开始,继续执行余下计算。
[0089]
进一步地,本发明还提供了一种面向多模型训练任务的算子调度方法装置,包括
至少一个处理器和存储器,所述至少一个处理器和存储器之间通过数据总线连接,所述存储器存储能被所述至少一个处理器执行的指令,所述指令在被所述处理器执行后,用于完成上述的面向多模型训练任务的算子调度方法。
[0090]
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1