一种反向计算图的静态生成方法技术

技术编号:39848644 阅读:22 留言:0更新日期:2023-12-29 16:47
本发明专利技术公开了一种反向计算图的静态生成方法

【技术实现步骤摘要】
一种反向计算图的静态生成方法、装置、设备及介质


[0001]本专利技术涉及深度学习领域,尤其涉及一种反向计算图的静态生成方法

装置

设备及介质


技术介绍

[0002]随着深度学习技术的不断发展,神经网络模型的规模变得越来越大,基于梯度的模型优化算法得到了越来越广泛的应用

梯度下降法用于求解损失函数的最优值,通过计算参数与损失函数的梯度并在梯度下降的方向不断迭代求得极小值

[0003]一般来说,深度学习模型或者科学计算模型可以被解析为前向计算图形式的中间表示,而为了实现基于梯度的模型优化,需要生成与前向计算图相对应的反向计算图,以实现对梯度的计算

[0004]当前的系统可以提供常用的反向计算算子用于构建反向计算图,但是,对于不常使用的反向计算逻辑没有实现有效覆盖,这就需要开发人员手动编写反向计算的逻辑代码,这样不仅费时费力,效率低下,且容易产生逻辑错误;此外,系统还可以使用运算符重载的方式实现运行时的动态自动微分,但是,这一机制会引入一定的运行时开销,同时,上述动态自动微分过程由于缺乏计算图的静态分析也可能错过潜在的优化机会,导致运行时性能下降


技术实现思路

[0005]本专利技术提供了一种反向计算图的静态生成方法

装置

设备及介质,以提供一种在编译阶段静态生成并优化反向计算图的新方式,从一定程度上提高了运行时系统对梯度求解的效率

[0006]第一方面,本专利技术实施例提供了一种反向计算图的静态生成方法,包括:
[0007]获取前向计算图,并确定出与所述前向计算图中的各前向张量算子分别对应的反向算子;
[0008]根据各所述反向算子,生成与所述前向计算图对应的反向计算图;
[0009]对所述反向计算图进行计算存储优化和
/
或读写优化,得到反向优化计算图

[0010]第二方面,本专利技术实施例提供了一种反向计算图的静态生成装置,包括:
[0011]反向算子确定模块,用于获取前向计算图,并确定出与所述前向计算图中的各前向张量算子分别对应的反向算子;
[0012]反向计算图生成模块,用于根据各所述反向算子,生成与所述前向计算图对应的反向计算图;
[0013]反向计算图优化模块,用于对所述反向计算图进行计算存储优化和
/
或读写优化,得到反向优化计算图

[0014]第三方面,本专利技术实施例提供了一种反向计算图的静态生成设备,包括:
[0015]至少一个处理器;以及
[0016]与所述至少一个处理器通信连接的存储器;其中,
[0017]所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行本专利技术实施例中任一项所述的反向计算图的静态生成方法

[0018]第四方面,本专利技术实施例提供了一种计算机可读存储介质,包括:
[0019]所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使处理器执行时实现本专利技术实施例中任一项所述的反向计算图的静态生成方法

[0020]本专利技术实施例可以在编译阶段通过前向计算图中的每个前向张量算子确定出与之对应的所有反向算子,进而可以根据反向算子确定用于进行梯度计算的反向计算图,可以在代码编译阶段静态实现反向计算图的生成;进一步的,通过对自动生成的反向计算图进行计算存储优化和
/
或读写优化,得到反向优化计算图的实现方式,可以在时间开销

空间开销以及读写开销上实现折中和优化,进而,当基于上述反向计算图构建得到机器代码后,可以充分利用异构计算系统中各种计算设备的算力,减少梯度计算时所需的时间成本与内存空间成本,提高了运行时系统对梯度的求解效率

附图说明
[0021]为了更清楚地说明本专利技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图

