本公开涉及数据处理,特别是涉及一种内存分配方法、装置、计算机设备、存储介质。
背景技术:
1、随着人工智能技术的不断发展,计算模型被部署在如智能手机、平板电脑等电子设备上,用于增强电子设备的各种不同方面的处理能力。
2、然而,计算模型在推理时资源是有限的,既需要提升推理的效率,又需要节省内存空间的占用。
3、在这种情况下,往往是通过静态内存分配的方式将推理过程中各个算子的内存占用提前规划分配好,避免在实际计算推理时重复地去申请释放内存,从而提升效率,但此时如何规划内存使得节约内存资源是一个很大的问题。
技术实现思路
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、上述各实施例中,由于需要对目标模型的推理过程进行合理的分配内存,而目标模型在推理时会根据其拓扑结构产生不同的张量,因此可以确定目标模型拓扑结构中产生的每个张量的张量信息。由于目标模型产生张量是算子产生的,因此还可以根据张量信息和拓扑结构确定算子信息。为了能够合理的对张量进行内存分配,可以按照算子信息对算子进行排序,进而再按照与算子匹配的张量,确定每个张量的优先级,后续可以按照优先级进行内存分配,保证内存复用的效果。最后可以对至少根据未进行内存分配的张量的使用周期所指示的输入算子和输出算子,对未进行内存分配的张量进行内存分配,能够重复的利用输入算子和输出算子相对应的内存,能够进行复用,减少内存消耗,并且由于是使用的算子信息和张量信息进行优先级调整,充分的考虑到了算子和张量的各种信息,进一步减少不必要的内存消耗。
1.一种内存分配方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述输入算子和输出算子的类型包括:支持运行推理加速的算子;所述至少根据所述未进行内存分配的张量的使用周期所指示的输入算子和输出算子,对所述未进行内存分配的张量进行内存分配,包括:
3.根据权利要求2所述的方法,其特征在于,所述至少根据所述未进行内存分配的张量的使用周期所指示的输入算子和输出算子,对所述未进行内存分配的张量进行内存分配,还包括:
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
5.根据权利要求4所述的方法,其特征在于,所述张量信息还包括:尺寸信息;所述根据使用每个所述复用存储区域的张量的张量信息与所述未进行内存分配的张量的张量信息,确定目标张量,包括:
6.根据权利要求4所述的方法,其特征在于,所述根据使用每个所述复用存储区域的张量的张量信息与所述未进行内存分配的张量的张量信息,确定目标张量,包括:
7.一种内存分配装置,其特征在于,所述装置包括:
8.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至6中任一项所述的方法的步骤。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至6中任一项所述的方法的步骤。
10.一种计算机程序产品,包括计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至6中任一项所述的方法的步骤。