机器学习模型的编译优化方法和装置转让专利

申请号 : CN202010366380.6

文献号 : CN111580828B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 姜曦楠朱子霖周飞虎郭振宇

申请人 : 腾讯科技(深圳)有限公司

摘要 :

本发明公开了一种机器学习模型的编译优化方法和装置。其中,该方法包括:运行第一机器学习模型分别对N个数据集进行处理,得到N组模型运行信息;根据所述N组模型运行信息,在所述第一组操作中确定出N个操作集合;根据所述N个操作集合,在所述第一组操作中确定允许被分别编译的多个操作子集合;使用所述目标编译器分别对与每个所述编译区域对应的所述操作子集合进行编译。本发明解决了由于在机器学习在编译时没有引入运行时的采样信息,导致的编译周期长、浪费资源的技术问题。

权利要求 :

1.一种机器学习模型的编译优化方法,其特征在于,包括:运行第一机器学习模型分别对N个数据集进行处理,得到N组模型运行信息,其中,对于每个所述数据集,所述第一机器学习模型被多次运行,得到一组所述模型运行信息,所述第一机器学习模型包括第一组操作,所述第一组操作中的操作为允许被目标编译器处理的操作,每组所述模型运行信息用于指示:在所述多次运行所述第一机器学习模型对一个所述数据集进行处理的过程中,所述第一组操作中的每个操作的输入张量和输出张量的形状是否发生变化,N为大于1的自然数;

根据所述N组模型运行信息,在所述第一组操作中确定出N个操作集合;

根据所述N个操作集合,在所述第一组操作中确定允许被分别编译的多个操作子集合,其中,所述多个操作子集合设置为允许被所述目标编译器分别编译;

使用所述目标编译器分别对与每个编译区域对应的所述操作子集合进行编译;

所述方法还包括:

在所述允许被分别编译的一个操作子集合中包括多个目标操作的情况下,使用所述目标编译器将所述多个目标操作合并成一个操作,保留所述第一机器学习模型中除所述多个目标操作之外的操作,并将所述多个目标操作的输入张量和输出张量转换为所述一个操作的输入张量和输出张量,得到第二机器学习模型;或者使用所述目标编译器将所述第一机器学习模型中的所述多个目标操作合并成多个操作,保留所述第一机器学习模型中除所述多个目标操作之外的操作,并将所述多个目标操作的输入张量和输出张量转换为合并成的所述多个操作的输入张量和输出张量,得到第二机器学习模型,其中,所述合并成的所述多个操作中操作的数量小于所述多个目标操作中操作的数量;

使用所述目标编译器分别对与每个所述编译区域对应的所述操作子集合进行编译,包括:

将正式数据输入至所述第二机器学习模型;

使用所述目标编译器对所述第二机器学习模型进行编译,得到所述第二机器学习模型对所述正式数据进行处理后输出的处理结果。

2.根据权利要求1所述的方法,其特征在于,每个所述操作集合包括第一操作子集合和第二操作子集合,每个所述第一操作子集合包括在所述多次运行所述第一机器学习模型对一个所述数据集进行处理的过程中输入张量和输出张量的形状均未发生变化的操作,每个所述第二操作子集合包括在所述多次运行所述第一机器学习模型对一个所述数据集进行处理的过程中输入张量和/或输出张量的形状发生变化的操作,其中,所述根据所述N个操作集合,在所述第一组操作中确定允许被分别编译的多个操作子集合,包括:对于所述N个操作集合中的每个操作集合,执行以下操作,其中,在执行以下操作的过程中,所述每个操作集合被视为当前操作集合:在所述第一组操作中确定是否存在第三操作子集合,其中,所述第三操作子集合中的操作仅出现在所述当前操作集合中的所述第二操作子集合中、而未出现在所述N个操作集合中除所述当前操作集合之外的操作集合中的所述第二操作子集合中;

其中,在存在所述第三操作子集合的情况下,所述第三操作子集合为所述多个操作子集合中的一个操作子集合。

3.根据权利要求1所述的方法,其特征在于,每个所述操作集合包括第一操作子集合和第二操作子集合,每个所述第一操作子集合包括在所述多次运行所述第一机器学习模型对一个所述数据集进行处理的过程中输入张量和输出张量的形状均未发生变化的操作,每个所述第二操作子集合包括在所述多次运行所述第一机器学习模型对一个所述数据集进行处理的过程中输入张量和/或输出张量的形状发生变化的操作,其中,所述根据所述N个操作集合,在所述第一组操作中确定允许被分别编译的多个操作子集合,包括:对所述N个操作集合中的所述第一操作子集合取交集,得到第四操作子集合,其中,所述第四操作子集合为所述多个操作子集合中的一个操作子集合。

4.根据权利要求2所述的方法,其特征在于,所述方法还包括:对所述N个操作集合中的所述第二操作子集合取交集,得到第五操作子集合;

将所述第五操作子集合中的操作设置为放弃使用搜索目标编译器进行编译。

5.根据权利要求1所述的方法,其特征在于,所述根据所述N个操作集合,在所述第一组操作中确定允许被分别编译的多个操作子集合,包括:在所述第一组操作中确定是否存在第六操作子集合,其中,所述第六操作子集合中的操作包括:在所述多次运行所述第一机器学习模型对所述N个数据集中的第一个数据集进行处理的过程中输入张量和输出张量的形状均未发生变化,且在对所述N个数据集中除了所述第一个数据集之外的其它N‑1个数据集进行处理的过程中输入张量和/或输出张量的形状发生变化的操作,以及在所述多次运行所述第一机器学习模型对所述N个数据集中的第M个数据集进行处理的过程中输入张量和/或输出张量的形状发生变化,且除了所述第M个数据集之外的其它N‑1个数据集进行处理的过程中输入张量和输出张量的形状均未发生变化的操作,其中,所述第M个数据集为所述N个数据集中除所述第一个数据集之外的数据集;

其中,在存在所述第六操作子集合的情况下,所述第六操作子集合为所述多个操作子集合中的一个操作子集合。

6.根据权利要求1所述的方法,其特征在于,所述根据所述N个操作集合,在所述第一组操作中确定允许被分别编译的多个操作子集合,包括:在所述第一组操作中确定是否存在第七操作子集合,其中,所述第七操作子集合中的操作为在所述多次运行所述第一机器学习模型对所述N个数据集中的第一个数据集进行处理的过程中输入张量和/或输出张量的形状发生变化,且在对所述N个数据集中除了所述第一个数据集之外的其它N‑1个数据集进行处理的过程中输入张量和输出张量的形状均未发生变化的操作;

其中,在存在所述第七操作子集合的情况下,所述第七操作子集合为所述多个操作子集合中的一个操作子集合。

7.根据权利要求1所述的方法,其特征在于,所述根据所述N个操作集合,在所述第一组操作中确定允许被分别编译的多个操作子集合,包括:在所述第一组操作中确定是否存在第八操作子集合,其中,所述第八操作子集合中的操作为在所述多次运行所述第一机器学习模型对所述N个数据集中第M个数据集进行处理的过程中输入张量和输出张量的形状均未发生变化,且除了所述第M个数据集之外的其它N‑1个数据集进行处理的过程中输入张量和/或输出张量的形状发生变化的操作,其中,所述第M个数据集为所述N个数据集中除第一个数据集之外的数据集;

