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

一种基于精简算子集的深度学习图算一体优化器

2022-12-19 21:11:02 来源:中国专利 TAG:

技术特征:
1.一种基于精简算子集的深度学习图算一体优化器,用于深度神经网络框架中,其特征在于,所述优化器包括:(1)引入子算子,构建子算子的集合,得到精简算子集;所述子算子的输入和输出均为张量数据,输入张量和输出张量均用索引变量来表示;子算子对应一个嵌套循环结构,输出张量的索引变量代表嵌套循环结构的循环变量,一个张量的索引变量不允许重复;(2)将算子表示为子算子的集合;根据算子的性质进行计算描述,表示为子算子序列的集合;(3)基于子算子的代数优化实现算子优化模块;所述算子优化模块中存储子算子之间的模式匹配规则,模式匹配规则是子算子间的代数优化表示;算子优化模块对计算图中的每个子算子搜索匹配规则,对子算子申请所有的模式匹配规则,如果有规则得到应用,继续在新的计算图上搜索匹配规则,直到计算图中的所有子算子都没有搜索匹配到规则,则搜索过程结束,得到经代数优化的简化的计算图;(4)基于子算子的算子融合技术实现算子融合模块;所述算子融合模块将前后相邻的多个子算子进行融合,在一个cpu或者gpu上,融合算子只包含一个规约类型的子算子,将规约类型的子算子作为融合算子的边界;(5)将经过算子优化模块和算子融合模块优化后的计算图转化为后端代码。2.根据权利要求1所述的深度学习图算一体优化器,其特征在于,所述(1)中,精简算子集中包含的子算子,根据输入变量的数量分为一元、二元、一元plus和二元plus四种,plus中记录除输入张量外的额外信息;其中,一元子算子包括:对张量逐元素取反neg;对张量逐元素取倒数rec;对张量逐元素求对数log;对张量逐元素求幂exp;什么操作都不做nop;对输入张量的索引变量重新赋值reshape;二元子算子包括:加法add,乘法multiply,smax;smax是从两个张量中对应的两个元素中取一个较大的值;一元plus子算子包括:sum,max和assign;sum和max均表示将输入张量在规约轴上进行累积操作,操作为add对应的子算子为sum,操作为smax对应的子算子为max;sum和max的额外信息是规约轴;assign表示从输入张量中取出一部分或者全部,按照约定方式写入到输出张量,assign的额外信息是约定的输入张量的维度的映射表达式,记录输入张量中元素写入到的输出张量的位置;若映射表达式不合法,使用assign表示时,将不合法的部分默认为0;二元plus子算子包括cond;cond表示将两个输入张量在对应的拼接轴进行拼接,cond的额外信息是拼接轴。3.根据权利要求2所述的深度学习图算一体优化器,其特征在于,所述(1)中,子算子的输入张量的个数为一个或两个,输出张量的个数固定为一个;其中,除assign外的子算子的输出张量的索引变量由输入张量的索引变量自动推导得到:一元子算子的输出张量的索引变量就是输入张量的索引变量;二元子算子的输出张量的索引变量需要两个输入张量的索引变量的超集,同时满足两个输入张量的索引变量的顺序关系;一元plus子算子中规约类型的子算子的输出张量的索引变量由输入张量的索引变量减去规约轴得到;cond的输出张
量的索引变量为输入张量在对应的拼接轴拼接后的索引变量。4.根据权利要求1所述的深度学习图算一体优化器,其特征在于,所述(2)中,对无法继续做下一次子算子运算的输出张量的索引变量进行调整,调整前后的索引变量的上下界相同,调整后的输出张量能继续做下一次子算子运算;记录索引变量的调整替换过程。5.根据权利要求2所述的深度学习图算一体优化器,其特征在于,所述(2)中,将卷积convolution2d表示为子算子序列assign,multiply,sum;将矩阵乘matmul表示为子算子序列multiply,sum;将最大池化maxpooling2d表示为子算子序列assign,max。6.根据权利要求1所述的深度学习图算一体优化器,其特征在于,所述(3)中,模式匹配规则的命名方式为:上层的子算子在下一层子算子的前面,并根据下层子算子产生的上层子算子的输入张量个数添加后缀:both、single或left;其中,both代表上层子算子的两个输入张量都是由下层子算子产生,single代表上层子算子有一个输入张量由下层子算子产生,left代表上层子算子有两个输入张量,但只有第一个输入张量由下层子算子产生,第二个输入张量的类型不受限制。7.根据权利要求1或6所述的深度学习图算一体优化器,其特征在于,所述(3)中,对计算图中的常量,在编译时进行预计算;若子算子的所有输入都是常量,则该子算子的输出也是常量;采用递归算法对计算图进行预计算,从计算图的最上层子算子开始,若子算子是可计算的且所有输入变量已经计算完毕,则按照计算描述将子算子展开成for循环进行计算;若输入变量没有计算,则先计算该输入变量的值,由此递归下去;当子算子的输入为模型参数时,递归过程终止;由此计算到计算图中的所有常量。8.根据权利要求1或6所述的深度学习图算一体优化器,其特征在于,所述(4)中,算子融合模块,在cpu或者gpu上,采用基于贪心的融合策略将多个子算子融合成只包含一个规约类型的算子。9.根据权利要求1所述的深度学习图算一体优化器,其特征在于,所述(5)中,后端代码的实现方式包括:(1)优化的计算图用tensor expression特定域语言描述,利用tvm的auto-scheduler进行自动调优,选择出最佳的调度生成代码并执行;(2)优化的计算图用c语言代码描述,利用多面体模型提取工具pet生成多面体模型,利用多级中间表示mlir或者源到源的并行代码生成器ppcg进行调度优化和代码生成;(3)对优化的计算图,利用多面体模型的库isl生成多面体模型,再进行调度优化,生成抽象语法树ast,由ast进行代码生成。

技术总结
本发明为一种基于精简算子集的深度学习图算一体优化器,涉及计算机、编译器等技术领域。本发明包括:引入子算子,构建精简算子集,子算子的输入和输出张量均用索引变量表示;将算子表示为子算子序列集合;基于子算子的代数优化实现算子优化模块,对计算图进行代数优化;基于子算子的算子融合实现算子融合模块,再对简化的计算图中多个子算子进行融合;将优化后的计算图转化为后端代码。本发明可以隐藏算子层级的变化,减少图优化的模式匹配规则数目,通过子算子可以使上层模型在部署时相对稳定,相对于常规的图优化技术有更好的优化效果,尤其在一些复杂的网络结构中。尤其在一些复杂的网络结构中。尤其在一些复杂的网络结构中。


技术研发人员:史晓华 孙明利
受保护的技术使用者:北京航空航天大学
技术研发日:2022.09.15
技术公布日:2022/12/16
再多了解一些

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

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

相关文献