一种计算图的节点融合方法及设备技术

技术编号:33995098 阅读:33 留言:0更新日期:2022-07-02 10:40
本申请实施例公开了一种计算图的节点融合方法及设备,可应用于人工智能领域,具体可应用于深度学习框架,方法包括:将神经网络转换为计算图,并基于计算图中节点间的依赖关系从计算图提取一个或多个可并行分支组,依赖关系用于指示如下关系中的至少一种:可并行分支组拥有共同父节点、可并行分支组拥有共同子节点、可并行分支组无父节点、可并行分支组无子节点,最后对任一个可并行分支组中分别来自不同子分支的多个节点进行融合,得到新的计算图。本申请考虑了其他一些可并行的分支的可能性,从而找到不同于现有技术规则限定的可并行的分支组合,即可在计算图的节点融合中,融合这些分支组合中的节点,从而扩展了能够获取的可融合节点的范围。可融合节点的范围。可融合节点的范围。

【技术实现步骤摘要】
一种计算图的节点融合方法及设备


[0001]本申请涉及机器学习领域,尤其涉及一种计算图的节点融合方法及设备。

技术介绍

[0002]计算图(computational graph)是一种通用的计算过程表示方法,用于描述函数的有向无环图,普遍应用在各类数据处理平台上,一个计算图包括多个节点和有向边。在机器学习领域中,计算图则用于表示神经网络涉及的计算逻辑,计算图中的每个节点表示神经网络所进行的相应运算(如,add节点代表一个加法运算),该相应运算也可称为计算任务,一个节点代表一个计算任务,有向边将前一个节点(可称为前节点或父节点)连接至后一个节点(可称为后节点或子节点),表示父节点的输出作为子节点的输入。
[0003]深度学习框架对计算图的具体执行方式的一般做法是:首先,将用户定义好的神经网络转换为一张计算图(该计算图已经过优化处理),再按照计算图中各节点的拓扑序将这些排好序的节点对应的计算任务一一加载到加速硬件(如,图形处理器(graphics processing unit,GPU)、张量处理器(tensor processing unit,TPU)、昇腾处理器(如,昇腾910和昇腾310)等)上具体执行计算任务的模块device上执行。如图1所示,图1中的左图部分为计算图,图1中的右图部分为对应该计算图的拓扑排序结果。在整个神经网络的执行过程中,由于执行顺序的影响,device上的每一个计算任务必须在前一拓扑序的计算任务执行结束后才能开始,这意味着排序会隐式地在数据独立的计算任务间添加上执行上的依赖关系,如图1中,节点C和节点D对应的计算任务间本来无明确的依赖,但确定拓扑排序后,执行上节点C得先执行,而后节点D才能执行。最终该device上总的网络执行时间为各个独立计算任务的耗时总和加上交互、通信等带来的额外耗时。
[0004]但随着神经网络表现出来的网络体量越来越大(如图2所示),其网络结构也越来越复杂,如,网络模型Bert

Large有1024个隐藏层、网络模型GPT

3有2048个隐藏层,这使得对深度学习框架的性能要求越来越苛刻。而由于这类网络结构含有众多的分支结构,且表现出直接或间接的计算独立性,固而在执行上这些分支结构拥有并行执行的可能性,因此,为了获得更高的执行性能,对于具有多分支结构的神经网络,将多个可并行执行且消耗算力资源小的节点的计算逻辑进行整合后再执行。目前已有的计算图的节点融合方式主要有水平融合(horizontal fusion)方式和算子级并行(operator level parallelism)方式,其中,horizontal fusion方式是加速线性代数(accelerated linear algebra,XLA)编译器针对GPU的一个优化步骤,这种融合方式在寻找融合节点时保守,实现上以计算图的返回节点为起点往回查找可融合的节点,且查找过程中一旦中断就停止,且待融合的节点需要有相同的数据排布和输出数据类型;operator level parallelism方式是深度学习框架MXNet的一个优化步骤,其要求被融合的多个节点的输入数据都来自于同一个父节点。已有的这些计算图的节点融合方式都具有很多约束条件,无法充分搜索可融合的节点,因此,一种高效的计算图的节点融合方式亟待推出。

技术实现思路

