掌桥专利:专业的专利平台
掌桥专利
首页

一种算子的执行方法、装置、计算机设备及存储介质

文献发布时间:2023-06-19 11:22:42


一种算子的执行方法、装置、计算机设备及存储介质

技术领域

本公开涉及机器学习技术领域,具体而言,涉及一种算子的执行方法、装置、计算机设备及存储介质。

背景技术

机器学习框架是用于对神经网络模型进行训练的软件,开发者可以通过机器学习框架编写实现神经网络模型的代码,并通过机器学习框架运行神经网络模型的代码,实现对神经网络模型的训练过程。当前机器学习框架对用户自定义算子的执行效率较低。

发明内容

本公开实施例至少提供一种算子的执行方法、装置、计算机设备及存储介质。

第一方面,本公开实施例提供了一种算子的执行方法,包括:

获取目标算子的前向计算图;其中,所述前向计算图中包括多个基础算子;从所述前向计算图中确定第一子图,并对所述第一子图进行编译处理,得到所述第一子图对应的第一编译算子;所述第一子图中包括所述前向计算图中的至少部分基础算子;基于所述第一编译算子,生成所述目标算子的第一目标计算图;基于所述第一目标计算图,执行所述目标算子的前向过程。

这样,第一目标计算图中包括的算子较之前向计算图中包括的算子更少,因此在基于第一目标计算图执行目标算子时,需要进行硬件资源分配和计算资源调度的次数越少,进而提升了用户自定义算子的执行效率。

在一种可能的实施方式中,所述获取目标算子的前向计算图,包括:在执行所述目标算子的前向过程中,记录调用预先定义的基础算子的第一调用信息;基于所述第一调用信息生成所述目标算子的前向计算图。

这样,通过记录在执行目标算子的前向过程中对机器学习框架中存在的基础算子的第一调用信息,基于该第一调用信息就可以得到目标算子的前向过程的前向计算图,更加便捷。

在一种可能的实施方式中,所述第一调用信息包括:在执行所述目标算子的前向过程时调用的所述基础算子的种类、对所述基础算子的调用顺序、以及不同基础算子之间的依赖关系。

在一种可能的实施方式中,所述基础算子包括下述至少一种:数学运算基础算子、比较运算基础算子、逻辑运算基础算子、规约运算基础算子、以及阈值运算基础算子。

在一种可能的实施方式中,所述从所述前向计算图中确定第一子图,包括:基于构成所述前向计算图中的所述基础算子之间的连接关系信息、以及所述基础算子的类型,从所述前向计算图中确定所述第一子图。

在一种可能的实施方式中,所述基于构成所述前向计算图中的所述基础算子之间的连接关系信息、以及所述基础算子的类型,从所述前向计算图中确定所述第一子图,包括:基于所述基础算子的类型,从所述前向计算图中确定备选基础算子;基于所述备选基础算子之间的连接关系信息,从所述备选基础算子中,确定目标基础算子;基于所述目标基础算子,得到所述第一子图。

在一种可能的实施方式中,所述基于所述第一编译算子,生成所述目标算子的第一目标计算图,包括:基于所述第一编译算子、以及所述前向计算图中除所述第一子图外的其他基础算子,生成所述目标算子的第一目标计算图。

这样,因为将第一子图中包括的全部基础算子编译成一个第一编译算子,减少了前向计算图算子的数量,所形成的第一目标计算图中算子较之前向计算图更少。

在一种可能的实施方式中,还包括:获取所述目标算子反向过程的反向计算图;从所述反向计算图中,确定第二子图,并对所述第二子图进行编译处理,得到所述第二子图对应的第二编译算子;基于所述第二编译算子,确定所述目标算子反向过程的第二目标计算图。

这样,将包含反向计算图中部分反向基础算子的第二子图编译成一个第二编译算子,减少了算子的数量,因此基于第二编译算子生成的第二目标计算图中的算子的数量少于反向计算图中算子的数量,有效的减少了执行目标算子反向过程中调用的算子的数量,提高了目标算子反向过程的执行效率。

