CN117273115A - 一种反向计算图的静态生成方法、装置、设备及介质 - Google Patents
一种反向计算图的静态生成方法、装置、设备及介质 Download PDFInfo
- Publication number
- CN117273115A CN117273115A CN202311576922.2A CN202311576922A CN117273115A CN 117273115 A CN117273115 A CN 117273115A CN 202311576922 A CN202311576922 A CN 202311576922A CN 117273115 A CN117273115 A CN 117273115A
- Authority
- CN
- China
- Prior art keywords
- reverse
- operator
- calculation
- graph
- tensor
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000004364 calculation method Methods 0.000 title claims abstract description 254
- 238000000034 method Methods 0.000 title claims abstract description 89
- 230000003068 static effect Effects 0.000 title claims abstract description 36
- 238000005457 optimization Methods 0.000 claims abstract description 105
- 230000008569 process Effects 0.000 claims description 36
- 238000012545 processing Methods 0.000 claims description 20
- 238000004590 computer program Methods 0.000 claims description 16
- 230000004927 fusion Effects 0.000 claims description 14
- 238000013507 mapping Methods 0.000 claims description 9
- 230000004044 response Effects 0.000 claims description 5
- 238000010586 diagram Methods 0.000 description 22
- PXFBZOLANLWPMH-UHFFFAOYSA-N 16-Epiaffinine Natural products C1C(C2=CC=CC=C2N2)=C2C(=O)CC2C(=CC)CN(C)C1C2CO PXFBZOLANLWPMH-UHFFFAOYSA-N 0.000 description 11
- 239000011159 matrix material Substances 0.000 description 10
- 238000004891 communication Methods 0.000 description 8
- 238000009825 accumulation Methods 0.000 description 7
- 125000004122 cyclic group Chemical group 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 238000013135 deep learning Methods 0.000 description 3
- 238000010801 machine learning Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000013136 deep learning model Methods 0.000 description 2
- 230000004069 differentiation Effects 0.000 description 2
- 238000011156 evaluation Methods 0.000 description 2
- 238000007499 fusion processing Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000005094 computer simulation Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000011521 glass Substances 0.000 description 1
- 238000011478 gradient descent method Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000003062 neural network model Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000017105 transposition Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Biophysics (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Biomedical Technology (AREA)
- Artificial Intelligence (AREA)
- Mathematical Physics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种反向计算图的静态生成方法、装置、设备及介质,该方法包括:获取前向计算图,并确定出与所述前向计算图中的各前向张量算子分别对应的反向算子;根据各所述反向算子,生成与所述前向计算图对应的反向计算图;对所述反向计算图进行计算存储优化和/或读写优化,得到反向优化计算图。本发明提供的技术方案,可以节省生成反向优化图的时间成本与内存空间成本,提高梯度求解的效率。
Description
技术领域
本发明涉及深度学习领域,尤其涉及一种反向计算图的静态生成方法、装置、设备及介质。
背景技术
随着深度学习技术的不断发展,神经网络模型的规模变得越来越大,基于梯度的模型优化算法得到了越来越广泛的应用。梯度下降法用于求解损失函数的最优值,通过计算参数与损失函数的梯度并在梯度下降的方向不断迭代求得极小值。
一般来说,深度学习模型或者科学计算模型可以被解析为前向计算图形式的中间表示,而为了实现基于梯度的模型优化,需要生成与前向计算图相对应的反向计算图,以实现对梯度的计算。
当前的系统可以提供常用的反向计算算子用于构建反向计算图,但是,对于不常使用的反向计算逻辑没有实现有效覆盖,这就需要开发人员手动编写反向计算的逻辑代码,这样不仅费时费力,效率低下,且容易产生逻辑错误;此外,系统还可以使用运算符重载的方式实现运行时的动态自动微分,但是,这一机制会引入一定的运行时开销,同时,上述动态自动微分过程由于缺乏计算图的静态分析也可能错过潜在的优化机会,导致运行时性能下降。
发明内容
本发明提供了一种反向计算图的静态生成方法、装置、设备及介质,以提供一种在编译阶段静态生成并优化反向计算图的新方式,从一定程度上提高了运行时系统对梯度求解的效率。
第一方面,本发明实施例提供了一种反向计算图的静态生成方法,包括:
获取前向计算图,并确定出与所述前向计算图中的各前向张量算子分别对应的反向算子;
根据各所述反向算子,生成与所述前向计算图对应的反向计算图;
对所述反向计算图进行计算存储优化和/或读写优化,得到反向优化计算图。
第二方面,本发明实施例提供了一种反向计算图的静态生成装置,包括:
反向算子确定模块,用于获取前向计算图,并确定出与所述前向计算图中的各前向张量算子分别对应的反向算子;
反向计算图生成模块,用于根据各所述反向算子,生成与所述前向计算图对应的反向计算图;
反向计算图优化模块,用于对所述反向计算图进行计算存储优化和/或读写优化,得到反向优化计算图。
第三方面,本发明实施例提供了一种反向计算图的静态生成设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行本发明实施例中任一项所述的反向计算图的静态生成方法。
第四方面,本发明实施例提供了一种计算机可读存储介质,包括:
所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使处理器执行时实现本发明实施例中任一项所述的反向计算图的静态生成方法。
本发明实施例可以在编译阶段通过前向计算图中的每个前向张量算子确定出与之对应的所有反向算子,进而可以根据反向算子确定用于进行梯度计算的反向计算图,可以在代码编译阶段静态实现反向计算图的生成;进一步的,通过对自动生成的反向计算图进行计算存储优化和/或读写优化,得到反向优化计算图的实现方式,可以在时间开销、空间开销以及读写开销上实现折中和优化,进而,当基于上述反向计算图构建得到机器代码后,可以充分利用异构计算系统中各种计算设备的算力,减少梯度计算时所需的时间成本与内存空间成本,提高了运行时系统对梯度的求解效率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例一提供的一种反向计算图的静态生成方法的流程图;
图2为本发明实施例的技术方案所适用的一种前向计算图的示意图;
图3为本发明实施例的技术方案所适用的一种反向计算图的示意图;
图4为本发明实施例二提供的另一种反向计算图的静态生成方法的流程图;
图5为本发明实施例的技术方案所适用的各种算子类型的示意图;
图6为本发明实施例的技术方案所适用的一种包含前向循环的前向计算图的示意图;
图7为本发明实施例的技术方案所适用的一种包含反向循环的反向计算图的示意图;
图8为本发明实施例所适用的一种通过对前向逻辑进行循环展开的方式生成反向逻辑的示意图;
图9为本发明实施例所适用的一种通过对前向逻辑进行模式映射的方式生成反向逻辑的示意图;
图10为本发明实施例三提供的又一种反向计算图的静态生成方法的流程图;
图11为本发明实施例四提供的再一种反向计算图的静态生成方法的流程图;
图12为本发明实施例的技术方案所适用的各种计算存储优化策略的示意图;
图13为本发明实施例的技术方案所适用的算子融合过程的示意图;
图14为本发明实施例五提供的一种反向计算图的静态生成装置的结构示意图;
图15是实现本发明实施例的一种反向计算图的静态生成方法的电子设备的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
实施例一
图1为本发明实施例一提供的一种反向计算图的静态生成方法的流程图,本实施例可适用于高性能计算任务,包括深度学习以及科学计算等;该方法可以由一种反向计算图的静态生成装置执行,该装置可以采用硬件和/或软件的形式实现,并可以配置于各种含有MLIR(Multi Level Intermediate Representation,多级中间表示)生态的计算机设备中,与不同类型的异构计算系统配合使用。
其中,该异构计算系统可以为由云端或者计算中心的设备组成的集群、移动终端设备组成的设备云与边缘计算设备组成的设备云等,本发明实施例不做限制。
如图1所示,该方法包括:
步骤110、获取前向计算图,并确定出与所述前向计算图中的各前向张量算子分别对应的反向算子。
步骤120、根据各所述反向算子,生成与所述前向计算图对应的反向计算图。
计算图是一种有向无环图,由基本数据结构张量与基本运算单元算子及有向边构成,张量是基于标量与向量的高维推广,可以理解为高维度的矩阵,在张量中可以储存张量的数据类型,数据形状,秩以及梯度传递状态等多个信息;算子可以对张量进行加工处理,对张量进行常用的计算逻辑,包括数据转换、条件控制、数学运算等。
具体的,在计算图中用节点表示张量算子,所有输入节点构成输入层,中间层由对应的中间节点构成,所有输出节点构成输出层。
具体的,在计算图中,可以用有向边表示节点或张量算子之间的运算方向,如节点A通过有向边指向节点B,有向边方向为A->B,则表示,可以由A节点通过运算得出结果B,进一步的,前向计算图为从输入层出发,通过有向边和中间层到达输出层。从整个图中信息流动方向来看,前向计算图中信息的流动为输入层到输出层的前向传播,在传播过程中完成相应的参数计算;相对应的,当图中信息的流动方向为输出层到输入层的反向传播,这种计算图为反向计算图。
作为示例而非限定,在图2中示出了本发明实施例的技术方案所适用的一种前向计算图的示意图,在图3中示出了本发明实施例的技术方案所适用的一种与图2相对应的反向计算图的示意图。
具体的,前向计算图中的张量算子为前向张量算子,可以通过前向张量算子确定对应的反向算子,通过生成的反向算子,可以构成与前向计算图相对应的反向计算图。
在本实施例所适用的一个应用场景中,当需要使用异构计算系统对设定机器学习模型(典型的,深度学习模型或者科学计算模式)进行模型训练时,可以首先将该机器学习模型的计算逻辑解析为前述的前向计算图形式的中间表示,并在编译阶段,通过前述方式将该前向计算图自动化的转换为反向计算图。
步骤130、对所述反向计算图进行计算存储优化和/或读写优化,得到反向优化计算图。
前向计算图进行前向计算时,可以选择将中间变量的计算结果存储或者不存储于节点中,而反向计算中,可能会需要使用中间变量的计算结果,因此存在将反向计算图进行计算存储优化的过程。此外,通过将多个计算算子融合为一个计算算子,可以减少元素的读写需求,因此,同样存在将反向计算图进行与读写优化的过程。
其中,存储优化的核心为,选择是否对前向计算图中各前向计算节点的中间变量计算结果进行存储,或者选择在何种前向计算节点处进行中间变量计算结果的存储,以实现最优的计算存储性能;读写优化的核心为,通过采用何种计算算子的融合方式进行算子融合,以减少中间变量计算结果的读写次数,节约计算时间。相应的,反向优化图为经过计算存储优化和/或读写优化的反向计算图。
进一步的,在得到反向优化计算图,可以将该反向优化计算图结合前述的前向计算图一起编译部署到设备上运行。
可选的,在得到反向优化计算图之后,可以在将所述反向优化计算图编译为目标机器代码后,将所述目标机器代码部署至异构计算设备上运行。
在实际应用中,一般将反向优化计算图与前向计算图一起编译为匹配的机器代码,并将该机器代码部署至异构计算设备上运行的。具体的,将所述反向优化计算图和前向计算图编译为机器代码的操作可以包括:
将生成的前向计算图和反向计算图导出为多级中间表示文本;根据不同的计算设备类型进行不同的部署目标配置;将多级中间表示文本编译为虚拟机模块 (VM Module)类型的机器代码。
将机器代码部署至异构计算设备上运行的操作可以包括:
将虚拟机模块类型的机器代码加载到目标设备的运行时虚拟机中;给定输入数据,执行虚拟机模块,计算给定前向计算图输出对输入的导数。
本实施例可以在编译阶段通过前向计算图,并确定出与所述前向计算图中的各前向张量算子分别对应的反向算子,并可以根据各所述反向算子,生成与所述前向计算图对应的,用于进行梯度计算的反向计算图,可以在代码编译阶段静态实现反向计算图的生成,进一步的,通过对反向计算图进行计算存储优化和/或读写优化,得到反向优化计算图,使用反向优化计算图进行梯度计算,可以在时间开销、空间开销和读写开销中实现折中和优化,进而当基于上述反向计算图构建得到机器代码后,可以充分利用异构计算系统中各种计算设备的算力,减少梯度计算时所需的时间成本与内存空间成本,提高了运行时系统对梯度的求解效率。
实施例二
图4为本发明实施例二提供的一种反向计算图的静态生成方法的流程图,本实施例在上述实施例方法的基础上,进一步限定了确定出与所述前向计算图中的各前向张量算子分别对应的反向算子的方法,并且,可以应用于上述各实施例中,具体如图4所示,包括:
步骤410、正向遍历前向计算图中的各前向张量算子,在所述前向计算图中依次获取第一前向张量算子。
其中,正向遍历可以理解为,按照前向计算图的信息流动方向,由前向计算图的输入层至输出层,逐层遍历每一个前向张量算子,每一个前向张量算子均会依次成为第一前向张量算子,并进行计算处理,遍历过程逐渐由输入层向输出层进行前向传播,直至遍历所有前向张量算子。具体的,首个第一前向张量算子可以为输入层直接相连的前向张量算子中的一个。
步骤420、检测所述第一前向张量算子是否可以转换为前向循环的形式。
其中,前向循环的形式可以理解为,通过将第一前向张量算子进行一级或者多级的循环展开,得到一级循环或者多层循环嵌套的计算逻辑,以使得最内层循环中的计算逻辑中仅包含一个标量计算逻辑。
一般来说,根据算子输入输出的映射关系的不同,可以将算子划分为三个类别,一对一算子、多对一算子以及多对多算子。
具体的,如图5所示,一对一算子可以定义为一个输入元素参与到一个输出元素的计算中的算子,多对一算子可以定义为多个输入元素参与到一个输出元素的计算中的算子,而多对多算子可以定义为多个输入元素参与到多个输出元素的计算中的算子。
发明人通过研究发现,对于所有的一对一算张量算子,均可以转换为等价的循环形式。
在一个具体的例子中,如果一对一张量算子具体为累加算子,用于实现对输入数据的累加输出,该累加算子可以通过:sum(tensor<10xf32>) -> tensor<1xf32>)的形式来表示。其中,该表达式中的tensor<10xf32>表示输入为数据类型为float32的10个数据项。tensor<1xf32>表示将上述10个数据项进行累加计算后,得到数据类型为float32的1个数据项。
针对上述张量形式的一对一累加算子,可以将其转换为下述循环形式:
affine.for %i = 0 to 10 {
%a = affine.load %A[%i]
%b = affine.load %B[%i]
%0 = arith.addf %a, %b
affine.store %0, %C[%i]
}
可以明显的看出,对上述张量形式的累加算子进行循环展开后,等价于一个循环计算的标量算子(也即,%0 = arith.addf %a, %b)。
相类似的,某些类型的多对一或者多对多算子,例如,规约求和算子或者矩阵乘算子等,同样也是可以转换为一个循环计算的标量算子的。
例如,针对一个多对一的矩阵乘算子,输入为数据A和数据B,输出为数据C,数据A、数据B和数据C中均包括数据类型为float32的10个数据项。
针对上述张量形式的多对一矩阵乘算子,可以将其转换为下述循环形式:
affine.for %i = 0 to 10 {
affine.for %j = 0 to 10 {
affine.for %k = 0 to 10 {
%a = affine.load %A[%i, %j]
%b = affine.load %B[%j, %k]
%c = affine.load %C[%i, %k]
%0 = arith.mulf %a, %b
%1 = arith.addf %c, %0
affine.store %1, %C[%i, %k]
}
}
}
同样的,通过对上述张量形式的矩阵乘算子进行循环展开后,等价于循环计算的标量算子(也即,%0 = arith.mulf %a, %b以及%1 = arith.addf %c, %0)。
在本实施例中,每当获取到一个第一前向张量算子之后,首先判断该第一前向张量算子是否可以转换为前向循环的形式,以确定后续的处理方式。
具体的,若第一前向张量算子可以转换为前向循环的形式,则执行步骤430;否则,执行步骤450。
步骤430、识别所述第一前向张量算子的前向循环中的前向标量算子,并将所述前向标量算子进行微分处理,得到反向标量算子,执行S440。
其中,反向标量算子为前向标量算子进行微分处理后的,应用于反向计算图中进行计算的标量算子。
步骤440、根据所述反向标量算子构建得到反向循环,并将所述反向循环确定为与所述第一前向张量算子对应的反向算子。
其中,反向循环可以理解为,与前向标量算子的正向循环相对应的,由反向标量算子为最内层循环中的计算逻辑组成的循环形式;反向算子为反向计算图中对应前向计算图中第一前向张量算子的算子。
作为示例而非限定,在图6中示出了本发明实施例的技术方案所适用的一种包含前向循环的前向计算图的示意图。同时,在图7示出了将图6中的前向计算图中的每个前向张量算子进行转换后得到的包含反向循环的反向计算图的示意图。
具体的,由于每个前向张量算子会对应一个反向算子,前向张量算子转换得到的前向循环也会对应一个包含反向标量算子的反向循环。
进一步的,在图8中示出了一种通过对前向逻辑进行循环展开的方式生成反向逻辑的示意图。如图8所示,由于前向矩阵乘算子可以转换为前向循环的形式,通过对该前向循环中的最内层循环中的前向标量算子进行微分计算,可以得到反向循环的形式,进而可以将上述反向循环确定为反向矩阵乘算子。
步骤450、查询预先构建的模式映射关系,获取与所述第一前向张量算子匹配的反向张量算子,并将所述反向张量算子确定为与所述第一前向张量算子对应的反向算子。
发明人通过研究发现,某些特殊的多对一算子或者多对多算子,一般无法转换为前向循环的形式,进而,也就无法通过对前向循环中的前向标量算子求微分的方式,计算得到相应的反向变量算子。相应的,可以收集这些特殊的多对一算子或者多对多算子,并基于这些算子的计算逻辑进行逆运算,构建得到与这些特殊算子分别对应的反向算子。
进而,可以构建得到模式映射关系,以表达不同算子之间的微分关系,例如,算子库中预先存储有gather(聚合)算子和scatter(分散)算子,且在模式映射关系中建立Y =scatter(X)以及X’ = gather(Y’)之间的对应关系。在当前获取的第一前向张量算子为scatter算子时,可以直接确定与该第一前向张量算子匹配的反向算子为gather算子。或者,在当前获取的第一前向张量算子为gather算子时,可以直接确定与该第一前向张量算子匹配的反向算子为scatter算子。
具体的,在图9中示出了本发明实施例所适用的一种通过对前向逻辑进行模式映射的方式生成反向逻辑的示意图。如图9所示,当前向矩阵乘算子无法进行前向循环展开时,则只能预先通过转置计算确定出与该前向矩阵乘算子对应的反向矩阵乘算子。
步骤460、判断是否完成对全部前向张量算子的处理:若是,执行步骤470;否则,返回执行步骤410。
具体的,在正向遍历过程中,会将各前向张量算子依次确定为第一前向张量算子,并对第一前向张量算子进行步骤420至步骤450的处理,得到相对应反向算子,直至根据所有前向张量算子确定所有的反向算子。
步骤470、根据各所述反向算子,生成与所述前向计算图对应的反向计算图。
步骤480、对所述反向计算图进行计算存储优化和/或读写优化,得到反向优化计算图。
本发明实施例的技术方案通过将前向计算图中的各前向张量算子逐个确定为第一前向张量算子,并根据第一前向张量算子确定对应的反向算子,进而生成反向计算图。进一步的,若第一前向张量算子可以转换为前向循环的形式,则将前向循环中的前向标量算子进行微分处理,得到反向标量算子,并根据反向标量算子对应生成反向循环,进而得到对应的反向算子;否则将第一前向张量算子与预先构建的模式映射关系进行匹配,得到对应的反向算子,通过反向算子生成与前向计算图对应的反向计算图。这种反向算子的确定方式,可以有效提高反向计算图的静态生成速度,进而可以在一定程度上提高了运行时系统对梯度的求解效率。
实施例三
图10为本发明实施例三提供的一种反向计算图的静态生成方法的流程图,本实施例在上述实施例方法的基础上,进一步限定了根据各所述反向算子,生成与所述前向计算图对应的反向计算图的方法,并且可以应用于上述各实施例中,具体如图10所示,包括:
步骤1010、获取前向计算图,并确定出与所述前向计算图中的各前向张量算子分别对应的反向算子。
步骤1020、获取所述前向计算图的最终输出梯度,作为当前梯度迭代值的初始值。
其中,最终输出梯度可以理解为,输出层直接相连的前向计算图中的前向张量算子的梯度,该梯度为前向计算图的最大梯度;当前梯度迭代值的初始值可以理解为,由于反向计算图的计算方向与前向计算图相反,前向计算图的输入层可以对应为反向计算图的输出层,前向计算图的输出层可以对应为反向计算图的输入层,因此反向计算图的计算需要从前向计算图的输出层开始,即需要最终输出梯度作为反向计算图梯度的初始值以便于反向计算图中第一次梯度的计算,最终输出梯度在反向计算图梯度计算时,梯度值将逐层递减,直至到达反向计算图的输出层。
步骤1030、反向遍历所述前向计算图中的各前向张量算子,在所述前向计算图中依次获取第二前向张量算子,并获取与所述第二前向张量算子匹配的当前反向算子。
其中,反向遍历对应正向遍历,由反向计算图的输入层至输出层,逐层遍历反向计算图中每一个张量算子,每一个张量算子均会依次成为第二前向张量算子,并对应反向计算图匹配对应的反向算子,直至反向计算图中所有的反向算子,进一步的,首个第二张量算子可以为与反向计算图中输入层直接相连的一个张量算子。
步骤1040、将所述当前梯度迭代值作为所述当前反向算子的输入值,计算所述当前反向算子的输出值,并将所述输出值与所述当前梯度迭代值的累加值作为新的当前梯度迭代值。
其中当前梯度迭代值为,由当前梯度迭代值的初始值逐层迭代后生成的值。
具体的,可以通过当前梯度迭代值确定当前反向算子的输入值,根据反向算子的输入值可以确定反向算子的输出值,进一步的,将输出值与当前梯度迭代值进行累加,即可更新当前梯度迭代值,并用于下一个反向算子输入值的确定。
步骤1050、检测是否完成对全部前向张量算子的处理:若是,则执行步骤1060;否则,返回执行步骤1030。
具体的,在反向遍历过程中,会通过不断获取第二前向张量算子,进而对第二前向张量算子进行步骤1030-步骤1040的操作,最终完成对全部前向张量算子的处理,确定所有反向算子的梯度迭代值,进而生成前向计算图对应的反向计算图。
示例性的,在完成反向计算逻辑的生成后,本方法反向遍历前向计算图 (in -> x-> y -> z -> out),可以通过下述方式实现反向计算图的生成:
grad = 输出梯度 # 初始情况
for 反向算子 in 反向计算图:
grad = 反向算子(grad) # 逆序遍历计算图,依次更新 grad
return grad # 输出梯度
具体的,将指定前向计算图输出变量对应的梯度值,即给定 out 的梯度记为out’;进一步的,将输出变量的梯度作为反向算子的输入,计算输入变量的梯度;(out’ ->z’ -> out_z),再进一步的,如果反向算子的输入变量的梯度计算结果是前向计算图输入变量对应的梯度值,则进行梯度累积(如果上一步的输出是 in,则累加到 in’中);否则梯度计算结果设置为新的输出变量对应的梯度值(out’ = out_z),并循环计算。
步骤1060、生成与所述前向计算图对应的反向计算图。
步骤1070、对所述反向计算图进行计算存储优化和/或读写优化,得到反向优化计算图。
本发明实施例通过获取前向计算图的最终输出梯度,作为当前梯度迭代值的初始值,并依次获取第二前向张量算子,并获取与所述第二前向张量算子匹配的当前反向算子,将所述当前梯度迭代值作为所述当前反向算子的输入值,计算所述当前反向算子的输出值,并将所述输出值与所述当前梯度迭代值的累加值作为新的当前梯度迭代值,通过这种方式,可以快速确定反向计算图中所有反向算子的输入值与输出值,进而可以根据反向算子确定用于进行梯度计算的反向计算图,可以在代码编译阶段静态实现反向计算图的生成,进一步的通过对自动生成的反向计算图进行计算存储优化和/或读写优化,可以充分利用异构计算系统中各种计算设备的算力,减少梯度计算时所需的时间成本与内存空间成本,提高了运行时系统对梯度的求解效率。
实施例四
图11为本发明实施例四提供的一种反向计算图的静态生成方法的流程图,本实施例在上述实施例方法的基础上,进一步限定了对所述反向计算图进行计算存储优化和/或读写优化,得到反向优化计算图的方法,并且,可以应用于上述各实施例中,具体如图11所示,包括:
步骤1110、获取前向计算图,并确定出与所述前向计算图中的各前向张量算子分别对应的反向算子。
步骤1120、根据各所述反向算子,生成与所述前向计算图对应的反向计算图。
步骤1130、响应于用户配置的计算存储优化策略,对所述反向计算图进行计算存储优化,所述计算存储优化策略包括全重计算策略、全存储策略、检查点策略以及启发式策略。
其中,计算存储优化策略为用户根据实际计算需求自行配置的策略,可以通过配置不同的策略,使计算中满足所需的内存存储需求。
其中,所述全重计算策略定义在前向计算过程中不存储中间变量,在反向计算过程中对使用到的中间变量进行重计算。
具体的,中间变量可以理解为,在前向计算中,前向张量算子进行计算时产生的中间计算结果,在全重计算策略中,中间变量产生后,将直接删除,不储存在内存之中,因此,在反向计算过程中,需要根据计算需求对所需使用的中间变量进行重新计算。
可选的,所述全存储策略定义在前向计算过程中存储全部中间变量,在反向计算过程中对使用到的中间变量进行直接读取。
具体的,全存储策略可以理解为,前向计算中因计算产生的中间变量将全部储存在内存之中,当反向计算需要用到对应中间变量时,可以从内存中进行直接读取。
可选的,所述检查点策略定义在前向计算过程中按照预设的间隔距离选取第一类检查点存储中间变量,在反向计算过程中对第一类检查点中存储的中间变量进行直接读取,对未在第一类检查点中存储的中间变量进行重计算。
具体的,检查点策略可以理解为,在前向计算中,按照预设的间隔选取部分中间变量进行内存存储,未选取的中间变量将直接删除,进一步的,选取的中间变量的节点为第一类检查点,第一类检查点的中间变量在反向过程中,可以直接从内存中读取对应的数值;未选取的中间变量在反向计算中,需要重新计算。
示例性的,可以每间隔100个节点,选取一个节点作为第一类检查点。具体的,在图12中示出了本发明实施例的技术方案所适用的各种计算存储优化策略的示意图,以方便理解。
可选的,所述启发式策略定义根据每个反向算子计算成本和读写成本,选取第二类检查点存储中间变量,在反向计算过程中对第二类检查点中存储的中间变量进行直接读取,对未在第二类检查点中存储的中间变量进行重计算。
具体的,第二类检查点在选取时,会根据反向算子计算成本和读写成本综合考量,同时,第二类检查点会存储中间变量,并在反向计算时读取,其余中间变量在反向计算时,将重新计算。
可选的,当确定用户配置的计算存储优化策略具体为启发式策略时,响应于用户配置的计算存储优化策略,对所述反向计算图进行计算存储优化,的操作,可以具体化为:
响应于用户配置的启发式策略,静态评估所述反向计算图中每个反向算子的计算成本和读写成本,并根据计算成本和读写成本计算结果,在各所述反向算子中识别计算成本倾向算子;在所述反向计算图中,将各计算成本倾向算子进行删除,并在所述前向计算图中,在与各计算成本倾向算子匹配的前向张量算子后添加前向存储指令。
其中,静态评估为反向计算图计算前对反向算子的成本评估方式。当某一个反向算子A的计算成本大于读写成本时,在前向计算过程中相应存储与该反向算子A匹配的前向张量算子计算得到的中间变量,反向计算至该反向算子A时,对存储的中间变量可以进行直接读取即可,当某一个反向算子B的读写成本大于计算成本时,则在前向计算过程中,不存储与该反向算子B匹配的前向张量算子计算得到的中间变量,而是在反向计算至该反向算子B对所需的中间变量进行重计算;计算成本倾向算子可以理解为计算成本大于读写成本的算子。
具体的,根据计算成本倾向算子可以确定需要重计算的算子,将反向计算图中一些重计算的算子进行移除,并在前向计算图中对应的位置插入存储操作,对应位置的前向张量算子在前向计算图计算得到中间变量后,会存储中间变量的计算结果。
其中,在计算每个反向算子的计算成本和读写成本时,可以基于设定硬件执行环境的特征,例如,存储层级、输入输出设备的读写性能以及计算单元数量以及性能等,对该反向计算图进行运行时建模,根据为每个反向计算算子所分配的缓存空间、计算资源以及读写资源,基于预先建立的成本评估模型,静态评估出反向计算图中每个反向算子的计算成本和读写成本。
通过上述设置,可以根据实际运行反向计算图的硬件设备的特征,对反向计算图进行相适配的计算存储优化,进而,可以科学调度计算机的硬件资源,在实际硬件环境中有效减少前向计算图中对中间变量计算结果的存储成本,以及反向计算图对中间变量计算结果读取时的读写成本。
步骤1140、如果所述反向计算图中包括多个相邻的一对一算子,则将所述多个一对一算子融合得到一个融合算子。
其中,反向计算图为反向计算图中进行计算优化的子图;一对一算子,可以理解为,有单输入量和单输出量所构成的算子,进一步的,相邻的一对一算子可以理解为,两个或多个一对一算子的输入量相同,即可以通过算子融合的方式,将多个一对一算子组成一个融合算子。
示例性的,如算子A和算子B为相邻的一对一算子,算子A的输入量为x,输出量为y1,算子B的输入量为算子A的输出量y1,输出量为y2,则可以将算子A与算子B进行融合,得到融合算子C,融合算子C的输入量为x,输出量为y2,即同时输出算子A和算子B的输出量,即减少对中间计算过程y1的反复读写。
步骤1150、如果所述反向计算图中包括能够作为后一相邻算子的生产者的多对一算子,则将所述多对一算子与所述后一相邻算子融合得到一个融合算子。
其中,多对一算子可以理解为,多输入量与单输出量所构成的算子,若可以将多对应算子的输出量作为后一相邻算子的输入量,即可将多对一算子与所述后一相邻算子融合得到一个融合算子,具体的,在图13中示出了本发明实施例的技术方案所适用的算子融合过程的示意图,具体的,在算子中间表示中,圆形节点代表一对一算子,六边形节点代表多对多算子,五边形节点代表多对一算子,循环中间表示中三角形节点代表将之前蓝色和黄色的算子进行融合后的循环。
示例性的,算子C为多对一算子,D为后偏移相邻算子,若算子C的输出量x为算子D的输入量,则可将算子D与算子C融合,使算子C的输入量作为融合算子的输入量,算子D的输出量作为融合算子的输出量。
步骤1160、得到反向优化计算图。
本发明实施例通过用户配置的计算存储优化策略,反向计算图进行计算存储优化,具体的,响应于用户配置的启发式策略,静态评估反向计算图中每个反向算子的计算成本和读写成本,并根据计算成本和读写成本计算结果,在各所述反向算子中识别计算成本倾向算子,在反向计算图中,将各计算成本倾向算子进行删除,并在所述前向计算图中,在与各计算成本倾向算子匹配的前向张量算子后添加前向存储指令,通过这种方式,可以减少前向计算图中对中间变量计算结果的存储成本,反向计算图对中间变量计算结果读取时的读写成本;通过对反向计算图的可融合算子进行算子融合,可以节约反向计算中的计算时间成本,提供梯度计算的效率。
实施例五
图14为本发明实施例五提供的一种反向计算图的静态生成装置的结构示意图,如图14所示,该装置包括:反向算子确定模块1410,反向计算图生成模块1420和反向计算图优化模块1430。
反向算子确定模块1410,用于获取前向计算图,并确定出与所述前向计算图中的各前向张量算子分别对应的反向算子;
反向计算图生成模块1420,用于根据各所述反向算子,生成与所述前向计算图对应的反向计算图;
反向计算图优化模块1430,用于对所述反向计算图进行计算存储优化和/或读写优化,得到反向优化计算图。
本发明实施例可以在编译阶段通过前向计算图中的每个前向张量算子确定出与之对应的所有反向算子,进而可以根据反向算子确定用于进行梯度计算的反向计算图,可以在代码编译阶段静态实现反向计算图的生成;进一步的,通过对自动生成的反向计算图进行计算存储优化和/或读写优化,得到反向优化计算图的实现方式,可以在时间开销、空间开销以及读写开销上实现折中和优化,进而,当基于上述反向计算图构建得到机器代码后,可以充分利用异构计算系统中各种计算设备的算力,减少梯度计算时所需的时间成本与内存空间成本,提高了运行时系统对梯度的求解效率。
在上述各实施例的基础上,反向算子确定模块1410可以包括:第一前向张量算子确定单元,判断单元和正向遍历单元。
第一前向张量算子确定单元,用于正向遍历所述前向计算图中的各前向张量算子,在所述前向计算图中依次获取第一前向张量算子。
判断单元,检测所述第一前向张量算子是否可以转换为前向循环的形式。
具体的,若是,则识别所述第一前向张量算子的前向循环中的前向标量算子,并将所述前向标量算子进行微分处理,得到反向标量算子;
根据所述反向标量算子构建得到反向循环,并将所述反向循环确定为与所述第一前向张量算子对应的反向算子;
若否,则查询预先构建的模式映射关系,获取与所述第一前向张量算子匹配的反向张量算子,并将所述反向张量算子确定为与所述第一前向张量算子对应的反向算子。
正向遍历单元,用于返回执行正向遍历所述前向计算图中的各前向张量算子,在所述前向计算图中依次获取第一前向张量算子的操作,直至完成对全部前向张量算子的处理。
反向计算图生成模块1420可以包括:当前梯度迭代值获取单元,反向算子确定单元,更新单元和反向遍历单元。
当前梯度迭代值获取单元,用于获取所述前向计算图的最终输出梯度,作为当前梯度迭代值的初始值。
反向算子确定单元,用于反向遍历所述前向计算图中的各前向张量算子,在所述前向计算图中依次获取第二前向张量算子,并获取与所述第二前向张量算子匹配的当前反向算子。
更新单元,用于将所述当前梯度迭代值作为所述当前反向算子的输入值,计算所述当前反向算子的输出值,并将所述输出值与所述当前梯度迭代值的累加值作为新的当前梯度迭代值。
反向遍历单元,用于返回执行反向遍历所述前向计算图中的各前向张量算子,在所述前向计算图中依次获取第二前向张量算子的操作,直至完全对全部前向张量算子的处理。
反向计算图优化模块1430可以包括:计算存储优化单元和读写优化单元。
计算存储优化单元,用于对所述反向计算图进行计算存储优化;
用于响应于用户配置的计算存储优化策略,对所述反向计算图进行计算存储优化,所述计算存储优化策略包括全重计算策略、全存储策略、检查点策略以及启发式策略;
其中,所述全重计算策略定义在前向计算过程中不存储中间变量,在反向计算过程中对使用到的中间变量进行重计算;
所述全存储策略定义在前向计算过程中存储全部中间变量,在反向计算过程中对使用到的中间变量进行直接读取;
所述检查点策略定义在前向计算过程中按照预设的间隔距离选取第一类检查点存储中间变量,在反向计算过程中对第一类检查点中存储的中间变量进行直接读取,对未在第一类检查点中存储的中间变量进行重计算;
所述启发式策略定义根据每个反向算子计算成本和读写成本,选取第二类检查点存储中间变量,在反向计算过程中对第二类检查点中存储的中间变量进行直接读取,对未在第二类检查点中存储的中间变量进行重计算。
可选的,计算存储优化单元,还用于响应于用户配置的启发式策略,静态评估所述反向计算图中每个反向算子的计算成本和读写成本,并根据计算成本和读写成本计算结果,在各所述反向算子中识别计算成本倾向算子;
在所述反向计算图中,将各计算成本倾向算子进行删除,并在所述前向计算图中,在与各计算成本倾向算子匹配的前向张量算子后添加前向存储指令。
读写优化单元用于对所述反向计算图进行读写优化,包括融合算子确定单元;
融合算子确定单元用于,如果所述反向计算图中包括多个相邻的一对一算子,则将所述多个一对一算子融合得到一个融合算子;
如果所述反向计算图中包括能够作为后一相邻算子的生产者的多对一算子,则将所述多对一算子与所述后一相邻算子融合得到一个融合算子。
本实施例装置还包括,编译模块,用于将所述反向优化计算图编译为目标机器代码后,将所述目标机器代码部署至异构计算设备上运行。
本发明实施例所提供的一种反向计算图的静态生成装置可执行本发明任意实施例中任意的一种反向计算图的静态生成方法,具备执行方法相应的功能模块和有益效果。
实施例六
图15示出了可以用来实施本发明的实施例的电子设备10的结构示意图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备(如头盔、眼镜、手表等)和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本发明的实现。
如图15所示,电子设备10包括至少一个处理器11,以及与至少一个处理器11通信连接的存储器,如只读存储器(ROM)12、随机访问存储器(RAM)13等,其中,存储器存储有可被至少一个处理器执行的计算机程序,处理器11可以根据存储在只读存储器(ROM)12中的计算机程序或者从存储单元18加载到随机访问存储器(RAM)13中的计算机程序,来执行各种适当的动作和处理。在RAM 13中,还可存储电子设备10操作所需的各种程序和数据。处理器11、ROM 12以及RAM 13通过总线14彼此相连。输入/输出(I/O)接口15也连接至总线14。
电子设备10中的多个部件连接至I/O接口15,包括:输入单元16,例如键盘、鼠标等;输出单元17,例如各种类型的显示器、扬声器等;存储单元18,例如磁盘、光盘等;以及通信单元19,例如网卡、调制解调器、无线通信收发机等。通信单元19允许电子设备10通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
处理器11可以是各种具有处理和计算能力的通用和/或专用处理组件。处理器11的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的处理器、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。处理器11执行上文所描述的各个方法和处理,例如一种反向计算图的静态生成方法。
也即:获取前向计算图,并确定出与所述前向计算图中的各前向张量算子分别对应的反向算子;
根据各所述反向算子,生成与所述前向计算图对应的反向计算图;
对所述反向计算图进行计算存储优化和/或读写优化,得到反向优化计算图。
在一些实施例中,一种反向计算图的静态生成方法可被实现为计算机程序,其被有形地包含于计算机可读存储介质,例如存储单元18。在一些实施例中,计算机程序的部分或者全部可以经由ROM 12和/或通信单元19而被载入和/或安装到电子设备10上。当计算机程序加载到RAM 13并由处理器11执行时,可以执行上文描述的一种反向计算图的静态生成方法的一个或多个步骤。备选地,在其他实施例中,处理器11可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行一种反向计算图的静态生成方法。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、复杂可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本发明的方法的计算机程序可以采用一个或多个编程语言的任何组合来编写。这些计算机程序可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,使得计算机程序当由处理器执行时使流程图和/或框图中所规定的功能/操作被实施。计算机程序可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本发明的上下文中,计算机可读存储介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的计算机程序。计算机可读存储介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。备选地,计算机可读存储介质可以是机器可读信号介质。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在电子设备上实施此处描述的系统和技术,该电子设备具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给电子设备。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)、区块链网络和互联网。
计算系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与VPS服务中,存在的管理难度大,业务扩展性弱的缺陷。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发明中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本发明的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
Claims (9)
1.一种反向计算图的静态生成方法,其特征在于,包括:
获取前向计算图,并确定出与所述前向计算图中的各前向张量算子分别对应的反向算子;
根据各所述反向算子,生成与所述前向计算图对应的反向计算图;
对所述反向计算图进行计算存储优化和/或读写优化,得到反向优化计算图;
对所述反向计算图进行读写优化,包括:
如果所述反向计算图中包括多个相邻的一对一算子,则将所述多个一对一算子融合得到一个融合算子;
如果所述反向计算图中包括能够作为后一相邻算子的生产者的多对一算子,则将所述多对一算子与所述后一相邻算子融合得到一个融合算子。
2.根据权利要求1所述的方法,其特征在于,确定出与所述前向计算图中的各前向算子分别对应的反向算子,包括:
正向遍历所述前向计算图中的各前向张量算子,在所述前向计算图中依次获取第一前向张量算子;
检测所述第一前向张量算子是否可以转换为前向循环的形式;
若是,则识别所述第一前向张量算子的前向循环中的前向标量算子,并将所述前向标量算子进行微分处理,得到反向标量算子;
根据所述反向标量算子构建得到反向循环,并将所述反向循环确定为与所述第一前向张量算子对应的反向算子;
若否,则查询预先构建的模式映射关系,获取与所述第一前向张量算子匹配的反向张量算子,并将所述反向张量算子确定为与所述第一前向张量算子对应的反向算子;
返回执行正向遍历所述前向计算图中的各前向张量算子,在所述前向计算图中依次获取第一前向张量算子的操作,直至完成对全部前向张量算子的处理。
3.根据权利要求1所述的方法,其特征在于,根据各所述反向算子,生成与所述前向计算图对应的反向计算图,包括:
获取所述前向计算图的最终输出梯度,作为当前梯度迭代值的初始值;
反向遍历所述前向计算图中的各前向张量算子,在所述前向计算图中依次获取第二前向张量算子,并获取与所述第二前向张量算子匹配的当前反向算子;
将所述当前梯度迭代值作为所述当前反向算子的输入值,计算所述当前反向算子的输出值,并将所述输出值与所述当前梯度迭代值的累加值作为新的当前梯度迭代值;
返回执行反向遍历所述前向计算图中的各前向张量算子,在所述前向计算图中依次获取第二前向张量算子的操作,直至完全对全部前向张量算子的处理。
4.根据权利要求1所述的方法,其特征在于,对所述反向计算图进行计算存储优化,包括:
响应于用户配置的计算存储优化策略,对所述反向计算图进行计算存储优化,所述计算存储优化策略包括全重计算策略、全存储策略、检查点策略以及启发式策略;
其中,所述全重计算策略定义在前向计算过程中不存储中间变量,在反向计算过程中对使用到的中间变量进行重计算;
所述全存储策略定义在前向计算过程中存储全部中间变量,在反向计算过程中对使用到的中间变量进行直接读取;
所述检查点策略定义在前向计算过程中按照预设的间隔距离选取第一类检查点存储中间变量,在反向计算过程中对第一类检查点中存储的中间变量进行直接读取,对未在第一类检查点中存储的中间变量进行重计算;
所述启发式策略定义根据每个反向算子计算成本和读写成本,选取第二类检查点存储中间变量,在反向计算过程中对第二类检查点中存储的中间变量进行直接读取,对未在第二类检查点中存储的中间变量进行重计算。
5.根据权利要求4所述的方法,其特征在于,响应于用户配置的计算存储优化策略,对所述反向计算图进行计算存储优化,包括:
响应于用户配置的启发式策略,静态评估所述反向计算图中每个反向算子的计算成本和读写成本,并根据计算成本和读写成本计算结果,在各所述反向算子中识别计算成本倾向算子;
在所述反向计算图中,将各计算成本倾向算子进行删除,并在所述前向计算图中,在与各计算成本倾向算子匹配的前向张量算子后添加前向存储指令。
6.根据权利要求1-5任一项所述的方法,其特征在于,在对所述反向计算图进行计算存储优化和/或读写优化,得到反向优化计算图之后,还包括:
将所述反向优化计算图编译为目标机器代码后,将所述目标机器代码部署至异构计算设备上运行。
7.一种反向计算图的静态生成装置,其特征在于,包括:
反向算子确定模块,用于获取前向计算图,并确定出与所述前向计算图中的各前向张量算子分别对应的反向算子;
反向计算图生成模块,用于根据各所述反向算子,生成与所述前向计算图对应的反向计算图;
反向计算图优化模块,用于对所述反向计算图进行计算存储优化和/或读写优化,得到反向优化计算图;
其中,反向计算图优化模块,具体用于:
如果所述反向计算图中包括多个相邻的一对一算子,则将所述多个一对一算子融合得到一个融合算子;
如果所述反向计算图中包括能够作为后一相邻算子的生产者的多对一算子,则将所述多对一算子与所述后一相邻算子融合得到一个融合算子。
8.一种电子设备,其特征在于,所述电子设备包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-6中任一项所述的反向计算图的静态生成方法。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使处理器执行时实现权利要求1-6中任一项所述的反向计算图的静态生成方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311576922.2A CN117273115B (zh) | 2023-11-24 | 2023-11-24 | 一种反向计算图的静态生成方法、装置、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311576922.2A CN117273115B (zh) | 2023-11-24 | 2023-11-24 | 一种反向计算图的静态生成方法、装置、设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117273115A true CN117273115A (zh) | 2023-12-22 |
CN117273115B CN117273115B (zh) | 2024-03-29 |
Family
ID=89221898
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311576922.2A Active CN117273115B (zh) | 2023-11-24 | 2023-11-24 | 一种反向计算图的静态生成方法、装置、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117273115B (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110751562A (zh) * | 2019-10-29 | 2020-02-04 | 山东科技大学 | 一种外汇时间序列预测的训练优化方法 |
CN110869946A (zh) * | 2017-02-23 | 2020-03-06 | 大脑系统公司 | 加速的深度学习 |
CN111401538A (zh) * | 2019-09-24 | 2020-07-10 | 上海寒武纪信息科技有限公司 | 一种数据处理方法、装置、计算机设备及存储介质 |
US20200387577A1 (en) * | 2019-06-05 | 2020-12-10 | X Development Llc | Cascading models for optimization of fabrication and design of a physical device |
CN112508190A (zh) * | 2020-12-10 | 2021-03-16 | 上海燧原科技有限公司 | 结构化稀疏参数的处理方法、装置、设备及存储介质 |
CN113272812A (zh) * | 2019-01-10 | 2021-08-17 | X开发有限责任公司 | 用于优化电磁设备的物理特性的系统和方法 |
FR3118814A1 (fr) * | 2021-01-13 | 2022-07-15 | Universite Clermont Auvergne | Optimisation topologique de propriétés physiques et/ou géométriques d’une structure par variations itératives de paramètres de forme |
CN115994567A (zh) * | 2022-12-28 | 2023-04-21 | 兰州交通大学 | 一种深度神经网络模型并行计算任务异步调度方法 |
CN117011118A (zh) * | 2022-12-21 | 2023-11-07 | 腾讯科技(深圳)有限公司 | 模型参数更新方法、装置、计算机设备以及存储介质 |
-
2023
- 2023-11-24 CN CN202311576922.2A patent/CN117273115B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110869946A (zh) * | 2017-02-23 | 2020-03-06 | 大脑系统公司 | 加速的深度学习 |
CN113792847A (zh) * | 2017-02-23 | 2021-12-14 | 大脑系统公司 | 加速的深度学习的设备、方法和系统 |
CN113272812A (zh) * | 2019-01-10 | 2021-08-17 | X开发有限责任公司 | 用于优化电磁设备的物理特性的系统和方法 |
US20200387577A1 (en) * | 2019-06-05 | 2020-12-10 | X Development Llc | Cascading models for optimization of fabrication and design of a physical device |
CN111401538A (zh) * | 2019-09-24 | 2020-07-10 | 上海寒武纪信息科技有限公司 | 一种数据处理方法、装置、计算机设备及存储介质 |
CN110751562A (zh) * | 2019-10-29 | 2020-02-04 | 山东科技大学 | 一种外汇时间序列预测的训练优化方法 |
CN112508190A (zh) * | 2020-12-10 | 2021-03-16 | 上海燧原科技有限公司 | 结构化稀疏参数的处理方法、装置、设备及存储介质 |
FR3118814A1 (fr) * | 2021-01-13 | 2022-07-15 | Universite Clermont Auvergne | Optimisation topologique de propriétés physiques et/ou géométriques d’une structure par variations itératives de paramètres de forme |
CN117011118A (zh) * | 2022-12-21 | 2023-11-07 | 腾讯科技(深圳)有限公司 | 模型参数更新方法、装置、计算机设备以及存储介质 |
CN115994567A (zh) * | 2022-12-28 | 2023-04-21 | 兰州交通大学 | 一种深度神经网络模型并行计算任务异步调度方法 |
Also Published As
Publication number | Publication date |
---|---|
CN117273115B (zh) | 2024-03-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3446260B1 (en) | Memory-efficient backpropagation through time | |
US20230035451A1 (en) | Resource usage prediction for deep learning model | |
US20190340532A1 (en) | Quantum computer simulator characterization | |
CN113703775A (zh) | 一种编译方法、装置、设备及存储介质 | |
CN111753983A (zh) | 神经网络模型的定制化方法、系统、设备和存储介质 | |
CN112749809B (zh) | 构造量子仿真系统的方法和装置 | |
CN114936085A (zh) | 基于深度学习算法的etl调度方法及装置 | |
US8276106B2 (en) | Swarm intelligence for electrical design space modeling and optimization | |
Hafeez et al. | Empirical analysis and modeling of compute times of cnn operations on aws cloud | |
Feljan et al. | Task allocation optimization for multicore embedded systems | |
WO2022104616A1 (en) | Non-linear causal modeling based on encoded knowledge | |
CN116167445B (zh) | 量子测量模式的处理方法、装置及电子设备 | |
CN116108764B (zh) | 光学智能优化方法、装置、设备、介质 | |
CN117273115B (zh) | 一种反向计算图的静态生成方法、装置、设备及介质 | |
CN114756211A (zh) | 模型训练方法、装置、电子设备和存储介质 | |
Wang et al. | Monte carlo tree search for task mapping onto heterogeneous platforms | |
Sinaei et al. | Run-time mapping algorithm for dynamic workloads using association rule mining | |
US20230168873A1 (en) | Scheduling apparatus, training apparatus, scheduler and generation method | |
CN115965070B (zh) | 计算图处理方法、装置、设备、存储介质以及程序产品 | |
CN115796228B (zh) | 算子融合方法、装置、设备以及存储介质 | |
CN117827619B (zh) | 异构算力的耗时预测仿真方法、装置、设备、介质及系统 | |
TWI782845B (zh) | 通用型圖形處理器核心函式之組態設定預測系統及方法 | |
CN115759260B (zh) | 深度学习模型的推理方法、装置、电子设备和存储介质 | |
O'Connell et al. | An exact dynamic programming based method to solve optimisation problems using GPUs | |
CN117519946A (zh) | 深度学习网络中的内存资源调度方法、装置、设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Country or region after: China Address after: Room a-522, 188 Yesheng Road, Lingang New District, China (Shanghai) pilot Free Trade Zone, Pudong New Area, Shanghai, 201306 Applicant after: Shanghai Suiyuan Technology Co.,Ltd. Address before: Room a-522, 188 Yesheng Road, Lingang New District, China (Shanghai) pilot Free Trade Zone, Pudong New Area, Shanghai, 201306 Applicant before: SHANGHAI ENFLAME TECHNOLOGY Co.,Ltd. Country or region before: China |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |