【技术实现步骤摘要】
数据处理方法、装置、电子设备及存储介质
[0001]本公开涉及人工智能
,尤其涉及机器学习、自然语言处理、计算机视觉和蛋白质结构预测等
技术介绍
[0002]Einsum(Einstein summation convention,爱因斯坦求和约定)又称爱因斯坦标记法或爱因斯坦算子,可以轻松地表示各种线性运算。
[0003]在深度学习任务中,线性运算应用广泛,例如可以应用于Linear(线性)层、Matmul(矩阵乘法)层等。由此,爱因斯坦算子非常重要,可以极大地加速用户的模型设计和实现。
[0004]相关技术中,爱因斯坦算子的运算需要调用支持相应算子的内核,但是内核的启动和调用耗费大量的计算资源和时间。
技术实现思路
[0005]本公开提供了一种数据处理方法、装置、电子设备及存储介质。
[0006]根据本公开的一方面,提供了一种数据处理方法,包括:
[0007]获取第一爱因斯坦算子所需的第一张量;
[0008]调用内核对第一张量执行转置操作,得到第一张量转置结果;
[0009]存储第一张量转置结果到目标存储介质中;
[0010]在对第二爱因斯坦算子的第一张量进行规划调度的阶段,按照预设标记规则生成第二爱因斯坦算子的第一张量的下标;其中,预设标记规则满足能够复用第一张量转置结果的要求;
[0011]在第二爱因斯坦算子需要复用第一张量转置结果的情况下,从目标存储介质中读取第一张量转置结果;
[0012]基于读取的第一 ...
【技术保护点】
【技术特征摘要】
1.一种数据处理方法,包括:获取第一爱因斯坦算子所需的第一张量;调用内核对所述第一张量执行转置操作,得到第一张量转置结果;存储所述第一张量转置结果到目标存储介质中;在对第二爱因斯坦算子的所述第一张量进行规划调度的阶段,按照预设标记规则生成所述第二爱因斯坦算子的所述第一张量的下标;其中,所述预设标记规则满足能够复用所述第一张量转置结果的要求;在所述第二爱因斯坦算子需要复用所述第一张量转置结果的情况下,从所述目标存储介质中读取所述第一张量转置结果;基于读取的所述第一张量转置结果以及所述第二爱因斯坦算子的所述第一张量的下标,执行所述第二爱因斯坦算子的运算过程。2.根据权利要求1所述的方法,其中,所述预设标记规则包括:所述第一爱因斯坦算子和所述第二爱因斯坦算子的同一标记集合中相同元素的排序顺序相同;在所述第一张量为所述第二爱因斯坦算子的第一个操作数的情况下,所述第一个操作数的转置的下标满足ABO、AO、AB的顺序;在所述第一张量为所述第二爱因斯坦算子的第二个操作数的情况下,所述第二个操作数的转置的下标满足ABO、AB、BO的顺序:其中,ABO为第一标记集合,ABO中的元素包含在所述第二爱因斯坦算子的两个操作数中且包含在所述第二爱因斯坦算子的输出结果中;AO为第二标记集合,AO中的元素包含在所述第二爱因斯坦算子的第一个操作数中且包含在所述第二爱因斯坦算子的输出结果中;BO为第三标记集合,BO中的元素包含在所述第二爱因斯坦算子的第二个操作数中且包含在所述第二爱因斯坦算子的输出结果中。3.根据权利要求1或2所述的方法,第一爱因斯坦算子的输出结果的梯度的转置也存储至所述目标存储介质中,其中,基于读取的所述第一张量转置结果以及所述第二爱因斯坦算子的所述第一张量的下标,执行所述第二爱因斯坦算子的运算过程,包括:在所述第一张量为所述第一爱因斯坦算子的第一个操作数,且所述第二爱因斯坦算子用于确定所述第一爱因斯坦算子的第二个操作数的梯度的情况下,将所述第二爱因斯坦算子的表达式确定为第一目标表达式,所述第一目标表达式为:dO
×
A
‑
>dB,其中dO表示所述第一爱因斯坦算子的输出结果的梯度、A表示所述第一张量、dB表示所述第一爱因斯坦算子的第二个操作数的梯度;将读取的所述第一张量转置结果作为所述第一目标表达式中A的转置,将从所述目标存储介质读取的第一爱因斯坦算子的输出结果的梯度的转置作为所述第一目标表达式中的dO的转置,并基于所述第二爱因斯坦算子的所述第一张量的下标,执行所述第一目标表达式,得到所述第一爱因斯坦算子的第二个操作数的梯度。4.根据权利要求1或2所述的方法,第一爱因斯坦算子的输出结果的梯度的转置也存储至所述目标存储介质中,其中,基于读取的所述第一张量转置结果以及所述第二爱因斯坦算子的所述第一张量的下标,执行所述第二爱因斯坦算子的运算过程,包括:
在所述第一张量为所述第一爱因斯坦算子的第二个操作数,且所述第二爱因斯坦算子用于确定所述第一爱因斯坦算子的第一个操作数的梯度的情况下,将所述第二爱因斯坦算子的表达式确定为第二目标表达式,所述第二目标表达式为:B
×
dO
‑
>dA,其中dO表示所述第一爱因斯坦算子的输出结果的梯度、B表示所述第一张量、dA表示所述第一爱因斯坦算子的第一个操作数的梯度;将读取的所述第一张量转置结果作为所述第二目标表达式中B的转置,将从所述目标存储介质读取的第一爱因斯坦算子的输出结果的梯度的转置作为所述第二目标表达式中的dO的转置,并基于所述第二爱因斯坦算子的所述第一张量的下标,执行所述第二目标表达式,得到所述第一爱因斯坦算子的第一个操作数的梯度。5.根据权利要求1
‑
4中任一项所述的方法,还包括:在所述第二爱因斯坦算子相对所述第一爱因斯坦算子进行反向运算的情况下,将中间梯度存储到所述目标存储介质中;从所述目标存储介质中读取所述中间梯度,并调用内核将目标梯度的下标按照对应目标操作数的下标进行转置操作,得到所述目标操作数的目标梯度;其中:在所述目标操作数为第一爱因斯坦算子的第一个操作数的情况下,所述第二爱因斯坦算子确定的所述第一爱因斯坦算子的第一个操作数的梯度为所述中间梯度;在所述目标操作数为第一爱因斯坦算子的第二个操作数的情况下,所述第二爱因斯坦算子确定的所述第一爱因斯坦算子的第二个操作数的梯度为所述中间梯度。6.根据权利要求1
‑
5中任一项所述的方法,其中,所述第一爱因斯坦算子具有两个操作数,还包括:在目标爱因斯坦算子包括有序排列的n个操作数的情况下,基于以下方法将所述目标爱因斯坦算子拆解为多个有序执行的第一爱因斯坦算子:将所述n个操作数中排序为第一位置和第二位置的两个操作数确定为第二位置的操作数对应的第一爱因斯坦算子的第一个操作数,得到所述第二位置的操作数对应的第一爱因斯坦算子的输出结果;在所述n个操作数中存在未处理的操作数的情况下,确定未处理的操作数中排序第一的操作数为目标操作数;并,将所述目标操作数的上一个操作数对应的第一因斯坦算子的输出结果和所述目标操作数分别作为所述目标操作数对应的第一爱因斯坦算子的第一个操作数和第二个操作数,得到所述目标操作数对应的第一爱因斯坦算子的输出结果。7.根据权利要求1
‑
6中任一项所述的方法,其中,所述第一爱因斯坦算子中包括两个操作数,所述第一张量为所述两个操作数中的任一操作数。8.一种数据处理装置,包括:第一获取模块,用于获取第一爱因斯坦算子所需的第一张量;调用模块,用于调用内核对所述第一张量执行转置操作,得到第一张量转置结果;第一存储模块,用于存储所述第一张量转置结果到目标存储介质中;生成模块,用于在对第二爱因斯坦算子的所述第一张量进行规划调度的...
【专利技术属性】
技术研发人员:熊昆,张留杰,刘红雨,蓝翔,
申请(专利权)人:北京百度网讯科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。