[0005]本申请实施例提供了一种计算图的节点融合方法及设备,相较于现有技术,考虑了其他一些可并行的分支的可能性,从而找到不同于现有技术的规则限定的可以并行的分支的组合,也就可以在计算图的节点融合中,融合这些分支的组合中的节点,从而扩展了能够获取的可融合节点的范围。
[0006]基于此,本申请实施例提供以下技术方案:
[0007]第一方面,本申请实施例首先提供一种计算图的节点融合方法,可用于人工智能领域中,该方法包括:
[0008]第一方面,本申请实施例首先提供一种计算图的节点融合方法,可用于人工智能领域中,具体可应用于深度学习框架,该方法包括:首先,深度学习框架可以先获取神经网络的网络结构,该网络结构可以是通过深度学习框架提供的API自定义神经网络的网络结构,也可以是从网络模型库(model zoo)中直接获取已经预定义好的神经网络的网络结构,具体本申请对深度学习框架如何获取神经网络的方式不做限定。在获得神经网络的网络结构后,深度学习框架将进一步将该神经网络转换成一张计算图,得到的该计算图可称为第一计算图。深度学习框架得到该第一计算图之后,会基于该第一计算图中各个节点之间的连接关系从第一计算图中提取到一个或多个可并行分支组,其中,每个可并行分支组都包括多个子分支(即至少2个子分支),子分支为不存在分叉的顺序串联结构,每个可并行分支组中的每个子分支包括一个或多个节点。该可并行分支组就指示该可并行分支组的多个子分支支持被并行执行。这里需要注意的是,属于同一个可并行分支组的子分支需要满足两个条件:一个是各子分支之间不存在依赖关系;二是属于不同子分支的任意两个或两个以上节点融合成一个节点后的计算图不存在环结构,即融合后的计算图中不存在环结构。在本申请实施例中,可并行分支组中包括的至少一个可并行分支组(可称为第一可并行分支组)满足以下条件中的至少一种:该第一可并行分支组内的所有子分支的输入来自于同一节点且该第一可并行分支组内的至少两个子分支的输出指向不同的节点、该第一可并行分支组内的所有子分支的输出指向同一节点且该第一可并行分支组内的至少两个子分支的输入来自不同的节点、该第一可并行分支组内的所有子分支的第一个节点没有父节点、该第一可并行分支组内的所有子分支的最后一个节点没有子节点。经过上述步骤后,深度学习框架可得到一个或多个可并行分支组,针对每一个可并行分支组,深度学习框架可对每个可并行分支组中分别来自不同子分支的多个节点进行融合,从而得到第二计算图。需要注意的是,本申请实施例所述的一个或多个可并行分支组不限定都是基于所述提取步骤得到的全部可并行分支组,也包括基于现有方式能搜索到的分支组,为便于描述,本申请仅对于区别于现有搜索方式不同的地方进行阐述,无论是何种方式提取到的可并行分支组,都可基于本申请所述的融合方式对每个可并行分支组的多个节点进行融合,以得到第二计算图。
[0009]在本申请上述实施方式中,提供了一种计算图的节点融合方法,相较于现有技术,考虑了其他一些可并行的分支的可能性,从而找到不同于现有技术的规则限定的可以并行的分支的组合,也就可以在计算图的节点融合中,融合这些分支的组合中的节点,从而扩展了能够获取的可融合节点的范围。
[0010]在第一方面的一种可能的实现方式中,在可并行分支组为多个的情况下,该可并
行分支组还包括至少一个第二可并行分支组,该第二可并行分支组满足以下条件:该第二可并行分支组内的所有子分支的输入来自于同一节点且该第二可并行分支组内的至少两个子分支的输出指向同一节点,该第二可并行分支组内的每个子分支包括至少两个节点。
[0011]在本申请上述实施方式中,基于第一计算图中各节点本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种计算图的节点融合方法,应用于深度学习框架,其特征在于,包括:将一神经网络转换为第一计算图;从所述第一计算图中提取一个或多个可并行分支组,所述可并行分支组指示属于一个可并行分支组的多个子分支支持被并行执行,所述可并行分支组包括第一可并行分支组,所述第一可并行分支组满足以下条件中的至少一种:所述第一可并行分支组内的所有子分支的输入来自于同一节点且所述第一可并行分支组内的至少两个子分支的输出指向不同的节点、所述第一可并行分支组内的所有子分支的输出指向同一节点且所述第一可并行分支组内的至少两个子分支的输入来自不同的节点、所述第一可并行分支组内的所有子分支的第一个节点没有父节点、所述第一可并行分支组内的所有子分支的最后一个节点没有子节点;对一个或多个所述可并行分支组中每个可并行分支组的多个节点进行融合,以基于所述第一计算图得到第二计算图,所述多个节点中的每个节点所属的子分支都与所述多个节点中的其他任何一个节点所属的子分支不同。2.根据权利要求1所述的方法,其特征在于,在所述可并行分支组为多个的情况下,所述可并行分支组还包括第二可并行分支组,所述第二可并行分支组满足以下条件:所述第二可并行分支组内的所有子分支的输入来自于同一节点且所述第二可并行分支组内的至少两个子分支的输出指向同一节点,所述第二可并行分支组内的每个子分支包括至少两个节点。3.根据权利要求1

