【技术实现步骤摘要】
一种计算图的节点融合方法及设备
[0001]本申请涉及机器学习领域,尤其涉及一种计算图的节点融合方法及设备。
技术介绍
[0002]计算图(computational graph)是一种通用的计算过程表示方法,用于描述函数的有向无环图,普遍应用在各类数据处理平台上,一个计算图包括多个节点和有向边。在机器学习领域中,计算图则用于表示神经网络涉及的计算逻辑,计算图中的每个节点表示神经网络所进行的相应运算(如,add节点代表一个加法运算),该相应运算也可称为计算任务,一个节点代表一个计算任务,有向边将前一个节点(可称为前节点或父节点)连接至后一个节点(可称为后节点或子节点),表示父节点的输出作为子节点的输入。
[0003]深度学习框架对计算图的具体执行方式的一般做法是:首先,将用户定义好的神经网络转换为一张计算图(该计算图已经过优化处理),再按照计算图中各节点的拓扑序将这些排好序的节点对应的计算任务一一加载到加速硬件(如,图形处理器(graphics processing unit,GPU)、张量处理器(tensor processing unit,TPU)、昇腾处理器(如,昇腾910和昇腾310)等)上具体执行计算任务的模块device上执行。如图1所示,图1中的左图部分为计算图,图1中的右图部分为对应该计算图的拓扑排序结果。在整个神经网络的执行过程中,由于执行顺序的影响,device上的每一个计算任务必须在前一拓扑序的计算任务执行结束后才能开始,这意味着排序会隐式地在数据独立的计算任务间添加上执行上的依赖关系, ...
【技术保护点】
【技术特征摘要】
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.一种深度学习框架,其特征在于,包括:转换模块,用于将一神经网络转换为第一计算图;搜索模块,用于从所述第一计算图中提取一个或多个可并行分支组,所述可并行分支组指示属于一个可并行分支组的多个子分支支持被并行执行,所述可并行分支组包括第一可并行分支组,所述第一可并行分支组满足以下条...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。