[发明专利]基于最长路融合算法的深度学习计算图优化方法在审
申请号: | 202110502342.3 | 申请日: | 2021-05-08 |
公开(公告)号: | CN113326869A | 公开(公告)日: | 2021-08-31 |
发明(设计)人: | 胡事民;刘政宁;梁盾 | 申请(专利权)人: | 清华大学 |
主分类号: | G06K9/62 | 分类号: | G06K9/62;G06N3/08;G06F16/901 |
代理公司: | 北京路浩知识产权代理有限公司 11002 | 代理人: | 王庆龙 |
地址: | 100084 北*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 最长 融合 算法 深度 学习 计算 优化 方法 | ||
本发明公开了一种基于最长路融合算法的深度学习计算图优化方法,包括:1)使用最小代价子图划分估计深度学习计算图的算子融合的加速效果,2)根据代价函数近似得到出一种跨层算子融合规则,3)标记计算图边权,用动态规划求解算子最长路标号,4)使用并查集算法融合标号相同的算子。此方法在保证优化额外开销比较小的同时,显著提高深度学习框架的速度。
技术领域
本发明涉及人工智能技术领域,尤其涉及一种可用于计算图的算子融合方法。
背景技术
随着大数据与硬件计算能力的增长,以深度学习为代表的人工智能技术在深度学习框架的支撑下快速发展,在计算机视觉、自然语言处理、智能机器人等领域超越传统方法,逐渐成为了科学研究与工程应用的新范式。大部分的深度学习框架采用了Python作为前段语言,后段采用C、CUDA等语言进行加速,计算图(或称为数据流图)是沟通两者的桥梁。
随着使用的训练数据的增加,深度神经网络的参数量、复杂度的扩大,计算图包含的算子数量也迅速增加,在计算图上进行运算和访存需要的时间也快速提高,已经远远超出了硬件性能增长速度。因此,为了支持前沿学术研究与工程应用,原始计算图需要优化,以降低额外存储和运算开销。
发明内容
(一)所要解决的技术问题
本发明要解决的技术问题是:
给定一个深度学习网络的计算图,如何融合计算图的算子,减少计算过程中的访存次数,同时保证计算图不产生自环导致无法计算,从而实现神经网络的加速。
(二)技术方案
为了解决上述技术问题,本发明提出一种基于最长路融合算法的深度学习计算图优化方法,其技术方案为:
首先将算子融合问题转化为最小代价子图划分问题。该方法将计算图看做一个有向无环图,其中,每一个节点代表一个算子,每一条边代表一个变量。如果一条边是一个顶点的入边,则代表对应的变量,为该顶点对应的算子的输入变量。
计算图中的节点分为可融合算子和不可融合算子。可融合算子之间可以融合,不可融合算子则不能和任何算子融合。本方法将算子融合问题形式化成图划分问题。此方法规定合法的划分方案需要满足如下要求:每一个节点都要唯一地属于一个子图;不可融合的算子必须单独存在于子图中,即该子图不包含其他节点;如果一条边的起始节点和终止节点属于同一个子图,那么这条边也属于子图的边集,否则的话该边将不属于任何子图的边集。
此方法使用代价函数近似估计子图划分后的计算量,该代价函数考虑所有算子的内存读写总大小,即跨越两个不同子图、同时也不属于任何子图的边所对应的变量占用的内存大小的总和。
为了快速地最小化该代价函数,此方法使用跨层算子融合规则,除了规定不能融合的情况外,算子应当尽量融合,并且算子融合可以跨越神经网络的不同层。不能融合的情况包括:1)重索引算子不可以与其相连接的前驱元算子融合,因为这种融合通常会导致性能的下降;2)重索引化简算子不可以和其后继算子融合,这种融合并不会提升性能;3)融合不能产生环,否则计算图无法正常执行。
依据以上规则,将计算图中不可融合的边标记距离为1,其他边标记距离为0,输出节点的标号为0,得到一个带有边权的有向图。对计算图进行拓扑排序,按照此顺序用动态规划计算节点标号,每个节点的标号为其输出节点的标号与输出边的距离的和的最大值。
得到计算图中每个节点的标号后,利用并查集算法对节点进行融合。具体融合方式为,对于计算图的每一条边进行判断,若边的两个节点标号相同、不属于同一个子图,并且边满足融合规则,即边权为0,那么将两个节点所属的子图融合为一个子图。从而得到最终的子图划分,最后将每个子图中的所有算子融合为一个算子。
(三)有益效果
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于清华大学,未经清华大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110502342.3/2.html,转载请声明来源钻瓜专利网。