数据处理方法、装置、电子设备及存储介质制造方法及图纸

技术编号:36781780 阅读:22 留言:0更新日期:2023-03-08 22:17
本公开提供了一种数据处理方法、装置、电子设备及存储介质,涉及人工智能技术领域,尤其涉及机器学习、自然语言处理、计算机视觉和蛋白质结构预测等技术领域。具体实现方案为:获取第一爱因斯坦算子所需的第一张量;调用内核对第一张量执行转置得到第一张量转置结果并存储到目标存储介质;在规划调度阶段按照预设标记规则生成第二爱因斯坦算子第一张量的下标;在需要复用第一张量转置结果的情况下,从目标存储介质中读取第一张量转置结果;基于读取的第一张量转置结果和第一张量的下标,执行第二爱因斯坦算子的运算。本公开实施例中通过复用第一爱因斯坦算子的第一张量转置结果,避免了多次启动调用内核,降低了资源消耗,提高了运算效率。高了运算效率。高了运算效率。

【技术实现步骤摘要】
数据处理方法、装置、电子设备及存储介质


[0001]本公开涉及人工智能
,尤其涉及机器学习、自然语言处理、计算机视觉和蛋白质结构预测等


技术介绍

[0002]Einsum(Einstein summation convention,爱因斯坦求和约定)又称爱因斯坦标记法或爱因斯坦算子,可以轻松地表示各种线性运算。
[0003]在深度学习任务中,线性运算应用广泛,例如可以应用于Linear(线性)层、Matmul(矩阵乘法)层等。由此,爱因斯坦算子非常重要,可以极大地加速用户的模型设计和实现。
[0004]相关技术中,爱因斯坦算子的运算需要调用支持相应算子的内核,但是内核的启动和调用耗费大量的计算资源和时间。

技术实现思路

[0005]本公开提供了一种数据处理方法、装置、电子设备及存储介质。
[0006]根据本公开的一方面,提供了一种数据处理方法,包括:
[0007]获取第一爱因斯坦算子所需的第一张量;
[0008]调用内核对第一张量执行转置操作,得到第一张量转置结果;
[0009]存储第一张量转置结果到目标存储介质中;
[0010]在对第二爱因斯坦算子的第一张量进行规划调度的阶段,按照预设标记规则生成第二爱因斯坦算子的第一张量的下标;其中,预设标记规则满足能够复用第一张量转置结果的要求;
[0011]在第二爱因斯坦算子需要复用第一张量转置结果的情况下,从目标存储介质中读取第一张量转置结果;
[0012]基于读取的第一张量转置结果以及第二爱因斯坦算子的第一张量的下标,执行第二爱因斯坦算子的运算过程。
[0013]根据本公开的另一方面,提供了一种数据处理装置,包括:
[0014]第一获取模块,用于获取第一爱因斯坦算子所需的第一张量;
[0015]调用模块,用于调用内核对第一张量执行转置操作,得到第一张量转置结果;
[0016]第一存储模块,用于存储第一张量转置结果到目标存储介质中;
[0017]生成模块,用于在对第二爱因斯坦算子的第一张量进行规划调度的阶段,按照预设标记规则生成第二爱因斯坦算子的第一张量的下标;其中,预设标记规则满足能够复用第一张量转置结果的要求;
[0018]读取模块,用于在第二爱因斯坦算子需要复用第一张量转置结果的情况下,从目标存储介质中读取第一张量转置结果;
[0019]执行模块,用于基于读取的第一张量转置结果以及第二爱因斯坦算子的第一张量的下标,执行第二爱因斯坦算子的运算过程。
[0020]根据本公开的另一方面,提供了一种电子设备,包括:
[0021]至少一个处理器;以及
[0022]与该至少一个处理器通信连接的存储器;其中,
[0023]该存储器存储有可被该至少一个处理器执行的指令,该指令被该至少一个处理器执行,以使该至少一个处理器能够执行本公开实施例中任一的方法。
[0024]根据本公开的另一方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,该计算机指令用于使该计算机执行根据本公开实施例中任一的方法。
[0025]根据本公开的另一方面,提供了一种计算机程序产品,包括计算机程序,该计算机程序在被处理器执行时实现根据本公开实施例中任一的方法。
[0026]本公开实施例中,通过在第二爱因斯坦算子计算过程中复用第一爱因斯坦算子的第一张量转置结果,避免了多次启动调用内核,从而节约了资源消耗,提高了运算效率。
[0027]应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
[0028]附图用于更好地理解本方案,不构成对本公开的限定。其中:
[0029]图1是根据本公开一实施例的数据处理方法的流程示意图;
[0030]图2是根据本公开另一实施例将所得梯度转置为目标梯度的流程示意图;
[0031]图3a是根据本公开另一实施例的数据处理方法的一个示例的示意图;
[0032]图3b是根据本公开另一实施例的数据处理方法的另一个示例的示意图;
[0033]图4是根据本公开另一实施例的数据处理方法在自然语言处理领域的应用示意图;
[0034]图5是根据本公开另一实施例的数据处理方法在蛋白质结构预测领域的应用示意图;
[0035]图6是根据本公开另一实施例的数据处理装置的结构示意图;
[0036]图7是用来实现本公开实施例的数据处理方法的电子设备的框图。
具体实施方式
[0037]以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
[0038]本公开实施例中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元。方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
[0039]爱因斯坦算子,可以轻松地表示各种线性运算。例如:ij

>ji可以表示转置、ij,jk

>ik可以表示矩阵乘法,也可表示外积、内积等。将所有的线性操作都使用统一的爱因斯
坦算子进行求和表示,可以很大程度地减轻用户的记忆负担。
[0040]深度学习框架中,基于两个操作数的爱因斯坦算子主要接受3个参数:2个输入操作数(例如张量A和张量B),以及一个字符串计算表达式,最后输出一个张量C。例如,表达式c=paddle.einsum(a,b,“ij,jk

>ik”)中,a和b分别为一个操作数,ij,jk

>ik为计算表达式、c为爱因斯坦算子的输出结果,paddle.einsum可理解为执行爱因斯坦算子的方法。
[0041]一般情况下,几乎所有的爱因斯坦算子的前向实现逻辑上都可以分为两个部分:Planner(规划调度的阶段)和Executor(执行的阶段)。Planner部分就是通过Equation(表达式)来规划如何组合相关操作,其中,相关操作例如Transpose(转置)、Matmul、Sum(求和)等。因此一个大的爱因斯坦算子会被分解为非常多的小计算,这些小计算按照一定的顺序进行计算就可以得到最后的结果。
[0042]当前主要的爱因斯坦算子实现方式有两种。一种是Trace(追溯)方式,另一种是组合方式。
[0043]组本文档来自技高网
...

【技术保护点】

【技术特征摘要】
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.一种数据处理装置,包括:第一获取模块,用于获取第一爱因斯坦算子所需的第一张量;调用模块,用于调用内核对所述第一张量执行转置操作,得到第一张量转置结果;第一存储模块,用于存储所述第一张量转置结果到目标存储介质中;生成模块,用于在对第二爱因斯坦算子的所述第一张量进行规划调度的...

【专利技术属性】
技术研发人员:熊昆张留杰刘红雨蓝翔
申请(专利权)人:北京百度网讯科技有限公司
类型:发明
国别省市:

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

1