在一种可能的实施方式中,所述获取所述目标算子反向过程的反向计算图,包括:在执行所述目标算子的反向过程中,记录调用预先定义的反向基础算子的第二调用信息;基于所述第二调用信息生成所述目标算子的反向计算图。

这样,通过记录在执行目标算子的反向过程中对机器学习框架中存在的反向基础算子的第二调用信息,基于该第二调用信息就可以得到目标算子的反向过程的反向计算图,更加便捷。

在一种可能的实施方式中,还包括:基于所述第二目标计算图,执行所述目标算子的反向过程。

第二方面,本公开实施例还提供一种算子的执行装置,包括:

获取模块,用于获取目标算子的前向计算图;其中,所述前向计算图中包括多个基础算子;编译模块,用于从所述前向计算图中确定第一子图,并对所述第一子图进行编译处理,得到所述第一子图对应的第一编译算子;所述第一子图中包括所述前向计算图中的至少部分基础算子;生成模块,用于基于所述第一编译算子,生成所述目标算子的第一目标计算图;执行模块,用于基于所述第一目标计算图,执行所述目标算子的前向过程。

在一种可能的实施方式中,在获取目标算子的前向计算图时,所述获取模块,具体用于在执行所述目标算子的前向过程中,记录调用预先定义的基础算子的第一调用信息;基于所述第一调用信息生成所述目标算子的前向计算图。

在一种可能的实施方式中,所述第一调用信息包括:在执行所述目标算子的前向过程时调用的所述基础算子的种类、对所述基础算子的调用顺序、以及不同基础算子之间的依赖关系。

在一种可能的实施方式中,所述基础算子包括下述至少一种:数学运算基础算子、比较运算基础算子、逻辑运算基础算子、规约运算基础算子、以及阈值运算基础算子。

在一种可能的实施方式中,在从所述前向计算图中确定第一子图时,所述编译模块,具体用于基于构成所述前向计算图中的所述基础算子之间的连接关系信息、以及所述基础算子的类型,从所述前向计算图中确定所述第一子图。

在一种可能的实施方式中,在基于构成所述前向计算图中的所述基础算子之间的连接关系信息、以及所述基础算子的类型,从所述前向计算图中确定所述第一子图时,所述编译模块,具体用于基于所述基础算子的类型,从所述前向计算图中确定备选基础算子;基于所述备选基础算子之间的连接关系信息,从所述备选基础算子中,确定目标基础算子;基于所述目标基础算子,得到所述第一子图。

在一种可能的实施方式中,在基于所述第一编译算子,生成所述目标算子的第一目标计算图时,所述生成模块,具体用于基于所述第一编译算子、以及所述前向计算图中除所述第一子图外的其他基础算子,生成所述目标算子的第一目标计算图。

在一种可能的实施方式中,所述获取模块,还用于获取所述目标算子反向过程的反向计算图;所述编译模块,还用于从所述反向计算图中,确定第二子图,并对所述第二子图进行编译处理,得到所述第二子图对应的第二编译算子;所述生成模块,还用于基于所述第二编译算子,确定所述目标算子反向过程的第二目标计算图。

在一种可能的实施方式中,在获取所述目标算子反向过程的反向计算图时,所述获取模块,具体用于在执行所述目标算子的反向过程中,记录调用预先定义的反向基础算子的第二调用信息;基于所述第二调用信息生成所述目标算子的反向计算图。

在一种可能的实施方式中,所述执行模块,还用于基于所述第二目标计算图,执行所述目标算子的反向过程。

第三方面,本公开可选实现方式还提供一种计算机设备,处理器、存储器,所述存储器存储有所述处理器可执行的机器可读指令,所述处理器用于执行所述存储器中存储的机器可读指令,所述机器可读指令被所述处理器执行时,所述机器可读指令被所述处理器执行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。

第四方面,本公开可选实现方式还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被运行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。