其中,在存在所述第八操作子集合的情况下,所述第八操作子集合为所述多个操作子集合中的一个操作子集合。

8.根据权利要求1所述的方法,其特征在于,所述根据所述N个操作集合,在所述第一组操作中确定允许被分别编译的多个操作子集合,包括:在所述第一组操作中确定是否存在第九操作子集合,其中,所述第九操作子集合中的操作为在所述多次运行所述第一机器学习模型对所述N个数据集中进行处理的过程中,输入张量和/或输出张量的形状发生变化的操作;

其中,在存在所述第九操作子集合的情况下,所述第九操作子集合为所述多个操作子集合中的一个操作子集合。

9.根据权利要求1至8中任一项所述的方法,其特征在于,对于每个所述数据集,所述第一机器学习模型被多次运行,得到一组所述模型运行信息,包括:重复执行多次以下步骤:

将数据集中的多个输入张量分别输入至所述第一组操作中部分或全部的操作;

每运行一次所述第一机器学习模型,修改所述数据集中的一个或多个变量的变量值,在下一次运行所述第一机器学习模型时,将修改后的数据集的多个输入张量分别输入至所述第一组操作中部分或全部的操作,运行一次所述第一机器学习模型,得到所述第一组操作中的每个操作的输入张量和输出张量;

比较在所述多次运行所述第一机器学习模型的过程中所述第一组操作中的每个操作的输入张量和输出张量的形状是否发生变化,得到一组所述模型运行信息。

10.一种机器学习模型的编译优化装置,其特征在于,包括:运行模块,用于运行第一机器学习模型分别对N个数据集进行处理,得到N组模型运行信息,其中,对于每个所述数据集,所述第一机器学习模型被多次运行,得到一组所述模型运行信息,所述第一机器学习模型包括第一组操作,所述第一组操作中的操作为允许被目标编译器处理的操作,每组所述模型运行信息用于指示在所述多次运行所述第一机器学习模型对一个所述数据集进行处理的过程中,所述第一组操作中的每个操作的输入张量和输出张量的形状是否发生变化,N为大于1的自然数;

第一确定模块,用于根据所述N组模型运行信息,在所述第一组操作中确定出N个操作集合;

第二确定模块,用于根据所述N个操作集合,在所述第一组操作中确定允许被分别编译的多个操作子集合,其中,所述多个操作子集合设置为允许被所述目标编译器分别编译;

编译模块,用于使用所述目标编译器分别对与每个编译区域对应的所述操作子集合进行编译;

所述装置还用于:

在所述允许被分别编译的一个操作子集合中包括多个目标操作的情况下,使用所述目标编译器将所述多个目标操作合并成一个操作,保留所述第一机器学习模型中除所述多个目标操作之外的操作,并将所述多个目标操作的输入张量和输出张量转换为所述一个操作的输入张量和输出张量,得到第二机器学习模型;或者使用所述目标编译器将所述第一机器学习模型中的所述多个目标操作合并成多个操作,保留所述第一机器学习模型中除所述多个目标操作之外的操作,并将所述多个目标操作的输入张量和输出张量转换为合并成的所述多个操作的输入张量和输出张量,得到第二机器学习模型,其中,所述合并成的所述多个操作中操作的数量小于所述多个目标操作中操作的数量;

所述装置用于通过如下方式使用所述目标编译器分别对与每个所述编译区域对应的所述操作子集合进行编译:

将正式数据输入至所述第二机器学习模型。

11.一种计算机可读的存储介质,所述计算机可读的存储介质包括存储的程序,其中,所述程序运行时执行所述权利要求1至9任一项中所述的方法。

12.一种电子设备,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为通过所述计算机程序执行所述权利要求1至9任一项中所述的方法。

说明书 :

机器学习模型的编译优化方法和装置

技术领域

[0001] 本发明涉及人工智能领域,具体而言,涉及一种机器学习模型的编译优化方法和装置。

背景技术

[0002] 机器学习系统中的编译优化有提前编译和即时编译两大类技术。现有机器学习系统在编译时,没有引入运行时的采样信息,由于没有采样运行时张量形状的变化信息,会导
致在多次迭代过程中因为部分操作张量形状变化引发计算图大部分操作的重新编译。这类
重编译非常耗时且耗内存。
[0003] 针对相关技术中,由于在机器学习在编译时没有引入运行时的采样信息,导致的编译周期长、浪费资源的问题,目前尚未存在有效的解决方案

发明内容

