模型推理性能的优化方法、装置及相关产品与流程

文档序号:31479117发布日期:2022-09-10 01:18阅读:54来源:国知局
模型推理性能的优化方法、装置及相关产品与流程

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.图1为本技术实施例提供的模型推理性能的优化方法的一种网络架构图;
26.图2为本技术实施例一提供的模型推理性能的优化方法的流程图;
27.图3为本技术实施例二提供的模型推理性能的优化方法的流程图;
28.图4为本技术实施例三提供的模型推理性能的优化方法的流程图;
29.图5为本技术实施例四提供的模型推理性能的优化方法流程图;
30.图6为本技术实施例五提供的模型推理性能的优化方法的流程图;
31.图7为本技术实施例六提供的模型推理性能的优化方法的流程图;
32.图8为本技术实施例七提供的模型推理性能的优化方法的流程图;
33.图9a为本技术实施例八提供的模型推理性能的优化方法中目标模型的一部分的结构示意图;
34.图9b为本技术实施例八提供的模型推理性能的优化方法中目标模型的一部分中第一分支的结构示意图;
35.图9c为本技术实施例八提供的模型推理性能的优化方法中目标模型的一部分中第二分支的结构示意图;
36.图9d为本技术实施例八提供的模型推理性能的优化方法中目标模型的一部分中第三分支的结构示意图;
37.图9e为本技术实施例八提供的模型推理性能的优化方法中目标模型的一部分对应的最终优化的计算图;
38.图10为本技术实施例十提供的模型推理性能的优化装置的结构示意图;
39.图11为本技术实施例十一提供的电子设备结构示意图。
40.通过上述附图,已示出本技术明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本技术构思的范围,而是通过参考特定实施例为本领域技术人员说明本技术的概念。
具体实施方式
41.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本技术相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本技术的一些方面相一致的装置和方法的例子。
42.为了清楚理解本技术的技术方案,首先对现有技术的方案进行详细介绍。
43.在采用深度学习模型进行数据处理时,与加速卡配套的软件栈中具有推理加速引擎。推理加速引擎用于接收人工智能框架导出的模型文件,将其进行优化,可以对多种加速卡生成对应的主机端和设备端二进制代码。
44.现目前,推理加速引擎的运行过程主要分为三部分:前端负责支持不同语言,将不同语言所写的程序文件解析为统一的中间表示;中间部分负责对中间表示进行硬件无关的优化;后端部分负责加入硬件信息,并对优化之后的中间表示进行硬件相关的优化,然后生成二进制代码。
45.现目前,推理加速引擎对模型文件进行优化时,并未进行充分优化,在推理加速引擎自动优化后的计算图中,所有的算子调用过程全部是单算子,每次调用算子只进行一次计算,需要将输入数据从ddr读取到片上存储空间,利用片上计算资源进行计算,然后在将输出数据存储到ddr上对应的位置。这使得模型推理时,片上内存空间进行读写数据时需要多次与ddr通信读写数据,所以导致数据读写时间较长,进而导致模型推理过程的时间较长。
46.所以在面对现有技术的技术问题时,发明人通过创造性的研究后发现,要想减少片上内存空间进行读写数据的时间,进而减少模型推理过程的时间,就需要减少算子调用
的次数,避免模型推理过程中的算子调用过程全部是单算子。因此,发明人提出本技术的方案:从预设的人工智能框架获取目标模型的初始模型文件,所述初始模型文件中具有目标模型对应的初始计算图;采用预设的推理加速引擎对所述初始模型文件进行优化处理,以获得自动优化后的计算图;可以对所述自动优化后的计算图进行解析,确定满足算子融合条件的至少一个子计算图;所述子计算图中的算子为目标算子;针对至少一个子计算图,对同一子计算图中的目标算子进行算子融合处理,以获得至少一个融合算子;基于至少一个融合算子对目标模型的推理性能进行优化。由于将至少一个子计算图中的目标算子进行算子融合处理,获得至少一个融合算子,同一子计算图中的目标算子满足算子融合条件,因此,算子融合处理至少将两个目标算子融合为一个融合算子,进而,基于至少一个融合算子对目标模型的推理性能进行优化,在优化前需要调用同一子计算图中的各目标算子,而在优化后只需要调用子计算图对应的融合算子,减少了算子调用次数,进而减少了每次调用算子就从片上内存空间进行读数据,并在算子计算完后,又将处理完的数据写入到片上内存空间,即有效减少了对片上内存空间中数据的读写次数,所以能够有效减少片上内存空间进行读写数据的时间,进而减少模型推理过程的时间。
47.所以发明人基于上述的创造性发现,提出了本发明实施例的技术方案。下面以具体地实施例对本发明的技术方案以及本技术的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本发明的实施例进行描述。
48.图1为本技术实施例提供的模型推理性能的优化方法的一种网络架构图,如图1所示,本技术实施例提供的一种应用场景对应的网络架构图中包括:加速卡11和软件栈12。软件栈12为加速卡11配套的软件栈,软件栈12中配置有推理加速引擎51和人工智能框架52,人工智能框架52中存储有目标模型的初始模型文件。
49.加速卡11可以为dlp加速卡,示例性的,可以采用dlparch02架构或者dlparch03架构。在图1中为采用dlparch02架构的dlp加速卡。如图1所示,包括双倍速率同步动态随机存取存储器ddr 21以及至少一个集群22。加速卡11中的多个集群共享ddr,各集群均可以与ddr进行通信。其中,ddr为双倍速率同步动态随机存取存储器,英文名double data rate synchronous dynamic random-access memory,简称ddr sdram或ddr。
50.集群22包括同步动态随机存取存储器sram 31以及至少一个处理器核32。各集群内的多个处理器核共享一个sram。各集群的sram之间可以互相通信。集群内的各处理器核之间无法直接通信。其中,sram为静态随机存取存储器,英文名static random-access memory,简称sram。
51.处理器核32包括计算单元41,寄存器42,非易失性随机存取存储器nram 43,以及窗口随机存取存储器wram 44。寄存器42,非易失性随机存取存储器nram 43和窗口随机存取存储器wram 44分别用于存放标量、神经元和权值。其中,wram为窗口随机存取存储器,英文名window random access memory,简称wram。计算单元41可以为neuron function unit,简称nfu。
52.软件栈12中包括推理加速引擎51,推理加速引擎51可以接收目标模型的初始模型文件,目标模型的初始模型文件可以从预设的人工智能框架52获取,所述初始模型文件中具有目标模型对应的初始计算图。推理加速引擎51可以对初始模型文件进行优化处理,以
获得自动优化后的计算图;对所述自动优化后的计算图进行解析,确定满足算子融合条件的至少一个子计算图;所述子计算图中的算子为目标算子;针对至少一个子计算图,对同一子计算图中的目标算子进行算子融合处理,以获得至少一个融合算子;基于至少一个融合算子对目标模型的推理性能进行优化。并可以在目标模型的推理性能优化后,生成二进制代码部署到加速卡11上。以使加速卡11能够根据二进制代码调用其处理器核实现模型推理。
53.实施例一
54.图2为本技术实施例一提供的模型推理性能的优化方法的流程图,如图2所示,本技术的执行主体为模型推理性能的优化装置,该装置位于电子设备中。本实施例提供的模型推理性能的优化方法包括步骤201至步骤205。
55.步骤201,从预设的人工智能框架获取目标模型的初始模型文件,初始模型文件中具有目标模型对应的初始计算图。
56.本实施例中,可以将执行目标模型的程序文件输入预设的人工智能框架,预设的人工智能框架可以根据目标模型,生成目标模型的对应的初始计算图,进而获得目标模型的初始模型文件。
57.其中,人工智能框架可以是tensorflow、pytorch、caffe、onnx等。人工智能框架中存储有目标模型的初始模型文件。
58.目标模型可以是yolo系列的网络模型,如可以为yolov3网络、yolov4网络、yolov5网络,或者对yolov5网络的特征提取网络和/或特征加强网络进行改进的网络等。yolov3网络,是由redmon等人于2018年提出的一种算法。yolov4网络,是由bochkovskiy等人于2020年提出的一种算法。yolov5网络,是由jocher等人于2021年在github上提出的一种算法,根据网络深度不同,包括yolov5s,yolov5m,yolov5l和yolov5x。
59.本实施例中,在初始模型文件中具有目标模型对应的初始计算图。初始计算图中包括节点和有向边,节点之间通过有向边连接。
60.在初始计算图中,每一个节点为一个算子,算子对应数学运算函数,示例性地,算子可以对应加、减、乘、除、平方、矩阵转秩等。也就是说,算子对应的数学运算函数就是节点的输入数据与输出数据之间的函数关系。
61.有向边对应各节点之间的数据传递关系,示出了目标模型在执行过程中的数据流向。示例性地,从节点a指向节点b的有向边,表示节点a的输出数据传递给节点b,以作为节点b的输入数据。
62.步骤202,采用预设的推理加速引擎对初始模型文件进行优化处理,以获得自动优化后的计算图。
63.本实施例中,推理加速引擎可以通过mlir图编译技术读入初始模型文件中的初始计算图,将初始模型文件中的初始计算图转换为中间表示;并可以对中间表示的初始计算图进行形状推理、常量传播等硬件无关的优化,以及软件流水等硬件有关的优化。自动优化后的计算图为推理加速引擎对初始模型文件中的初始计算图优化后的计算图。其中,中间表示为多级中间表示的简称,英文名为multi-level intermediate representation,简称mlir。
64.其中,形状推理优化是指消除获取张量形状的算子和/或重新设定张量形状的算
子。示例性地,获取张量形状的算子,可以如shape算子;重新设定张量形状的算子,可以如reshape算子。
65.推理加速引擎可以根据用户想要使用目标模型进行推理的具体输入规模或规模范围,根据算子对应的数学运算函数,逐层计算初始计算图中每一个算子的输入规模,而不进行具体计算,以消除初始计算图中获取张量形状的算子和/或重新设定张量形状的算子,以对初始计算图进行优化。而对于需要进行计算的算子,可以通过常量传播方式对算子内部的计算逻辑进行优化。
66.常量传播优化是指在编译过程中将可以计算出结果的变量简化为常量,并将该变量简化后的常量传播到所有用到该变量的地方进行进一步判断。
67.在进行常量传播优化时,初始计算图中的算子需要支持所有预设输入规模,以及该算子计划支持的所有底层硬件,因此,初始计算图的算子要针对各预设输入规模和底层硬件的组合进行不同的优化,这使得初始计算图中的算子在不同的预设输入规模时对应不同的数学运算函数,造成代码量膨胀。而在特定的输入模型、或是输入模型的特定层使用算子的过程中,只需要该算子在计算库中的某一条或某几条代码路径。推理加速引擎可以将形状推理得到的各算子的输入规模传入算子计算逻辑,得到该输入规模下需要的计算路径,消除除了该输入规模对应的代码之外的冗余代码。
68.软件流水优化是指算子的计算流程优化。
69.在算子调用过程时,由于片上存储空间的容量有限,且用于存储目标模型的标量、神经元和权值,因此,调用算子时的输入数据和输出数据都存储在加速卡的内存上,示例性地,存储在加速卡的ddr上。因此,调用算子的计算流程为:将输入数据从加速卡内存上读取到片上存储空间;利用片上计算资源进行计算;将输出数据存储到加速卡内存上对应的位置。调用算子的计算流程包括输入输出(input和output,简称io)和计算两部分,且这两部分需要的硬件资源是不同的,io需要使用io资源,计算需要使用计算资源。
70.在硬件架构支持乱序执行时,可以通过对指令顺序的调整,将io和计算两部分并行,节约运行时间,以实现算子计算流程优化。示例性地,对于算子conv和relu,可以在进行conv计算的同时,读取relu所需要的输入数据;在运行relu计算时的同时,可以将conv的计算结果进行存储。软件流水优化可以通过指令级的并行对计算图进行优化,以保证片内计算资源和io资源均被使用。
71.本实施例中,可以采用预设的推理加速引擎对初始模型文件进行形状推理优化、常量传播优化和软件流水优化中的任意一项或多项优化,以获得自动优化后的计算图。
72.步骤203,对自动优化后的计算图进行解析,确定满足算子融合条件的至少一个子计算图;子计算图中的算子为目标算子。
73.本实施例中,自动优化后的计算图中包括节点和有向边,每个节点为一个算子。子计算图中包括至少两个目标算子。可以根据自动优化后的计算图中各算子之间的网络结构、输入数据特征和输出数据特征中的至少一项来确定满足算子融合条件的至少一个子计算图。
74.其中,网络结构是指计算图中各算子之间的连接关系。输入数据特征包括输入数据形状和规模。输出数据特征包括输出数据形状和规模。
75.其中,数据形状是指输入数据的维度、各维度的长度、以及各维度的连接顺序,示
例性地,输入数据为48
×
27
×
96
×
96的张量时,输入数据的维度为4,第一、第二、第三和第四维度的长度分别为48、27、96和96,4个维度的连接顺序为第一维度、第二维度、第三维度和第四维度。
76.示例性地,可以将输入数据形状相同的至少两个算子确定为一个子计算图。或者,可以将形状相同的输入数据和输出数据之间的有向边和算子确定为一个子计算图。或者,可以将规模相同的输入数据和输出数据之间的有向边和算子确定为一个子计算图。
77.步骤204,针对至少一个子计算图,对同一子计算图中的目标算子进行算子融合处理,以获得至少一个融合算子。
78.本实施例中,可以解析子计算图的输入数据特征、输出数据特征或各目标算对应的数学运算函数,以确定子计算图的功能。进而对同一子计算图中的各目标算子进行算子融合,以一个融合算子来实现子计算图的功能,并且,融合算子的输入数据特征和输出数据特征与子计算图相同。
79.示例性地,子计算图中包括算子slice0、slice1和slice2,slice0、slice1和slice2的输入数据形状均为48
×3×
96
×
96
×
9,slice0的输出数据形状为48
×3×
96
×
96
×
2、slice1的输出数据形状为48
×3×
96
×
96
×
2、slice2的输出数据形状为48
×3×
96
×
96
×
5,则该子计算图的功能为将形状为48
×3×
96
×
96
×
9的输入数据切分为形状分别为48
×3×
96
×
96
×
2、48
×3×
96
×
96
×
2和48
×3×
96
×
96
×
5的三部分,因此,可以通过一个融合算子直接将规模为48
×3×
96
×
96
×
9的输入数据切分为规模分别为48
×3×
96
×
96
×
2、48
×3×
96
×
96
×
2和48
×3×
96
×
96
×
5的三部分。进而,在目标模型推理过程中,slice0、slice1和slice2的3次算子调用实现的功能只需要调用一次融合算子即可实现。
80.步骤205,基于至少一个融合算子对目标模型的推理性能进行优化。
81.本实施例中,可以将自动优化后的计算图中至少一个子计算图替换为对应的融合算子,子计算图替换为对应的融合算子后的计算图为最终优化后的计算图,推理加速引擎可以根据最终优化后的计算图,生成二进制模型文件,以完成对目标模型的推理性能的优化。
82.本实施例提供的模型推理性能的优化方法,通过从预设的人工智能框架获取目标模型的初始模型文件,初始模型文件中具有目标模型对应的初始计算图;采用预设的推理加速引擎对初始模型文件进行优化处理,以获得自动优化后的计算图;对自动优化后的计算图进行解析,确定满足算子融合条件的至少一个子计算图;子计算图中的算子为目标算子;针对至少一个子计算图,对同一子计算图中的目标算子进行算子融合处理,以获得至少一个融合算子;基于至少一个融合算子对目标模型的推理性能进行优化;由于将至少一个子计算图中的目标算子进行算子融合处理,获得至少一个融合算子,同一子计算图中的目标算子满足算子融合条件,因此,算子融合处理至少将两个目标算子融合为一个融合算子,进而,基于至少一个融合算子对目标模型的推理性能进行优化,在优化前需要调用同一子计算图中的各目标算子,而在优化后只需要调用子计算图对应的融合算子,减少了算子调用次数,进而减少了每次调用算子就从片上内存空间进行读数据,并在算子计算完后,又将处理完的数据写入到片上内存空间,即有效减少了对片上内存空间中数据的读写次数,所以能够有效避减少片上内存空间进行读写数据的时间,进而减少模型推理过程的时间。
83.实施例二
84.图3为本技术实施例二提供的模型推理性能的优化方法的流程图,如图3所示,本实施例提供的模型推理性能的优化方法,在实施例一的基础上,对步骤202,采用预设的推理加速引擎对初始模型文件进行优化处理,以获得自动优化后的计算图,进行细化,则步骤202细化包括步骤301至步骤302。
85.步骤301,采用预设的推理加速引擎中预先配置的优化策略对初始模型文件进行优化处理。
86.本实施例中,预先配置的优化策略可以包括形状推理优化、常量传播优化、软件流水优化中的任意一项或多项。
87.步骤302,查看对模型文件进行优化处理后的优化日志,并从优化日志中获取自动优化后的计算图。
88.在采用预设的推理加速引擎中预先配置的优化策略对初始模型文件进行优化处理的过程中,推理加速引擎会生成优化日志。优化日志中记录了初始模型文件在通过优化策略优化之后的算子调用情况。通过查看优化日志中记录的算子调用情况,获取自动优化后的计算图。
89.本实施例提供的模型推理性能的优化方法,通过采用预设的推理加速引擎中预先配置的优化策略对初始模型文件进行优化处理;查看对模型文件进行优化处理后的优化日志,并从优化日志中获取自动优化后的计算图;由于从优化日志中获取自动优化后的计算图,优化日志中记录了优化策略对初始模型文件优化处理后的算子调用情况,因此,能够获取到准确的自动优化后的计算图,确保后续对自动优化后的计算图进行解析等步骤的可靠性和准确性。
90.实施例三
91.图4为本技术实施例三提供的模型推理性能的优化方法的流程图,如图4所示,本实施例提供的模型推理性能的优化方法,在上述任意一个实施例的基础上,对步骤203,对自动优化后的计算图进行解析,确定满足算子融合条件的至少一个子计算图,进行细化,则步骤203细化包括步骤401至步骤403。
92.步骤401,对自动优化后的计算图进行解析,以获得各融合前算子之间的网络结构、输入数据特征及输出数据特征。
93.本实施例中,融合前算子是指自动优化后的计算图中的算子。融合前算子之间的网络结构包括:融化前算子在自动优化后的计算图中连接顺序。示例性地,算子conv通过有向线与算子transpose连接,算子transpose通过有向线与算子sigmoid连接,且算子conv的输出数据为算子transpose的输出数据,算子transpose的输出数据为算子sigmoid的输入数据,则这三个算子之间的连续顺序为之间的连接顺序为conv、transpose和sigmod。
94.各融合前算子之间的输入数据特征包括输入数据形状特征和输入数据规模。各融合前算子之间的输出数据包括输出数据形状特征和输出数据规模。
95.本实施例中,可以通过自动优化后的计算图中有向线的方向确定各融合前算子之间的网络结构。并且,可以根据自动优化后的计算图的输入数据形状和输入数据规模,以及各融合前算子对应的数学运算函数,确定各融合前算子之间的输入数据特征和输出数据特征。
96.示例性地,自动优化后的计算图的输入数据形状为3
×9×
3,自动优化后的计算图
的输入数据分别输入第一融合前算子和第二融合前算子,则第一融合前算子和第二融合前算子的输入数据形状均为3
×9×
3。第一融合前算子和第二融合前算子对应的数学运算函数为从输入数据的第二维中分别取出前4个长度和后五个长度的数据,则第一融合前算子和第二融合前算子的输出数据形状分别为3
×4×
3和3
×5×
3。
97.步骤402,根据各融合前算子之间的网络结构、输入数据特征及输出数据特征确定至少一组满足算子融合条件的算子。
98.本实施例中,对于一个融合前算子,可以将该融合前算子的输出数据特征与自动优化后的计算图中其余任意一个融合前算子或者算子名相同的多个融合算子的输入数据特征进行对比。若该融合前算子的输出数据特征与其余任意一个融合前算子的输入数据特征相同,且这两个融化前算子之间的有向线的方向相同,则可以将这两个融合前算子及其中间连接的其余融合前算子确定为一组满足算子融合条件的算子。
99.可以理解的是,根据各融合前算子之间的网络结构、输入数据特征及输出数据特征确定至少一组满足算子融合条件的算子还可以为其他方式,本实施例中对此不做限定。
100.步骤403,基于至少一组满足算子融合条件的算子确定至少一个子计算图。
101.本实施例中,在初始计算图中存在多组满足算子融合条件的算子时,可以将多组满足算子融合条件的算子确定为一个子计算图,也可以分别将多组满足算子融合条件的算子确定为多个子计算图。
102.本实施例提供的模型推理性能的优化方法,通过对自动优化后的计算图进行解析,以获得各融合前算子之间的网络结构、输入数据特征及输出数据特征;根据各融合前算子之间的网络结构、输入数据特征及输出数据特征确定至少一组满足算子融合条件的算子;基于至少一组满足算子融合条件的算子确定至少一个子计算图;由于根据各融合前算子之间的网络结构、输入数据特征及输出数据特征确定满足算子融合条件的算子,能够确保满足融合条件的算子融合后不会对计算图的实现功能造成影响,同时,可以灵活的确定至少一组满足算子融合条件的算子,进而,可以有选择地对目标模型的推理性能进行优化。
103.实施例四
104.图5为本技术实施例四提供的模型推理性能的优化方法的流程图,如图5所示,本实施例提供的模型推理性能的优化方法,在上述任意一个实施例的基础上,对步骤204,针对至少一个子计算图,对同一子计算图中的目标算子进行算子融合处理,以获得至少一个融合算子,进行细化,则步骤204细化包括步骤501至步骤502。
105.步骤501,针对至少一个子计算图,获取同一子计算图中各目标算子之间的网络结构、各目标算子的实现功能及子计算图的输入输出数据形状特征。
106.本实施例中,目标算子的实现功能是指目标算子将输入数据转变为输出数据所执行的数学运算。
107.步骤502,根据至少一个子计算图中网络结构、各实现功能及子计算图的输入输出数据形状特征生成至少一个融合算子。
108.本实施例中,每个子计算图可以生成一个融合算子。若自动优化后的计算图中存在多个子计算图,则可以生成至少一个融合算子。可以从依次确定子计算图中各目标算子对子计算图的输入数据所执行的数学运算函数,并按照子计算图中各目标算子之间的连接顺序,通过函数嵌套或者函数复合的方法,将子计算图中所有目标算子生成一个融合算子,
以确保融合算子的实现功能与子计算图的实现功能相同,并且,融合算子的输入输出数据特征与子计算图的输入输出数据特征相同。
109.本实施例提供的模型推理性能的优化方法,通过针对至少一个子计算图,获取同一子计算图中各目标算子之间的网络结构、各目标算子的实现功能及子计算图的输入输出数据形状特征;根据至少一个子计算图中网络结构、各实现功能及子计算图的输入输出数据形状特征生成至少一个融合算子;由于根据至少一个子计算图中网络结构、各实现功能及子计算图的输入数据数据形状特征生成至少一个融合算子,因此,能够保证融合算子实现子计算图的实现功能,输入输出数据特征与子计算图相同,进而,确保子计算图中的目标算子融合之后的实现功能与子计算图相同。
110.实施例五
111.图6为本技术实施例五提供的模型推理性能的优化方法的流程图,如图6所示,本实施例提供的模型推理性能的优化方法,在实施例四的基础上,对步骤502,根据至少一个子计算图中网络结构、各实现功能及子计算图的输入输出数据形状特征生成至少一个融合算子,进行细化,则步骤502细化包括步骤601至步骤603。
112.步骤601,根据至少一个子计算图中网络结构及各实现功能分别生成融合算子的核函数。
113.本实施例中,融合算子包括核函数、形状推理函数、作用域和算子标识。
114.核函数是指融合算子对应的数学运算函数。
115.本实施例中,可以将子计算图中各目标算子对应的数学运算函数按照目标算子之间的网络结构进行复合,以生成融合算子的核函数。
116.步骤602,根据至少一个子计算图中子计算图的输入输出数据形状特征生成融合算子的形状推理函数。
117.其中,形状推理函数是指算子的输出数据形状与输入数据形状的函数关系。使用形状推理函数能够根据算子的输入数据形状确定算子的输出数据形状。
118.本实施例中,可以将子计算图中各目标算子的形状推理函数按照目标算子之间的网络结构进行复合,以生成融合算子的形状推理函数。各目标算子对应的形状推理函数可以从预设的计算库中获取。预设的计算库中存储有目标算子对应的形状推理函数。目标算子的形状推理函数中包括目标算子的输出数据形状与所有预设输入数据形状的函数关系。
119.步骤603,确定至少一个融合算子的作用域及算子标识。
120.本实施例中,可以根据子计算图中各目标算子的作用域确定融合算子的作用域,示例性地,融合算子的作用域可以子计算图中所有目标算子的作用域之和。可以根据子计算图的实现功能确定融合算子的算子标识。
121.本实施例提供的模型推理性能的优化方法,通过根据至少一个子计算图中网络结构及各实现功能分别生成融合算子的核函数;根据至少一个子计算图中子计算图的输入输出数据形状特征生成融合算子的形状推理函数;确定至少一个融合算子的作用域及算子标识;由于根据子计算图中网络结构和实现功能生成融合算子的核函数,因此,融合算子能够实现子计算图的实现功能,根据子计算图的输入输出数据形状特征生成融合算子的形状推理函数,融合算子的输入输出数据形状特征与子计算图相同,因此,融合算子能够在优化后的计算图替代子计算图,以优化模型推理性能。
122.实施例六
123.图7为本技术实施例六提供的模型推理性能的优化方法的流程图,如图7所示,本实施例提供的模型推理性能的优化方法,在上述任意一个实施例的基础上,步骤205,基于至少一个融合算子对目标模型的推理性能进行优化,之前还包括步骤701至步骤702。
124.步骤701,将至少一个融合算子的作用域及算子标识在预设的人工智能框架中进行注册。
125.本实施例中,可以先使用推理加速引擎将实现融合算子的程序代码编译为动态库,再使用人工智能框架提供的自定义算子注册功能,加载融合算子编译后的动态库,以注册融合算子的作用域和算子标识。在注册成功之后,从人工智能框架导出的模型文件中的计算图中包括融合算子。
126.步骤702,将至少一个融合算子的作用域、算子标识、核函数及形状推理函数在预设的推理加速引擎中进行注册,并编译生成至少一个融合算子的动态库。
127.本实施例中,在确定出融合算子的作用域、算子标识、核函数以及形状推理函数之后,可以将融合算子的作用域、算子标识、核函数以及形状推理函数在预设的推理加速引擎中进行注册,并使用推理加速引擎将实现融合算子的程序代码编译为动态库,以使得推理加速引擎能够通过融合算子的算子标识调用融合算子的核函数核形状推理函数,以执行融合算子的实现功能。
128.本实施例提供的模型推理性能的优化方法,通过将至少一个融合算子的作用域及算子标识在预设的人工智能框架中进行注册;将至少一个融合算子的作用域、算子标识、核函数及形状推理函数在预设的推理加速引擎中进行注册,并编译生成至少一个融合算子的动态库;由于将至少一个融合算子在预设的人工智能框架中进行注册,因此,可以采用预设的人工智能框架导出包括融合算子的计算图;同时,将至少一个融合算子在预设的推理加速引擎中进行注册,因此,能够使得推理加速引擎在推理时能够通过算子标识调用融合算子。
129.实施例七
130.图8为本技术实施例七提供的模型推理性能的优化方法的流程图,如图8所示,本实施例提供的模型推理性能的优化方法,在实施例六的基础上,对步骤205,基于至少一个融合算子对目标模型的推理性能进行优化,进行细化,则步骤205细化包括步骤801至步骤804。
131.步骤801,从预设的人工智能框架获取目标模型对应的算子融合后的模型文件,算子融合后的模型文件中包括具有至少一个融合算子的计算图。
132.本实施例中,在预设的人工智能框架中注册融合算子之后,可以直接从预设的人工智能框架中获取目标模型对应的算子融合后的模型文件。算子融合后的模型文件中包括具有至少一个融合算子的计算图,且包括的具有至少一个融合算子的计算图的数量与在人工智能框架中注册的融合算子的数量对应。
133.步骤802,采用预设的推理加速引擎对算子融合后的模型文件进行优化处理,以获得最终优化后的计算图。
134.本实施例中,由于算子融合后的模型文件中,除融合算子之外的其他算子没有经过优化,并且,融合算子在不同的预设输入规模时也需要对应不同的数学运算函数,具有对
应不同预设输入规模的代码。因此,可以采用预设的推理加速引擎对算子融合后的模型文件进行形状推理、常量传播、软件流水等优化,以获得最终优化后的计算图。
135.步骤803,生成最终优化后的计算图对应的二进制代码文件,并将二进制代码文件及至少一个融合算子的动态库输入到加速卡中。
136.本实施例中,推理加速引擎可以根据最终优化后的计算图中各算子之间的网络结构,以及各算子对应的数学运算函数生成对应的二进制代码文件。并且,可以将二进制代码文件及至少一个融合算子的动态库输入到加速卡中。示例性地,可以将二进制代码文件存储及至少一个融合算子的动态库存储在加速卡的ddr中。
137.步骤804,控制加速卡按照二进制代码文件及至少一个融合算子的动态库进行目标模型的推理过程。
138.本实施例中,模型推理性能的优化装置可以控制加速卡执行二进制代码以及至少一个融合算子的动态库,以进行目标模型的推理过程,输出目标模型的推理结果。
139.本实施例提供的模型推理性能的优化方法,通过从预设的人工智能框架获取目标模型对应的算子融合后的模型文件,算子融合后的模型文件中包括具有至少一个融合算子的计算图;采用预设的推理加速引擎对算子融合后的模型文件进行优化处理,以获得最终优化后的计算图;生成最终优化后的计算图对应的二进制代码文件,并将二进制代码文件及至少一个融合算子的动态库输入到加速卡中;控制加速卡按照二进制代码文件及至少一个融合算子的动态库进行目标模型的推理过程;由于算子融合后的模型文件中包括具有至少一个融合算子的计算图,融合算子在推理过程中能够减少对片上内存空间进行读写数据的时间。同时,融合算子为多个目标算子融合后的算子,采用预设的推理加速进行优化处理时,既能够对具有至少一个融合算子的计算图进行形状推理、常量传播和软件流水等优化,也不会改变融合算子的实现功能。因此,推理加速引擎生成的最终优化后的计算图对应的二进制代码能够减少模型推理过程中对片上内存空间进行读写数据的时间,进而,控制加速卡按照二进制代码文件及至少一个融合算子的动态库进行目标模型的推理过程,能够减少目标模型推理时间。
140.实施例八
141.可选地,本实施例提供的模型推理性能的优化方法,在上述任意一个实施例的基础上,目标模型为yolov5s网络模型或对yolov5s网络进行改进的模型,目标模型为目标检测模型;子计算图为多尺度的预测框推理完成后,生成预测框最终的分别处理过程对应的子计算图。具体地,图9a为本技术实施例八提供的模型推理性能的优化方法中目标模型的一部分的结构示意图,图9b为本技术实施例八提供的模型推理性能的优化方法中目标模型的一部分中第一分支的结构示意图;图9c为本技术实施例八提供的模型推理性能的优化方法中目标模型的一部分中第二分支的结构示意图;图9d为本技术实施例八提供的模型推理性能的优化方法中目标模型的一部分中第三分支的结构示意图;图9e示出了本技术实施例八提供的模型推理性能的优化方法中目标模型的一部分对应的最终优化的计算图。
142.其中,yolov5s网络的一部分为:yolov5s网络对三个不同多尺度的预测框推理完成后,生成预测框最终的分别处理过程。yolov5s网络的一部分包括对第一尺度的预测框进行处理的第一分支,对第二尺度的预测框进行处理的第二分支,以及对第三尺度的预测框进行处理的第三分支。yolov5s网络的一部分中包括算子conv、reshpae、transpose、
sigmod、mul、sub、add、pow、concat和output,对应的数学运算函数分别为卷积、改变形状、转秩、激活、乘、减、加、平方、连接字符串和输出。
143.本实施例中,算子concat的输出数据形状为48
×
36288
×
9,第一分支的输入数据形状为48
×3×
96
×
96
×
9,第二分支的输入数据形状为48
×3×
48
×
48
×
9,第一分支的输入数据形状为48
×3×
24
×
24
×
9,由于36288=3
×
96
×
96+3
×
48
×
48+3
×
24
×
24,且第一分支、第二分支和第三分支中的算子与算子concat之间的有向线只有一个方向,因此,算子concat以及第一分支、第二分支和第三分支中的算子满足算子融合条件。根据算子concat以及第一分支、第二分支和第三分支中的算子之间的网络结构和输入输出数据特征,将算子concat以及第一分支、第二分支和第三分支中的算子concat进行融合处理,以获得最终优化的计算图,最终优化的计算图如图9e所示。
144.本实施例中,加速卡的产品规格可以如下表1所示。
145.本实施例中,yolov5s网络模型可以为onnx格式。onnx,是一种文件格式,用于存储已训练好的模型。预设的人工智能框架可以为pytorch,pytorch,是由paszke等人于2019年开发的一种人工智能框架,可以用于读取或存出已训练好的模型的参数,导出已训练好的模型的计算图。目标模型的运行环境可以如下表2所示。本实施例在网络的运行过程中没有进行量化操作,且所有计算过程的数据类型均为fp32。
146.表1加速卡的产品规格
[0147][0148]
表2目标模型的运行环境
[0149] 型号/版本cpuintel(r)xeon(r)gold 6140cpu@2.30ghz操作系统ubuntu 18.04.6ltspytorch1.10.2推理加速引擎0.8.4
[0150]
本实施例中,采用如表1所示的产品规格的加速卡以及如表2所示的运行环境分别运行yolov5s网络的初始计算图和最终优化后的计算图对应的二进制代码,初始计算图和最终优化后的计算图在处理预测框时的部分性能如下表3所示。
[0151]
表3初始计算图和最终优化后的计算图的部分性能
[0152][0153]
表3中,执行最终优化后的计算图的加速卡的加速比为最终优化后的计算图的处理时间与初始计算图的处理时间的比值。从表3中可以看出最终优化后的计算图的处理时间比初始计算图的处理时间减少了,因此,可以证明目标模型在推理过程中调用融合能够减少了目标模型的推理时间。
[0154]
本实施例提供的模型推理性能的优化方法,目标模型为yolov5s网络模型或对yolov5s网络进行改进的模型,目标模型为目标检测模型;子计算图为多尺度的预测框推理完成后,生成预测框最终的分别处理过程对应的子计算图;由于yolov5s网络模型对三个尺度的预测框的三个分别处理过程的网络结构相同,且三个尺度的预测框的三个分别处理之后经过算子concat进行字符串拼接,算子concat没有改变数据形状,仅改变了数据规模,因此,将三个分别处理过程需要调用的算子和算子concat进行算子融合处理,获得融合算子,融合算子的实现功能可以替代三个分别处理过程和算子concat的实现功能,并且,目标模型在推理过程中也需要调用一次融合算子,减少了目标模型的推理时间。
[0155]
实施例九
[0156]
本实施例提供的模型推理性能的优化方法,在实施例八的基础上,对步骤804,控制加速卡按照二进制代码文件及至少一个融合算子的动态库进行目标模型的推理过程,进行细化,则步骤804细化为以下方案。
[0157]
控制加速卡按照二进制代码文件及至少一个融合算子的动态库进行目标模型的推理过程中,控制加速卡在生成框最终的分别处理过程中每个处理器核每次仅处理一个图像对应的张量数据,并将处理完成的数据依次在ddr上的输出位置进行拼接。
[0158]
其中,生成框最终的分别处理过程中为:多尺度的预测框推理完成后,生成框最终的分别处理过程。生成框可以为目标模型推理输出的检测框。
[0159]
本实施例中,yolov5s网络模型中的输入数据为图像,输出数据为图像对应的张量数据,图像对应的张量数据包括图像上生成的预测框个数,预测框尺度以及每个预测框的属性,预测框的属性包括坐标点、宽高值和置信度。可以理解的是,各图像之间是相互独立的,因此,各图像对应的张量数据之间也是相互独立的。
[0160]
yolov5s网络模型在推理过程中,会在三个尺度上分别生成输入图像的张量数据,一张输入图像对应三个尺度的张量数据,尺度是指预测框尺度,三个尺度的张量数据中生成的预测框宽高值不同,因此,yolov5s网络模型会在三个尺度的预测框推理完成之后,对各尺度的预测框分别进行生成框最终的处理。最终的处理是对预测框的中心点坐标和长宽值进行调整,以将各尺度的预测框对应尺寸的大小调整到适合原图像的大小,包括:切片运算、向量二元乘积运算和拼接运算。
[0161]
生成框的最终的处理过程包括:将预测框的中心坐标点、长宽值、和置信度通过切
片运算分别取出;再对中心坐标点和长宽值分别进行不同的计算,以将生成框对应尺寸的大小调整到适合原图像的大小;再将分别计算后的中心坐标点和长宽值与不进行计算的置信度拼接起来。可以理解的是,生成框的最终的处理过程中,每个预测框均不需要依赖其他预测框的数据,因此,处理过程对于每一个预测框来说也是独立的。
[0162]
由于加速卡一般具有多个处理器核,而多个处理器核之间无法直接通信,因此,只要处理器核的片上存储空间大于或等于图像对应的张量数据中预测框属性对应的元素个数,就能够通过循环来完成对一张图像生成的预测框最终的分别处理过程。这里,对于不同尺度的张量数据,可以根据输入数据形状或规模来确定对应的处理方法。控制每个处理器核每次仅处理一个图像对应的张量数据,并在处理完成之后,将输出数据放到ddr的输出位置上进行拼接,就能够避免处理器核之间通信造成的时间浪费。进而可以实现以各处理器核分批处理所有预测框,并使得个处理器核的输出数据在ddr的输出位置上实现预测框个数维度的拼接。
[0163]
本实施例中,加速卡的产品规格可以与实施例八相同,yolov5s网络模型可以为onnx格式。预设的人工智能框架可以为pytorch,则目标模型的运行环境可以与实施例八相同。
[0164]
在实施例八的表3中可以看出,在图像帧数为1时,最终优化后的计算图的处理时间与初始计算图的处理时间差距不大,这是因为每帧图像对应的张量数据之间是相互独立的,在加速卡执行目标模型的过程中,简单根据图像帧数进行了拆分,每个核每次处理一个图像,这使得在图像帧数为1帧时,只有一个处理器核在工作,而一般的加速卡都是多处理器核的架构,这浪费了加速卡的硬件资源。因此,只要将运算量平均分配到各处理器核上,且不引入更多的处理逻辑,就可以提高处理器核的硬件资源利用率。因此,可以采用本实施例提供的方法,使每个处理器核每次仅处理一个图像对应的张量数据,将计算任务平均分配到各处理器核上。并且可以将处理完成的数据存储在ddr上的输出位置,以实现输出数据的拼接。初始计算图,以及最终优化后的计算图在每个处理器核每次仅处理一个图像对应的张量数据时,分别对应的yolov5s网络模型整体的每秒传输帧数fps和优化比率ratio如下表4所示。
[0165]
表4模型整体fps和优化比率
[0166][0167]
本实施例中,若yolov5s网络的整体运行时间为t毫秒,输入帧数为bn,则每秒传输数fps的计算公式:若初始计算图对应的yolov5s网络yolov5s网络模型的
fps为fps_auto,最终优化后的计算图在每个处理器核每次仅处理一个图像对应的张量数据时对应的yolov5s网络模型的fps为fps_manual,则优化比率ratio的计算公式:
[0168]
本实施例提供的模型推理性能的优化方法,通过控制加速卡按照二进制代码文件及至少一个融合算子的动态库进行目标模型的推理过程中,控制加速卡在生成框最终的分别处理过程中每个处理器核每次仅处理一个图像对应的张量数据,并将处理完成的数据依次在ddr上的输出位置进行拼接;由于在生成框最终的分别处理过程中每个处理器核每次仅处理一个图像对应的张量数据,因此,能够分批处理所有的预测框,提高加速卡的硬件资源利用率,将处理完成的部分依次放到加速卡的内存上,能够实现自动拼接,减少处理器核与加速卡的内存之间读写数据操作的时间。
[0169]
实施例十
[0170]
图10为本技术实施例十提供的模型推理性能的优化装置的结构示意图,如图10所示,本实施例提供的模型推理性能的优化装置100包括:获取模块101、自动优化模块102、自动优化模块102、融合处理模块104以及融合优化处理模块105。
[0171]
获取模块101,用于从预设的人工智能框架获取目标模型的初始模型文件,所述初始模型文件中具有目标模型对应的初始计算图;
[0172]
自动优化模块102,用于采用预设的推理加速引擎对所述初始模型文件进行优化处理,以获得自动优化后的计算图;
[0173]
确定模块103,用于对所述自动优化后的计算图进行解析,确定满足算子融合条件的至少一个子计算图;所述子计算图中的算子为目标算子;
[0174]
融合处理模块104,用于针对至少一个子计算图,对同一子计算图中的目标算子进行算子融合处理,以获得至少一个融合算子;
[0175]
融合优化处理模块105,基于至少一个融合算子对目标模型的推理性能进行优化。
[0176]
作为一种可选的实施方式,自动优化模块102具体用于,采用预设的推理加速引擎中预先配置的优化策略对初始模型文件进行优化处理;看对模型文件进行优化处理后的优化日志,并从优化日志中获取自动优化后的计算图。
[0177]
作为一种可选的实施方式,确定模块103具体用于,对自动优化后的计算图进行解析,以获得各融合前算子之间的网络结构、输入数据特征及输出数据特征;根据各融合前算子之间的网络结构、输入数据特征及输出数据特征确定至少一组满足算子融合条件的算子;基于至少一组满足算子融合条件的算子确定至少一个子计算图。
[0178]
作为一种可选的实施方式,融合处理模块104具体用于,针对至少一个子计算图,获取同一子计算图中各目标算子之间的网络结构、各目标算子的实现功能及子计算图的输入输出数据形状特征;根据至少一个子计算图中所述网络结构、各所述实现功能及子计算图的输入输出数据形状特征生成至少一个融合算子。
[0179]
作为一种可选的实施方式,融合处理模块104具体用于,根据至少一个子计算图中所述网络结构及各所述实现功能分别生成融合算子的核函数;根据至少一个子计算图中所述子计算图的输入输出数据形状特征生成融合算子的形状推理函数;确定至少一个融合算子的作用域及算子标识。
[0180]
作为一种可选的实施方式,模型推理性能的优化装置100还包括注册模块,注册模块用于,将至少一个融合算子的作用域及算子标识在预设的人工智能框架中进行注册;将至少一个融合算子的作用域、算子标识、所述核函数及所述形状推理函数在预设的推理加速引擎中进行注册,并编译生成至少一个融合算子的动态库。
[0181]
作为一种可选的实施方式,融合优化处理模块105具体用于,从预设的人工智能框架获取目标模型对应的算子融合后的模型文件,所述算子融合后的模型文件中包括具有至少一个融合算子的计算图;采用预设的推理加速引擎对所述算子融合后的模型文件进行优化处理,以获得最终优化后的计算图;生成所述最终优化后的计算图对应的二进制代码文件,并将所述二进制代码文件及至少一个融合算子的动态库输入到加速卡中;控制所述加速卡按照所述二进制代码文件及至少一个融合算子的动态库进行目标模型的推理过程。
[0182]
作为一种可选的实施方式,所述目标模型为yolov5s网络模型或对所述yolov5s网络进行改进的模型,所述目标模型为目标检测模型;所述子计算图为多尺度的预测框推理完成后,生成框最终的分别处理过程对应的子计算图。
[0183]
作为一种可选的实施方式,融合优化处理模块105具体还用于,控制加速卡按照二进制代码文件及至少一个融合算子的动态库进行目标模型的推理过程中,控制加速卡在生成框最终的分别处理过程中每个处理器核每次仅处理一个图像对应的张量数据,并将处理完成的数据依次在ddr上的输出位置进行拼接。
[0184]
实施例十一
[0185]
图11为本技术实施例十一提供的电子设备结构示意图,如图11所示,本实施例提供的电子设备110包括:处理器111,以及与所述处理器通信连接的存储器112。
[0186]
所述存储器112存储计算机执行指令。
[0187]
所述处理器111执行所述存储器112存储的计算机执行指令,以实现如上述任意一个实施例提供的模型推理性能的优化方法。
[0188]
处理器111和存储器112通过总线连接。
[0189]
本技术实施例还提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如上述任意一个实施例提供的模型推理性能的优化方法。
[0190]
本技术实施例还提供一种计算机程序产品,包括计算机程序,计算机程序被处理器执行时实现如上述任意一个实施例提供的模型推理性能的优化方法。
[0191]
依据以下条款可更好地理解前述内容(the foregoing may be better understood in view of the following clauses):
[0192]
条款1、一种模型推理性能的优化方法,包括:
[0193]
从预设的人工智能框架获取目标模型的初始模型文件,所述初始模型文件中具有目标模型对应的初始计算图;
[0194]
采用预设的推理加速引擎对所述初始模型文件进行优化处理,以获得自动优化后的计算图;
[0195]
对所述自动优化后的计算图进行解析,确定满足算子融合条件的至少一个子计算图;所述子计算图中的算子为目标算子;
[0196]
针对至少一个子计算图,对同一子计算图中的目标算子进行算子融合处理,以获
得至少一个融合算子;
[0197]
基于至少一个融合算子对目标模型的推理性能进行优化。
[0198]
条款2、根据条款1所述的方法,所述采用预设的推理加速引擎对所述初始模型文件进行优化处理,以获得自动优化后的计算图,包括:
[0199]
采用预设的推理加速引擎中预先配置的优化策略对所述初始模型文件进行优化处理;
[0200]
查看对所述模型文件进行优化处理后的优化日志,并从所述优化日志中获取自动优化后的计算图。
[0201]
条款3、根据条款1所述的方法,所述对所述自动优化后的计算图进行解析,确定满足算子融合条件的至少一个子计算图,包括:
[0202]
对自动优化后的计算图进行解析,以获得各融合前算子之间的网络结构、输入数据特征及输出数据特征;
[0203]
根据各融合前算子之间的网络结构、输入数据特征及输出数据特征确定至少一组满足算子融合条件的算子;
[0204]
基于至少一组满足算子融合条件的算子确定至少一个子计算图。
[0205]
条款4、根据条款1所述的方法,所述针对至少一个子计算图,对同一子计算图中的目标算子进行算子融合处理,以获得至少一个融合算子,包括:
[0206]
针对至少一个子计算图,获取同一子计算图中各目标算子之间的网络结构、各目标算子的实现功能及子计算图的输入输出数据形状特征;
[0207]
根据至少一个子计算图中所述网络结构、各所述实现功能及子计算图的输入输出数据形状特征生成至少一个融合算子。
[0208]
条款5、根据条款4所述的方法,所述根据至少一个子计算图中所述网络结构、各所述实现功能及子计算图的输入输出数据形状特征生成至少一个融合算子,包括:
[0209]
根据至少一个子计算图中所述网络结构及各所述实现功能分别生成融合算子的核函数;
[0210]
根据至少一个子计算图中所述子计算图的输入输出数据形状特征生成融合算子的形状推理函数;
[0211]
确定至少一个融合算子的作用域及算子标识。
[0212]
条款6、根据条款5所述的方法,所述基于至少一个融合算子对目标模型的推理性能进行优化之前,还包括:
[0213]
将至少一个融合算子的作用域及算子标识在预设的人工智能框架中进行注册;
[0214]
将至少一个融合算子的作用域、算子标识、所述核函数及所述形状推理函数在预设的推理加速引擎中进行注册,并编译生成至少一个融合算子的动态库。
[0215]
条款7、根据条款6所述的方法,所述基于至少一个融合算子对目标模型的推理性能进行优化,包括:
[0216]
从预设的人工智能框架获取目标模型对应的算子融合后的模型文件,所述算子融合后的模型文件中包括具有至少一个融合算子的计算图;
[0217]
采用预设的推理加速引擎对所述算子融合后的模型文件进行优化处理,以获得最终优化后的计算图;
[0218]
生成所述最终优化后的计算图对应的二进制代码文件,并将所述二进制代码文件及至少一个融合算子的动态库输入到加速卡中;
[0219]
控制所述加速卡按照所述二进制代码文件及至少一个融合算子的动态库进行目标模型的推理过程。
[0220]
条款8、根据条款1-7任一项所述的方法,所述目标模型为yolov5s网络模型或对所述yolov5s网络进行改进的模型,所述目标模型为目标检测模型;
[0221]
所述子计算图为多尺度的预测框推理完成后,生成框最终的分别处理过程对应的子计算图。
[0222]
条款9、根据条款8所述的方法,所述控制所述加速卡按照所述二进制代码文件及至少一个融合算子的动态库进行目标模型的推理过程,包括:
[0223]
控制所述加速卡按照所述二进制代码文件及至少一个融合算子的动态库进行目标模型的推理过程中,控制加速卡在生成框最终的分别处理过程中每个处理器核每次仅处理一个图像对应的张量数据,并将处理完成的数据依次在ddr上的输出位置进行拼接。
[0224]
条款10、一种模型推理性能的优化装置,包括:
[0225]
获取模块,用于从预设的人工智能框架获取目标模型的初始模型文件,所述初始模型文件中具有目标模型对应的初始计算图;
[0226]
自动优化模块,用于采用预设的推理加速引擎对所述初始模型文件进行优化处理,以获得自动优化后的计算图;
[0227]
确定模块,用于对所述自动优化后的计算图进行解析,确定满足算子融合条件的至少一个子计算图;所述子计算图中的算子为目标算子;
[0228]
融合处理模块,用于针对至少一个子计算图,对同一子计算图中的目标算子进行算子融合处理,以获得至少一个融合算子;
[0229]
融合优化处理模块,基于至少一个融合算子对目标模型的推理性能进行优化。
[0230]
条款11、一种电子设备,包括:处理器,以及与所述处理器通信连接的存储器;
[0231]
所述存储器存储计算机执行指令;
[0232]
所述处理器执行所述存储器存储的计算机执行指令,以实现如条款1-9中任一项所述的方法。
[0233]
条款12、一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如条款1-9中任一项所述的方法。
[0234]
条款13、一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如条款1-9中任一项所述的方法。
[0235]
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本技术并不受所描述的动作顺序的限制,因为依据本技术,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本技术所必须的。
[0236]
进一步需要说明的是,虽然流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,流程图中的至少一
部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
[0237]
应该理解,上述的装置实施例仅是示意性的,本技术的装置还可通过其它的方式实现。例如,上述实施例中单元/模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如,多个单元、模块或组件可以结合,或者可以集成到另一个系统,或一些特征可以忽略或不执行。
[0238]
另外,若无特别说明,在本技术各个实施例中的各功能单元/模块可以集成在一个单元/模块中,也可以是各个单元/模块单独物理存在,也可以两个或两个以上单元/模块集成在一起。上述集成的单元/模块既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。
[0239]
集成的单元/模块如果以硬件的形式实现时,该硬件可以是数字电路,模拟电路等等。硬件结构的物理实现包括但不局限于晶体管,忆阻器等等。若无特别说明,人工智能处理器可以是任何适当的硬件处理器,比如cpu、gpu、fpga、dsp和asic等等。若无特别说明,存储单元可以是任何适当的磁存储介质或者磁光存储介质,比如,阻变式存储器rram(resistive random access memory)、动态随机存取存储器dram(dynamic random access memory)、静态随机存取存储器sram(static random-access memory)、增强动态随机存取存储器edram(enhanced dynamic random access memory)、高带宽内存hbm(high-bandwidth memory)、混合存储立方hmc(hybrid memory cube)等等。
[0240]
集成的单元/模块如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本技术各个实施例方法的全部或部分步骤。而前述的存储器包括:u盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
[0241]
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。上述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1