推理方法及装置制造方法及图纸

技术编号:30241291 阅读:16 留言:0更新日期:2021-10-09 20:19
本申请公开了一种推理方法及装置,属于数据处理领域。本申请可以将目标硬件所不支持且不存在对应的可替换算子的算子确定出来,也即确定神经网络模型中第一类型的算子,之后,获取基于领域特定语言确定得到的第一类型的算子对应的注册算子,并对注册算子进行处理,得到目标硬件所支持的目标可执行代码,根据目标可执行代码和神经网络模型通过目标硬件进行前向推理。由于领域特定语言的设计与硬件无关,因此,用户无需了解设备的硬件特性,即可编写出注册算子,开发难度较低。另外,针对不同的硬件可能对应的同一种第一类型的算子,用户仅需将该算子编写一次得到对应的注册算子,即可以将该注册算子在不同的硬件上应用,开发工作量较低。量较低。量较低。

【技术实现步骤摘要】
推理方法及装置


[0001]本申请涉及数据处理领域,特别涉及一种推理方法及装置。

技术介绍

[0002]算子用于指示一种数据处理操作,描述一种计算方式,比如,神经网络通常包括基础的卷积算子和池化算子,卷积算子用于指示一种卷积操作,池化算子用于指示一种池化操作。用户也可以根据需要定义自己的计算方式,自己定义的计算方式可以称为自定义算子。根据基础的算子以及自定义算子可以构建并训练得到神经网络模型。之后,可以将神经网络模型部署在各种设备上,以进行前向推理。
[0003]由于不同设备的硬件条件可能不同,因此,不同的设备所能支持的算子可能存在不同。通常,各种设备均可以支持基础的算子,但是不一定支持自定义算子。一个神经网络模型训练好之后,为了能够使神经网络模型中的自定义算子能够适配各种硬件条件的设备,用户需要根据各个设备的硬件特性,人工将各个设备不支持的算子转换成相应设备所能支持的可执行代码,开发工作量巨大,且用户需要了解各种设备的硬件特性,开发难度很大。由此可见,当前亟需一种支持各种算子的通用推理方法,使自定义算子可以自动适配相应设备,以完成前向推理。

技术实现思路

[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]按照所述神经网络模型包括的多个计算节点的顺序,依次选择所述多个计算节点
中的一个计算节点执行以下操作,直至所述多个计算节点中的每个计算节点均已执行以下操作为止:
[0030]如果根据替换算子列表确定选择的计算节点包括的一个或多个算子中存在第二类型的算子,则根据所述替换算子列表,对所述第二类型的算子进行替换,得到更新后的计算节点;
[0031]如果所述更新后的计算节点包括的一个或多个算子中存在所述第一类型的算子,则根据所述更新后的计算节点包括的第一类型的算子所对应的第一算子标签,获取所述选择的计算节点的计算参数以及所述选择的计算节点包括的第一类型的算子所对应的目标可执行代码;
[0032]根据获取的计算参数和目标可执行代码,执行所述更新后的计算节点的前向推理计算。
[0033]可选地,领域特定语言是指应用于特定应用程序领域的计算机语言。
[0034]另一方面,提供了一种推理装置,所述装置包括:
[0035]第一确定模块,用于从神经网络模型包括的多个算子中确定第一类型的算子,所述第一类型的算子是指目标硬件不支持且在所述目标硬件所支持的算子中不存在对应的可替换算子的算子;
[0036]获取模块,用于获取所述第一类型的算子对应的一个或多个注册算子,所述一个或多个注册算子基于领域特定语言确定得到;
[0037]第一处理模块,用于对所述一个或多个注册算子进行处理,得到所述目标硬件所支持的一个或多个目标可执行代码;
[0038]推理模块,用于根据所述一个或多个目标本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种推理方法,其特征在于,所述方法包括:从神经网络模型包括的多个算子中确定第一类型的算子,所述第一类型的算子是指目标硬件不支持且在所述目标硬件所支持的算子中不存在对应的可替换算子的算子;获取所述第一类型的算子对应的一个或多个注册算子,所述一个或多个注册算子基于领域特定语言确定得到;对所述一个或多个注册算子进行处理,得到所述目标硬件所支持的一个或多个目标可执行代码;根据所述一个或多个目标可执行代码和所述神经网络模型,通过所述目标硬件进行前向推理。2.根据权利要求1所述的方法,其特征在于,所述对所述一个或多个注册算子进行处理,得到所述目标硬件所支持的一个或多个目标可执行代码,包括:通过解释器对所述一个或多个注册算子进行处理,得到一个或多个目标语言代码段,所述一个或多个注册算子与所述一个或多个目标语言代码段一一对应;通过目标编译器对所述一个或多个目标语言代码段进行编译,得到与所述一个或多个目标语言代码段一一对应的所述一个或多个目标可执行代码,所述目标编译器为与所述目标硬件匹配的编译器。3.根据权利要求1所述的方法,其特征在于,所述从神经网络模型包括的多个算子中确定第一类型的算子,包括:根据所述目标硬件对应的支持算子列表和替换算子列表,从所述多个算子中确定所述第一类型的算子;其中,所述支持算子列表包括所述目标硬件所支持的算子,所述替换算子列表为所述目标硬件所支持的算子与对应的可替换算子之间的映射关系。4.根据权利要求3所述的方法,其特征在于,所述根据所述目标硬件对应的支持算子列表和替换算子列表,从所述多个算子中确定所述第一类型的算子,包括:确定所述神经网络模型的计算图,所述计算图包括多个计算节点,每个计算节点包括一个或多个算子,且所述多个计算节点按照前向推理时的执行顺序排列;按照所述多个计算节点的顺序,依次确定每个计算节点包括的一个或多个算子中未包含在所述支持算子列表中的目标算子,将所述多个计算节点包括的未包含在所述替换算子列表中的目标算子作为所述第一类型的算子。5.根据权利要求1所述的方法,其特征在于,所述从神经网络模型包括的多个算子中确定第一类型的算子之后,还包括:为所述神经网络模型中的每个所述第一类型的算子添加第一算子标签,并提取相应的所述第一类型的算子所属的计算节点的计算参数,将所述第一算子标签和所述计算参数对应存储,所述第一算子标签用于唯一标识对应的算子,且所述第一算子标签用于指示对应的算子的类型为所述第一类型。6.根据权利要求5所述的方法,其特征在于,所述从神经网络模型包括的多个算子中确定第一类型的算子之后,还包括:从所述神经网络模型包括的多个算子中确定第二类型的算子...

【专利技术属性】
技术研发人员:浦世亮叶挺群王鹏
申请(专利权)人:杭州海康威视数字技术股份有限公司
类型:发明
国别省市:

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

1