【技术实现步骤摘要】
一种反向计算图的静态生成方法、装置、设备及介质
[0001]本专利技术涉及深度学习领域,尤其涉及一种反向计算图的静态生成方法
、
装置
、
设备及介质
。
技术介绍
[0002]随着深度学习技术的不断发展,神经网络模型的规模变得越来越大,基于梯度的模型优化算法得到了越来越广泛的应用
。
梯度下降法用于求解损失函数的最优值,通过计算参数与损失函数的梯度并在梯度下降的方向不断迭代求得极小值
。
[0003]一般来说,深度学习模型或者科学计算模型可以被解析为前向计算图形式的中间表示,而为了实现基于梯度的模型优化,需要生成与前向计算图相对应的反向计算图,以实现对梯度的计算
。
[0004]当前的系统可以提供常用的反向计算算子用于构建反向计算图,但是,对于不常使用的反向计算逻辑没有实现有效覆盖,这就需要开发人员手动编写反向计算的逻辑代码,这样不仅费时费力,效率低下,且容易产生逻辑错误;此外,系统还可以使用运算符重载的方式实现运行时的动态自动微分,但是,这一机制会引入一定的运行时开销,同时,上述动态自动微分过程由于缺乏计算图的静态分析也可能错过潜在的优化机会,导致运行时性能下降
。
技术实现思路
[0005]本专利技术提供了一种反向计算图的静态生成方法
、
装置
、
设备及介质,以提供一种在编译阶段静态生成并优化反向计算图的新方式,从一定程度上提高了运行时系统对梯度求解的效率
。 ...
【技术保护点】
【技术特征摘要】
1.
一种反向计算图的静态生成方法,其特征在于,包括:获取前向计算图,并确定出与所述前向计算图中的各前向张量算子分别对应的反向算子;根据各所述反向算子,生成与所述前向计算图对应的反向计算图;对所述反向计算图进行计算存储优化和
/
或读写优化,得到反向优化计算图;对所述反向计算图进行读写优化,包括:如果所述反向计算图中包括多个相邻的一对一算子,则将所述多个一对一算子融合得到一个融合算子;如果所述反向计算图中包括能够作为后一相邻算子的生产者的多对一算子,则将所述多对一算子与所述后一相邻算子融合得到一个融合算子
。2.
根据权利要求1所述的方法,其特征在于,确定出与所述前向计算图中的各前向算子分别对应的反向算子,包括:正向遍历所述前向计算图中的各前向张量算子,在所述前向计算图中依次获取第一前向张量算子;检测所述第一前向张量算子是否可以转换为前向循环的形式;若是,则识别所述第一前向张量算子的前向循环中的前向标量算子,并将所述前向标量算子进行微分处理,得到反向标量算子;根据所述反向标量算子构建得到反向循环,并将所述反向循环确定为与所述第一前向张量算子对应的反向算子;若否,则查询预先构建的模式映射关系,获取与所述第一前向张量算子匹配的反向张量算子,并将所述反向张量算子确定为与所述第一前向张量算子对应的反向算子;返回执行正向遍历所述前向计算图中的各前向张量算子,在所述前向计算图中依次获取第一前向张量算子的操作,直至完成对全部前向张量算子的处理
。3.
根据权利要求1所述的方法,其特征在于,根据各所述反向算子,生成与所述前向计算图对应的反向计算图,包括:获取所述前向计算图的最终输出梯度,作为当前梯度迭代值的初始值;反向遍历所述前向计算图中的各前向张量算子,在所述前向计算图中依次获取第二前向张量算子,并获取与所述第二前向张量算子匹配的当前反向算子;将所述当前梯度迭代值作为所述当前反向算子的输入值,计算所述当前反向算子的输出值,并将所述输出值与所述当前梯度迭代值的累加值作为新的当前梯度迭代值;返回执行反向遍历所述前向计算图中的各前向张量算子,在所述前向计算图中依次获取第二前向张量算子的操作,直至完全对全部前向张量算子的处理
。4.
根据权利要求1所述的方法,其特征在于,对所述反向计算图进行计算存储优化,包括:响应于用户配置的计算存储优化策略,对所述反向计算图进行计算存储优化,所述计算存储优化策略包括全重计算策略
、
全存储策略
、
检查点策略以及启发式策略;其中,所述全重计算策略定义在前向计算过程中不存储中间变量,在反向计算过程中对使用到的中间变量进行重计算;所述全存储策略定义在前向...
【专利技术属性】
技术研发人员:石恒,张亚林,崔成屹,王晨浩,鲍国庆,贾明桥,姚建国,
申请(专利权)人:上海燧原科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。