关于上述算子的执行装置、计算机设备、及计算机可读存储介质的效果描述参见上述算子的执行方法的说明,这里不再赘述。

为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

附图说明

为了更清楚地说明本公开实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,此处的附图被并入说明书中并构成本说明书中的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。应当理解,以下附图仅示出了本公开的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1示出了本公开实施例所提供的一种算子的执行方法的流程图;

图2示出了本公开实施例所提供的一种目标算子的前向计算图的示例图;

图3示出了本公开实施例所提供的一种第一子图的示例图;

图4示出了本公开实施例所提供的一种第一目标计算图的示例图;

图5示出了本公开实施例所提供的另一种算子的执行方法的流程图

图6示出了本公开实施例所提供的一种算子的执行装置的示意图;

图7示出了本公开实施例所提供的一种计算机设备的示意图。

具体实施方式

为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通常在此处描述和示出的本公开实施例的组件可以以各种不同的配置来布置和设计。因此,以下对本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。

经研究发现,对于现有的一些算子,机器学习框架通常会定义好这些算子;在执行这些算子时,机器学习框架通常只需为其进行一次或者有限次数的硬件资源分配和计算资源调度。然而机器学习模型复杂多样,随着人工智能领域的不断发展,会持续有新的模型和开发者自定义的新算子出现;一旦有新的自定义算子出现,由于在机器学习框架中并未预先将这些自定义算子定义好,因此就需要开发者给出自定义算子的前向过程和反向过程;自定义算子的前向过程包括由多个基础算子构成的前向计算图;反向过程包括由多个反向基础算子构成的反向计算图;而机器学习框架每执行一个基础算子,就需要对其进行对应的硬件资源分配和计算资源调度,导致了机器学习框架在执行自定义算子的前向过程和反向过程中,需要频繁的调度各种硬件计算资源,调度耗时较多,进而造成执行用户自定义算子的效率较低。

基于上述研究,本公开提供了一种算子的执行方法、装置、计算机设备及存储介质,通过从目标算子的前向计算图中确定第一子图,在第一子图中包括了前向计算图中的至少部分基础算子;在将第一子图进行编译处理后,将第一子图中包括的基础算子编译成为一个第一编译算子,然后基于第一编译算子生成目标算子的第一目标计算图后,第一目标计算图中包括的算子较之前向计算图中包括的算子更少,因此在基于第一目标计算图执行目标算子时,需要进行硬件资源分配和计算资源调度的次数越少,进而提升了用户自定义算子的执行效率。

针对以上方案所存在的缺陷,均是发明人在经过实践并仔细研究后得出的结果,因此,上述问题的发现过程以及下文中本公开针对上述问题所提出的解决方案,都应该是发明人在本公开过程中对本公开做出的贡献。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。

为便于对本实施例进行理解,首先对本公开实施例所公开的一种算子的执行方法进行详细介绍,本公开实施例所提供的算子的执行方法的执行主体一般为具有一定计算能力的计算机设备,该计算机设备例如包括:终端设备或服务器或其它处理设备,终端设备可以为用户设备(User Equipment,UE)、移动设备、用户终端、终端、蜂窝电话、无绳电话、个人数字助理(Personal Digital Assistant,PDA)、手持设备、计算设备、车载设备、可穿戴设备等。在一些可能的实现方式中,该算子的执行方法可以通过处理器调用存储器中存储的计算机可读指令的方式来实现。

在计算机设备中,例如可以部署有机器学习框架,通过该机器学习框架执行本公开实施例提供的算子的执行方法。