[0022]图1为本专利技术实施例一提供的一种反向计算图的静态生成方法的流程图;
[0023]图2为本专利技术实施例的技术方案所适用的一种前向计算图的示意图;
[0024]图3为本专利技术实施例的技术方案所适用的一种反向计算图的示意图;
[0025]图4为本专利技术实施例二提供的另一种反向计算图的静态生成方法的流程图;
[0026]图5为本专利技术实施例的技术方案所适用的各种算子类型的示意图;
[0027]图6为本专利技术实施例的技术方案所适用的一种包含前向循环的前向计算图的示意图;
[0028]图7为本专利技术实施例的技术方案所适用的一种包含反向循环的反向计算图的示意图;
[0029]图8为本专利技术实施例所适用的一种通过对前向逻辑进行循环展开的方式生成反向逻辑的示意图;
[0030]图9为本专利技术实施例所适用的一种通过对前向逻辑进行模式映射的方式生成反向逻辑的示意图;
[0031]图
10
为本专利技术实施例三提供的又一种反向计算图的静态生成方法的流程图;
[0032]图
11
为本专利技术实施例四提供的再一种反向计算图的静态生成方法的流程图;
[0033]图
12
为本专利技术实施例的技术方案所适用的各种计算存储优化策略的示意图;
[0034]图
13
为本专利技术实施例的技术方案所适用的算子融合过程的示意图;
[0035]图
14
为本专利技术实施例五提供的一种反向计算图的静态生成装置的结构示意图;
[0036]图
15
是实现本专利技术实施例的一种反向计算图的静态生成方法的电子设备的结构
示意图

具体实施方式
[0037]为了使本
的人员更好地理解本专利技术方案,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚

完整地描述,显然,所描述的实施例仅仅是本专利技术一部分的实施例,而不是全部的实施例

基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本专利技术保护的范围

[0038]需要说明的是,本专利技术的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序

应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本专利技术的实施例能够以除了在这里图示或描述的那些以外的顺序实施

此外,术语“包括”和“具有”以及他们的任何变形,本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.
一种反向计算图的静态生成方法,其特征在于,包括:获取前向计算图,并确定出与所述前向计算图中的各前向张量算子分别对应的反向算子;根据各所述反向算子,生成与所述前向计算图对应的反向计算图;对所述反向计算图进行计算存储优化和
/
或读写优化,得到反向优化计算图;对所述反向计算图进行读写优化,包括:如果所述反向计算图中包括多个相邻的一对一算子,则将所述多个一对一算子融合得到一个融合算子;如果所述反向计算图中包括能够作为后一相邻算子的生产者的多对一算子,则将所述多对一算子与所述后一相邻算子融合得到一个融合算子
。2.
根据权利要求1所述的方法,其特征在于,确定出与所述前向计算图中的各前向算子分别对应的反向算子,包括:正向遍历所述前向计算图中的各前向张量算子,在所述前向计算图中依次获取第一前向张量算子;检测所述第一前向张量算子是否可以转换为前向循环的形式;若是,则识别所述第一前向张量算子的前向循环中的前向标量算子,并将所述前向标量算子进行微分处理,得到反向标量算子;根据所述反向标量算子构建得到反向循环,并将所述反向循环确定为与所述第一前向张量算子对应的反向算子;若否,则查询预先构建的模式映射关系,获取与所述第一前向张量算子匹配的反向张量算子,并将所述反向张量算子确定为与所述第一前向张量算子对应的反向算子;返回执行正向遍历所述前向计算图中的各前向张量算子,在所述前向计算图中依次获取第一前向张量算子的操作,直至完成对全部前向张量算子的处理
。3.
根据权利要求1所述的方法,其特征在于,根据各所述反向算子,生成与所述前向计算图对应的反向计算图,包括:获取所述前向计算图的最终输出梯度,作为当前梯度迭代值的初始值;反向遍历所述前向计算图中的各前向张量算子,在所述前向计算图中依次获取第二前向张量算子,并获取与所述第二前向张量算子匹配的当前反向算子;将所述当前梯度迭代值作为所述当前反向算子的输入值,计算所述当前反向算子的输出值,并将所述输出值与所述当前梯度迭代值的累加值作为新的当前梯度迭代值;返回执行反向遍历所述前向计算图中的各前向张量算子,在所述前向计算图中依次获取第二前向张量算子的操作,直至完全对全部前向张量算子的处理
。4.
根据权利要求1所述的方法,其特征在于,对所述反向计算图进行计算存储优化,包括:响应于用户配置的计算存储优化策略,对所述反向计算图进行计算存储优化,所述计算存储优化策略包括全重计算策略

全存储策略

检查点策略以及启发式策略;其中,所述全重计算策略定义在前向计算过程中不存储中间变量,在反向计算过程中对使用到的中间变量进行重计算;所述全存储策略定义在前向...

【专利技术属性】
技术研发人员:石恒张亚林崔成屹王晨浩鲍国庆贾明桥姚建国
申请(专利权)人:上海燧原科技有限公司
类型:发明
国别省市:

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

1