机器学习模型的编译优化方法和装置转让专利
申请号 : CN202010366380.6
文献号 : CN111580828B
文献日 : 2021-08-27
发明人 : 姜曦楠 , 朱子霖 , 周飞虎 , 郭振宇
申请人 : 腾讯科技(深圳)有限公司
摘要 :
权利要求 :
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任一项中所述的方法。
说明书 :
机器学习模型的编译优化方法和装置
技术领域
背景技术
致在多次迭代过程中因为部分操作张量形状变化引发计算图大部分操作的重新编译。这类
重编译非常耗时且耗内存。
发明内容
题。
所述数据集,所述第一机器学习模型被多次运行,得到一组所述模型运行信息,所述第一机
器学习模型包括第一组操作,所述第一组操作中的操作为允许被目标编译器处理的操作,
每组所述模型运行信息用于指示:在所述多次运行所述第一机器学习模型对一个所述数据
集进行处理的过程中,所述第一组操作中的每个操作的输入张量和输出张量的形状是否发
生变化,N为大于1的自然数;根据所述N组模型运行信息,在所述第一组操作中确定出N个操
作集合;根据所述N个操作集合,在所述第一组操作中确定允许被分别编译的多个操作子集
合,其中,所述多个操作子集合设置为允许被所述目标编译器分别编译;使用所述目标编译
器分别对与每个所述编译区域对应的所述操作子集合进行编译。
过程中输入张量和输出张量的形状均未发生变化的操作,每个所述第二操作子集合包括在
所述多次运行所述第一机器学习模型对一个所述数据集进行处理的过程中输入张量和/或
输出张量的形状发生变化的操作,其中,所述根据所述N个操作集合,在所述第一组操作中
确定允许被分别编译的多个操作子集合,包括:对于所述N个操作集合中的每个操作集合,
执行以下操作,其中,在执行以下操作的过程中,所述每个操作集合被视为当前操作集合:
在所述第一组操作中确定是否存在第三操作子集合,其中,所述第三操作子集合中的操作
仅出现在所述当前操作集合中的所述第二操作子集合中、而未出现在所述N个操作集合中
除所述当前操作集合之外的操作集合中的所述第二操作子集合中;其中,在存在所述第三
操作子集合的情况下,所述第三操作子集合为所述多个操作子集合中的一个操作子集合。
过程中输入张量和输出张量的形状均未发生变化的操作,每个所述第二操作子集合包括在
所述多次运行所述第一机器学习模型对一个所述数据集进行处理的过程中输入张量和/或
输出张量的形状发生变化的操作,其中,所述根据所述N个操作集合,在所述第一组操作中
确定允许被分别编译的多个操作子集合,包括:对所述N个操作集合中的所述第一操作子集
合取交集,得到第四操作子集合,其中,所述第四操作子集合为所述多个操作子集合中的一
个操作子集合。
行编译。
六操作子集合中的操作包括:在所述多次运行所述第一机器学习模型对所述N个数据集中
的第一个数据集进行处理的过程中输入张量和输出张量的形状均未发生变化,且在对所述
N个数据集中除了所述第一个数据集之外的其它N‑1个数据集进行处理的过程中输入张量
和/或输出张量的形状发生变化的操作,以及在所述多次运行所述第一机器学习模型对所
述N个数据集中的第M个数据集进行处理的过程中输入张量和/或输出张量的形状发生变
化,且除了所述第M个数据集之外的其它N‑1个数据集进行处理的过程中输入张量和输出张
量的形状均未发生变化的操作,其中,所述第M个数据集为所述N个数据集中除所述第一个
数据集之外的数据集;其中,在存在所述第六操作子集合的情况下,所述第六操作子集合为
所述多个操作子集合中的一个操作子集合。
七操作子集合中的操作为在所述多次运行所述第一机器学习模型对所述N个数据集中的第
一个数据集进行处理的过程中输入张量和/或输出张量的形状发生变化,且在对所述N个数
据集中除了所述第一个数据集之外的其它N‑1个数据集进行处理的过程中输入张量和输出
张量的形状均未发生变化的操作;其中,在存在所述第七操作子集合的情况下,所述第七操
作子集合为所述多个操作子集合中的一个操作子集合。
八操作子集合中的操作为在所述多次运行所述第一机器学习模型对所述N个数据集中第M
个数据集进行处理的过程中输入张量和输出张量的形状均未发生变化,且除了所述第M个
数据集之外的其它N‑1个数据集进行处理的过程中输入张量和/或输出张量的形状发生变
化的操作,其中,所述第M个数据集为所述N个数据集中除第一个数据集之外的数据集;其
中,在存在所述第八操作子集合的情况下,所述第八操作子集合为所述多个操作子集合中
的一个操作子集合。
九操作子集合中的操作为在所述多次运行所述第一机器学习模型对所述N个数据集中进行
处理的过程中,输入张量和/或输出张量的形状发生变化的操作;其中,在存在所述第九操
作子集合的情况下,所述第九操作子集合为所述多个操作子集合中的一个操作子集合。
第一组操作中部分或全部的操作;每运行一次所述第一机器学习模型,修改所述数据集中
的一个或多个变量的变量值,在下一次运行所述第一机器学习模型时,将修改后的数据集
的多个输入张量分别输入至所述第一组操作中部分或全部的操作,运行一次所述第一机器
学习模型,得到所述第一组操作中的每个操作的输入张量和输出张量;比较在所述多次运
行所述第一机器学习模型的过程中所述第一组操作中的每个操作的输入张量和输出张量
的形状是否发生变化,得到一组所述模型运行信息。
第一机器学习模型中除所述多个目标操作之外的操作,并将所述多个目标操作的输入张量
和输出张量转换为所述一个操作的输入张量和输出张量,得到第二机器学习模型;或者使
用所述目标编译器将所述第一机器学习模型中的所述多个目标操作合并成多个操作,保留
所述第一机器学习模型中除所述多个目标操作之外的操作,并将所述多个目标操作的输入
张量和输出张量转换为合并成的所述多个操作的输入张量和输出张量,得到第二机器学习
模型,其中,所述合并成的所述多个操作中操作的数量小于所述多个目标操作中操作的数
量。
二机器学习模型进行编译,得到所述第二机器学习模型对所述正式数据进行处理后输出的
处理结果。
息,其中,对于每个所述数据集,所述第一机器学习模型被多次运行,得到一组所述模型运
行信息,所述第一机器学习模型包括第一组操作,所述第一组操作中的操作为允许被目标
编译器处理的操作,每组所述模型运行信息用于指示:在所述多次运行所述第一机器学习
模型对一个所述数据集进行处理的过程中,所述第一组操作中的每个操作的输入张量和输
出张量的形状是否发生变化,N为大于1的自然数;第一确定模块,用于根据所述N组模型运
行信息,在所述第一组操作中确定出N个操作集合;第二确定模块,用于根据所述N个操作集
合,在所述第一组操作中确定允许被分别编译的多个操作子集合,其中,所述多个操作子集
合设置为允许被所述目标编译器分别编译;编译模块,用于使用所述目标编译器分别对与
每个所述编译区域对应的所述操作子集合进行编译。
学习模型的编译优化方法。
学习模型的编译优化方法。
信息,第一机器学习模型包括第一组操作,第一组操作中的操作为允许被目标编译器处理
的操作,每组模型运行信息用于指示:在多次运行所述第一机器学习模型对一个数据集进
行处理的过程中,第一组操作中的每个操作的输入张量和输出张量的形状是否发生变化,N
为大于1的自然数;根据N组模型运行信息,在第一组操作中确定出N个操作集合;使用目标
编译器分别对与每个编译区域对应的操作子集合进行编译。达到了引入机器学习模型编译
运行时的张量信息,对机器学习模型进行优化的目的,从而实现了提升机器学习模型的编
译效率的技术效果,进而解决了由于在机器学习在编译时没有引入运行时的采样信息,导
致的编译周期长、浪费资源的技术问题。
附图说明
具体实施方式
本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人
员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范
围。
的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或
描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆
盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于
清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品
或设备固有的其它步骤或单元。
图1所示的环境中。如图1所示,服务器102通过网络与终端104进行连接,上述网络包括但不
限于:广域网、城域网或局域网,终端104并不限定于PC、手机、平板电脑等。本发明实施例的
事浏览器中显示目标样式的方法可以由服务器102来执行,也可以由终端104来执行,还可
以是由服务器102和终端104共同执行。
据,按照没有优化过的计算图,执行图中的每一个操作。在执行过程中采集运行时信息,包
括张量的形状,操作运行的时间,输入输出传输的时间,占用内存显存的大小等。对预热数
据的处理结果一般可以废弃。预热可以执行多个迭代步,每个迭代步每个操作的运行信息
都采集下来。静态信息预处理可以提取计算图的静态信息,比如节点计划分配的设备,节点
拓扑邻域信息、设备、运行环境等信息等。
优化做完以后,我们得到了新的优化后的计算图。这时候我们就开始正式的图运行了,也就
是正式模型运行,开始训练或者推理。输入正式数据按照优化后的计算图,执行图中每一个
操作,完成模型计算。
运行信息,所述第一机器学习模型包括第一组操作,所述第一组操作中的操作为允许被目
标编译器处理的操作,每组所述模型运行信息用于指示:在所述多次运行所述第一机器学
习模型对一个所述数据集进行处理的过程中,所述第一组操作中的每个操作的输入张量和
输出张量的形状是否发生变化,N为大于1的自然数;
度,例如m×n维的数组。
型对一个所述数据集进行处理的过程中输入张量和输出张量的形状均未发生变化的操作,
每个所述第二操作子集合包括在所述多次运行所述第一机器学习模型对一个所述数据集
进行处理的过程中输入张量和/或输出张量的形状发生变化的操作
成第一计算图;在所述第一计算图中确定出所述目标编译器不支持的第三操作;确定所述
一组预热操作中除了所述第三操作之外的操作为所述第一组操作。
C、D、E、G、F)组成了第一机器学习模型的第一计算图。在第一计算图中,操作A、操作B、操作C
和操作D依次顺次连接,操作A的输出张量D作为操作B的输入张量。
操作D均是JIT编译器支持编译的操作的情况下,第一机器学习模型的第一组操作包括:操
作A、操作B、操作C、操作D。又例如,在图4中所示的第一计算图中,JIT编译器仅支持编译其
中的部分操作,假设JIT编译器支持编译操作OperationA,OperationB,OperationC,但不支
持操作OperationD的情况下,第一机器学习模型的第一组操作包括:操作A、操作B、操作C,
而对于JIT编译器不支持的操作D可以先将其划分在一个单独的编译区域。
样每一次运行处理的过程中每个操作的输入张量和输出张量,对每个数据集进行多次运行
处理后,比较每个操作的输入张量和输出张量的形状是否发生变化,以此得到与该数据集
对应的模型运行信息,根据模型运行信息,可以将第一机器学习模型的第一组操作中的操
作划分成两个操作子集,其中,第一操作子集中所包括的操作是在多次对该数据集进行运
行处理的过程中,输入张量和输出张量均未发生变化的操作,可以称为稳定操作。第二操作
子集中所包括的操作是在多次对该数据集进行运行处理的过程中,输入张量和/或输出张
量的形状发生变化的操作,可以称为形变操作。对N个数据集分别执行上述操作后,可以得
到与N个数据集分别对应的N组模型运行信息,以及与N个数据集分别对应的N个操作集合。
进行合并优化,为每个操作子集合中的多个操作分配对应的编译区域,得到对第一机器学
习模型进行优化后的第二机器学习模型的第二计算图。由于对计算图进行了合并优化,对
优化后的计算图进行编译时可以节省时间,提高效率。
过程中输入张量和输出张量的形状均未发生变化的操作,每个所述第二操作子集合包括在
所述多次运行所述第一机器学习模型对一个所述数据集进行处理的过程中输入张量和/或
输出张量的形状发生变化的操作,其中,所述根据所述N个操作集合,在所述第一组操作中
确定允许被分别编译的多个操作子集合,包括:对于所述N个操作集合中的每个操作集合,
执行以下操作,其中,在执行以下操作的过程中,所述每个操作集合被视为当前操作集合:
在所述第一组操作中确定是否存在第三操作子集合,其中,所述第三操作子集合中的操作
仅出现在所述当前操作集合中的所述第二操作子集合中、而未出现在所述N个操作集合中
除所述当前操作集合之外的操作集合中的所述第二操作子集合中;其中,在存在所述第三
操作子集合的情况下,所述第三操作子集合为所述多个操作子集合中的一个操作子集合。
作,如果操作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次。融合后重编译的次数大大增加
了。在本实施例中,可以基于影响操作的张量形状发生变化的因素,对一组操作中的操作进
行合并优化。
别运行采样每一个数据集在多次运行的过程中的张量形状信息,记录这个数据集内受张量
形状变化所影响的操作。在本实施例中,以图5所示的计算图中为例进行说明,假设该计算
图中所包括的操作均为目标编译器支持的操作。假设在数据集1中操作A,操作B和操作C的
张量形状随参数x和y的变化而变化,则确定通过该数据集确定的张量形状发生变化的操作
为操作A,操作B和操作C,其余的操作为张量形状稳定的操作,如下表1为通过数据集1确定
出第一组操作中的张量形状发生变化的操作,以及张量形状稳定的操作。假设在数据集2中
操作C和操作D的张量形状随参数z的变化而变化,则确定通过该数据集确定的张量形状发
生变化的操作为操作C和操作D,其余的操作为张量形状稳定的操作,如下表2为通过数据集
2确定出第一组操作中的张量形状发生变化的操作,以及张量形状稳定的操作。
中变化的操作D划为另一个编译区域Q。这里编译区域P和编译区域Q可以分别编译。这样两
个编译区域的张量形状变化的频率都不高。
过程中输入张量和输出张量的形状均未发生变化的操作,每个所述第二操作子集合包括在
所述多次运行所述第一机器学习模型对一个所述数据集进行处理的过程中输入张量和/或
输出张量的形状发生变化的操作,其中,所述根据所述N个操作集合,在所述第一组操作中
确定允许被分别编译的多个操作子集合,包括:对所述N个操作集合中的所述第一操作子集
合取交集,得到第四操作子集合,其中,所述第四操作子集合为所述多个操作子集合中的一
个操作子集合。
输入张量和输出张量的形状未发生变化的操作为第四操作子集合中的操作,也就是说,第
四操作子集合中的操作是在对N个数据集进行多次运行处理的过程中,输入张量和输出张
量的形状均为发生变化的操作。在上述表3中,以操作E和操作F构成的操作集合为第四操作
子集合。把两次次预热都不发生形状变化操作E和操作F划分入一个编译区域R。
行编译。
对于此种操作,能够影响其张量的形状发生变化的因素多,变化的频率高,可以放弃对此种
操作的编译。在表3所示的操作中,两次预热都发生变化的操作C由于变化频率太高,放弃编
译。作为一个可选的实施方式,将图5所示的计算图中所包括的操作进行合并优化后,得到
优化后的计算图如图6所示。
六操作子集合中的操作包括:在所述多次运行所述第一机器学习模型对所述N个数据集中
的第一个数据集进行处理的过程中输入张量和输出张量的形状均未发生变化,且在对所述
N个数据集中除了所述第一个数据集之外的其它N‑1个数据集进行处理的过程中输入张量
和/或输出张量的形状发生变化的操作,以及在所述多次运行所述第一机器学习模型对所
述N个数据集中的第M个数据集进行处理的过程中输入张量和/或输出张量的形状发生变
化,且除了所述第M个数据集之外的其它N‑1个数据集进行处理的过程中输入张量和输出张
量的形状均未发生变化的操作,其中,所述第M个数据集为所述N个数据集中除所述第一个
数据集之外的数据集;其中,在存在所述第六操作子集合的情况下,所述第六操作子集合为
所述多个操作子集合中的一个操作子集合。
分不同编译区域。比如N个预热数据集可以分成2 个正交结果。这时候每类都要单独划分成
一个编译区域可能太零散了,可以合并其中几类。
001代表仅第三次形状变化,010代表仅第二次形状变化,100代表仅第一次形状变化,011代
表仅第一次形状稳定,101代表仅第二次形状稳定,110代表仅第三次形状稳定,111代表全
部形状变化。可以将001,010,011划分在同一个编译区域。其中,在多次运行所述第一机器
学习模型对N个数据集中的第一个数据集进行处理的过程中输入张量和输出张量的形状均
未发生变化,且在对N个数据集中除了第一个数据集之外的其它N‑1个数据集进行处理的过
程中输入张量和/或输出张量的形状发生变化的操作,即为在本实施例中的011代表仅第一
次形状稳定。其中,在多次运行第一机器学习模型对N个数据集中第M个数据集进行处理的
过程中输入张量和/或输出张量的形状发生变化,且除了第M个数据集之外的其它N‑1个数
据集进行处理的过程中输入张量和输出张量的形状均未发生变化的操作,即为在本实施例
中的001仅第三次形状变化,010代表仅第二次形状变化。
划分在一个编译区域。在以N=3,也就是数据集为3个为例的上述实施例中,将000所代表三
次预热全部稳定的操作单独划分在一个编译区域。
七操作子集合中的操作为在所述多次运行所述第一机器学习模型对所述N个数据集中的第
一个数据集进行处理的过程中输入张量和/或输出张量的形状发生变化,且在对所述N个数
据集中除了所述第一个数据集之外的其它N‑1个数据集进行处理的过程中输入张量和输出
张量的形状均未发生变化的操作;其中,在存在所述第七操作子集合的情况下,所述第七操
作子集合为所述多个操作子集合中的一个操作子集合。
以上述N=3为例进行说明,在本实施例中,将100所代表仅在对第一个数据集进行处理时,
第一次形状变化的操作划分在同一个编译区域。
八操作子集合中的操作为在所述多次运行所述第一机器学习模型对所述N个数据集中第M
个数据集进行处理的过程中输入张量和输出张量的形状均未发生变化,且除了所述第M个
数据集之外的其它N‑1个数据集进行处理的过程中输入张量和/或输出张量的形状发生变
化的操作,其中,所述第M个数据集为所述N个数据集中除第一个数据集之外的数据集;其
中,在存在所述第八操作子集合的情况下,所述第八操作子集合为所述多个操作子集合中
的一个操作子集合。
某一个数据集是N个数据集中除了第一个数据集之外的数据集。在上述N=3的例子中,将
101代表仅第二次形状稳定的操作单独划分在一个编译区域,将110仅第三次形状稳定的操
作单独划分在一个编译区域。
九操作子集合中的操作为在所述多次运行所述第一机器学习模型对所述N个数据集中进行
处理的过程中,输入张量和/或输出张量的形状发生变化的操作;其中,在存在所述第九操
作子集合的情况下,所述第八操作子集合为所述多个操作子集合中的一个操作子集合。
第九操作子集合中所包括的是在对N个数据集进行处理的过程中张量的形状均发生变化的
操作。在上述N=3的例子中,111三次全部形状变化的操作单独划分在一个编译区域。
第一组操作中部分或全部的操作每运行一次所述第一机器学习模型,修改所述数据集中的
一个或多个变量的变量值,在下一次运行所述第一机器学习模型时,将修改后的数据集的
多个输入张量分别输入至所述第一组操作中部分或全部的操作,运行一次所述第一机器学
习模型,得到所述第一组操作中的每个操作的输入张量和输出张量;比较在所述多次运行
所述第一机器学习模型的过程中所述第一组操作中的每个操作的输入张量和输出张量的
形状是否发生变化,得到一组所述模型运行信息。
例如,对数据集1进行第一次运行处理后,改变数据集1中的部分变量值变化,例如可以是变
量x和y的参数变化,也可以是变量z的参数发生变化。N个数据集之间所变化的变量可以相
同也可以不同。例如在多次运行处理第一个数据集时,控制第一个数据集的x和y的变参数
化。在多次运行处理第二个数据集时,控制第二个数据集的z参数变化。
型中除所述多个目标操作之外的操作,并将所述多个目标操作的输入张量和输出张量转换
为所述一个操作的输入张量和输出张量,得到第二机器学习模型;或者使用所述目标编译
器将所述第一机器学习模型中的所述多个目标操作合并成多个操作,保留所述第一机器学
习模型中除所述多个目标操作之外的操作,并将所述多个目标操作的输入张量和输出张量
转换为合并成的所述多个操作的输入张量和输出张量,得到第二机器学习模型,其中,所述
合并成的所述多个操作中操作的数量小于所述多个目标操作中操作的数量。
二机器学习模型进行编译,得到所述第二机器学习模型对所述正式数据进行处理后输出的
处理结果。
作的输入张量和输出张量的信息对计算图进行了优化,从而提高了编译的效率。
依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知
悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明
所必须的。
运行第一机器学习模型分别对N个数据集进行处理,得到N组模型运行信息,其中,对于每个
所述数据集,所述第一机器学习模型被多次运行,得到一组所述模型运行信息,所述第一机
器学习模型包括第一组操作,所述第一组操作中的操作为允许被目标编译器处理的操作,
每组所述模型运行信息用于指示在所述多次运行所述第一机器学习模型对一个所述数据
集进行处理的过程中,所述第一组操作中的每个操作的输入张量和输出张量的形状是否发
生变化,N为大于1的自然数;第一确定模块704,用于根据所述N组模型运行信息,在所述第
一组操作中确定出N个操作集合;第二确定模块706,用于根据所述N个操作集合,在所述第
一组操作中确定允许被分别编译的多个操作子集合,其中,所述多个操作子集合设置为允
许被所述目标编译器分别编译;编译模块708,用于使用所述目标编译器分别对与每个所述
编译区域对应的所述操作子集合进行编译。
过程中输入张量和输出张量的形状均未发生变化的操作,每个所述第二操作子集合包括在
所述多次运行所述第一机器学习模型对一个所述数据集进行处理的过程中输入张量和/或
输出张量的形状发生变化的操作,其中,所述第二确定模块包括:执行单元,用于对于所述N
个操作集合中的每个操作集合,执行以下操作,其中,在执行以下操作的过程中,所述每个
操作集合被视为当前操作集合:在所述第一组操作中确定是否存在第三操作子集合,其中,
所述第三操作子集合中的操作仅出现在所述当前操作集合中的所述第二操作子集合中、而
未出现在所述N个操作集合中除所述当前操作集合之外的操作集合中的所述第二操作子集
合中;其中,在存在所述第三操作子集合的情况下,所述第三操作子集合为所述多个操作子
集合中的一个操作子集合。
合。
编译。
数据集中的第一个数据集进行处理的过程中输入张量和输出张量的形状均未发生变化,且
在对所述N个数据集中除了所述第一个数据集之外的其它N‑1个数据集进行处理的过程中
输入张量和/或输出张量的形状发生变化的操作,以及在所述多次运行所述第一机器学习
模型对所述N个数据集中的第M个数据集进行处理的过程中输入张量和/或输出张量的形状
发生变化,且除了所述第M个数据集之外的其它N‑1个数据集进行处理的过程中输入张量和
输出张量的形状均未发生变化的操作,其中,所述第M个数据集为所述N个数据集中除所述
第一个数据集之外的数据集;其中,在存在所述第六操作子集合的情况下,所述第六操作子
集合为所述多个操作子集合中的一个操作子集合。
合,其中,所述第七操作子集合中的操作为在所述多次运行所述第一机器学习模型对所述N
个数据集中的第一个数据集进行处理的过程中输入张量和/或输出张量的形状发生变化,
且在对所述N个数据集中除了所述第一个数据集之外的其它N‑1个数据集进行处理的过程
中输入张量和输出张量的形状均未发生变化的操作;其中,在存在所述第七操作子集合的
情况下,所述第七操作子集合为所述多个操作子集合中的一个操作子集合。
据集中第M个数据集进行处理的过程中输入张量和输出张量的形状均未发生变化,且除了
所述第M个数据集之外的其它N‑1个数据集进行处理的过程中输入张量和/或输出张量的形
状发生变化的操作,其中,所述第M个数据集为所述N个数据集中除第一个数据集之外的数
据集;其中,在存在所述第八操作子集合的情况下,所述第八操作子集合为所述多个操作子
集合中的一个操作子集合。
据集中进行处理的过程中,输入张量和/或输出张量的形状发生变化的操作;其中,在存在
所述第九操作子集合的情况下,所述第九操作子集合为所述多个操作子集合中的一个操作
子集合。
量分别输入至所述第一组操作中部分或全部的操作;每运行一次所述第一机器学习模型,
修改所述数据集中的一个或多个变量的变量值,在下一次运行所述第一机器学习模型时,
将修改后的数据集的多个输入张量分别输入至所述第一组操作中部分或全部的操作,运行
一次所述第一机器学习模型,得到所述第一组操作中的每个操作的输入张量和输出张量;
比较在所述多次运行所述第一机器学习模型的过程中所述第一组操作中的每个操作的输
入张量和输出张量的形状是否发生变化,得到一组所述模型运行信息。
一机器学习模型中除所述多个目标操作之外的操作,并将所述多个目标操作的输入张量和
输出张量转换为所述一个操作的输入张量和输出张量,得到第二机器学习模型;或者使用
所述目标编译器将所述第一机器学习模型中的所述多个目标操作合并成多个操作,保留所
述第一机器学习模型中除所述多个目标操作之外的操作,并将所述多个目标操作的输入张
量和输出张量转换为合并成的所述多个操作的输入张量和输出张量,得到第二机器学习模
型,其中,所述合并成的所述多个操作中操作的数量小于所述多个目标操作中操作的数量。
进行处理后输出的处理结果。
服务器为例来说明。如图8所示,该电子设备包括存储器802和处理器804,该存储器802中存
储有计算机程序,该处理器804被设置为通过计算机程序执行上述任一项方法实施例中的
步骤。
息,所述第一机器学习模型包括第一组操作,所述第一组操作中的操作为允许被目标编译
器处理的操作,每组所述模型运行信息用于指示:在所述多次运行所述第一机器学习模型
对一个所述数据集进行处理的过程中,所述第一组操作中的每个操作的输入张量和输出张
量的形状是否发生变化,N为大于1的自然数;
设备(Mobile Internet Devices,MID)、PAD等终端设备。图8其并不对上述电子装置电子设
备的结构造成限定。例如,电子装置电子设备还可包括比图8中所示更多或者更少的组件
(如网络接口等),或者具有与图8所示不同的配置。
的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的机器学习模型
的编译优化方法。存储器802可包括高速随机存储器,还可以包括非易失性存储器,如一个
或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器802可
进一步包括相对于处理器804远程设置的存储器,这些远程存储器可以通过网络连接至终
端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。其
中,存储器802具体可以但不限于用于第一组操作,以及第一组操作中的每个操作的输入张
量和输出张量等信息。作为一种示例,如图8所示,上述存储器802中可以但不限于包括上述
机器学习模型的编译优化装置中的运行模块702、第一确定模块704、第二确定模块706、编
译模块708。此外,还可以包括但不限于上述机器学习模型的编译优化装置中的其他模块单
元,本示例中不再赘述。
信的形式连接形成的分布式系统。其中,节点之间可以组成点对点(P2P,Peer To Peer)网
络,任意形式的计算设备,比如服务器、终端等电子设备都可以通过加入该点对点网络而成
为该区块链系统中的一个节点。
一项方法实施例中的步骤。
息,所述第一机器学习模型包括第一组操作,所述第一组操作中的操作为允许被目标编译
器处理的操作,每组所述模型运行信息用于指示在所述多次运行所述第一机器学习模型对
一个所述数据集进行处理的过程中,所述第一组操作中的每个操作的输入张量和输出张量
的形状是否发生变化,N为大于1的自然数;
一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read‑Only Memory,
ROM)、随机存取器(Random Access Memory,RAM)、磁盘或光盘等。
术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软
件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一
台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所
述方法的全部或部分步骤。
种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者
可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之
间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连
接,可以是电性或其它的形式。
网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目
的。
元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
视为本发明的保护范围。