2中任一项所述的方法,其特征在于,所述对一个或多个可并行分支组中的每个可并行分支组的多个节点进行融合,以基于所述第一计算图得到第二计算图包括:从所述每个可并行分支组的目标子分支中剔除不可融合节点,以得到第三可并行分支组,所述目标子分支为所述每个可并行分支组中的任意一个子分支,所述不可融合节点包括指示特定运算操作的节点,所述特定运算操作包括以下操作中的至少一种:矩阵乘操作和卷积操作;将所述第三可并行分支组中的多个节点进行融合,以得到融合节点,所述第二计算图中包括所述融合节点与所述第一计算图中的未融合节点,所述第三可并行分支组中的多个节点中的每个节点所属的子分支都与所述多个节点中的其他任何一个节点所属的子分支不同。4.根据权利要求3所述的方法,其特征在于,所述方法还包括:重复执行所述将所述第三可并行分支组中的多个节点进行融合,以得到融合节点的步骤,直至所述第三可并行分支组中未融合节点的数量少于2个。5.根据权利要求3

4中任一项所述的方法,其特征在于,所述将所述第三可并行分支组中的多个节点进行融合,以得到融合节点包括:基于所述第三可并行分支组中的n个节点,得到m个节点组合,所述n个节点分别来自构成所述第三可并行分支组的n个分支,且所述m个节点组合中的每一个节点组合都包括至少两个节点,m≥1,n≥2且2m≤n;通过算力评估模型对所述m个节点组合各自所需的算力进行评估,以得到m个评估结果,所述m个评估结果中的每个评估结果用于表征如下情形一种:所述m个节点组合中每个
节点组合所需耗费的算力资源、所述m个节点组合中每个节点组合所节省的算力资源;在第一评估结果满足预设条件的情况下,将与所述第一评估结果对应的第一节点组合中的节点进行融合,以得到一个或多个第一融合节点,所述第一评估结果为所述m个评估结果中的一个,所述第一节点组合为所述m个节点组合中的一个。6.根据权利要求5所述的方法,其特征在于,所述第一评估结果满足预设条件至少包括如下一种情形:在所述m个评估结果中的每个评估结果用于表征所述m个节点组合中每个节点组合所需耗费的算力资源的情况下,所述第一评估结果达到加速硬件上具体执行计算任务的模块(device)的算力要求;在所述m个评估结果中的每个评估结果用于表征所述m个节点组合中每个节点组合所节省的算力资源的情况下,所述第一评估结果在所述m个评估结果中最优;或者,所述m个评估结果中的每个评估结果用于表征所述m个节点组合中每个节点组合所节省的算力资源的情况下,所述第一评估结果在x个评估结果中最优,所述x个评估结果为所述m个评估结果中的至少两个评估结果。7.根据权利要求1

