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

模型推理方法、装置、设备及存储介质与流程

2022-07-31 09:20:55 来源:中国专利 TAG:


1.本公开涉及数据处理技术领域,尤其涉及人工智能技术领域,进一步涉及模型推理方法、装置、设备及存储介质。


背景技术:

2.神经网络模型的模型推理过程可以由多个不同的数据处理环节组成,依次运行神经网络模型中的不同运算核(kernel)可以完成不同的数据处理环节,从而实现模型推理过程。


技术实现要素:

3.本公开提供了一种模型推理方法、装置、设备及存储介质。
4.根据本公开的一方面,提供了一种模型推理方法,应用于gpu,包括:
5.接收cpu发送的目标神经网络模型对应的运算核图,其中,所述运算核图中的各个节点分别对应目标神经网络模型中包含的各个运算核,每一条边的方向用于表示该边所连接的节点对应的运算核的运行顺序;
6.在接收到所述cpu发送的待处理数据后,按照所述运算核图表示的运行顺序依次运行各个运算核,对所述待处理数据进行处理,完成所述目标神经网络模型的推理过程;
7.向所述cpu反馈模型推理结果。
8.根据本公开的另一方面,提供了一种模型推理方法,应用于cpu,包括:
9.将预先构建的运算核图发送至gpu,其中,所述运算核图中的各个节点分别对应目标神经网络模型中包含的各个运算核,每一条边的方向用于表示该边所连接的节点对应的运算核的运行顺序;
10.在存在目标处理请求的情况下,将待处理数据发送至所述gpu,以使得所述gpu按照所述运算核图表示的运行顺序依次运行各个运算核,对所述待处理数据进行处理,完成所述目标神经网络模型的推理过程,并向所述cpu反馈模型推理结果,其中,所述目标处理需求为使用所述目标神经网络模型对待处理数据进行处理的请求;
11.接收所述gpu反馈的模型推理结果。
12.根据本公开的另一方面,提供了一种模型推理装置,应用于gpu,包括:
13.运算核图接收模块,用于接收cpu发送的目标神经网络模型对应的运算核图,其中,所述运算核图中的各个节点分别对应目标神经网络模型中包含的各个运算核,每一条边的方向用于表示该边所连接的节点对应的运算核的运行顺序;
14.模型推理模块,用于在接收到所述cpu发送的待处理数据后,按照所述运算核图表示的运行顺序依次运行各个运算核,对所述待处理数据进行处理,完成所述目标神经网络模型的推理过程;
15.结果反馈模块,用于向所述cpu反馈模型推理结果。
16.根据本公开的另一方面,提供了一种模型推理装置,应用于cpu,包括:
17.运算核图发送模块,用于将预先构建的运算核图发送至图形处理器gpu,其中,所述运算核图中的各个节点分别对应目标模型中包含的各个运算核,每一条边的方向用于表示该边所连接的节点对应的运算核的运行顺序;
18.数据发送模块,用于在存在目标处理请求的情况下,将待处理数据发送至所述gpu,以使得所述gpu按照所述运算核图表示的运行顺序依次运行各个运算核,基于显存中的预设存储空间,对所述待处理数据进行处理,完成所述目标神经网络模型的推理过程,并向所述cpu反馈模型推理结果,其中,所述目标处理需求为使用所述目标神经网络模型对待处理数据进行处理的请求;
19.第一结果接收模块,用于接收所述gpu反馈的模型推理结果。
20.根据本公开的另一方面,提供了一种电子设备,包括:
21.至少一个gpu;以及
22.与所述至少一个gpu通信连接的存储器;其中,
23.所述存储器存储有可被所述至少一个gpu执行的指令,所述指令被所述至少一个gpu执行,以使所述至少一个gpu能够执行应用于gpu的模型推理方法中任一项所述的方法。
24.根据本公开的另一方面,提供了一种电子设备,包括:
25.至少一个cpu;以及
26.与所述至少一个cpu通信连接的存储器;其中,
27.所述存储器存储有可被所述至少一个cpu执行的指令,所述指令被所述至少一个cpu执行,以使所述至少一个cpu能够执行应用于cpu的模型推理方法中任一项所述的方法。
28.根据本公开的另一方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行应用于gpu的模型推理方法或应用于cpu的模型推理方法任一项所述的方法。
29.根据本公开的另一方面,一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现应用于gpu的模型推理方法或应用于cpu的模型推理方法任一项所述的方法。
30.由以上可见,本公开实施例提供的方案中gpu预先获得了cpu发送的目标神经网络模型对应的运算核图,上述运算核图中包含有目标神经网络模型中包含的各个运算核,并能表示目标神经网络模型中各个运算核的运行顺序。则在gpu接收到cpu发送的待处理数据后,可以调用上述运算核图,按照上述运算核图表示的运行顺序依次运行各个运算核,对上述待处理数据进行处理,完成模型推理过程。与现有技术中cpu将各个运算核依次发送至gpu的方式相比,本实施例中cpu与gpu之间通过发送一次运算核图,cpu便可以把各个运算核均发送至gpu。在后续接收到cpu发送的待处理数据后,gpu可以直接基于运算核图进行模型推理,cpu与gpu之间便不需要再交互运算核,本实施例中cpu与gpu之间进行交互的次数较少,从而可以降低cpu与gpu之间的交互对gpu模型推理的影响,进而可以提高gpu的模型推理效率。
31.应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
32.附图用于更好地理解本方案,不构成对本公开的限定。其中:
33.图1为本公开实施例提供的第一种模型推理方法的流程示意图;
34.图2为本公开实施例提供的一种运算核图的结构示意图;
35.图3a为本公开实施例提供的第二种模型推理方法的流程示意图;
36.图3b为本公开实施例提供的第一种运算核图选择过程示意图;
37.图4为本公开实施例提供的第三种模型推理方法的流程示意图;
38.图5a为本公开实施例提供的第四种模型推理方法的流程示意图;
39.图5b为本公开实施例提供的第二种运算核图选择过程示意图;
40.图6a为本公开实施例提供的第五种模型推理方法的流程示意图;
41.图6b为本公开实施例提供的第六种模型推理方法的流程示意图;
42.图7为本公开实施例提供的第一种模型推理装置的结构示意图;
43.图8为本公开实施例提供的第二种模型推理装置的结构示意图;
44.图9为本公开实施例提供的第三种模型推理装置的结构示意图;
45.图10为本公开实施例提供的一种电子设备的示意性框图;
46.图11为本公开实施例提供的另一种电子设备的示意性框图。
具体实施方式
47.以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
48.首先,对本公开实施例的应用场景进行说明。
49.本公开实施例应用于cpu与gpu协同进行模型推理的应用场景,由于gpu对图像、视频、3d图形、音频等数据的处理速度较快,因此可以通过gpu高效率地完成图像识别、语音交互、图像检索等业务。在此过程中gpu可以基于神经网络模型,通过模型推理的过程完成上述业务,则cpu可以将神经网络模型中包含的运算核发送至gpu,使得gpu运行各个运算核完成模型推理的过程。
50.上述cpu与gpu可以运行于同一电子设备中,上述电子设备可以为计算机、手机、服务器等。安装有上述cpu与gpu的电子设备可以接收其他设备发送的数据处理请求,上述数据处理请求中包含需要处理的待处理数据,以请求cpu与gpu完成模型推理过程。
51.以下对本公开实施例提供的模型推理方法进行具体说明。
52.参见图1,为本公开实施例提供的第一种模型推理方法的流程示意图,应用于gpu,上述方法包括以下步骤s101-s103。
53.s101:接收cpu发送的目标神经网络模型对应的运算核图。
54.其中,上述运算核图中的各个节点分别对应目标神经网络模型中包含的各个运算核,每一条边的方向用于表示该边所连接的节点对应的运算核的运行顺序。
55.具体的,gpu接收到上述运算核图之后可以存储上述运算核图。不同运算核对应的数据处理环节不同,gpu基于不同的运算核可以实现不同的数据处理环节。例如,上述数据
处理环节可以包括矩阵相乘计算、数据激活处理、数据相除计算等。
56.另外,目标神经网络模型的结构相对固定,也就是通过目标神经网络模型进行数据处理过程中各个数据处理环节的执行顺序相对固定,则目标神经网络模型中各个运算核的运行顺序相对固定,能够预先构建目标神经网络模型的运算核图。
57.上述运算核图可以是通过cuda(compute unified device architecture,统一计算设备架构)的api(application programming interface,应用程序接口)构建的,则上述运算核图可以被称为cuda-graph(compute unified device architecture-graph,统一计算设备架构表)。
58.参见图2,为本公开实施例提供的一种运算核图的结构示意图。
59.图2所示的目标神经网络模型的运算核图中包含节点1-4共4个节点,分别对应运算核1-4,节点之间的箭头表示节点对应运算核的运行顺序。运算核1-4分别用于进行矩阵相乘计算、矩阵相加计算、矩阵数乘计算、卷积处理。图2所示的运算核图表示目标神经网络模型首先对所输入的数据进行矩阵相乘计算,再分别进行矩阵相加计算与矩阵数乘计算,再对矩阵相加计算的计算结果和矩阵数乘计算的计算结果进行卷积处理。
60.s102:在接收到上述cpu发送的待处理数据后,按照上述运算核图表示的运行顺序依次运行各个运算核,对上述待处理数据进行处理,完成所述目标神经网络模型的推理过程。
61.具体的,上述gpu接收到上述待处理数据之后,可以利用预先分配的存储空间,完成模型推理的过程。
62.其中,上述预先分配的存储空间的地址为上述目标神经网络模型对应的固定地址,预先分配的存储空间的大小为上述目标神经网络模型对应的预设大小。
63.上述预先分配的存储空间的大小可以为用户基于经验设定的,也可以不小于第三数据量、第四数据量以及最大所需存储空间的大小之和。
64.其中,上述第三数据量为上述目标神经网络模型的数据量,具体的,可以为上述目标模型的模型参数的数据量,上述第四数据量为基于各个运算核进行数据处理后得到的运算结果的数据量之和,上述最大所需存储空间为基于各个运算核进行数据处理的过程中所需的最大存储空间。
65.本公开的一个实施例中,可以预先基于运算核图对应的计算规模,通过人为估算或者预先编写的估算程序等方式,估算出上述运算核图中的各个运算核得到的运算结果的数据量,以及gpu基于各个运算核进行处理的过程中所需的临时存储空间的大小。
66.gpu在基于各个运算核完成数据处理后,会将处理结果存储于存储空间内,因此需要为各个运算核预留不同的存储空间用于存储处理结果,上述预先分配的存储空间需要能够容纳各个运算核的运算结果,也就是预先分配的存储空间的大小需要大于上述第二数据量。
67.另外,上述临时存储空间用于存储gpu基于运算核进行数据处理的过程中产生的计算中间值,对于每一运算核,在gpu基于该运算核完成数据处理过程后,该临时存储空间中存储的数据会被释放,因此gpu基于不同的运算核进行数据处理的过程中可以复用同一临时存储空间,上述临时存储空间需要能够容纳基于运算核进行数据处理的过程中产生的、数据量最大的计算中间值,满足上述要求的临时存储空间可以被称为最大所需存储空
间,上述预先分配的存储空间的大小需要大于最大所需存储空间的大小。
68.再者,上述预先分配的存储空间还需要能够存储目标神经网络模型。
69.上述预先分配的存储空间的大小大于等于第三数据量、第四数据量以及最大所需存储空间的大小之和能够使得gpu基于上述预先分配的存储空间能够正常地完成模型推理的过程。
70.s103:向上述cpu反馈模型推理结果。
71.由以上可见,本公开实施例提供的方案中gpu预先获得了cpu发送的目标神经网络模型对应的运算核图,上述运算核图中包含有目标神经网络模型中包含的各个运算核,并能表示目标神经网络模型中各个运算核的运行顺序。则在gpu接收到cpu发送的待处理数据后,可以调用上述运算核图,按照上述运算核图表示的运行顺序依次运行各个运算核,对上述待处理数据进行处理,完成模型推理过程。与现有技术中cpu将各个运算核依次发送至gpu的方式相比,本实施例中cpu与gpu之间通过发送一次运算核图,cpu便可以把各个运算核均发送至gpu。在后续接收到cpu发送的待处理数据后,gpu可以直接基于运算核图进行模型推理,cpu与gpu之间便不需要再交互运算核,本实施例中cpu与gpu之间进行交互的次数较少,从而可以降低cpu与gpu之间的交互对gpu模型推理的影响,进而可以提高gpu的模型推理效率。
72.参见图3a,为本公开实施例提供的第二种模型推理方法的流程示意图,具体的,可以通过以下步骤s101a实现步骤s101,通过步骤s102a-s102b实现上述步骤s102。
73.首先对运算核图的计算规模进行说明:
74.不同运算核图对应的计算规模不同,每一运算核图对应的计算规模表示该运算核图中包含的运算核能够处理的数据的数据量。
75.并且,gpu能够基于运算核处理的数据的数据量为固定数据量,上述数据量可以被称为运算核对应的计算规模。可以设置各个运算核支持mask(掩码)操作,则在运算核处理数据量小于自身计算规模的数据的情况下,可以将数据扩展至上述自身计算规模之后再进行数据处理,使得gpu能够基于运算核处理数据量小于等于自身计算规模的数据。
76.例如,若待处理数据为矩阵,运算核对应计算规模为50
×
50的矩阵,在gpu基于该运算核处理尺寸为30
×
30的矩阵的情况下,可以在该矩阵中添加元素,将该矩阵的尺寸扩展至50
×
50,再进行处理,得到处理结果之后去除所添加的元素的处理结果。
77.另外,上述运算核图中包含的各个运算核对应的计算规模可以相同也可以不同,但为了使得运算核图中包含的各个运算核能够统一地对数据进行处理,可以在构建运算核图时选择所对应的计算规模相同的运算核,则可以各个运算核的计算规模作为该运算核图对应的计算规模。
78.为了使得gpu能够基于上述运算核图正常地进行数据处理,可以基于上述目标模型的应用场景中历史数据的数据量设置上述运算核图对应的计算规模。
79.例如,可以设置运算核图对应的计算规模大于等于应用场景中各个历史数据的数据量的最大值,以使得gpu在理论上能够基于上述运算核图处理上述应用场景中的所有待处理数据。
80.或者可以将上述历史数据的数据量的最大值乘以第一预设比例,作为上述运算核图对应的计算规模。如,上述第一预设比例可以为70%、80%等,使得gpu基于上述运算核图
能够处理上述应用场景中包含的大部分待处理数据。
81.s101a:接收cpu发送的目标神经网络模型对应的多个运算核图。
82.具体的,不同的运算核图中记录的运算核均为目标模型中包含的运算核,不同运算核图的结构相同,区别仅为不同运算核图对应的计算规模不同。
83.本公开实施例中存在多个不同的运算核图,gpu可以将所接收到的多个运算核图均存储于存储空间中,以便后续直接调用所存储的运算核图进行模型推理。
84.另外,预先分配的存储空间可以为能够复用的存储空间,即无论cpu选择哪一个运算核图发送至gpu,gpu在基于所接收到的运算核图进行模型推理的过程中均可以使用该预先分配的存储空间。由于gpu在模型推理的过程中使用的运算核图对应的计算规模越大,在进行模型推理的过程中处理的数据的数据量越大,所需的存储空间越大,因此上述预先分配的存储空间若能够满足所对应的计算规模最大的运算核图的存储空间需求,便能够复用于其他运算核图。所以可以基于所对应的计算规模最大的运算核图确定预先分配的存储空间的大小,具体确定预先分配的存储空间的大小的方式可以参见前文步骤s102处的描述,在此不再赘述。
85.s102a:基于上述待处理数据的第一数据量,从各个运算核图中选择第一运算核图。
86.其中,上述第一运算核图为所对应的计算规模不小于上述第一数据量且最接近于上述第一数据量的运算核图。
87.另外,参见前文的描述,gpu基于运算核图可以对数据量小于等于该运算核图对应的计算规模的数据进行模型推理,在进行模型推理的过程中,gpu可以将待处理数据的数据量扩展至该运算核图对应的计算规模,再进行处理。因此运算核图对应的计算规模越大,基于该运算核图进行模型推理的过程中处理的数据的数据量越大,消耗的数据处理资源越大。
88.本公开实施例中预先构建了多个对应不同计算规模的运算核图,cpu预先将各个运算核图均发送至gpu,gpu便可以基于其中的任意一个运算核图完成模型推理过程。在对待处理数据进行处理之前,gpu可以从多个运算核图中选择所对应的计算规模大于等于且最接近于第一数据量的运算核图,使得gpu基于所选择的运算核图能够对待处理数据进行处理的过程中,需要处理的数据的数据量最小。
89.其中,各个运算核图对应的计算规模可以为任意值。具体的,可以基于目标模型的应用场景中各个历史数据的数据量的最大值设置各个运算核图所对应的计算规模。
90.本公开的一个实施例中,可以确定目标模型的应用场景中各个历史数据的数据量的最大值,以不同的第二预设比例与该最大值相乘,将得到的结果分别作为各个运算核图对应的计算规模。
91.例如,目标模型的应用场景中各个待处理数据的数据量的最大值为80m,上述第二预设比例分别为100%、80%、60%,则可以将各个运算核图对应的计算规模设置为80m、64m、48m。
92.另外,也可以基于目标模型的应用场景中各个历史数据的数据量的最大值设置各个运算核图对应的计算规模的最大值,再计算上述计算规模的最大值与运算核图数量之间的商值,作为各个运算核图对应的计算规模之间的差值,基于上述差值设置各个运算核图
对应的计算规模,使得各个运算核图对应的计算规模为等差数列。
93.例如,目标模型的应用场景中各个待处理数据的数据量的最大值为100m,可以将运算核图对应的计算规模的最大值设置为100m,若运算核图的数量为10,则上述商值为10m,可以将各个运算核图对应的计算规模分别设置为10m、20m、30m、40m、50m、60m、70m、80m、90m、100m。
94.s102b:按照上述第一运算核图表示的运行顺序依次运行各个运算核,对上述待处理数据进行处理。
95.具体的,步骤s102b与前述步骤s102相似,在此不再赘述。
96.由以上可见,本公开实施例中预先构建了多个运算核图,在进行模型推理的过程中,gpu选择所对应的计算规模大于等于且最接近于第一数据量的运算核图进行模型推理,使得gpu基于所选择的运算核图能够对待处理数据进行处理的情况下,处理过程中所处理的数据的数据量最小,从而能够节省gpu的数据处理资源。
97.参见图3b,为本公开实施例提供的第一种运算核图选择过程示意图。
98.其中包含输入模块与运算核图1、运算核图2-运算核图n共n个运算核图,输入模块与各个运算核图之间的箭头表示,gpu可以基于输入的待处理数据实际的第一数据量从运算核图1、运算核图2-运算核图n中选择一个,采用所选择的运算核图进行模型推理。各个运算核图与预先分配的存储空间的箭头表示,gpu基于各个运算核图进行模型推理的过程中共用同一预先分配的存储空间。
99.参见图4,为本公开实施例提供的第三种模型推理方法的流程示意图,与前述图1所示的实施例相比,上述步骤s102可以通过以下步骤s102c实现,上述步骤s103可以通过以下步骤s103a实现。
100.s102c:在接收到上述cpu发送的多个待处理数据后,将多个待处理数据合并为合并数据,调用上述运算核图,按照上述运算核图表示的运行顺序依次运行各个运算核,对上述合并数据分别进行处理,完成上述目标神经网络模型的推理过程。
101.其中,上述多个待处理数据均为待通过上述目标神经网络模型进行处理的数据,因此基于目标神经网络模型的同一个运算核图便可以实现对多个待处理数据的处理。
102.本公开的一个实施例中,在cpu接收到多个数据处理请求的情况下,若存在多个请求通过目标神经网络模型进行数据处理的数据处理请求,则可以将上述数据处理请求中包含的待处理数据共同发送给gpu,使得gpu接收到上述多个待处理数据。
103.另外,gpu在接收到多个待处理数据后,可以将各个待处理数据统一扩展至待处理数据的最大数据量,再将各个待处理数据合并为一条合并数据。在对合并数据进行处理时,gpu可以仅调用一次运算核图,基于该运算核图对合并数据进行处理,相当于完成了多个待处理数据的处理。
104.具体的,gpu对合并进行处理的过程与前文步骤s102所示的内容相似,gpu对待处理数据进行扩展的方式与前文步骤s102a所示的内容相似,本实施例对此不再赘述。
105.s103a:从上述合并数据的模型推理结果中提取各个待处理数据对应的模型推理结果,分别向上述cpu反馈各个待处理数据对应的模型推理结果。
106.具体的,可以按照合并数据中各个待处理数据的排列顺序,从合并数据的模型推理结果中提取出各个待处理数据对应的处理结果,再从中去除扩展得到的数据对应的处理
结果,从而得到各个待处理数据对应的模型推理结果。
107.由以上可见,若存在待通过上述目标神经网络模型处理的多个待处理数据,gpu可以将各个待处理数据合并为一条合并数据,再调用运算核图对合并数据进行处理,相当于对各个待处理数据进行了统一的处理。在此过程中gpu仅需要调用一次运算核图便可以完成多个待处理数据的处理过程,与每对一个待处理数据进行处理便需要调用一次运算核图相比,本实施例中调用运算核图的次数较少,可以进一步提高gpu的模型推理效率。
108.参见图5a,为本公开实施例提供的第四种模型推理方法的流程示意图,与前述图4所示的实施例相比,上述步骤s101可以通过以下步骤s101b实现,上述步骤s102c可以通过以下步骤s102c1-s102c2。
109.s101b:接收cpu发送的目标神经网络模型对应的多个运算核图。
110.其中,不同运算核图对应的计算规模不同,每一运算核图对应的计算规模表示该运算核图中包含的运算核能够处理的数据量。
111.具体的,上述步骤s101b与前述步骤s101a相似,本实施例对此不再赘述。
112.s102c1:基于第二数据量,从各个运算核图中选择第二运算核图。
113.其中,上述第二数据量为:各个待处理数据的最大数据量与待处理数据数量的乘积,上述第二运算核图为:所对应的计算规模大于等于且最接近于上述第二数据量的运算核图。
114.具体的,待处理数据的数据量均小于等于待处理数据的最大数据量,将各个待处理数据合并得到合并数据后,合并数据的数据量不会大于最大数据量与待处理数据的数量的乘积。所选择的第二运算核图对应的计算规模大于等于第二数据量,从而使得gpu基于所选择的第二运算核图能够对合并数据进行处理,并且由于所选择的第二运算核图对应的计算规模最接近于上述第二数据量,使得gpu基于所选择的第二运算核图进行对合并数据进行处理,在总体上消耗的计算资源最少。
115.s102c2:调用上述第二运算核图,按照上述第二运算核图表示的运行顺序依次运行各个运算核,对上述合并数据进行处理。
116.具体的,对合并数据进行处理的方式与前述步骤s102描述的内容相似,本实施例对此不再赘述。
117.由以上可见,本公开实施例中预先构建了多个运算核图,在进行模型推理的过程中,gpu选择所对应的计算规模大于等于且最接近于第二数据量的第二运算核图,基于第二运算核图,gpu在能够对合并数据进行处理的情况下,处理过程中所处理的数据的数据量最小,从而能够节省gpu的数据处理资源。
118.参见图5b,为本公开实施例提供的第二种运算核图选择过程示意图。
119.与前述图3b所示的实施例相比,图5b中还存在待处理数据1、待处理数据2-待处理数据m共m个待处理数据,上述待处理数据均是待通过目标神经网络模型进行处理的数据,各个待处理数据与输入之间均存在箭头,表示gpu可以对多个待处理数据进行统一处理。
120.参见图6a,为本公开实施例提供的第五种模型推理方法的流程示意图,应用于cpu,上述方法包括以下步骤s601-s603。
121.s601:将预先构建的运算核图发送至gpu。
122.其中,上述运算核图中的各个节点分别对应目标神经网络模型中包含的各个运算
核,每一条边的方向用于表示该边所连接的节点对应的运算核的运行顺序。
123.s602:在存在目标处理请求的情况下,将待处理数据发送至上述gpu,以使得上述gpu按照上述运算核图表示的运行顺序依次运行各个运算核,对上述待处理数据进行处理,完成上述目标神经网络模型的推理过程,并向上述cpu反馈模型推理结果。
124.其中,上述目标处理需求为使用上述目标神经网络模型对待处理数据进行处理的请求。
125.s603:接收上述gpu反馈的模型推理结果。
126.本公开的一个实施例中,上述步骤s601-s603与前述步骤s101-s103相似,区别仅为执行主体不同,在此不再赘述。
127.由以上可见,本公开实施例提供的方案中cpu将运算核图发送至gpu,gpu便可以按照上述运算核图依次运行各个运算核,对待处理数据进行处理,从而完成目标神经网络模型的模型推理过程。此过程中cpu仅需要向gpu发送一次运算核图,便可以使得gpu能够在后续基于所接收的运算核图完成模型推理过程。与现有技术中在进行模型推理的过程中cpu多次向gpu发送的各个运算核的方式相比,本实施例中cpu与gpu之间进行交互的次数较少,从而可以降低cpu与gpu之间的交互对gpu模型推理的影响,进而可以提高gpu的模型推理效率。
128.本公开实施例可以通过以下步骤a实现上述步骤s601。
129.步骤a:将预先构建的各个运算核图发送至gpu。
130.其中,不同运算核图对应的计算规模不同,每一运算核图对应的计算规模表示:该运算核图中包含的运算核能够处理的数据量。
131.本公开的一个实施例中,gpu接收到cpu发送的多个运算核图之后,可以按照前述步骤s102a-s102b实现对待处理数据的处理,在此不再赘述。
132.由以上可见,本公开实施例中预先构建了多个运算核图,在进行模型推理的过程中,gpu可以基于实际需要处理的待处理数据的数据量,从各个运算核图中计算规模与上述数据量相匹配的运算核图进行数据处理,从而能够节省gpu的数据处理资源。
133.参见图6b,为本公开实施例提供的第六种模型推理方法的流程示意图,与前述图6a所示的实施例相比,上述步骤s601之后还包括以下步骤s604-s605。
134.s604:在确定预先构建的运算核图对应的计算规模小于上述待处理数据的数据量的情况下,向上述gpu发送待处理数据,并按照预设顺序将各个目标运算核发送至gpu,以使得上述gpu按照接收到各个目标运算核的顺序依次运行各个目标运算核,对上述待处理数据进行处理,完成上述目标神经网络模型的推理过程,并向上述cpu反馈模型推理结果。
135.其中,上述运算核图对应的计算规模表示该运算核图中包含的运算核能够处理的数据量,上述预设顺序为上述目标神经网络模型规定的、各个目标运算核的执行顺序,上述目标运算核能够处理的数据的数据量不小于上述待处理数据的数据量。
136.具体的,若gpu接收到待处理数据后判定运算核图对应的计算规模大于等于上述待处理数据的数据量,则gpu基于上述运算核图能够对待处理数据进行处理,否则,gpu不能够基于上述运算核图对待处理数据进行处理,则gpu可以向cpu发送请求,表示自身无法基于运算核图对待处理数据进行处理,已请求cpu协助以其他方式完成数据处理的过程。
137.cpu接收到上述请求便可以确定预先构建的运算核图对应的计算规模小于上述待
处理数据的数据量,则可以执行步骤s604-s605。
138.本公开的一个实施例中,目标运算核分别对应目标神经网络模型中不同的数据处理环节,gpu依次运行各个目标运算核完成目标神经网络模型中的各个数据处理环节,便可以实现目标神经网络模型完成的模型推理过程。
139.cpu向gpu发送目标运算核的预设顺序与运算核图表示的各个运算核的运行顺序相同。目标运算核与前述运算核图中包含的运算核对应的数据处理环节相同,区别仅为所对应的能够处理的数据的数据量不同,基于目标运算核能够处理的数据的数据量较大。
140.具体的,每当cpu向gpu发送一个目标运算核,gpu便可以运行该目标运算核完成数据处理,cpu按照预设顺序向gpu发送各个目标运算核,gpu便可以按照接收到目标运算核的顺序依次运行各个目标运算核,完成目标神经网络模型的推理过程。
141.s605:接收上述gpu反馈的模型推理结果。
142.由以上可见,本公开实施例构建的运算核图对应的计算规模无需过大,在运算核图对应的计算规模小于待处理数据的数据量,导致gpu无法基于运算核图完成目标神经网络模型的模型推理的情况下,本实施例不限定仅能基于运算核图实现模型推理,而是可以通过cpu依次向gpu发送各个运算核的方式保证模型推理过程能够正常实现。
143.与上述应用于gpu的模型推理方法相对应的,本公开实施例还提供了一种模型推理装置。
144.参见图7,为本公开实施例提供的第一种模型推理装置的结构示意图,应用于gpu,上述装置包括以下模块701-703。
145.运算核图接收模块701,用于接收cpu发送的目标神经网络模型对应的运算核图,其中,所述运算核图中的各个节点分别对应目标神经网络模型中包含的各个运算核,每一条边的方向用于表示该边所连接的节点对应的运算核的运行顺序;
146.模型推理模块702,用于在接收到所述cpu发送的待处理数据后,按照所述运算核图表示的运行顺序依次运行各个运算核,对所述待处理数据进行处理,完成所述目标神经网络模型的推理过程;
147.结果反馈模块703,用于向所述cpu反馈模型推理结果。
148.由以上可见,本公开实施例提供的方案中gpu预先获得了cpu发送的目标神经网络模型对应的运算核图,上述运算核图中包含有目标神经网络模型中包含的各个运算核,并能表示目标神经网络模型中各个运算核的运行顺序。则在gpu接收到cpu发送的待处理数据后,可以调用上述运算核图,按照上述运算核图表示的运行顺序依次运行各个运算核,对上述待处理数据进行处理,完成模型推理过程。与现有技术中cpu将各个运算核依次发送至gpu的方式相比,本实施例中cpu与gpu之间通过发送一次运算核图,cpu便可以把各个运算核均发送至gpu。在后续接收到cpu发送的待处理数据后,gpu可以直接基于运算核图进行模型推理,cpu与gpu之间便不需要再交互运算核,本实施例中cpu与gpu之间进行交互的次数较少,从而可以降低cpu与gpu之间的交互对gpu模型推理的影响,进而可以提高gpu的模型推理效率。
149.本公开的一个实施例中,上述运算核图接收模块701,具体用于:
150.接收cpu发送的目标神经网络模型对应的多个运算核图,其中,不同运算核图对应的计算规模不同,每一运算核图对应的计算规模表示该运算核图中包含的运算核能够处理
的数据量;
151.所述模型推理模块702,具体用于:
152.在接收到所述cpu发送的待处理数据后,基于所述待处理数据的第一数据量,从各个运算核图中选择第一运算核图,其中,所述第一运算核图为所对应的计算规模不小于上述第一数据量且最接近于所述第一数据量的运算核图;
153.按照所述第一运算核图表示的运行顺序依次运行各个运算核,对所述待处理数据进行处理,完成所述目标神经网络模型的推理过程。
154.由以上可见,本公开实施例中预先构建了多个运算核图,在进行模型推理的过程中,gpu选择所对应的计算规模大于等于且最接近于第一数据量的运算核图进行模型推理,使得gpu基于所选择的运算核图能够对待处理数据进行处理的情况下,处理过程中所处理的数据的数据量最小,从而能够节省gpu的数据处理资源。
155.参见图8,为本公开实施例提供的第二种模型推理装置的结构示意图,与前述图7所示的实施例相比,上述模型推理模块702,包括:
156.数据处理子模块702a,用于在接收到所述cpu发送的多个待处理数据后,将多个待处理数据合并为合并数据,调用所述运算核图,按照所述运算核图表示的运行顺序依次运行各个运算核,对所述合并数据进行处理,完成所述目标神经网络模型的推理过程,其中,所述多个待处理数据均为待通过所述目标神经网络模型进行处理的数据;
157.所述结果反馈模块703,包括:
158.结果反馈子模块703a,用于从所述合并数据的模型推理结果中提取各个待处理数据对应的模型推理结果,分别向所述cpu反馈各个待处理数据对应的模型推理结果。
159.由以上可见,若存在待通过上述目标神经网络模型处理的多个待处理数据,gpu可以将各个待处理数据合并为一条合并数据,再调用运算核图对合并数据进行处理,相当于对各个待处理数据进行了统一的处理。在此过程中gpu仅需要调用一次运算核图便可以完成多个待处理数据的处理过程,与每对一个待处理数据进行处理便需要调用一次运算核图相比,本实施例中调用运算核图的次数较少,可以进一步提高gpu的模型推理效率。
160.本公开的一个实施例中,其中,所述运算核图接收模块701,具体用于:
161.接收cpu发送的目标神经网络模型对应的多个运算核图,其中,不同运算核图对应的计算规模不同,每一运算核图对应的计算规模表示该运算核图中包含的运算核能够处理的数据量;
162.所述数据处理子模块702a,具体用于:
163.在接收到所述cpu发送的多个待处理数据后,将多个待处理数据合并为合并数据,基于第二数据量,从各个运算核图中选择第二运算核图,其中,所述第二数据量为:各个待处理数据的最大数据量与待处理数据数量的乘积,所述第二运算核图为:所对应的计算规模大于等于且最接近于所述第二数据量的运算核图;
164.调用所述第二运算核图,按照所述第二运算核图表示的运行顺序依次运行各个运算核,对所述合并数据进行处理,完成所述目标神经网络模型的推理过程。
165.由以上可见,本公开实施例中预先构建了多个运算核图,在进行模型推理的过程中,gpu选择所对应的计算规模大于等于且最接近于第二数据量的第二运算核图,基于第二运算核图,gpu在能够对合并数据进行处理的情况下,处理过程中所处理的数据的数据量最
小,从而能够节省gpu的数据处理资源。
166.本公开的一个实施例中,其中,所述gpu完成所述目标神经网络模型推理的过程中所需的、预先分配的存储空间的大小,不小于第三数据量、第四数据量以及最大所需存储空间的大小之和;
167.其中,所述第三数据量为所述目标神经网络模型的数据量,所述第四数据量为基于各个运算核进行数据处理后得到的运算结果的数据量之和,所述最大所需存储空间为基于各个运算核进行数据处理的过程中所需的最大存储空间。
168.由以上可见,上述预先分配的存储空间的大小大于等于第三数据量、第四数据量以及最大所需存储空间的大小之和能够使得gpu基于上述预先分配的存储空间能够正常地完成模型推理的过程。
169.与上述应用于cpu的模型推理方法相对应,本公开实施例还提供了一种应用于cpu的模型推理装置。
170.参见图9,为本公开实施例提供的第三种模型推理装置的结构示意图,上述装置包括以下模块901-903。
171.运算核图发送模块901,用于将预先构建的运算核图发送至图形处理器gpu,其中,所述运算核图中的各个节点分别对应目标模型中包含的各个运算核,每一条边的方向用于表示该边所连接的节点对应的运算核的运行顺序;
172.数据发送模块902,用于在存在目标处理请求的情况下,将待处理数据发送至所述gpu,以使得所述gpu按照所述运算核图表示的运行顺序依次运行各个运算核,基于显存中的预设存储空间,对所述待处理数据进行处理,完成所述目标神经网络模型的推理过程,并向所述cpu反馈模型推理结果,其中,所述目标处理需求为使用所述目标神经网络模型对待处理数据进行处理的请求;
173.第一结果接收模块903,用于接收所述gpu反馈的模型推理结果。
174.由以上可见,本公开实施例提供的方案中cpu将运算核图发送至gpu,gpu便可以按照上述运算核图依次运行各个运算核,对待处理数据进行处理,从而完成目标神经网络模型的模型推理过程。此过程中cpu仅需要向gpu发送一次运算核图,便可以使得gpu能够在后续基于所接收的运算核图完成模型推理过程。与现有技术中在进行模型推理的过程中cpu多次向gpu发送的各个运算核的方式相比,本实施例中cpu与gpu之间进行交互的次数较少,从而可以降低cpu与gpu之间的交互对gpu模型推理的影响,进而可以提高gpu的模型推理效率。
175.本公开的一个实施例中,所述运算核图发送模块901,具体用于:
176.将预先构建的各个运算核图发送至gpu,其中,不同运算核图对应的计算规模不同,每一运算核图对应的计算规模表示:该运算核图中包含的运算核能够处理的数据的数据量。
177.由以上可见,本公开实施例中预先构建了多个运算核图,在进行模型推理的过程中,gpu可以基于实际需要处理的待处理数据的数据量,从各个运算核图中计算规模与上述数据量相匹配的运算核图进行数据处理,从而能够节省gpu的数据处理资源。
178.本公开的一个实施例中,上述装置还包括:
179.运算核发送模块,用于在确定预先构建的运算核图对应的计算规模小于所述待处
理数据的数据量的情况下,向所述gpu发送待处理数据,并按照预设顺序将各个目标运算核发送至gpu,以使得所述gpu按照接收到各个目标运算核的顺序依次运行各个目标运算核,对所述待处理数据进行处理,完成所述目标神经网络模型的推理过程,并向所述cpu反馈模型推理结果;
180.其中,所述运算核图对应的计算规模表示该运算核图中包含的运算核能够处理的数据量,所述预设顺序为所述目标神经网络模型规定的、各个目标运算核的执行顺序,所述目标运算核能够处理的数据量不小于所述待处理数据的数据量;
181.第二结果接收模块,用于接收所述gpu反馈的模型推理结果。
182.由以上可见,本公开实施例构建的运算核图对应的计算规模无需过大,在运算核图对应的计算规模小于待处理数据的数据量,导致gpu无法基于运算核图完成目标神经网络模型的模型推理的情况下,本实施例不限定仅能基于运算核图实现模型推理,而是可以通过cpu依次向gpu发送各个运算核的方式保证模型推理过程能够正常实现。
183.本公开的技术方案中,所涉及的用户个人信息的收集、存储、使用、加工、传输、提供和公开等处理,均符合相关法律法规的规定,且不违背公序良俗。
184.根据本公开的实施例,本公开还提供了一种可读存储介质和一种计算机程序产品。
185.本公开实施例提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行应用于cpu的模型推理方法与应用于gpu的模型推理方法。
186.本公开实施例提供了一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现应用于cpu的模型推理方法与应用于gpu的模型推理方法。
187.图10示出了可以用来实施本公开的实施例的示例电子设备1000的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
188.如图10所示,设备1000包括gpu1001,其可以根据存储在只读存储器(rom)1002中的计算机程序或者从存储单元1008加载到随机访问存储器(ram)1003中的计算机程序,来执行各种适当的动作和处理。在ram 1003中,还可存储设备1000操作所需的各种程序和数据。gpu1001、rom 1002以及ram 1003通过总线1004彼此相连。输入/输出(i/o)接口1005也连接至总线1004。
189.设备1000中的多个部件连接至i/o接口1005,包括:输入单元1006,例如键盘、鼠标等;输出单元1007,例如各种类型的显示器、扬声器等;存储单元1008,例如磁盘、光盘等;以及通信单元1009,例如网卡、调制解调器、无线通信收发机等。通信单元1009允许设备1000通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
190.gpu1001可以是各种具有处理和计算能力的通用和/或专用处理组件。gpu1001执行上文所描述的各个方法和处理,例如模型推理方法。例如,在一些实施例中,语音翻译方法、模型训练方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储
单元1008。在一些实施例中,计算机程序的部分或者全部可以经由rom 1002和/或通信单元1009而被载入和/或安装到设备1000上。当计算机程序加载到ram 1003并由gpu1001执行时,可以执行上文描述的模型推理方法的一个或多个步骤。备选地,在其他实施例中,gpu1001可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行模型推理方法。
191.图11示出了可以用来实施本公开的另一种实施例的示例电子设备1100的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
192.如图11所示,设备1100包括cpu1101,其可以根据存储在只读存储器(rom)1102中的计算机程序或者从存储单元1108加载到随机访问存储器(ram)1103中的计算机程序,来执行各种适当的动作和处理。在ram 1103中,还可存储设备1100操作所需的各种程序和数据。cpu1101、rom 1102以及ram 1103通过总线1104彼此相连。输入/输出(i/o)接口1105也连接至总线1104。
193.设备1100中的多个部件连接至i/o接口1105,包括:输入单元1106,例如键盘、鼠标等;输出单元1107,例如各种类型的显示器、扬声器等;存储单元1108,例如磁盘、光盘等;以及通信单元1109,例如网卡、调制解调器、无线通信收发机等。通信单元1109允许设备1100通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
194.cpu1101可以是各种具有处理和计算能力的通用和/或专用处理组件。cpu1101执行上文所描述的各个方法和处理,例如模型推理方法。例如,在一些实施例中,语音翻译方法、模型训练方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元1108。在一些实施例中,计算机程序的部分或者全部可以经由rom 1102和/或通信单元1109而被载入和/或安装到设备1100上。当计算机程序加载到ram 1103并由cpu1101执行时,可以执行上文描述的模型推理方法的一个或多个步骤。备选地,在其他实施例中,cpu1101可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行模型推理方法。
195.本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(fpga)、专用集成电路(asic)、专用标准产品(assp)、芯片上系统的系统(soc)、复杂可编程逻辑设备(cpld)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
196.用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
197.在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或快闪存储器)、光纤、便捷式紧凑盘只读存储器(cd-rom)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
198.为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,crt(阴极射线管)或者lcd(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
199.可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(lan)、广域网(wan)和互联网。
200.计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,也可以为分布式系统的服务器,或者是结合了区块链的服务器。
201.应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
202.上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。
再多了解一些

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

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

相关文献