一种计算图优化方法、装置及设备制造方法及图纸

技术编号:37744848 阅读:13 留言:0更新日期:2023-06-05 23:31
本申请提供了一种计算图优化方法、装置及设备,涉及人工智能技术领域。该方法可以基于参数和第一计算图中节点之间的数据依赖关系,从第一计算图中得到第二计算图;然后可以将该第二计算图与第一计算图合并,得到一个新的计算图,并对该新的计算图中的算子进行融合,得到优化后的计算图,最后可以执行该优化后的计算图。由此,通过重计算与算子融合相结合的方式对计算图进行优化,实现了在显著减少内存占用的同时,又不引入较大重计算开销,解决了具有一个或多个超大张量的网络无法执行的问题。有一个或多个超大张量的网络无法执行的问题。有一个或多个超大张量的网络无法执行的问题。

【技术实现步骤摘要】
一种计算图优化方法、装置及设备


[0001]本申请涉及人工智能
,尤其涉及一种计算图优化方法、装置及设备。

技术介绍

[0002]人工智能(artificial intelligence,AI)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。换句话说,人工智能是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式作出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。人工智能领域的研究包括机器人,自然语言处理,计算机视觉,决策与推理,人机交互,推荐与搜索,AI基础理论等。
[0003]目前,随着计算机技术的不断发展,AI网络也得到了广泛的应用。并且,AI网络越来越复杂,其网络模型的规模呈现越来越大的趋势,比如:AI网络的网络层数、参数量和数据集等越来越多,这就使得AI网络的网络模型对应的内存消耗越来越大。由于目前的计算机硬件的内存都比较小,常见的是16吉字节(gigabyte,GB)或32GB等,这就使得在AI网络的网络模型对应的内存消耗越来越大时,目前的计算机硬件将难以支持AI网络的网络模型。因此,如何降低AI网络的网络模型的内存消耗是目前亟需解决的技术问题。

技术实现思路

