一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种神经网络推理方法、装置、计算机设备及存储介质与流程

2022-04-27 08:44:19 来源:中国专利 TAG:


1.本公开涉及计算机技术领域,具体而言,涉及一种神经网络推理方法、装置、计算机设备及存储介质。


背景技术:

2.随着深度学习的发展,神经网络的种类也越来越多,神经网络中卷积计算的配置参数也越来越多。在部署神经网络时通常使用推理引擎针对不同计算的配置参数进行优化,可以提高神经网络推理的性能。
3.相关技术中,为了得到最优的推理性能,推理引擎在预处理阶段往往需要遍历大量的配置参数组合,并根据遍历得到的各配置参数组合进行神经网络的实际部署,以根据实际部署后的测试结果选择最优的配置参数组合,使得预处理阶段花费时间较长,降低了神经网络的部署效率。


技术实现要素:

4.本公开实施例至少提供一种神经网络推理方法、装置、计算机设备及存储介质。
5.第一方面,本公开实施例提供了一种神经网络推理方法,包括:
6.获取待部署的目标神经网络,并对所述目标神经网络进行解析,确定所述目标神经网络各网络层分别对应的网络参数;
7.基于目标网络层对应的网络参数、以及预先确定的样本网络层与配置参数之间的对应关系,确定与所述目标网络层对应的目标配置参数;其中,所述样本网络层与所述目标网络层的类型相同,所述样本网络层对应的配置参数为执行所述样本网络层对应的运算时的算法的配置信息;
8.基于所述目标配置参数部署所述目标神经网络,并基于所述目标神经网络进行网络推理。
9.这样,在部署目标神经网络时,通过基于目标网络层对应的网络参数、以及预先确定的样本网络层与配置参数之间的对应关系,自动确定与所述目标网络层对应的目标配置参数,并基于所述目标配置参数部署所述目标神经网络,节约了神经网络部署初始化阶段中配置参数的时间,从而提高了神经网络的部署效率。
10.一种可能的实施方式中,所述基于目标网络层对应的网络参数、以及预先确定的样本网络层与配置参数之间的对应关系,确定与所述目标网络层对应的目标配置参数,包括:
11.基于所述目标网络层对应的网络参数与所述样本网络层对应的样本网络参数之间的相似度,确定与所述目标网络层对应的至少一个候选样本网络层;
12.针对任一候选样本网络层,基于该候选样本网络层对应的配置参数部署所述目标神经网络,并确定在该候选样本网络层对应的部署方式下的运行结果;
13.基于各候选样本网络层对应的部署方式下的运行结果,确定目标候选样本网络
层,并将所述目标候选样本网络层对应的配置参数作为所述目标配置参数。
14.这样,通过确定出包含至少一个候选样本网络层的候选集合,并根据候选集合进行试运行(即根据样本网络层的配置参数进行神经网络部署)和相关配置参数选择,相较于现有技术中使用穷举等方式进行试运行并选择最优配置参数,在神经网络部署的初始化阶段中所需要试运行的次数更少,从而节约初始化阶段中的参数配置时间;通过快速的配置参数实现目标网络层的快速算法选择,从而提高神经网络的部署效率。
15.一种可能的实施方式中,所述基于所述目标网络层对应的网络参数与所述样本网络层对应的样本网络参数之间的相似度,确定与所述目标网络层对应的至少一个候选样本网络层,包括:
16.将相似度大于预设相似度的样本网络层确定为初始样本网络层;
17.基于与所述目标网络层对应的网络参数相匹配的配置信息筛选条件和,各初始样本网络层对应的配置参数,从所述初始样本网络层中确定所述至少一个候选样本网络层。
18.这样,通过设置与所述目标网络层对应的网络参数相匹配的配置信息筛选条件,对所述初始样本网络层进行筛选,可以减少后续确定目标网络层的配置参数时的运算量,从而提高神经网络的部署效率。
19.一种可能的实施方式中,所述基于所述目标配置参数部署所述目标神经网络,包括:
20.基于所述目标配置参数,确定所述目标网络层对应的第一部署代码;以及,基于所述目标神经网络中除所述目标网络层外的其他网络层的网络参数,确定所述其他网络层对应的第二部署代码;
21.基于所述第一部署代码和所述第二部署代码,生成所述目标神经网络对应的目标部署代码,并将所述目标部署代码添加至目标部署设备。
22.这样,通过自动生成部署代码并对生成的代码进行融合,相较于现有技术中使用神经网络推理引擎保存全部的部署代码,能够节约神经网络推理引擎的存储空间,从而提高神经网络的部署效率。
23.一种可能的实施方式中,所述基于所述目标配置参数,确定所述目标网络层对应的第一部署代码,包括:
24.基于预设的代码封装规则,对所述目标网络层对应的目标配置参数进行封装,确定所述目标网络层对应的第一部署代码。
25.这样,通过预设的封装规则进行代码封装,可以在部署神经网络时自动生成封装好的代码,无需提前在神经网络推理引擎中添加相应的代码,从而可以减少神经网络推理引擎所占用的空间,提高神经网络的部署效率。
26.一种可能的实施方式中,所述基于所述第一部署代码和所述第二部署代码,生成所述目标神经网络对应的目标部署代码,包括:
27.将所述第一部署代码和所述第二部署代码进行拼接,确定初始部署代码;
28.调用所述目标部署设备的目标接口函数对所述初始部署代码进行编译,生成所述目标部署代码,其中,所述目标部署代码为在所述目标部署设备上运行的代码。
29.这样,通过对自动生成的第一部署代码和第二部署代码进行拼接,并调用目标接口函数对拼接后的出书部署代码进行编译处理,可以实时的生成用于部署目标神经网络的
目标部署代码,从而可以提高神经网络的部署效率。
30.一种可能的实施方式中,在基于所述目标神经网络进行网络推理之前,所述方法还包括:
31.接收所述目标部署设备发送的与所述目标部署代码对应的部署信息;其中,所述部署信息用于描述所述目标神经网络的各网络层对应的代码的部署位置;
32.所述对所述目标神经网络进行解析,确定所述目标神经网络各网络层分别对应的网络参数,包括:
33.对所述目标神经网络进行解析,确定所述目标神经网络各网络层分别对应的网络参数和所述目标神经网络的各网络层之间的层级关系;
34.所述基于所述目标神经网络进行网络推理,包括:
35.基于所述部署信息和所述层级关系进行神经网络推理。
36.一种可能的实施方式中,所述基于所述部署信息和所述层级关系进行神经网络推理,包括:
37.按照所述层级关系,依次运行各部署信息对应的代码,以进行神经网络推理。
38.第二方面,本公开实施例还提供一种神经网络推理装置,包括:
39.解析模块,用于获取待部署的目标神经网络,并对所述目标神经网络进行解析,确定所述目标神经网络各网络层分别对应的网络参数;
40.确定模块,用于基于目标网络层对应的网络参数、以及预先确定的样本网络层与配置参数之间的对应关系,确定与所述目标网络层对应的目标配置参数;其中,所述样本网络层与所述目标网络层的类型相同,所述样本网络层对应的配置参数为执行所述样本网络层对应的运算时的算法的配置信息;
41.推理模块,用于基于所述目标配置参数部署所述目标神经网络,并基于所述目标神经网络进行网络推理。
42.一种可能的实施方式中,所述确定模块,在基于目标网络层对应的网络参数、以及预先确定的样本网络层与配置参数之间的对应关系,确定与所述目标网络层对应的目标配置参数时,用于:
43.基于所述目标网络层对应的网络参数与所述样本网络层对应的样本网络参数之间的相似度,确定与所述目标网络层对应的至少一个候选样本网络层;
44.针对任一候选样本网络层,基于该候选样本网络层对应的配置参数部署所述目标神经网络,并确定在该候选样本网络层对应的部署方式下的运行结果;
45.基于各候选样本网络层对应的部署方式下的运行结果,确定目标候选样本网络层,并将所述目标候选样本网络层对应的配置参数作为所述目标配置参数。
46.一种可能的实施方式中,所述确定模块,在基于所述目标网络层对应的网络参数与所述样本网络层对应的样本网络参数之间的相似度,确定与所述目标网络层对应的至少一个候选样本网络层时,用于:
47.将相似度大于预设相似度的样本网络层确定为初始样本网络层;
48.基于与所述目标网络层对应的网络参数相匹配的配置信息筛选条件和,各初始样本网络层对应的配置参数,从所述初始样本网络层中确定所述至少一个候选样本网络层。
49.一种可能的实施方式中,所述推理模块,在基于所述目标配置参数部署所述目标
神经网络时,用于:
50.基于所述目标配置参数,确定所述目标网络层对应的第一部署代码;以及,基于所述目标神经网络中除所述目标网络层外的其他网络层的网络参数,确定所述其他网络层对应的第二部署代码;
51.基于所述第一部署代码和所述第二部署代码,生成所述目标神经网络对应的目标部署代码,并将所述目标部署代码添加至目标部署设备。
52.一种可能的实施方式中,所述推理模块,在基于所述目标配置参数和所述网络参数,确定所述目标网络层对应的第一部署代码时,用于:
53.基于预设的代码封装规则,对所述目标网络层对应的目标配置参数进行封装,确定所述目标网络层对应的第一部署代码。
54.一种可能的实施方式中,所述推理模块,在基于所述第一部署代码和所述第二部署代码,生成所述目标神经网络对应的目标部署代码时,用于:
55.将所述第一部署代码和所述第二部署代码进行拼接,确定初始部署代码;
56.调用所述目标部署设备的目标接口函数对所述初始部署代码进行编译,生成所述目标部署代码,其中,所述目标部署代码为在所述目标部署设备上运行的代码。
57.一种可能的实施方式中,在基于所述目标神经网络进行网络推理之前,所述推理模块还用于:
58.接收所述目标部署设备发送的与所述目标部署代码对应的部署信息;其中,所述部署信息用于描述所述目标神经网络的各网络层对应的代码的部署位置;
59.所述解析模块,在对所述目标神经网络进行解析,确定所述目标神经网络各网络层分别对应的网络参数时,用于:
60.对所述目标神经网络进行解析,确定所述目标神经网络各网络层分别对应的网络参数和所述目标神经网络的各网络层之间的层级关系;
61.所述推理模块,在基于所述目标神经网络进行网络推理时,用于:
62.基于所述部署信息和所述层级关系进行神经网络推理。
63.一种可能的实施方式中,所述推理模块,在基于所述部署信息和所述层级关系进行神经网络推理时,用于:
64.按照所述层级关系,依次运行各部署信息对应的代码,以进行神经网络推理。
65.第三方面,本公开实施例还提供一种计算机设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当计算机设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。
66.第四方面,本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。
67.关于上述神经网络推理装置、计算机设备及存储介质的效果描述参见上述神经网络推理方法的说明,这里不再赘述。
68.为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
69.为了更清楚地说明本公开实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,此处的附图被并入说明书中并构成本说明书中的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。应当理解,以下附图仅示出了本公开的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
70.图1示出了本公开实施例所提供的一种神经网络推理方法的流程图;
71.图2示出了本公开实施例所提供的神经网络推理方法中,确定与目标网络层对应的目标配置参数的具体方法的流程图;
72.图3示出了本公开实施例所提供的神经网络推理方法中,确定与目标网络层对应的至少一个候选样本网络层的具体方法的流程图;
73.图4示出了本公开实施例所提供的神经网络推理方法中,部署目标神经网络的具体方法的流程图;
74.图5示出了本公开实施例所提供的神经网络推理方法中,生成目标神经网络对应的目标部署代码的具体方法的流程图;
75.图6示出了本公开实施例所提供的神经网络推理方法中,进行网络推理的具体方法的流程图;
76.图7示出了本公开实施例所提供的一种神经网络推理装置的架构示意图;
77.图8示出了本公开实施例所提供的一种计算机设备的结构示意图。
具体实施方式
78.为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本公开实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
79.应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
80.本文中术语“和/或”,仅仅是描述一种关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中术语“至少一种”表示多种中的任意一种或多种中的至少两种的任意组合,例如,包括a、b、c中的至少一种,可以表示包括从a、b和c构成的集合中选择的任意一个或多个元素。
81.经研究发现,相关技术中,为了得到最优的推理性能,推理引擎在预处理阶段往往需要遍历大量的配置参数组合,并根据遍历得到的各配置参数组合进行神经网络的实际部署,以根据实际部署后的测试结果选择最优的配置参数组合,使得预处理阶段花费时间较长,降低了神经网络的部署效率。
82.基于上述研究,本公开提供了一种神经网络推理方法、装置、计算机设备及存储介
质,在部署目标神经网络时,通过基于目标网络层对应的网络参数、以及预先确定的样本网络层与配置参数之间的对应关系,自动确定与所述目标网络层对应的目标配置参数,并基于所述目标配置参数部署所述目标神经网络,节约了神经网络部署初始化阶段中配置参数的时间,从而提高了神经网络的部署效率。
83.为便于对本实施例进行理解,首先对本公开实施例所公开的一种神经网络推理方法进行详细介绍,本公开实施例所提供的神经网络推理方法的执行主体一般为具有一定计算能力的计算机设备,该计算机设备例如包括:终端设备或服务器或其它处理设备,终端设备可以为用户设备(user equipment,ue)、移动设备、用户终端、终端等。在一些可能的实现方式中,该神经网络推理方法可以通过处理器调用存储器中存储的计算机可读指令的方式来实现。
84.参见图1所示,为本公开实施例提供的神经网络推理方法的流程图,所述方法包括s101~s103,其中:
85.s101:获取待部署的目标神经网络,并对所述目标神经网络进行解析,确定所述目标神经网络各网络层分别对应的网络参数。
86.s102:基于目标网络层对应的网络参数、以及预先确定的样本网络层与配置参数之间的对应关系,确定与所述目标网络层对应的目标配置参数;其中,所述样本网络层与所述目标网络层的类型相同,所述样本网络层对应的配置参数为执行所述样本网络层对应的运算时的算法的配置信息。
87.s103:基于所述目标配置参数部署所述目标神经网络,并基于所述目标神经网络进行网络推理。
88.以下是对上述步骤的详细介绍。
89.针对s101,所述目标神经网络各网络层分别对应的网络参数包括权重参数、偏置参数、卷积层的卷积参数、激活层的激活参数等,通过确定所述目标神经网络各网络层分别对应的网络参数,即可确定所述待部署的目标神经网络的各网络层的类型,以及各网络层分别对应的网络参数的参数值。
90.示例性的,对所述目标神经网络进行解析,可以确定出所述目标神经网络中卷积层所对应的网络参数为进行卷积运算的卷积运算量、卷积核大小、卷积步长等卷积参数,其中,所述卷积运算量可以通过参与卷积运算的特征图的长和宽来表示。
91.此外,在对所述目标神经网络进行解析时,还可以确定所述目标神经网络各网络层分别对应的网络参数和所述目标神经网络的各网络层之间的层级关系,然后基于层级关系进行网络推理,具体的过程将在下方展开介绍。
92.s102:基于目标网络层对应的网络参数、以及预先确定的样本网络层与配置参数之间的对应关系,确定与所述目标网络层对应的目标配置参数;其中,所述样本网络层与所述目标网络层的类型相同,所述样本网络层对应的配置参数为执行所述样本网络层对应的运算时的算法的配置信息。
93.这里,所述目标网络层可以是卷积层或者进行矩阵运算的网络层,由于这些网络层的运算量较大,因此可以设置相应的配置参数以提高运算效率,所述算法表示进行运算时的方法,包括是否使用特定的运算机制、运算时各运算单元所执行的运算量等。
94.示例性的,以所述目标网络层和所述样本网络层为卷积层为例,所述样本网络层
对应的配置参数,包括图形处理器中各统一计算设备架构(compute unified device architecture,cuda)运算单元所执行的卷积运算的运算量、各最小运算单元所执行的卷积运算的运算量、是否使用双缓冲机制进行卷积运算、是否使用split机制对卷积计算进行分解、各cuda运算单元每次循环计算的迭代步长、由各最小运算单元每次循环计算的迭代步长等。
95.具体的,可以通过穷举的方式确定多个具有不同网络参数的样本网络层,在进行神经网络部署之前,推理引擎中可以预先确定出所述样本网络层与配置参数的对应关系;针对任一所述样本网络层,与该样本网络层对应的配置参数可以是在该配置参数下进行神经网络部署后,运行结果满足预设条件的参数,所述预设条件例如可以是部署后的神经网络的推理速度最快。
96.需要说明的是,使用样本网络层进行神经网络部署时所使用的设备为测试设备,并不是实际部署所述目标网络层的目标部署设备,由于设备之间存在硬件差异,因此相同的配置参数在不同的部署设备上的运行结果也可能不同,也即按照在测试设备上运行结果最优的配置参数进行目标神经网络的部署,最终得到的运行结果不一定是最优的。
97.这样,在神经网络部署前,可以得到所述样本网络层在各网络参数设置下进行神经网络部署的最优配置参数,而由于所述样本网络层与所述目标网络层的类型相同,后续在确定所述目标网络层的目标配置参数时便可以基于目标网络层对应的网络参数、以及预先确定的样本网络层与配置参数之间的对应关系,确定与所述目标网络层对应的目标配置参数。
98.一种可能的实施方式中,如图2所示,可以通过以下步骤确定与所述目标网络层对应的目标配置参数:
99.s201:基于所述目标网络层对应的网络参数与所述样本网络层对应的样本网络参数之间的相似度,确定与所述目标网络层对应的至少一个候选样本网络层。
100.这里,所述目标网络层对应的网络参数与所述样本网络层对应的样本网络参数之间的相似度,可以是各网络参数之间的余弦相似度。
101.具体的,在确定所述相似度时可以使用一个或多个所述网络参数进行确定。在使用多个网络参数确定相似度时,可以分别确定选中的用于确定相似度的各网络参数的相似度,并对各网络参数的相似度进行加权求和,并将加权求和后的相似度,作为所述目标网络层对应的网络参数与所述样本网络层对应的样本网络参数之间的相似度。
102.一种可能的实施方式中,如图3所示,可以通过以下步骤确定与所述目标网络层对应的至少一个候选样本网络层:
103.s2011:将相似度大于预设相似度的样本网络层确定为初始样本网络层。
104.示例性的,以所述预设相似度为0.8,样本网络层1~4与目标网络层的相似度分别为0.6、0.9、0.75、0.85为例,可以将样本网络层2和样本网络层3确定为所述初始样本网络层,从而可以得到包含多个初始样本网络网络层的候选集合。
105.s2012:基于与所述目标网络层对应的网络参数相匹配的配置信息筛选条件和,各初始样本网络层对应的配置参数,从所述初始样本网络层中确定所述至少一个候选样本网络层。
106.这里,所述配置信息筛选条件可以通过数据分析的方式得到的,比如可以通过对
所述目标网络层对应的网络参数进行数据分析,得到与所述网络参数对应的各配置参数的最大值和最小值,则对应的配置信息筛选条件即为配置参数的参数值不得大于对应的最大值,且不得小于对应的最小值。
107.这样,通过设置与所述目标网络层对应的网络参数相匹配的配置信息筛选条件,对所述初始样本网络层进行筛选,可以减少后续确定目标网络层的配置参数时的运算量,从而提高神经网络的部署效率。
108.s202:针对任一候选样本网络层,基于该候选样本网络层对应的配置参数部署所述目标神经网络,并确定在该候选样本网络层对应的部署方式下的运行结果。
109.这样,在进行神经网络部署时可以使用推理引擎进行部署;在将所述目标神经网络部署到目标部署设备后,可以确定所述目标神经网络在该候选样本网络层对应的部署方式下的运行结果,所述运行结果可以是推理速度、推理精度等,通过所述运行结果即可确定所述目标神经网络在该部署方式下的部署效果。
110.s203:基于各候选样本网络层对应的部署方式下的运行结果,确定目标候选样本网络层,并将所述目标候选样本网络层对应的配置参数作为所述目标配置参数。
111.具体的,在基于各候选样本网络层对应的部署方式下的运行结果,确定目标候选样本网络层时,可以根据预设的运行结果评估规则,从所述候选样本网络层中确定运行结果最优的目标候选样本网络层,然后将所述目标候选样本网络层对应的配置参数作为所述目标配置参数。
112.示例性的,以所述运行结果为推理速度为例,则对应的运行结果评估规则可以是选择推理速度最快的候选样本网络层,作为所述目标候选样本网络层。
113.这样,通过确定出包含至少一个候选样本网络层的候选集合,并根据候选集合进行试运行(即根据样本网络层的配置参数进行神经网络部署)和相关配置参数选择,相较于现有技术中使用穷举等方式进行试运行并选择最优配置参数,在神经网络部署的初始化阶段中所需要试运行的次数更少,从而节约初始化阶段中的参数配置时间;通过快速的配置参数实现目标网络层的快速算法选择,从而提高神经网络的部署效率。
114.s103:基于所述目标配置参数部署所述目标神经网络,并基于所述目标神经网络进行网络推理。
115.这里,所述网络推理为基于所述目标神经网络对输入数据进行数据处理,从而得到与输入数据对应的数据处理结果。
116.示例性的,以所述目标神经网络为图像识别网络为例,在部署所述目标神经网络后,将包含有猫的图片输入值所述目标神经网络后,经过所述目标神经网络的网络推理,可以得到推理结果为“猫”。
117.一种可能的实施方式中,如图4所示,可以通过以下步骤部署目标神经网络:
118.s401:基于所述目标配置参数,确定所述目标网络层对应的第一部署代码;以及,基于所述目标神经网络中出所述目标网络层外的其他网络层的网络参数,确定所述其他网络层对应的第二部署代码。
119.这里,所述第一部署代码和第二部署代码为中央处理器所能识别的代码,通过生成所述第一部署代码和所述第二部署代码,即可在中央处理器中记录所述目标神经网络的部署配置,其中,所述中央处理器为部署所述神经网络推理引擎的设备,用于对所述目标神
经网络进行部署。
120.具体的,在基于所述目标配置参数,确定所述目标网络层对应的第一部署代码时,可以基于预设的代码封装规则,对所述目标网络层对应的目标配置参数进行封装,确定所述目标网络层对应的第一部署代码;在基于所述目标神经网络中除所述目标网络层外的其他网络层的网络参数,确定所述其他网络层对应的第二部署代码时,可以根据所述其他网络层的网络参数,从所述神经网络推理引擎中获取与所述其他网络层对应的第二部署代码。
121.其中,所述代码封装规则可以定义进行代码封装时的模板,在基于预设的代码封装规则,对所述目标网络层对应的目标配置参数进行封装时,可以根据所述目标配置参数与模板之间的对应关系,将所述目标配置参数添加至模板的对应位置处,从而生成所述目标网络层对应的第一部署代码。
122.一种可能的实施方式中,在进行代码封装时,还可以获取与所述目标网络层对应的融合信息,并根据所述融合信息对所述目标网络层,以及与所述目标网络层具有融合关系的其他网络层进行代码封装。
123.示例性的,以所述目标网络层为卷积层为例,根据所述融合信息可以确定与卷积层具有融合关系的其他网络层为激活层,则可以在进行代码封装时将卷积层对应配置参数,以及激活层对应的网络参数同时进行代码封装处理,从而可以提高初始部署代码的生成效率。
124.这样,通过预设的封装规则进行代码封装,可以在部署神经网络时自动生成封装好的代码,无需提前在神经网络推理引擎中添加相应的代码,从而可以减少神经网络推理引擎所占用的空间,提高神经网络的部署效率。
125.s402:基于所述第一部署代码和所述第二部署代码,生成所述目标神经网络对应的目标部署代码,并将所述目标部署代码添加至目标部署设备。
126.这里,所述目标部署设备可以是图形处理器等可以用于进行神经网络部署的硬件设备,在将所述目标部署代码添加至所述目标部署设备后,即完成了所述目标神经网络的部署。
127.一种可能的实施方式中,如图5所示,可以通过以下步骤生成所述目标神经网络对应的目标部署代码:
128.s4021:将所述第一部署代码和所述第二部署代码进行拼接,确定初始部署代码。
129.这里,在将所述第一部署代码和所述第二部署代码进行拼接时,可以根据所述目标神经网络中各网络层之间的连接关系,对所述第一部署代码和所述第二部署代码进行拼接,拼接后的部署代码即为所述初始部署代码。
130.s4022:调用所述目标部署设备的目标接口函数对所述初始部署代码进行编译,生成所述目标部署代码,其中,所述目标部署代码为在所述目标部署设备上运行的代码。
131.示例性的,以所述目标部署设备为图形处理器为例,可以调用nvrtc接口的目标接口函数对所述初始部署代码进行编译,生成可以运行在所述图形处理器上的目标部署代码。
132.这样,通过对自动生成的第一部署代码和第二部署代码进行拼接,并调用目标接口函数对拼接后的出书部署代码进行编译处理,可以实时的生成用于部署目标神经网络的
目标部署代码,从而可以提高神经网络的部署效率。
133.一种可能的实施方式中,如图6所示,可以通过以下步骤进行网络推理:
134.s601:接收所述目标部署设备发送的与所述目标部署代码对应的部署信息;其中,所述部署信息用于描述所述目标神经网络的各网络层对应的代码的部署位置。
135.这里,所述目标部署设备在接收到所述目标部署代码后,可以将所述目标部署代码部署在所述目标部署设备中,并将所述部署信息发送至神经网络推理引擎中,以便所述目标部署设备在接收到推理指令后进行神经网络推理。
136.s602:基于所述部署信息,以及对所述目标神经网络进行解析得到的各网络层之间的层级关系进行神经网络推理。
137.这里,在基于所述部署信息和所述层级关系进行神经网络推理时,可以按照所述层级关系,依次运行各部署信息对应的代码,以进行神经网络推理。
138.具体的,根据所述层级关系可以确定出在进行神经网络推理时,所需要使用的至少一个网络层之间的推理顺序,神经网络推理引擎可以根据所述推理顺序依次向所述目标部署设备发送推理指令,以指示所述目标部署设备根据所述推理顺序运行对应的代码进行神经网络推理。
139.本公开实施例提供的神经网络推理方法,在部署目标神经网络时,通过基于目标网络层对应的网络参数、以及预先确定的样本网络层与配置参数之间的对应关系,自动确定与所述目标网络层对应的目标配置参数,并基于所述目标配置参数部署所述目标神经网络,节约了神经网络部署初始化阶段中配置参数的时间,从而提高了神经网络的部署效率。
140.本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
141.基于同一发明构思,本公开实施例中还提供了与神经网络推理方法对应的神经网络推理装置,由于本公开实施例中的装置解决问题的原理与本公开实施例上述神经网络推理方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。
142.参照图7所示,为本公开实施例提供的一种神经网络推理装置的架构示意图,所述装置包括:解析模块701、确定模块702、推理模块703;其中,
143.解析模块701,用于获取待部署的目标神经网络,并对所述目标神经网络进行解析,确定所述目标神经网络各网络层分别对应的网络参数;
144.确定模块702,用于基于目标网络层对应的网络参数、以及预先确定的样本网络层与配置参数之间的对应关系,确定与所述目标网络层对应的目标配置参数;其中,所述样本网络层与所述目标网络层的类型相同,所述样本网络层对应的配置参数为执行所述样本网络层对应的运算时的算法的配置信息;
145.推理模块703,用于基于所述目标配置参数部署所述目标神经网络,并基于所述目标神经网络进行网络推理。
146.一种可能的实施方式中,所述确定模块702,在基于目标网络层对应的网络参数、以及预先确定的样本网络层与配置参数之间的对应关系,确定与所述目标网络层对应的目标配置参数时,用于:
147.基于所述目标网络层对应的网络参数与所述样本网络层对应的样本网络参数之
间的相似度,确定与所述目标网络层对应的至少一个候选样本网络层;
148.针对任一候选样本网络层,基于该候选样本网络层对应的配置参数部署所述目标神经网络,并确定在该候选样本网络层对应的部署方式下的运行结果;
149.基于各候选样本网络层对应的部署方式下的运行结果,确定目标候选样本网络层,并将所述目标候选样本网络层对应的配置参数作为所述目标配置参数。
150.一种可能的实施方式中,所述确定模块702,在基于所述目标网络层对应的网络参数与所述样本网络层对应的样本网络参数之间的相似度,确定与所述目标网络层对应的至少一个候选样本网络层时,用于:
151.将相似度大于预设相似度的样本网络层确定为初始样本网络层;
152.基于与所述目标网络层对应的网络参数相匹配的配置信息筛选条件和,各初始样本网络层对应的配置参数,从所述初始样本网络层中确定所述至少一个候选样本网络层。
153.一种可能的实施方式中,所述推理模块703,在基于所述目标配置参数部署所述目标神经网络时,用于:
154.基于所述目标配置参数,确定所述目标网络层对应的第一部署代码;以及,基于所述目标神经网络中除所述目标网络层外的其他网络层的网络参数,确定所述其他网络层对应的第二部署代码;
155.基于所述第一部署代码和所述第二部署代码,生成所述目标神经网络对应的目标部署代码,并将所述目标部署代码添加至目标部署设备。
156.一种可能的实施方式中,所述推理模块703,在基于所述目标配置参数和所述网络参数,确定所述目标网络层对应的第一部署代码时,用于:
157.基于预设的代码封装规则,对所述目标网络层对应的目标配置参数进行封装,确定所述目标网络层对应的第一部署代码。
158.一种可能的实施方式中,所述推理模块703,在基于所述第一部署代码和所述第二部署代码,生成所述目标神经网络对应的目标部署代码时,用于:
159.将所述第一部署代码和所述第二部署代码进行拼接,确定初始部署代码;
160.调用所述目标部署设备的目标接口函数对所述初始部署代码进行编译,生成所述目标部署代码,其中,所述目标部署代码为在所述目标部署设备上运行的代码。
161.一种可能的实施方式中,在基于所述目标神经网络进行网络推理之前,所述推理模块703还用于:
162.接收所述目标部署设备发送的与所述目标部署代码对应的部署信息;其中,所述部署信息用于描述所述目标神经网络的各网络层对应的代码的部署位置;
163.所述解析模块701,在对所述目标神经网络进行解析,确定所述目标神经网络各网络层分别对应的网络参数时,用于:
164.对所述目标神经网络进行解析,确定所述目标神经网络各网络层分别对应的网络参数和所述目标神经网络的各网络层之间的层级关系;
165.所述推理模块703,在基于所述目标神经网络进行网络推理时,用于:
166.基于所述部署信息和所述层级关系进行神经网络推理。
167.一种可能的实施方式中,所述推理模块703,在基于所述部署信息和所述层级关系进行神经网络推理时,用于:
168.按照所述层级关系,依次运行各部署信息对应的代码,以进行神经网络推理。
169.本公开实施例提供的神经网络推理装置,在部署目标神经网络时,通过基于目标网络层对应的网络参数、以及预先确定的样本网络层与配置参数之间的对应关系,自动确定与所述目标网络层对应的目标配置参数,并基于所述目标配置参数部署所述目标神经网络,节约了神经网络部署初始化阶段中配置参数的时间,从而提高了神经网络的部署效率。关于装置中的各模块的处理流程、以及各模块之间的交互流程的描述可以参照上述方法实施例中的相关说明,这里不再详述。
170.基于同一技术构思,本公开实施例还提供了一种计算机设备。参照图8所示,为本公开实施例提供的计算机设备800的结构示意图,包括处理器801、存储器802、和总线803。其中,存储器802用于存储执行指令,包括内存8021和外部存储器8022;这里的内存8021也称内存储器,用于暂时存放处理器801中的运算数据,以及与硬盘等外部存储器8022交换的数据,处理器801通过内存8021与外部存储器8022进行数据交换,当计算机设备800运行时,处理器801与存储器802之间通过总线803通信,使得处理器801在执行以下指令:
171.获取待部署的目标神经网络,并对所述目标神经网络进行解析,确定所述目标神经网络各网络层分别对应的网络参数;
172.基于目标网络层对应的网络参数、以及预先确定的样本网络层与配置参数之间的对应关系,确定与所述目标网络层对应的目标配置参数;其中,所述样本网络层与所述目标网络层的类型相同,所述样本网络层对应的配置参数为执行所述样本网络层对应的运算时的算法的配置信息;
173.基于所述目标配置参数部署所述目标神经网络,并基于所述目标神经网络进行网络推理。
174.本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述方法实施例中所述的神经网络推理方法的步骤。其中,该存储介质可以是易失性或非易失的计算机可读取存储介质。
175.本公开实施例还提供一种计算机程序产品,该计算机程序产品承载有程序代码,所述程序代码包括的指令可用于执行上述方法实施例中所述的神经网络推理方法的步骤,具体可参见上述方法实施例,在此不再赘述。
176.其中,上述计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(software development kit,sdk)等等。
177.所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本公开所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
178.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
179.另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
180.所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
181.最后应说明的是:以上所述实施例,仅为本公开的具体实施方式,用以说明本公开的技术方案,而非对其限制,本公开的保护范围并不局限于此,尽管参照前述实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本公开实施例技术方案的精神和范围,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应所述以权利要求的保护范围为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献