6中任一项所述的方法,其特征在于,所述从所述第一计算图中提取一个或多个可并行分支组包括:在所述第一计算图中搜索拥有共同的第一父节点的多个第一分支,并根据所述多个第一分支得到一个可并行分支组,所述第一父节点为所述第一计算图中的任意一个父节点;和/或,在所述第一计算图中搜索拥有共同的第一子节点的多个第二分支,并根据所述多个第二分支得到一个可并行分支组,所述第一子节点为所述第一计算图中的任意一个子节点。8.根据权利要求7所述的方法,其特征在于,所述根据所述多个第一分支得到一个可并行分支组包括:以所述第一父节点为起始点,分别向下搜索每个第一分支,直至在向下搜索过程中遇到共同的第二父节点或共同的第二子节点时停止,以得到所述多个第一分支对应的可并行分支组,所述可并行分支组包含所述多个第一分支各自对应的第一子分支,每个所述第一子分支包含的节点是在向下搜索每个所述第一子分支过程中得到的节点。9.根据权利要求7

8中任一项所述的方法,其特征在于,所述根据所述多个第二分支得到一个可并行分支组包括:以所述第一子节点为起始点,分别向上搜索每个第二分支,直至在向上搜索过程中遇到共同的第三父节点或共同的第三子节点时停止,以得到所述多个第二分支对应的可并行分支组,所述可并行分支组包含所述多个第二分支各自对应的第二子分支,每个所述第二子分支包含的节点是在向上搜索每个所述第二子分支过程中得到的节点。10.根据权利要求1

9中任一项所述的方法,其特征在于,所述从所述第一计算图中提取一个或多个可并行分支组还包括:在所述第一计算图中搜索多个第三分支,并根据所述多个第三分支得到一个可并行分支组,所述多个第三分支中每个第三分支的第一个节点都没有父节点;和/或,在所述第一计算图中搜索多个第四分支,并根据所述多个第四分支得到一个可并行分支组,所述第四分支中每个第四分支的最后一个节点都没有子节点。
11.根据权利要求10所述的方法,其特征在于,所述根据所述多个第三分支得到一个可并行分支组包括:以每个所述第三分支的第一个节点为起始点,分别向下搜索每个所述第三分支,直至在向下搜索过程中遇到同一父节点或同一子节点时停止,以得到所述多个第三分支对应的可并行分支组,所述可并行分支组包含所述多个第三分支各自对应的第三子分支,每个所述第三子分支包含的节点是在向下搜索每个所述第三子分支过程中得到的节点。12.根据权利要求10

11中任一项所述的方法,其特征在于,所述根据所述多个第四分支得到一个可并行分支组包括:以每个所述第四分支的最后一个节点为起始点,分别向上搜索每个所述第四分支,直至在向上搜索过程中遇到同一父节点或同一子节点时停止,以得到所述多个第四分支对应的可并行分支组,所述可并行分支组包含所述多个第四分支各自对应的第四子分支,每个所述第四子分支包含的节点是在向上搜索每个所述第四子分支过程中得到的节点。13.根据权利要求1

12中任一项所述的方法,其特征在于,所述从所述第一计算图中提取一个或多个可并行分支组还包括:在目标节点不属于不可融合节点的情况下,对所述目标节点周围的局部结构进行化简,得到第五分支,所述目标节点为所述第一计算图中未被划分进任意一个可并行分支组的节点;在所述第五分支为多个的情况下,根据所述多个第五分支得到一个可并行分支组。14.根据权利要求1

13中任一项所述的方法,其特征在于,所述方法还包括:对所述第二计算图中的融合节点进行编译,得到与所述融合节点对应的算子核(kernel)。15.根据权利要求14所述的方法,其特征在于,所述融合节点由p个节点融合得到,所述对所述第二计算图中包括的融合节点进行编译,得到与所述融合节点对应的算子核(kernel)包括:分别调度所述p个节点,以得到与所述p个节点分别对应的p个子中间表示(IR);对所述p个子IR进行融合,得到一个总IR;对所述总IR进行编译,得到与所述融合节点对应的算子核(kernel)。16.根据权利要求1

15中任一项所述的方法,其特征在于,所述深度学习框架为:mindspore、tensorflow、tensornetwork、pytorch、mxnet、caffe或theano。17.一种深度学习框架,其特征在于,包括:转换模块,用于将一神经网络转换为第一计算图;搜索模块,用于从所述第一计算图中提取一个或多个可并行分支组,所述可并行分支组指示属于一个可并行分支组的多个子分支支持被并行执行,所述可并行分支组包括第一可并行分支组,所述第一可并行分支组满足以下条...

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

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

1