[0004]本申请提供了一种计算图优化方法、装置、设备、计算机存储介质、计算机程序产品及芯片,通过重计算与算子融合相结合的方式对计算图进行优化,实现了在显著减少内存占用的同时,又不引入较大重计算开销,解决了具有一个或多个超大张量的网络无法执行的问题。
[0005]第一方面,本申请提供一种计算图优化方法,包括:基于参数和第一计算图中节点之间的数据依赖关系,从第一计算图中得到第二计算图,参数包括算子融合规则、第一计算图中单个节点输出的张量所占内存的内存阈值、第一计算图对应的峰值内存阈值和第一计算图中节点对应的数据突变阈值中的一项或多项,峰值内存阈值为计算图执行过程中在一个节点执行的时刻所有需使用的张量所占内存的阈值,数据突变阈值为第一计算图中至少一个节点产生数据突变的阈值;将第二计算图与第一计算图合并,以得到第三计算图,其中,在第三计算图中,输出第一张量的第一节点与输入第一张量的第二节点间具有第一有向边,输出第二张量的第三节点与输入第二张量的第四节点间具有第二有向边,第一有向边由第一节点指向第二节点,第二有向边有第三节点指向第四节点,第一节点和第四节点对应第一计算图中的节点,第二节点和第三节点对应第二计算图中的节点;对第三计算图中的算子进行融合,以得到第四计算图;执行第四计算图。这样,基于参数从第一计算图中筛选出需要进行重计算的第二计算图,并将第二计算图与第一计算图进行合并,以得到新的计算图,并对该新的计算图进行算子融合,并执行融合的计算图,由此,通过重计算与算
子融合相结合的方式对计算图进行优化,实现了在显著减少内存占用的同时,又不引入较大重计算开销,解决了具有一个或多个超大张量的网络无法执行的问题。
[0006]在一种可能的实现方式中,基于参数和第一计算图中节点之间的数据依赖关系,从第一计算图中得到第二计算图,具体包括:基于参数和第一计算图中节点之间的数据依赖关系,从第一计算图所包含的生产者中得到N个第一节点集合,N为大于或等于1的正整数,第一节点集合中包括至少一个节点,其中,一个第一节点集合所包含的节点均与第一计算图中一个生产者输出的一个张量直接相关或间接相关,且均与第一计算图中一个生产者输入的至少一个张量直接相关或间接相关;对每个第一节点集合均进行重计算,以得到N个重计算子图,N个重计算子图构成第二计算图。这样即可以根据第一计算图中节点之间的数据依赖关系和参数,从第一计算图中得到第二计算图。
[0007]在一种可能的实现方式中,参数为内存阈值;第一节点集合对应的输出张量所占的内存高于内存阈值。这样即可以自动的将占用内存过高的输出张量对应的节点集合作为所需的节点集合,从而解决单个算子和/或张量占用内存的问题。
[0008]在一种可能的实现方式中,参数为峰值内存阈值;第一节点集合对应的生产者和消费者之间存在间接路径,且第一节点集合对应的生产者和消费者之间的各个节点执行时的峰值内存高于峰值内存阈值。这样即可以自动的将峰值内存占用过高对应的节点集合作为所需的节点集合,从而解决单个算子和/或张量占用内存的问题。
[0009]在一种可能的实现方式中,参数为数据突变阈值;第一节点集合对应的输出张量所占的内存与第一节点集合对应的至少一个输入张量所占的内存之间的偏差值高于数据突变阈值。这样即可以自动的将存在数据突变的节点集合作为所需的节点集合,从而消除因数据突变引起的内存占用过大的问题。
[0010]在一种可能的实现方式中,参数为算子融合规则;第一节点集合与第一节点集合对应的消费者能够融合;或者,第一节点集合与第一节点集合对应的消费者不能融合,且第一节点集合对应的生产者和消费者之间存在间接路径。这样可以通过算子融合规则的方式筛选出所需的节点集合。
[0011]在一种可能的实现方式中,参数为内存阈值和峰值内存阈值;第一节点集合对应的生产者和消费者之间不存在间接路径,且第一节点集合对应的输出张量所占的内存高于内存阈值;和/或,第一节点集合对应的生产者和消费者之间存在间接路径,且第一节点集合对应的生产者和消费者之间的各个节点执行时的峰值内存高于峰值内存阈值。这样可以通过内存阈值和峰值内存阈值相结合的方式筛选出所需的节点集合,提升筛选的效率和准确度。
[0012]在一种可能的实现方式中,参数为内存阈值和数据突变阈值;第一节点集合对应的输出张量所占的内存高于内存阈值,和/或,第一节点集合对应的输出张量所占的内存与第一节点集合对应的至少一个输入张量所占的内存之间的偏差值高于数据突变阈值。这样可以通过内存阈值和数据突变阈值相结合的方式筛选出所需的节点集合,提升筛选的效率和准确度。
[0013]在一种可能的实现方式中,参数为内存阈值和算子融合规则;第一节点集合符合以下条件中的一项或多项:第一节点集合对应的输出张量所占的内存高于内存阈值,或者,第一节点集合与第一节点集合对应的消费者能够融合,或者,第一节点集合与第一节点集
合对应的消费者不能融合,且第一节点集合对应的生产者和消费者之间存在间接路径。这样可以通过内存阈值和算子融合规则相结合的方式筛选出所需的节点集合,提升筛选的效率和准确度。
[0014]在一种可能的实现方式中,参数为峰值内存阈值和数据突变阈值;第一节点集合对应的生产者和消费者之间存在间接路径,且第一节点集合对应的生产者和消费者之间的各个节点执行时的峰值内存高于峰值内存阈值;和/或,第一节点集合对应的输出张量所占的内存与第一节点集合对应的至少一个输入张量所占的内存之间的偏差值高于数据突变阈值。这样可以通过峰值内存阈值和数据突变阈值相结合的方式筛选出所需的节点集合,提升筛选的效率和准确度。
[0015本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种计算图优化方法,其特征在于,所述方法包括:基于参数和第一计算图中节点之间的数据依赖关系,从所述第一计算图中得到第二计算图,所述参数包括算子融合规则、所述第一计算图中单个节点输出的张量所占内存的内存阈值、所述第一计算图对应的峰值内存阈值和所述第一计算图中节点对应的数据突变阈值中的一项或多项,所述峰值内存阈值为计算图执行过程中在一个节点执行的时刻所有需使用的张量所占内存的阈值,所述数据突变阈值为所述第一计算图中至少一个节点产生数据突变的阈值;将所述第二计算图与所述第一计算图合并,以得到第三计算图,其中,在所述第三计算图中,输出第一张量的第一节点与输入所述第一张量的第二节点间具有第一有向边,输出第二张量的第三节点与输入所述第二张量的第四节点间具有第二有向边,所述第一有向边由所述第一节点指向所述第二节点,所述第二有向边有所述第三节点指向所述第四节点,所述第一节点和所述第四节点对应所述第一计算图中的节点,所述第二节点和所述第三节点对应所述第二计算图中的节点;对所述第三计算图中的算子进行融合,以得到第四计算图;执行所述第四计算图。2.根据权利要求1所述的方法,其特征在于,所述基于参数和第一计算图中节点之间的数据依赖关系,从所述第一计算图中得到第二计算图,具体包括:基于所述参数和所述第一计算图中节点之间的数据依赖关系,从所述第一计算图所包含的生产者中得到N个第一节点集合,N为大于或等于1的正整数,所述第一节点集合中包括至少一个节点,其中,一个所述第一节点集合所包含的节点均与所述第一计算图中一个生产者输出的一个张量直接相关或间接相关,且均与所述第一计算图中一个生产者输入的至少一个张量直接相关或间接相关;对每个所述第一节点集合均进行重计算,以得到N个重计算子图,所述N个重计算子图构成所述第二计算图。3.根据权利要求2所述的方法,其特征在于,所述参数为所述内存阈值;所述第一节点集合对应的输出张量所占的内存高于所述内存阈值。4.根据权利要求2所述的方法,其特征在于,所述参数为所述峰值内存阈值;所述第一节点集合对应的生产者和消费者之间存在间接路径,且所述第一节点集合对应的生产者和消费者之间的各个节点执行时的峰值内存高于所述峰值内存阈值。5.根据权利要求2所述的方法,其特征在于,所述参数为所述数据突变阈值;所述第一节点集合对应的输出张量所占的内存与所述第一节点集合对应的至少一个输入张量所占的内存之间的偏差值高于所述数据突变阈值。6.根据权利要求2所述的方法,其特征在于,所述参数为所述算子融合规则;所述第一节点集合与所述第一节点集合对应的消费者能够融合;或者,所述第一节点集合与所述第一节点集合对应的消费者不能融合,且所述第一节点集合对应的生产者和消费者之间存在间接路径。7.根据权利要求2所述的方法,其特征在于,所述参数为所述内存阈值和所述峰值内存阈值;所述第一节点集合对应的生产者和消费者之间不存在间接路径,且所述第一节点集合
对应的输出张量所占的内存高于所述内存阈值;和/或,所述第一节点集合对应的生产者和消费者之间存在间接路径,且所述第一节点集合对应的生产者和消费者之间的各个节点执行时的峰值内存高于所述峰值内存阈值。8.根据权利要求2所述的方法,其特征在于,所述参数为所述内存阈值和所述数据突变阈值;所述第一节点集合对应的输出张量所占的内存高于所述内存阈值,和/或,所述第一节点集合对应的输出张量所占的内存与所述第一节点集合对应的至少一个输入张量所占的内存之间的偏差值高于所述数据突变阈值。9.根据权利要求2所述的方法,其特征在于,所述参数为所述内存阈值和所述算子融合规则;所述第一节点集合符合以下条件中的一项或多项:所述第一节点集合对应的输出张量所占的内存高于所述内存阈值,或者,所述第一节点集合与所述第一节点集合对应的消费者能够融合,或者,所述第一节点集合与所述第一节点集合对应的消费者不能融合,且所述第一节点集合对应的生产者和消费者之间存在间接路径。10.根据权利要求2所述的方法,其特征在于,所述参数为所述峰值内存阈值和所述数据突变阈值;所述第一节点集合对应的生产者和消费者之间存在间接路径,且所述第一节点集合对应的生产者和消费者之间的各个节点执行时的峰值内存高于所述峰值内存阈值;和/或,所述第一节点集合对应的输出张量所占的内存与所述第一节点集合对应的至少一个输入张量所占的内存之间的偏差值高于所述数据突变阈值。11.根据权利要求2所述的方法,其特征在于,所述参数为所述内存阈值和所述算子融合规则;所述第一节点集合符合以下条件中的一项或多项:所述第一节点集合对应的生产者和消费者之间存在间接路径,且所述第一节点集合对应的生产者和消费者之间的各个节点执行时的峰值内存高于所述峰值内存阈值,或者,所述第一节点集合与所述第一节点集合对应的消费者能够融合,或者,所述第一节点集合与所述第一节点集合对应的消费者不能融合,且所述第一节点集合对应的生产者和消费者之间存在间接路径。12.根据权利要求2所述的方法,其特征在于,所述参数为所述数据突变阈值和所述算子融合规则;所述第一节点集合符合以下条件中的一项或多项:所述第一节点集合对应的输出张量所占的内存与所述第一节点集合对应的至少一个输入张量所占的内存之间的偏差值高于所述数据突变阈值,或者,所述第一节点集合与所述第一节点集合对应的消费者能够融合,或者,所述第一节点集合与所述第一节点集合对应的消费者不能融合,且所述第一节点集合对应的生产者和消费者之间存在间接路径。13.根据权利要求2所述的方法,其特征在于,所述参数为所述内存阈值、所述峰值内存阈值和所述数据突变阈值;所述第一节点集合符合以下条件中的一项或多项:
所述第一节点集合对应的生产者和消费者之间不存在间接路径,且所述第一节点集合对应的输出张量所占的内存高于所述内存阈值,或者,所述第一节点集合对应的生产者和消费者之间存在间接路径,且所述第一节点集合对应的生产者和消费者之间的各个节点执行时的峰值内存高于所述峰值内存阈值,或者,所述第一节点集合对应的输出张量所占的内存与所述第一节点集合对应的至少一个输入张量所占的内存之间的偏差值高于所述数据突变阈值。14.根据权利要求2所述的方法,其特征在于...

【专利技术属性】
技术研发人员:高雄吴一迪程彬张兆创
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1