[0004] 本发明实施例提供了一种机器学习模型的编译优化方法和装置,以至少解决由于在机器学习在编译时没有引入运行时的采样信息,导致的编译周期长、浪费资源的技术问
题。
[0005] 根据本发明实施例的一个方面,提供了一种机器学习模型的编译优化方法,包括:运行第一机器学习模型分别对N个数据集进行处理,得到N组模型运行信息,其中,对于每个
所述数据集,所述第一机器学习模型被多次运行,得到一组所述模型运行信息,所述第一机
器学习模型包括第一组操作,所述第一组操作中的操作为允许被目标编译器处理的操作,
每组所述模型运行信息用于指示:在所述多次运行所述第一机器学习模型对一个所述数据
集进行处理的过程中,所述第一组操作中的每个操作的输入张量和输出张量的形状是否发
生变化,N为大于1的自然数;根据所述N组模型运行信息,在所述第一组操作中确定出N个操
作集合;根据所述N个操作集合,在所述第一组操作中确定允许被分别编译的多个操作子集
合,其中,所述多个操作子集合设置为允许被所述目标编译器分别编译;使用所述目标编译
器分别对与每个所述编译区域对应的所述操作子集合进行编译。
[0006] 可选地,每个所述操作集合包括第一操作子集合和第二操作子集合,每个所述第一操作子集合包括在所述多次运行所述第一机器学习模型对一个所述数据集进行处理的
过程中输入张量和输出张量的形状均未发生变化的操作,每个所述第二操作子集合包括在
所述多次运行所述第一机器学习模型对一个所述数据集进行处理的过程中输入张量和/或
输出张量的形状发生变化的操作,其中,所述根据所述N个操作集合,在所述第一组操作中
确定允许被分别编译的多个操作子集合,包括:对于所述N个操作集合中的每个操作集合,
执行以下操作,其中,在执行以下操作的过程中,所述每个操作集合被视为当前操作集合:
在所述第一组操作中确定是否存在第三操作子集合,其中,所述第三操作子集合中的操作
仅出现在所述当前操作集合中的所述第二操作子集合中、而未出现在所述N个操作集合中
除所述当前操作集合之外的操作集合中的所述第二操作子集合中;其中,在存在所述第三
操作子集合的情况下,所述第三操作子集合为所述多个操作子集合中的一个操作子集合。
[0007] 可选地,每个所述操作集合包括第一操作子集合和第二操作子集合,每个所述第一操作子集合包括在所述多次运行所述第一机器学习模型对一个所述数据集进行处理的
过程中输入张量和输出张量的形状均未发生变化的操作,每个所述第二操作子集合包括在
所述多次运行所述第一机器学习模型对一个所述数据集进行处理的过程中输入张量和/或
输出张量的形状发生变化的操作,其中,所述根据所述N个操作集合,在所述第一组操作中
确定允许被分别编译的多个操作子集合,包括:对所述N个操作集合中的所述第一操作子集
合取交集,得到第四操作子集合,其中,所述第四操作子集合为所述多个操作子集合中的一
个操作子集合。
[0008] 可选地,所述方法还包括:对所述N个操作集合中的所述第二操作子集合取交集,得到第五操作子集合;将所述第五操作子集合中的操作设置为放弃使用搜索目标编译器进
行编译。
[0009] 可选地,所述根据所述N个操作集合,在所述第一组操作中确定允许被分别编译的多个操作子集合,包括:在所述第一组操作中确定是否存在第六操作子集合,其中,所述第
六操作子集合中的操作包括:在所述多次运行所述第一机器学习模型对所述N个数据集中
的第一个数据集进行处理的过程中输入张量和输出张量的形状均未发生变化,且在对所述
N个数据集中除了所述第一个数据集之外的其它N‑1个数据集进行处理的过程中输入张量
和/或输出张量的形状发生变化的操作,以及在所述多次运行所述第一机器学习模型对所
述N个数据集中的第M个数据集进行处理的过程中输入张量和/或输出张量的形状发生变
化,且除了所述第M个数据集之外的其它N‑1个数据集进行处理的过程中输入张量和输出张
量的形状均未发生变化的操作,其中,所述第M个数据集为所述N个数据集中除所述第一个
数据集之外的数据集;其中,在存在所述第六操作子集合的情况下,所述第六操作子集合为
所述多个操作子集合中的一个操作子集合。
[0010] 可选地,所述根据所述N个操作集合,在所述第一组操作中确定允许被分别编译的多个操作子集合,包括:在所述第一组操作中确定是否存在第七操作子集合,其中,所述第
七操作子集合中的操作为在所述多次运行所述第一机器学习模型对所述N个数据集中的第
一个数据集进行处理的过程中输入张量和/或输出张量的形状发生变化,且在对所述N个数
据集中除了所述第一个数据集之外的其它N‑1个数据集进行处理的过程中输入张量和输出
张量的形状均未发生变化的操作;其中,在存在所述第七操作子集合的情况下,所述第七操
作子集合为所述多个操作子集合中的一个操作子集合。
[0011] 可选地,所述根据所述N个操作集合,在所述第一组操作中确定允许被分别编译的多个操作子集合,包括:在所述第一组操作中确定是否存在第八操作子集合,其中,所述第
八操作子集合中的操作为在所述多次运行所述第一机器学习模型对所述N个数据集中第M
个数据集进行处理的过程中输入张量和输出张量的形状均未发生变化,且除了所述第M个
数据集之外的其它N‑1个数据集进行处理的过程中输入张量和/或输出张量的形状发生变
化的操作,其中,所述第M个数据集为所述N个数据集中除第一个数据集之外的数据集;其
中,在存在所述第八操作子集合的情况下,所述第八操作子集合为所述多个操作子集合中
的一个操作子集合。
[0012] 可选地,所述根据所述N个操作集合,在所述第一组操作中确定允许被分别编译的多个操作子集合,包括:在所述第一组操作中确定是否存在第九操作子集合,其中,所述第
九操作子集合中的操作为在所述多次运行所述第一机器学习模型对所述N个数据集中进行
处理的过程中,输入张量和/或输出张量的形状发生变化的操作;其中,在存在所述第九操
作子集合的情况下,所述第九操作子集合为所述多个操作子集合中的一个操作子集合。
[0013] 可选地,对于每个所述数据集,所述第一机器学习模型被多次运行,得到一组所述模型运行信息,包括:重复执行多次以下步骤:将数据集中的多个输入张量分别输入至所述
第一组操作中部分或全部的操作;每运行一次所述第一机器学习模型,修改所述数据集中
的一个或多个变量的变量值,在下一次运行所述第一机器学习模型时,将修改后的数据集
的多个输入张量分别输入至所述第一组操作中部分或全部的操作,运行一次所述第一机器
学习模型,得到所述第一组操作中的每个操作的输入张量和输出张量;比较在所述多次运
行所述第一机器学习模型的过程中所述第一组操作中的每个操作的输入张量和输出张量
的形状是否发生变化,得到一组所述模型运行信息。
[0014] 可选地,所述方法还包括:在所述允许被分别编译的一个操作子集合中包括多个目标操作的情况下,使用所述目标编译器将所述多个目标操作合并成一个操作,保留所述
第一机器学习模型中除所述多个目标操作之外的操作,并将所述多个目标操作的输入张量
和输出张量转换为所述一个操作的输入张量和输出张量,得到第二机器学习模型;或者使
用所述目标编译器将所述第一机器学习模型中的所述多个目标操作合并成多个操作,保留
所述第一机器学习模型中除所述多个目标操作之外的操作,并将所述多个目标操作的输入
张量和输出张量转换为合并成的所述多个操作的输入张量和输出张量,得到第二机器学习
模型,其中,所述合并成的所述多个操作中操作的数量小于所述多个目标操作中操作的数
量。
[0015] 可选地,使用所述目标编译器分别对与每个所述编译区域对应的所述操作子集合进行编译,包括:将正式数据输入至所述第二机器学习模型;使用所述目标编译器对所述第
二机器学习模型进行编译,得到所述第二机器学习模型对所述正式数据进行处理后输出的
处理结果。
[0016] 根据本发明实施例的另一方面,还提供了一种机器学习模型的编译优化装置,包括:运行模块,用于运行第一机器学习模型分别对N个数据集进行处理,得到N组模型运行信
息,其中,对于每个所述数据集,所述第一机器学习模型被多次运行,得到一组所述模型运
行信息,所述第一机器学习模型包括第一组操作,所述第一组操作中的操作为允许被目标
编译器处理的操作,每组所述模型运行信息用于指示:在所述多次运行所述第一机器学习
模型对一个所述数据集进行处理的过程中,所述第一组操作中的每个操作的输入张量和输
出张量的形状是否发生变化,N为大于1的自然数;第一确定模块,用于根据所述N组模型运
行信息,在所述第一组操作中确定出N个操作集合;第二确定模块,用于根据所述N个操作集
合,在所述第一组操作中确定允许被分别编译的多个操作子集合,其中,所述多个操作子集
合设置为允许被所述目标编译器分别编译;编译模块,用于使用所述目标编译器分别对与
每个所述编译区域对应的所述操作子集合进行编译。
[0017] 根据本发明实施例的又一方面,还提供了一种计算机可读的存储介质,该计算机可读的存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述机器
学习模型的编译优化方法。
[0018] 根据本发明实施例的又一方面,还提供了一种电子设备,包括存储器和处理器,上述存储器中存储有计算机程序,上述处理器被设置为通过所述计算机程序执行上述的机器
学习模型的编译优化方法。
[0019] 在本发明实施例中,采用运行第一机器学习模型分别对N个数据集进行处理,得到N组模型运行信息,对于每个所述数据集第一机器学习模型被多次运行,得到一组模型运行
信息,第一机器学习模型包括第一组操作,第一组操作中的操作为允许被目标编译器处理
的操作,每组模型运行信息用于指示:在多次运行所述第一机器学习模型对一个数据集进
行处理的过程中,第一组操作中的每个操作的输入张量和输出张量的形状是否发生变化,N
为大于1的自然数;根据N组模型运行信息,在第一组操作中确定出N个操作集合;使用目标
编译器分别对与每个编译区域对应的操作子集合进行编译。达到了引入机器学习模型编译
运行时的张量信息,对机器学习模型进行优化的目的,从而实现了提升机器学习模型的编
译效率的技术效果,进而解决了由于在机器学习在编译时没有引入运行时的采样信息,导
致的编译周期长、浪费资源的技术问题。

