【技术实现步骤摘要】
张量程序优化方法及装置
[0001]本专利技术涉及数据处理技术,具体的讲是一种张量程序优化方法及装置。
技术介绍
[0002]现有的深度学习框架将深度学习程序表示为由张量和算子构成的张量程序,而该张量程序往往以计算图的形式表现。现有技术中,对张量程序的优化方案可分为三种类型:对计算图上的算子进行等价替换的图级别优化,对张量内存布局进行替换的数据布局优化及生成更高效算子的算子级优化。
[0003]现有的算子库,如cuDNN,cuBLAS,Intel MKL等可以支持不同的数据布局。通过对不同算子应用最适合的内存布局,可以提高其计算效率。目前的技术对于内存布局的优化主要有以下局限性:1.底层算子库所考虑到的数据布局,都只是对张量不同维度的顺序的简单调整,如二维张量的行优先和列优先,四维张量的NCHW,NHWC等。2.基于内存布局优化的张量程序优化工作都只考虑了底层算子库所支持的较为有限的布局。对于计算图的优化,现有的许多工作利用基于规则的优化方法,即对于一个由若干算子构成的计算子图,根据预先设计的特定规则,将其用另一个子图进行替换。但是基于规则的优化方法需要开发人员对计算子图的变换有足够的了解,并据此设计出相关的变换规则。同时,由于所有规则都需要开发人员手动指定,因此其搜索空间往往有较大的局限性,无法对未知的变换规则进行探索。
[0004]现有技术中还有一种自动搜索算法,可以通过自动的方法对一个计算图进行优化,并通过形式化验证的方式保证其在数学上的正确性。但是目前的自动搜索算法只支持完全等价的变换,其形式 ...
【技术保护点】
【技术特征摘要】
1.一种张量程序优化方法,其特征在于,所述的方法包括:对待优化的张量程序进行划分生成线性的张量子程序;按预设的算子集合生成所述的子程序的突变程序;对子程序的突变程序中不等价的突变程序进行纠错处理以使各突变程序均与对应的子程序等价;从纠错处理后的突变程序中选取最优子程序进行拼接生成优化后的张量程序。2.如权利要求1所述的张量程序优化方法,其特征在于,所述的对待优化的张量程序进行划分生成线性的张量子程序包括:确定所述待优化的张量程序中的非线性激活函数算子;根据所述的非线性激活函数算子对待优化的张量程序进行划分生成线性的张量子程序。3.如权利要求1所述的张量程序优化方法,其特征在于,所述的按预设的算子集合生成所述的子程序的突变程序包括:步骤1,枚举所述子程序中的张量分别作为预设的算子集合中各算子的输入;步骤2,将算子的输出张量添加到所述子程序中;步骤3,判断所述子程序的大小是否超过预设的阈值,未达到阈值,则执行步骤1
‑
步骤3,确定达到阈值则终止。4.如权利要求1所述的张量程序优化方法,其特征在于,所述的预设的算子集合中包括:计算密集型算子、逐元素算子及张量操作算子。5.如权利要求1所述的张量程序优化方法,其特征在于,所述的对子程序的突变程序中不等价的突变程序进行纠错处理以使各突变程序均与对应的子程序等价包括:利用归约域传播确定所述子程序及其突变程序的归约域;对任意两归约域的重叠区域,标识m+1个位置上进行随机测试以确定不等价的突变程序;其中,m为子程序输出张量的维数;根据不等价的突变程序对应的子程序生成纠错内核;利用生成的纠错内核修正不等价的突变程序。6.如权利要求1所述的张量程序优化方法,其特征在于,所述的从纠错处理后的突变程序中选取最优子程序进行拼接生成优化后的张量程序包括:利用贪心算法从纠错处理后的突变程序中分别选取各子程序的K个候选子程序;K为预设值;从各子程序的K个候选子程序中选取拼接之后的前后子程序的处转换开销最小的候选子程序作为各子程序的最优子程序;对确定的最优子程序进行拼接生成优化后的张量程序。7.如权利要求6所述的张量程序优化方法,其特征在于,所述的对确定的最优子程序进行拼接生成优化后的张量程序包括:对确定的最优子程序进行拼接生成拼接后的张量程序;对拼接后的张量程序进行可逆算子消除;根据预处理后的权重张量对进行可逆算子消除后的拼接后的张量程序进行算子融合生成优化后的张量程序;其中,所述的预处理后的权重张量为根据拼接后的张量程序的计
算图对预设的权重张量进行变形后确定的。8.一种张量程序优化装置,其特征在于,所述的装置包括:程序划分模块,用于对待优化的张量程序进行划分生成线性的张量子程序;突变生成模块,用于按预设的...
【专利技术属性】
技术研发人员:翟季冬,王豪杰,高鸣宇,马子轩,唐适之,郑立言,融凯源,陈源涌,
申请(专利权)人:清华大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。