本公开实施例中所述的目标算子例如包括用户通过高级编程语言(例如C、C++、C#、Java等)编写的能实现某种功能的映射,即从一个函数空间(例如Banach空间、Hilbert空间、Sobolev空间)到另一个函数空间的对应关系。

本公开实施例中所述的基础算子为预先存在于机器学习框架中的能实现基本计算功能的函数映射,例如包括:数学运算基础算子(例如卷积算子、求和算子等)、比较运算基础算子、逻辑运算基础算子、规约运算基础算子、阈值运算基础算子、微分基础算子、梯度基础算子、散度基础算子,拉普拉斯基础算子、哈密顿基础算子等。

本公开实施例所述的反向基础算子例如为与上述任一基础算子对应的进行反向运算的算子;例如基础算子为进行积分计算的数学运算基础算子,则对应的反向基础算子就为进行求导计算的数学运算基础算子。

本公开实施例中所述的第一编译算子例如包括将多个基础算子经过编译处理后得到的可以代替该多个基础算子实现同样功能的一个算子。

本公开实施例所述的第二编译算子例如包括将多个反向基础算子经过编译处理后得到的可以代替该多个反向基础算子实现同样功能的一个算子。

下面对本公开实施例提供的算子的执行方法加以说明。

参见图1所示,为本公开实施例提供的一种算子的执行方法的流程图,所述方法包括步骤S101~S104,其中:

S101:获取目标算子的前向计算图。

目标算子从输入到输出的前向计算过程实际上是调用多个预先存在于机器学习框架中的基础算子实现目标计算功能的过程,前向计算图中包括多个基础算子。

在本公开另一实施例中,例如可以采用下述方法获取目标算子的前向计算图:在执行目标算子的前向过程中,记录调用预先定义的基础算子的第一调用信息;基于第一调用信息获取目标算子的前向计算图。

其中,目标算子的前向过程为根据前向计算图执行目标算子的计算机代码过程,该执行计算机代码的过程就是对输入的待处理数据进行处理得到对应的预测结果的过程;其中,目标算子的计算机代码为通过高级编程语言编写的能实现目标算子对应功能的源代码,例如通过C、C++、C#、Java等编程语言编写的代码。利用机器学习框架执行对应的计算机代码时,代码由机器学习框架所在的应用层传入到计算机的计算引擎后,计算引擎需要将源代码转化为计算机能够识别的基础代码,也即在执行计算机代码的过程中,由于在机器学习框架中并未预先将目标算子预先定义好,因此,机器学习框架会在执行计算机代码时调用机器学习框架预先定义的基础算子。在该执行目标算子的过程中,机器学习框架可以记录在该过程中基础算子的调用情况,得到第一调用信息。第一调用信息例如包括在执行计算机代码时调用的基础算子的种类、以及对基础算子的调用顺序、不同基础算子之间的依赖关系。

示例性的,可以将预先确定的样本输入至机器学习框架;机器学习框架对样本数据执行与目标算子对应的处理。执行对应处理的过程,即为执行目标算子的计算机代码的过程。在执行计算机代码的过程中,机器学习框架会调用基础算子来实现该目标算子的对应的处理任务,也即通过调用机器学习框架中的基础算子来得到样本数据对应的输出;机器学习框架在该过程中,记录计算机代码执行过程中调用的每一基础算子的种类、调用的每一基础算子的调用顺序、以及调用的基础算子之间的依赖关系。在计算机代码执行完毕后,得到第一调用信息。然后,利用第一调用信息,生成目标算子的前向计算图。

这里,可以将目标算子的前向计算图表示为有向无环图(Directed AcyclicGraph,DAG);在DAG中包括多个节点,每个节点表征一个基础算子。具有依赖关系之间的基础算子通过有向边连接。将该DAG作为生成的前向计算图。

示例性的,计算机代码执行过程中,先调用基础算子1;然后并行调用基础算子2、基础算子3;在基础算子2之后调用基础算子4,在基础算子4之后调用基础算子5,在基础算子5之后调用基础算子6,在基础算子6之后调用基础算子7,在基础算子7之后调用基础算子8;在基础算子3之后调用基础算子9,在基础算子9之后调用基础算子8,得到如图2所示的前向计算图,本公开实施例所述依赖关系为通过各个基础算子之间的调用顺序体现出来的关联关系,例如图2中的基础算子1的输出是基础算子2的输入,因此基础算子1与基础算子2之间具有依赖关系且基础算子2依赖于基础算子1,基础算子2的输出与基础算子3的输入没有关联,因此基础算子2与基础算子3之间没有依赖关系。

承接上述S101,在获取目标算子的前向计算图之后,还包括:

S102:从前向计算图中确定第一子图,并对第一子图进行编译处理,得到第一子图对应的第一编译算子。

其中,第一子图例如包括前向计算图中的至少部分基础算子;前向计算图中可以确定出至少一个第一子图。

本公开另一实施例中,可以采用下述方法从前向计算图中确定第一子图:

基于构成前向计算图中的基础算子之间的连接关系信息、以及基础算子的类型,从前向计算图中确定第一子图。

此处,在基于连接关系信息和基础算子的类型,从前向计算图中确定第一子图时,可以首先基于基础算子的类型,从前向计算图中确定备选基础算子;

然后,基于备选基础算子之间的连接关系信息,从备选基础算子中,确定目标基础算子;基于目标基础算子,得到第一子图。

此处,备选基础算子,包括类型为预设类型的基础算子。

在生成第一子图之前,可以首先确定多个预设类型。该预设类型的算子,例如包括计算过程简单的基础算子,例如乘法算子、除法算子、加法算子、减法算子等。对于部分基础算子,如卷积算子,由于其计算过程本身就比较复杂,因此可以不将其作为预设类型。

在生成第一子图时,可以依次将前向计算图中各个基础算子的类型,与预设类型进行匹配;若任一基础算子的类型与预设类型匹配成功,则将其作为备选基础算子。

在从前向计算图中确定备选基础算子后,可以基于不同备选基础算子之间的连接关系信息,将备选基础算子划分为不同的分组;其中,每一个分组中,任一备选基础算子与该分组中另一备选基础算子连接。

若任一分组中的备选基础算子的数量大于预设数量,则可以将该分组中的备选基础算子作为目标基础算子,并基于该分组中的目标基础算子,得到一个第一子图。

这样,保证了能够将多个具有连续处理关系的基础算子编译成一个第一编译算子,减少了最终形成的第一目标计算图中算子的数量。

例如:图2所示的前向计算图中,确定基础算子2,基础算子3,基础算子5、基础算子6、基础算子7为备选基础算子,基于这些基础算子的连接关系信息,可以分成三组,基础算子2为第一组,基础算子3为第二组,基础算子5、基础算子6以及基础算子7为一组,即第三组,假设预设数量为2,则将基础算子5、基础算子6以及基础算子7分别作为目标基础算子5、目标基础算子6、以及目标基础算子7,基于这些确定的目标基础算子确定如图3所示的第一子图。

从前向计算图中求确定出至少一张第一子图之后,针对每张第一子图,对第一子图进行编译处理,将第一子图中包括的全部基础算子编译成可以实现该全部基础算子同样功能的一个第一编译算子。

承接上述S102,在得到第一子图对应的第一编译算子后,还包括:

S103:基于第一编译算子,生成目标算子的第一目标计算图。

S104:基于第一目标计算图,执行目标算子的前向过程。

具体的,基于第一编译算子生成目标算子的第一目标计算图例如基于第一编译算子、以及前向计算图中除第一子图外的其他基础算子,构生成目标算子的第一目标计算图。

此处在生成第一目标计算图时,可以利用第一编译算子对应的多个目标基础算子在前向计算图中,与其他基础算子之间的连接关系,确定其他基础算子、与第一编译算子之间的连接关系。

然后基于其他基础算子、第一编译算子、以及其他基础算子与第一编译算子之间的连接关系,生成第一目标计算图。

示例性的,将图3中的基础算子5、基础算子6、基础算子7编译为一个第一编译算子1,基于基础算子5、基础算子6、基础算子7在图2所示的前向计算图中与其他基础算子之间的连接关系,确定第一编译算子1与其他基础算子之间的连接关系;基于其他基础算子、第一编译算子1、以及的第一编译算子1与其他基础算子之间的连接关系,确定如图4所示的第一目标计算图。

这样,因为将第一子图中包括的全部基础算子编译成一个第一编译算子,减少了前向计算图算子的数量,所形成的第一目标计算图中算子较之前向计算图更少。因此,在基于第一目标计算图执行目标算子时,需要进行硬件资源分配、以及计算资源调度的次数也就越少,从而增加了执行目标算子的效率。

本公开实施例通过从目标算子的前向计算图中确定第一子图,在第一子图中包括了多个了前向计算图中的至少部分基础算子;在将第一子图进行编译处理后,将第一子图中包括的基础算子编译成为一个第一编译算子,然后基于第一编译算子生成目标算子的第一目标计算图后,第一目标计算图中包括的算子较之前向计算图中包括的算子更少,因此在基于第一目标计算图执行目标算子时,需要进行硬件资源分配和计算资源调度的次数越少,进而提升了用户自定义算子的执行效率。

在本公开另一实施例中,还提供另一种算子的执行方法,如图5所示,包括:S501~S503,其中:

S501:获取目标算子反向过程的反向计算图。

具体实施时,机器学习框架中,不仅包含基础算子,还包含每一基础算子分别对应的反向基础算子,获取目标算子的反向计算图例如可以在执行目标算子的反向过程中,记录调用预先定义的反向基础算子的第二调用信息;基于第二调用信息生成目标算子的反向计算图。基于第二调用信息生成目标算子的反向计算图的过程与基于第一调用信息生成目标算子的前向计算图的过程类似,这里不再赘述。

S502:从反向计算图中,确定第二子图,并对第二子图进行编译处理,得到第二子图对应的第二编译算子。

S503:基于第二编译算子,确定目标算子反向过程的第二目标计算图。

具体实施时,确定第二子图的方式与上述确定第一子图的方式类似,基于第二编译算子,确定目标算子反向过程的第二目标计算图的方式与上述基于第一编译算子,确定目标算子前向过程的第一目标计算图的方式类似,此处不再赘述。

本公开另一实施例中,在得到第二目标计算图后,还可以基于第二目标计算图,执行目标算子的反向过程,目标算子的反向过程为:根据各个算子输出的结果进行梯度的反向传播的过程,通过反向传播的梯度,可以实现对各个算子中算子参数的优化。

因为第二目标计算图中算子的数量少于反向计算图中算子的数量,因此基于第二目标计算图执行目标算子的反向过程能减少对硬件资源的调度,提高目标算子反向过程的执行效率。

本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。

基于同一发明构思,本公开实施例中还提供了与算子的执行方法对应的算子的执行装置,由于本公开实施例中的装置解决问题的原理与本公开实施例上述算子的执行方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。

参照图6所示,为本公开实施例提供的一种算子的执行装置的示意图,所述装置包括:获取模块601、编译模块602、生成模块603、以及执行模块604;其中,

获取模块601,用于获取目标算子的前向计算图;其中,所述前向计算图中包括多个基础算子;

编译模块602,用于从所述前向计算图中确定第一子图,并对所述第一子图进行编译处理,得到所述第一子图对应的第一编译算子;所述第一子图中包括所述前向计算图中的至少部分基础算子;

生成模块603,用于基于所述第一编译算子,生成所述目标算子的第一目标计算图;

执行模块604,用于基于所述第一目标计算图,执行所述目标算子的前向过程。

在一种可能的实施方式中,在获取目标算子的前向计算图时,所述获取模块,具体用于在执行所述目标算子的前向过程中,记录调用预先定义的基础算子的第一调用信息;基于所述第一调用信息生成所述目标算子的前向计算图。

在一种可能的实施方式中,所述第一调用信息包括:在执行所述目标算子的前向过程时调用的所述基础算子的种类、对所述基础算子的调用顺序、以及不同基础算子之间的依赖关系。

在一种可能的实施方式中,所述基础算子包括下述至少一种:数学运算基础算子、比较运算基础算子、逻辑运算基础算子、规约运算基础算子、以及阈值运算基础算子。

在一种可能的实施方式中,在从所述前向计算图中确定第一子图时,所述编译模块,具体用于基于构成所述前向计算图中的所述基础算子之间的连接关系信息、以及所述基础算子的类型,从所述前向计算图中确定所述第一子图。

在一种可能的实施方式中,在基于构成所述前向计算图中的所述基础算子之间的连接关系信息、以及所述基础算子的类型,从所述前向计算图中确定所述第一子图时,所述编译模块,具体用于基于所述基础算子的类型,从所述前向计算图中确定备选基础算子;基于所述备选基础算子之间的连接关系信息,从所述备选基础算子中,确定目标基础算子;基于所述目标基础算子,得到所述第一子图。

在一种可能的实施方式中,在基于所述第一编译算子,生成所述目标算子的第一目标计算图时,所述生成模块,具体用于基于所述第一编译算子、以及所述前向计算图中除所述第一子图外的其他基础算子,生成所述目标算子的第一目标计算图。

在一种可能的实施方式中,所述获取模块,还用于获取所述目标算子反向过程的反向计算图;所述编译模块,还用于从所述反向计算图中,确定第二子图,并对所述第二子图进行编译处理,得到所述第二子图对应的第二编译算子;所述生成模块,还用于基于所述第二编译算子,确定所述目标算子反向过程的第二目标计算图。

在一种可能的实施方式中,在获取所述目标算子反向过程的反向计算图时,所述获取模块,具体用于在执行所述目标算子的反向过程中,记录调用预先定义的反向基础算子的第二调用信息;基于所述第二调用信息生成所述目标算子的反向计算图。

在一种可能的实施方式中,所述执行模块,还用于基于所述第二目标计算图,执行所述目标算子的反向过程。

关于装置中的各模块的处理流程、以及各模块之间的交互流程的描述可以参照上述方法实施例中的相关说明,这里不再详述。

本公开实施例还提供了一种计算机设备,如图7所示,为本公开实施例提供的计算机设备结构示意图,包括:

处理器71和存储器72;所述存储器72存储有处理器71可执行的机器可读指令,处理器71用于执行存储器72中存储的机器可读指令,所述机器可读指令被处理器71执行时,处理器71执行下述步骤:

获取目标算子的前向计算图;其中,所述前向计算图中包括多个基础算子;

从所述前向计算图中确定第一子图,并对所述第一子图进行编译处理,得到所述第一子图对应的第一编译算子;所述第一子图中包括所述前向计算图中的至少部分基础算子;

基于所述第一编译算子,生成所述目标算子的第一目标计算图;

基于所述第一目标计算图,执行所述目标算子的前向过程。

上述存储器72包括内存721和外部存储器722;这里的内存721也称内存储器,用于暂时存放处理器71中的运算数据,以及与硬盘等外部存储器722交换的数据,处理器71通过内存721与外部存储器722进行数据交换。

上述指令的具体执行过程可以参考本公开实施例中所述的算子的执行方法的步骤,此处不再赘述。

本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述方法实施例中所述的算子的执行方法的步骤。其中,该存储介质可以是易失性或非易失的计算机可读取存储介质。

本公开实施例还提供一种计算机程序产品,该计算机程序产品承载有程序代码,所述程序代码包括的指令可用于执行上述方法实施例中所述的算子的执行方法的步骤,具体可参见上述方法实施例,在此不再赘述。

其中,上述计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(Software Development Kit,SDK)等等。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本公开所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

最后应说明的是:以上所述实施例,仅为本公开的具体实施方式,用以说明本公开的技术方案,而非对其限制,本公开的保护范围并不局限于此,尽管参照前述实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本公开实施例技术方案的精神和范围,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应所述以权利要求的保护范围为准。

相关技术
  • 一种算子的执行方法、装置、计算机设备及存储介质
  • 用于通过增强现实设备来提供信息的方法和装置、用于提供用于控制增强现实设备的显示的信息的方法和装置、用于控制增强现实设备的显示的方法和装置、具有用于执行方法的指令的计算机可读的存储介质
技术分类

06120112901681