附图说明

[0020] 此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
[0021] 图1是根据本发明实施例的机器学习模型的编译优化方法的硬件环境的示意图;
[0022] 图2是根据本发明实施例的一种可选的机器学习模型的编译优化方法的应用框架图;
[0023] 图3是根据本发明实施例的机器学习模型的编译优化方法的流程图;
[0024] 图4是根据本发明一个可选实施例的机器学习模型的编译优化方法示意图一;
[0025] 图5是根据本发明一个可选实施例的机器学习模型的编译优化方法示意图二;
[0026] 图6是根据本发明一个可选实施例的机器学习模型的编译优化方法示意图三;
[0027] 图7是根据本发明实施例的机器学习模型的编译优化装置的结构框图;
[0028] 图8是根据本发明实施例的一种可选的电子设备的结构示意图。

具体实施方式

[0029] 为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是
本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人
员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范
围。
[0030] 需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用
的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或
描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆
盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于
清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品
或设备固有的其它步骤或单元。
[0031] 根据本发明实施例的一个方面,提供了一种机器学习模型的编译优化方法,可选地,作为一种可选的实施方式,上述机器学习模型的编译优化方法可以但不限于应用于如
图1所示的环境中。如图1所示,服务器102通过网络与终端104进行连接,上述网络包括但不
限于:广域网、城域网或局域网,终端104并不限定于PC、手机、平板电脑等。本发明实施例的
事浏览器中显示目标样式的方法可以由服务器102来执行,也可以由终端104来执行,还可
以是由服务器102和终端104共同执行。
[0032] 作为一个可选的实施方式,上述机器学习模型的编译优化方法可以应用到如图2所示的优化框架中。在图2所示的优化框架中,输入预热数据包括N个数据集,输入预热数
据,按照没有优化过的计算图,执行图中的每一个操作。在执行过程中采集运行时信息,包
括张量的形状,操作运行的时间,输入输出传输的时间,占用内存显存的大小等。对预热数
据的处理结果一般可以废弃。预热可以执行多个迭代步,每个迭代步每个操作的运行信息
都采集下来。静态信息预处理可以提取计算图的静态信息,比如节点计划分配的设备,节点
拓扑邻域信息、设备、运行环境等信息等。
[0033] 把预热运行采集到的信息和计算图本身的静态信息综合分析,划定编译区域得到优化后的计算图,在划分编译区域的时候可以参考形状改变的信息。当划分编译区域这类
优化做完以后,我们得到了新的优化后的计算图。这时候我们就开始正式的图运行了,也就
是正式模型运行,开始训练或者推理。输入正式数据按照优化后的计算图,执行图中每一个
操作,完成模型计算。
[0034] 上述仅是一种示例,本实施例中对此不作任何限定。
[0035] 可选地,作为一种可选的实施方式,如图3所示,上述机器学习模型的编译优化方法包括如下步骤:
[0036] 步骤S302,运行第一机器学习模型分别对N个数据集进行处理,得到N组模型运行信息,其中,对于每个所述数据集,所述第一机器学习模型被多次运行,得到一组所述模型
运行信息,所述第一机器学习模型包括第一组操作,所述第一组操作中的操作为允许被目
标编译器处理的操作,每组所述模型运行信息用于指示:在所述多次运行所述第一机器学
习模型对一个所述数据集进行处理的过程中,所述第一组操作中的每个操作的输入张量和
输出张量的形状是否发生变化,N为大于1的自然数;
[0037] 步骤S304,根据所述N组模型运行信息,在所述第一组操作中确定出N个操作集合;
[0038] 步骤S306,根据所述N个操作集合,在所述第一组操作中确定允许被分别编译的多个操作子集合,其中,所述多个操作子集合设置为允许被所述目标编译器分别编译;
[0039] 步骤S308,使用所述目标编译器分别对与每个所述编译区域对应的所述操作子集合进行编译。
[0040] 作为一个可选的实施例,张量Tensor是一种数据结构,可理解为向量或数组矩阵。一般来说,一维的张量为向量,二维以上的张量为数组矩阵。张量的形状可以指数组的维
度,例如m×n维的数组。
[0041] 作为一个可选的实施方式,所述N个操作集合中每个操作集合包括第一操作子集合和第二操作子集合,每个所述第一操作子集合包括在所述多次运行所述第一机器学习模
型对一个所述数据集进行处理的过程中输入张量和输出张量的形状均未发生变化的操作,
每个所述第二操作子集合包括在所述多次运行所述第一机器学习模型对一个所述数据集
进行处理的过程中输入张量和/或输出张量的形状发生变化的操作
[0042] 可选地,上述方法还包括:获取待编译的第一机器学习模型,其中,所述第一机器学习模型包括一组预热操作,所述一组预热操作和一组预热操作的输入张量和输出张量形
成第一计算图;在所述第一计算图中确定出所述目标编译器不支持的第三操作;确定所述
一组预热操作中除了所述第三操作之外的操作为所述第一组操作。
[0043] 作为一个可选的实施方式,图4为一种可选的第一计算图的结构图。在本实施例中,在图4中操作A、操作B、操作C和操作D,以及各个操作的输入张量和输出张量(张量A、B、
C、D、E、G、F)组成了第一机器学习模型的第一计算图。在第一计算图中,操作A、操作B、操作C
和操作D依次顺次连接,操作A的输出张量D作为操作B的输入张量。
[0044] 作为一个可选的实施方式,目标编译器可以是JIT编译器。对于JIT编译器而言,存在支持和不支持的操作。例如,在图4中所示的第一计算图中所包括的操作A、操作B、操作C、
操作D均是JIT编译器支持编译的操作的情况下,第一机器学习模型的第一组操作包括:操
作A、操作B、操作C、操作D。又例如,在图4中所示的第一计算图中,JIT编译器仅支持编译其
中的部分操作,假设JIT编译器支持编译操作OperationA,OperationB,OperationC,但不支
持操作OperationD的情况下,第一机器学习模型的第一组操作包括:操作A、操作B、操作C,
而对于JIT编译器不支持的操作D可以先将其划分在一个单独的编译区域。
[0045] 作为一个可选的实施方式,输入至第一机器学习模型的预热数据包括N个数据集,N个数据集之间的差别在于部分变量不同。在对每个数据集进行多次运行处理的过程中,采
样每一次运行处理的过程中每个操作的输入张量和输出张量,对每个数据集进行多次运行
处理后,比较每个操作的输入张量和输出张量的形状是否发生变化,以此得到与该数据集
对应的模型运行信息,根据模型运行信息,可以将第一机器学习模型的第一组操作中的操
作划分成两个操作子集,其中,第一操作子集中所包括的操作是在多次对该数据集进行运
行处理的过程中,输入张量和输出张量均未发生变化的操作,可以称为稳定操作。第二操作
子集中所包括的操作是在多次对该数据集进行运行处理的过程中,输入张量和/或输出张
量的形状发生变化的操作,可以称为形变操作。对N个数据集分别执行上述操作后,可以得
到与N个数据集分别对应的N组模型运行信息,以及与N个数据集分别对应的N个操作集合。
[0046] 作为一个可选的实施方式,根据N个操作集合,将第一机器学习模型的第一计算图中的一组操作划分为多个操作子集合,每个操作子集合中可以包括多个操作,对多个操作
进行合并优化,为每个操作子集合中的多个操作分配对应的编译区域,得到对第一机器学
习模型进行优化后的第二机器学习模型的第二计算图。由于对计算图进行了合并优化,对
优化后的计算图进行编译时可以节省时间,提高效率。
[0047] 可选地,每个所述操作集合包括第一操作子集合和第二操作子集合,每个所述第一操作子集合包括在所述多次运行所述第一机器学习模型对一个所述数据集进行处理的
过程中输入张量和输出张量的形状均未发生变化的操作,每个所述第二操作子集合包括在
所述多次运行所述第一机器学习模型对一个所述数据集进行处理的过程中输入张量和/或
输出张量的形状发生变化的操作,其中,所述根据所述N个操作集合,在所述第一组操作中
确定允许被分别编译的多个操作子集合,包括:对于所述N个操作集合中的每个操作集合,
执行以下操作,其中,在执行以下操作的过程中,所述每个操作集合被视为当前操作集合:
在所述第一组操作中确定是否存在第三操作子集合,其中,所述第三操作子集合中的操作
仅出现在所述当前操作集合中的所述第二操作子集合中、而未出现在所述N个操作集合中
除所述当前操作集合之外的操作集合中的所述第二操作子集合中;其中,在存在所述第三
操作子集合的情况下,所述第三操作子集合为所述多个操作子集合中的一个操作子集合。
[0048] 作为一个可选的实施方式,影响一组操作中每个操作的输入和/或输出张量的形状发生变化的因素是不同的。以图4所示的计算图为例,假设操作、操作B、操作C均为形变操
作,如果操作A和操作B的张量形状变化只和变量x有关,且频率很低,而操作C的张量形状变
化只和变量y有关,且频率也较低。但是若将操作A、操作B和操作C融合而成新的操作ABC的
张量形状变化就即和x有关,又和y有关。如果x和y不相关,那么操作ABC的张量形状变化频
率就很高。例如x的变化范围是1到120,y的变化范围也是1到100,由于操作ABC的张量变化
即和x相关又和y相关,那么它的变化就需要120*100次。而原先操作A,操作B形状变化只和x
相关,只要120次,操作C的形状变化只和y相关,只要100次。融合后重编译的次数大大增加
了。在本实施例中,可以基于影响操作的张量形状发生变化的因素,对一组操作中的操作进
行合并优化。
[0049] 作为一个可选的实施方案,在对N个数据集中的每个数据集进行处理的过程中,每个数据集内的一个或多个变量变化,每次运行第一机器学习模型输入变化后的数据集,分
别运行采样每一个数据集在多次运行的过程中的张量形状信息,记录这个数据集内受张量
形状变化所影响的操作。在本实施例中,以图5所示的计算图中为例进行说明,假设该计算
图中所包括的操作均为目标编译器支持的操作。假设在数据集1中操作A,操作B和操作C的
张量形状随参数x和y的变化而变化,则确定通过该数据集确定的张量形状发生变化的操作
为操作A,操作B和操作C,其余的操作为张量形状稳定的操作,如下表1为通过数据集1确定
出第一组操作中的张量形状发生变化的操作,以及张量形状稳定的操作。假设在数据集2中
操作C和操作D的张量形状随参数z的变化而变化,则确定通过该数据集确定的张量形状发
生变化的操作为操作C和操作D,其余的操作为张量形状稳定的操作,如下表2为通过数据集
2确定出第一组操作中的张量形状发生变化的操作,以及张量形状稳定的操作。
[0050] 表1
[0051] 数据集1 张量形状发生变化的操作 张量形状稳定的操作具体操作 操作A,操作B,操作C 操作D,操作,操作F
[0052] 表2
[0053]
[0054] 结合上述表1和表2可以确定出第一组操作中每个操作在对数据集1和数据集2进行运行处理的过程中,每个操作的张量形状信息,如下表3所示。
[0055] 表3
[0056]
[0057] 在本实施例中,第三操作子集合可以是操作A和操作B组成的集合,也可以是仅包括操作D的集合。将只在数据集1中变化的操作和操作B划为一个编译区域P,把只在数据集2
中变化的操作D划为另一个编译区域Q。这里编译区域P和编译区域Q可以分别编译。这样两
个编译区域的张量形状变化的频率都不高。
[0058] 可选地,每个所述操作集合包括第一操作子集合和第二操作子集合,每个所述第一操作子集合包括在所述多次运行所述第一机器学习模型对一个所述数据集进行处理的
过程中输入张量和输出张量的形状均未发生变化的操作,每个所述第二操作子集合包括在
所述多次运行所述第一机器学习模型对一个所述数据集进行处理的过程中输入张量和/或
输出张量的形状发生变化的操作,其中,所述根据所述N个操作集合,在所述第一组操作中
确定允许被分别编译的多个操作子集合,包括:对所述N个操作集合中的所述第一操作子集
合取交集,得到第四操作子集合,其中,所述第四操作子集合为所述多个操作子集合中的一
个操作子集合。
[0059] 作为一个可选的实施方式,第一操作子集合中所包括的是输入张量和输出张量的形状均未发生变化的操作。在本实施例中,将在对N个数据集进行多次运行处理的过程中,
输入张量和输出张量的形状未发生变化的操作为第四操作子集合中的操作,也就是说,第
四操作子集合中的操作是在对N个数据集进行多次运行处理的过程中,输入张量和输出张
量的形状均为发生变化的操作。在上述表3中,以操作E和操作F构成的操作集合为第四操作
子集合。把两次次预热都不发生形状变化操作E和操作F划分入一个编译区域R。
[0060] 可选地,所述方法还包括:对所述N个操作集合中的所述第二操作子集合取交集,得到第五操作子集合;将所述第五操作子集合中的操作设置为放弃使用搜索目标编译器进
行编译。
[0061] 作为一个可选的实施方式,第五操作子集合中所包括的操作是在对N个数据集合进行预热处理的过程中,张量形状均发送变化的操作,张量形状是指输入和/或输出张量。
对于此种操作,能够影响其张量的形状发生变化的因素多,变化的频率高,可以放弃对此种
操作的编译。在表3所示的操作中,两次预热都发生变化的操作C由于变化频率太高,放弃编
译。作为一个可选的实施方式,将图5所示的计算图中所包括的操作进行合并优化后,得到
优化后的计算图如图6所示。
[0062] 可选地,所述根据所述N个操作集合,在所述第一组操作中确定允许被分别编译的多个操作子集合,包括:在所述第一组操作中确定是否存在第六操作子集合,其中,所述第
六操作子集合中的操作包括:在所述多次运行所述第一机器学习模型对所述N个数据集中
的第一个数据集进行处理的过程中输入张量和输出张量的形状均未发生变化,且在对所述
N个数据集中除了所述第一个数据集之外的其它N‑1个数据集进行处理的过程中输入张量
和/或输出张量的形状发生变化的操作,以及在所述多次运行所述第一机器学习模型对所
述N个数据集中的第M个数据集进行处理的过程中输入张量和/或输出张量的形状发生变
化,且除了所述第M个数据集之外的其它N‑1个数据集进行处理的过程中输入张量和输出张
量的形状均未发生变化的操作,其中,所述第M个数据集为所述N个数据集中除所述第一个
数据集之外的数据集;其中,在存在所述第六操作子集合的情况下,所述第六操作子集合为
所述多个操作子集合中的一个操作子集合。
[0063] 作为一个可选的实施方式,对于更多数据集,不一定完全根据正交结果,每一类划N
分不同编译区域。比如N个预热数据集可以分成2 个正交结果。这时候每类都要单独划分成
一个编译区域可能太零散了,可以合并其中几类。
[0064] 在本实施例中,以N=3,也就是数据集为3个为例进行说明,N=3的时候有8类操作,可以分别记为000,001,010,100,011,101,110和111,其中,000代表三次预热全部稳定,
001代表仅第三次形状变化,010代表仅第二次形状变化,100代表仅第一次形状变化,011代
表仅第一次形状稳定,101代表仅第二次形状稳定,110代表仅第三次形状稳定,111代表全
部形状变化。可以将001,010,011划分在同一个编译区域。其中,在多次运行所述第一机器
学习模型对N个数据集中的第一个数据集进行处理的过程中输入张量和输出张量的形状均
未发生变化,且在对N个数据集中除了第一个数据集之外的其它N‑1个数据集进行处理的过
程中输入张量和/或输出张量的形状发生变化的操作,即为在本实施例中的011代表仅第一
次形状稳定。其中,在多次运行第一机器学习模型对N个数据集中第M个数据集进行处理的
过程中输入张量和/或输出张量的形状发生变化,且除了第M个数据集之外的其它N‑1个数
据集进行处理的过程中输入张量和输出张量的形状均未发生变化的操作,即为在本实施例
中的001仅第三次形状变化,010代表仅第二次形状变化。
[0065] 作为一个可选的实施方式,将在对N个数据集进行处理的过程中,输入张量和输出张量均为发生变化的操作可以作为上述第四操作子集中的操作,将第四子集中的操作单独
划分在一个编译区域。在以N=3,也就是数据集为3个为例的上述实施例中,将000所代表三
次预热全部稳定的操作单独划分在一个编译区域。
[0066] 可选地,所述根据所述N个操作集合,在所述第一组操作中确定允许被分别编译的多个操作子集合,包括:在所述第一组操作中确定是否存在第七操作子集合,其中,所述第
七操作子集合中的操作为在所述多次运行所述第一机器学习模型对所述N个数据集中的第
一个数据集进行处理的过程中输入张量和/或输出张量的形状发生变化,且在对所述N个数
据集中除了所述第一个数据集之外的其它N‑1个数据集进行处理的过程中输入张量和输出
张量的形状均未发生变化的操作;其中,在存在所述第七操作子集合的情况下,所述第七操
作子集合为所述多个操作子集合中的一个操作子集合。
[0067] 作为一个可选的实施方式,在对N个数据集进行预热处理的过程中,将仅在对第一个数据集进行处理的过程中,张量的形状发生变化的操作作为第七操作子集合中的操作。
以上述N=3为例进行说明,在本实施例中,将100所代表仅在对第一个数据集进行处理时,
第一次形状变化的操作划分在同一个编译区域。
[0068] 可选地,所述根据所述N个操作集合,在所述第一组操作中确定允许被分别编译的多个操作子集合,包括:在所述第一组操作中确定是否存在第八操作子集合,其中,所述第
八操作子集合中的操作为在所述多次运行所述第一机器学习模型对所述N个数据集中第M
个数据集进行处理的过程中输入张量和输出张量的形状均未发生变化,且除了所述第M个
数据集之外的其它N‑1个数据集进行处理的过程中输入张量和/或输出张量的形状发生变
化的操作,其中,所述第M个数据集为所述N个数据集中除第一个数据集之外的数据集;其
中,在存在所述第八操作子集合的情况下,所述第八操作子集合为所述多个操作子集合中
的一个操作子集合。
[0069] 作为一个可选的实施方式,将在对N个数据集进行预热处理的过程中,仅某一个数据集进行处理的过程中,张量形状未发生变化的操作作为第八操作子集合中的操作,其中,
某一个数据集是N个数据集中除了第一个数据集之外的数据集。在上述N=3的例子中,将
101代表仅第二次形状稳定的操作单独划分在一个编译区域,将110仅第三次形状稳定的操
作单独划分在一个编译区域。
[0070] 可选地,所述根据所述N个操作集合,在所述第一组操作中确定允许被分别编译的多个操作子集合,包括:在所述第一组操作中确定是否存在第九操作子集合,其中,所述第
九操作子集合中的操作为在所述多次运行所述第一机器学习模型对所述N个数据集中进行
处理的过程中,输入张量和/或输出张量的形状发生变化的操作;其中,在存在所述第九操
作子集合的情况下,所述第八操作子集合为所述多个操作子集合中的一个操作子集合。
[0071] 作为一个可选的实施方式,将在对N个数据集进行处理的过程中,对每个数据集进行处理的过程中,张量的形状均发生变化的操作作为第九操作子集合中的操作。也就是说,
第九操作子集合中所包括的是在对N个数据集进行处理的过程中张量的形状均发生变化的
操作。在上述N=3的例子中,111三次全部形状变化的操作单独划分在一个编译区域。
[0072] 可选地,对于每个所述数据集,所述第一机器学习模型被多次运行,得到一组所述模型运行信息,包括:重复执行多次以下步骤:将数据集中的多个输入张量分别输入至所述
第一组操作中部分或全部的操作每运行一次所述第一机器学习模型,修改所述数据集中的
一个或多个变量的变量值,在下一次运行所述第一机器学习模型时,将修改后的数据集的
多个输入张量分别输入至所述第一组操作中部分或全部的操作,运行一次所述第一机器学
习模型,得到所述第一组操作中的每个操作的输入张量和输出张量;比较在所述多次运行
所述第一机器学习模型的过程中所述第一组操作中的每个操作的输入张量和输出张量的
形状是否发生变化,得到一组所述模型运行信息。
[0073] 作为一个可选的实施方式,对于N个数据集中的每个数据集进行多次运行处理,在对每个数据集进行多次运行处理的过程中控制这些数据集内的预热数据的部分变量变化。
例如,对数据集1进行第一次运行处理后,改变数据集1中的部分变量值变化,例如可以是变
量x和y的参数变化,也可以是变量z的参数发生变化。N个数据集之间所变化的变量可以相
同也可以不同。例如在多次运行处理第一个数据集时,控制第一个数据集的x和y的变参数
化。在多次运行处理第二个数据集时,控制第二个数据集的z参数变化。
[0074] 可选地,在所述允许被分别编译的一个操作子集合中包括多个目标操作的情况下,使用所述目标编译器将所述多个目标操作合并成一个操作,保留所述第一机器学习模
型中除所述多个目标操作之外的操作,并将所述多个目标操作的输入张量和输出张量转换
为所述一个操作的输入张量和输出张量,得到第二机器学习模型;或者使用所述目标编译
器将所述第一机器学习模型中的所述多个目标操作合并成多个操作,保留所述第一机器学
习模型中除所述多个目标操作之外的操作,并将所述多个目标操作的输入张量和输出张量
转换为合并成的所述多个操作的输入张量和输出张量,得到第二机器学习模型,其中,所述
合并成的所述多个操作中操作的数量小于所述多个目标操作中操作的数量。
[0075] 作为一个可选的实施方式,在一个操作子集合中包括多个操作的情况下,可以将多个操作合并成一个操作,也可以合并成多个操作。
[0076] 可选地,使用所述目标编译器分别对与每个所述编译区域对应的所述操作子集合进行编译,包括:将正式数据输入至所述第二机器学习模型;使用所述目标编译器对所述第
二机器学习模型进行编译,得到所述第二机器学习模型对所述正式数据进行处理后输出的
处理结果。
[0077] 作为一个可选的实施方式,在对第一机器学习模型的第一组操作进行合并优化后,得到第二机器学习模型。通过第二机器学习模型对正式数据进行编译处理,由于基于操
作的输入张量和输出张量的信息对计算图进行了优化,从而提高了编译的效率。
[0078] 需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为
依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知
悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明
所必须的。
[0079] 根据本发明实施例的另一个方面,还提供了一种用于实施上述机器学习模型的编译优化方法的机器学习模型的编译优化装置。如图7所示,该装置包括:运行模块702,用于
运行第一机器学习模型分别对N个数据集进行处理,得到N组模型运行信息,其中,对于每个
所述数据集,所述第一机器学习模型被多次运行,得到一组所述模型运行信息,所述第一机
器学习模型包括第一组操作,所述第一组操作中的操作为允许被目标编译器处理的操作,
每组所述模型运行信息用于指示在所述多次运行所述第一机器学习模型对一个所述数据
集进行处理的过程中,所述第一组操作中的每个操作的输入张量和输出张量的形状是否发
生变化,N为大于1的自然数;第一确定模块704,用于根据所述N组模型运行信息,在所述第
一组操作中确定出N个操作集合;第二确定模块706,用于根据所述N个操作集合,在所述第
一组操作中确定允许被分别编译的多个操作子集合,其中,所述多个操作子集合设置为允
许被所述目标编译器分别编译;编译模块708,用于使用所述目标编译器分别对与每个所述
编译区域对应的所述操作子集合进行编译。
[0080] 可选地,每个所述操作集合包括第一操作子集合和第二操作子集合,每个所述第一操作子集合包括在所述多次运行所述第一机器学习模型对一个所述数据集进行处理的
过程中输入张量和输出张量的形状均未发生变化的操作,每个所述第二操作子集合包括在
所述多次运行所述第一机器学习模型对一个所述数据集进行处理的过程中输入张量和/或
输出张量的形状发生变化的操作,其中,所述第二确定模块包括:执行单元,用于对于所述N
个操作集合中的每个操作集合,执行以下操作,其中,在执行以下操作的过程中,所述每个
操作集合被视为当前操作集合:在所述第一组操作中确定是否存在第三操作子集合,其中,
所述第三操作子集合中的操作仅出现在所述当前操作集合中的所述第二操作子集合中、而
未出现在所述N个操作集合中除所述当前操作集合之外的操作集合中的所述第二操作子集
合中;其中,在存在所述第三操作子集合的情况下,所述第三操作子集合为所述多个操作子
集合中的一个操作子集合。
[0081] 可选地,上述装置还用于对所述N个操作集合中的所述第一操作子集合取交集,得到第四操作子集合,其中,所述第四操作子集合为所述多个操作子集合中的一个操作子集
合。
[0082] 可选地,上述装置还用于对所述N个操作集合中的所述第二操作子集合取交集,得到第五操作子集合;将所述第五操作子集合中的操作设置为放弃使用搜索目标编译器进行
编译。
[0083] 可选地,上述装置还用于在所述第一组操作中确定是否存在第六操作子集合,其中,所述第六操作子集合中的操作包括:在所述多次运行所述第一机器学习模型对所述N个
数据集中的第一个数据集进行处理的过程中输入张量和输出张量的形状均未发生变化,且
在对所述N个数据集中除了所述第一个数据集之外的其它N‑1个数据集进行处理的过程中
输入张量和/或输出张量的形状发生变化的操作,以及在所述多次运行所述第一机器学习
模型对所述N个数据集中的第M个数据集进行处理的过程中输入张量和/或输出张量的形状
发生变化,且除了所述第M个数据集之外的其它N‑1个数据集进行处理的过程中输入张量和
输出张量的形状均未发生变化的操作,其中,所述第M个数据集为所述N个数据集中除所述
第一个数据集之外的数据集;其中,在存在所述第六操作子集合的情况下,所述第六操作子
集合为所述多个操作子集合中的一个操作子集合。
[0084] 可选地,上述装置还用于所述根据所述N个操作集合,在所述第一组操作中确定允许被分别编译的多个操作子集合,包括:在所述第一组操作中确定是否存在第七操作子集
合,其中,所述第七操作子集合中的操作为在所述多次运行所述第一机器学习模型对所述N
个数据集中的第一个数据集进行处理的过程中输入张量和/或输出张量的形状发生变化,
且在对所述N个数据集中除了所述第一个数据集之外的其它N‑1个数据集进行处理的过程
中输入张量和输出张量的形状均未发生变化的操作;其中,在存在所述第七操作子集合的
情况下,所述第七操作子集合为所述多个操作子集合中的一个操作子集合。
[0085] 可选地,上述装置还用于在所述第一组操作中确定是否存在第八操作子集合,其中,所述第八操作子集合中的操作为在所述多次运行所述第一机器学习模型对所述N个数
据集中第M个数据集进行处理的过程中输入张量和输出张量的形状均未发生变化,且除了
所述第M个数据集之外的其它N‑1个数据集进行处理的过程中输入张量和/或输出张量的形
状发生变化的操作,其中,所述第M个数据集为所述N个数据集中除第一个数据集之外的数
据集;其中,在存在所述第八操作子集合的情况下,所述第八操作子集合为所述多个操作子
集合中的一个操作子集合。
[0086] 可选地,上述装置还用于在所述第一组操作中确定是否存在第九操作子集合,其中,所述第九操作子集合中的操作为在所述多次运行所述第一机器学习模型对所述N个数
据集中进行处理的过程中,输入张量和/或输出张量的形状发生变化的操作;其中,在存在
所述第九操作子集合的情况下,所述第九操作子集合为所述多个操作子集合中的一个操作
子集合。
[0087] 可选地,上述装置还用于对于每个所述数据集,所述第一机器学习模型被多次运行,得到一组所述模型运行信息,包括:重复执行多次以下步骤:将数据集中的多个输入张
量分别输入至所述第一组操作中部分或全部的操作;每运行一次所述第一机器学习模型,
修改所述数据集中的一个或多个变量的变量值,在下一次运行所述第一机器学习模型时,
将修改后的数据集的多个输入张量分别输入至所述第一组操作中部分或全部的操作,运行
一次所述第一机器学习模型,得到所述第一组操作中的每个操作的输入张量和输出张量;
比较在所述多次运行所述第一机器学习模型的过程中所述第一组操作中的每个操作的输
入张量和输出张量的形状是否发生变化,得到一组所述模型运行信息。
[0088] 可选地,上述装置还用于在所述允许被分别编译的一个操作子集合中包括多个目标操作的情况下,使用所述目标编译器将所述多个目标操作合并成一个操作,保留所述第
一机器学习模型中除所述多个目标操作之外的操作,并将所述多个目标操作的输入张量和
输出张量转换为所述一个操作的输入张量和输出张量,得到第二机器学习模型;或者使用
所述目标编译器将所述第一机器学习模型中的所述多个目标操作合并成多个操作,保留所
述第一机器学习模型中除所述多个目标操作之外的操作,并将所述多个目标操作的输入张
量和输出张量转换为合并成的所述多个操作的输入张量和输出张量,得到第二机器学习模
型,其中,所述合并成的所述多个操作中操作的数量小于所述多个目标操作中操作的数量。
[0089] 可选地,上述装置还用于将正式数据输入至所述第二机器学习模型;使用所述目标编译器对所述第二机器学习模型进行编译,得到所述第二机器学习模型对所述正式数据
进行处理后输出的处理结果。
[0090] 根据本发明实施例的又一个方面,还提供了一种用于实施上述机器学习模型的编译优化方法的电子设备,该电子设备可以是终端设备或服务器。本实施例以该电子设备为
服务器为例来说明。如图8所示,该电子设备包括存储器802和处理器804,该存储器802中存
储有计算机程序,该处理器804被设置为通过计算机程序执行上述任一项方法实施例中的
步骤。
[0091] 可选地,在本实施例中,上述电子设备可以位于计算机网络的多个网络设备中的至少一个网络设备。
[0092] 可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:
[0093] S1,运行第一机器学习模型分别对N个数据集进行处理,得到N组模型运行信息,其中,对于每个所述数据集,所述第一机器学习模型被多次运行,得到一组所述模型运行信
息,所述第一机器学习模型包括第一组操作,所述第一组操作中的操作为允许被目标编译
器处理的操作,每组所述模型运行信息用于指示:在所述多次运行所述第一机器学习模型
对一个所述数据集进行处理的过程中,所述第一组操作中的每个操作的输入张量和输出张
量的形状是否发生变化,N为大于1的自然数;
[0094] S2,根据所述N组模型运行信息,在所述第一组操作中确定出N个操作集合;
[0095] S3,根据所述N个操作集合,在所述第一组操作中确定允许被分别编译的多个操作子集合,其中,所述多个操作子集合设置为允许被所述目标编译器分别编译;
[0096] S4,使用所述目标编译器分别对与每个所述编译区域对应的所述操作子集合进行编译。
[0097] 可选地,本领域普通技术人员可以理解,图8所示的结构仅为示意,电子装置电子设备也可以是智能手机(如Android手机、iOS手机等)、平板电脑、掌上电脑以及移动互联网
设备(Mobile Internet Devices,MID)、PAD等终端设备。图8其并不对上述电子装置电子设
备的结构造成限定。例如,电子装置电子设备还可包括比图8中所示更多或者更少的组件
(如网络接口等),或者具有与图8所示不同的配置。
[0098] 其中,存储器802可用于存储软件程序以及模块,如本发明实施例中的机器学习模型的编译优化方法和装置对应的程序指令/模块,处理器804通过运行存储在存储器802内
的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的机器学习模型
的编译优化方法。存储器802可包括高速随机存储器,还可以包括非易失性存储器,如一个
或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器802可
进一步包括相对于处理器804远程设置的存储器,这些远程存储器可以通过网络连接至终
端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。其
中,存储器802具体可以但不限于用于第一组操作,以及第一组操作中的每个操作的输入张
量和输出张量等信息。作为一种示例,如图8所示,上述存储器802中可以但不限于包括上述
机器学习模型的编译优化装置中的运行模块702、第一确定模块704、第二确定模块706、编
译模块708。此外,还可以包括但不限于上述机器学习模型的编译优化装置中的其他模块单
元,本示例中不再赘述。
[0099] 此外,上述电子设备还包括:显示器808和连接总线810,连接总线用于连接上述电子设备中的各个模块部件。
[0100] 在其他实施例中,上述终端设备或者服务器可以是一个分布式系统中的一个节点,其中,该分布式系统可以为区块链系统,该区块链系统可以是由该多个节点通过网络通
信的形式连接形成的分布式系统。其中,节点之间可以组成点对点(P2P,Peer To Peer)网
络,任意形式的计算设备,比如服务器、终端等电子设备都可以通过加入该点对点网络而成
为该区块链系统中的一个节点。
[0101] 根据本发明的实施例的又一方面,还提供了一种计算机可读的存储介质,该计算机可读的存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任
一项方法实施例中的步骤。
[0102] 可选地,在本实施例中,上述计算机可读的存储介质可以被设置为存储用于执行以下步骤的计算机程序:
[0103] S1,运行第一机器学习模型分别对N个数据集进行处理,得到N组模型运行信息,其中,对于每个所述数据集,所述第一机器学习模型被多次运行,得到一组所述模型运行信
息,所述第一机器学习模型包括第一组操作,所述第一组操作中的操作为允许被目标编译
器处理的操作,每组所述模型运行信息用于指示在所述多次运行所述第一机器学习模型对
一个所述数据集进行处理的过程中,所述第一组操作中的每个操作的输入张量和输出张量
的形状是否发生变化,N为大于1的自然数;
[0104] S2,根据所述N组模型运行信息,在所述第一组操作中确定出N个操作集合;
[0105] S3,根据所述N个操作集合,在所述第一组操作中确定允许被分别编译的多个操作子集合,其中,所述多个操作子集合设置为允许被所述目标编译器分别编译;
[0106] S4,使用所述目标编译器分别对与每个所述编译区域对应的所述操作子集合进行编译。
[0107] 可选地,在本实施例中,本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于
一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read‑Only Memory,
ROM)、随机存取器(Random Access Memory,RAM)、磁盘或光盘等。
[0108] 上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
[0109] 上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本发明的技
术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软
件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一
台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所
述方法的全部或部分步骤。
[0110] 在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
[0111] 在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一
种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者
可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之
间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连
接,可以是电性或其它的形式。
[0112] 所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个
网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目
的。
[0113] 另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单
元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0114] 以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应
视为本发明的保护范围。