一种基于存算一体的深度学习模型终端优化部署方法

文档序号:36812479发布日期:2024-01-26 16:14阅读:13来源:国知局
一种基于存算一体的深度学习模型终端优化部署方法

本申请实施例涉及计算图优化设计,特别涉及一种基于存算一体的深度学习模型终端优化部署方法。


背景技术:

1、近年来,移动设备和可穿戴设备的广泛应用以及深度学习技术的快速发展,为智能应用和服务带来了无处不在的机会。在智能物联场景中,将深度学习模型(以下简称模型)部署到资源受限的智能物联网终端设备已成为一种趋势。

2、然而,随着人们对精度的追求,模型和样本数据的规模不断增大,这给算力和内存带来了巨大压力。以一个224px×224px分辨率的彩色图像分类为例,8层的alexnet模型拥有6.1亿个网络参数,需要执行7.29亿次浮点运算并占用240mb的内存存储,而vgg-16模型则拥有1.44亿个网络参数,需要执行150亿次浮点运算并占用528mb的内存。即使随着片上系统的发展和人工智能芯片的出现,终端设备逐渐具备了较强的计算和存储能力,但仍然无法像传统的cpu、gpu平台那样具备强大的计算和存储能力,无法满足模型在存储和运行方面的需求。

3、为了解决此问题,科研和工业领域开展了一系列基于终端设备的模型优化方法的探索和研究。在探索优化方法的研究中,科研人员发现了可以对训练好的模型进行压缩,从而使得模型的规模适应终端设备的算力和内存。模型的压缩有很多方法,比如将一些冗余的部分进行裁剪,又或者利用更小更紧凑的模型代替原有的大模型,再或者将模型中参数的存储类型进行缩减。然而,随着压缩技术的成熟,模型压缩的优化空间越来越小,再难以解决计算和存储资源受限的问题。


技术实现思路

1、本申请实施例的目的在于提供一种基于存算一体的深度学习模型终端优化部署方法,可以按照模型中和各算子的最优执行顺序实现模型在终端上的优化部署,在不影响模型处理精度的前提下,实现最小的内存占用,减少内存开销。

2、为解决上述技术问题,本申请的实施例提供了一种基于存算一体的深度学习模型终端优化部署方法,包括以下步骤:对训练好的模型进行解析,得到所述模型对应的计算图;在所述计算图中确定所述模型所有的分支处,遍历各所述分支处,将当前分支处的所有张量划分为常量和变量;其中,所述常量为不属于所述计算图中的算子计算得出的张量,所述变量为属于所述计算图中的算子计算得出的张量;分别计算所述当前分支处的每一个候选执行顺序中,生成各所述变量的算子对应的内存占用峰值,并根据所述内存占用峰值分别确定所述当前分支处各候选执行顺序对应的内存占用总和,将所述内存占用总和最小的候选执行顺序确定为所述当前分支处的最优执行顺序;基于各所述分支处对应的最优执行顺序,将所述模型部署在预设终端上进行推理。

3、本申请的实施例还提供了一种电子设备,包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述的基于存算一体的深度学习模型终端优化部署方法。

4、本申请的实施例还提供了一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现上述的基于存算一体的深度学习模型终端优化部署方法。

5、本申请的实施例提供的基于存算一体的深度学习模型终端优化部署方法,将模型文件表示为计算图的形式,在计算图维度上利用算子重排技术来解决终端的计算和存储资源受限的问题,对于每个分支处,先将各张量划分为常量和变量,常量不影响执行顺序,无法优化,变量则是需要优化的对象,对于一个分支处的多个候选执行顺序而言,通过计算生成各变量的算子对应的内存占用峰值的方式,来计算分支处各候选执行顺序对应的内存占用总和,将内存占用总和最小的候选执行顺序确定为最优执行顺序,再根据各分支处对应的最优执行顺序对模型进行部署,最优执行顺序将模型运行时的内存占用降到最低,能够很好地适配内存资源有限的终端,在不影响模型处理精度的前提下,实现最小的内存占用,减少内存开销。

6、在一些可选的实施例中,所述基于各所述分支处对应的最优执行顺序,将所述模型部署在预设终端上进行推理,包括:对于每一个所述分支处,记录所述分支处对应的最优执行顺序中各裁剪类算子的位置;遍历各所述裁剪类算子,判断当前裁剪类算子的前驱算子是否是逐元素类算子;若所述当前裁剪类算子的前驱算子是逐元素类算子,则交换所述当前裁剪类算子和所述当前裁剪类算子的前驱算子的位置,并更新所述最优执行顺序,直至所述当前裁剪类算子没有可交换的对象,在各所述裁剪类算子均没有可交换的对象后,得到所述分支处对应的最终更新后的最优执行顺序;基于各所述分支处对应的最终更新后的最优执行顺序,将所述模型部署在预设终端上进行推理。本申请除了进行面向计算图分支的拓扑重排之外,还要进行面向裁剪类算子的重排,重排得到的最终更新后的最优执行顺序,不仅在内存占用上有了明显的减少,还对计算量有了一定的降低,使得模型能够很好地适配计算资源有限的终端。

7、在一些可选的实施例中,所述当前裁剪类算子没有可交换的对象,包括:所述当前裁剪类算子的前驱算子为裁剪类算子,或者所述当前裁剪类算子之前没有其他的算子。

8、在一些可选的实施例中,所述分别计算所述当前分支处的每一个候选执行顺序中,生成各所述变量的算子对应的内存占用峰值,包括:遍历各所述候选执行顺序,按当前候选执行顺序遍历各所述变量,计算生成当前变量的算子的输入张量、所述输入张量之前需要缓存的其他张量和当前变量的内存占用和,将所述内存占用和作为所述生成当前变量的算子的内存占用峰值。将一个算子输入张量的内存占用,加上其输出张量的内存占用,再加上在该算子之前,需要缓存的其他张量的内存占用,作为该算子的内存占用峰值,可以很好地衡量每个候选执行顺序所需的内存占用,从而直观地、清晰地确定最优执行顺序。

9、在一些可选的实施例中,在所述将当前分支处的所有张量划分为常量和变量之前,还包括:计算所述分支处的每一个张量的内存占用,并对每一个张量的内存占用进行缓存。提前对每一个张量的内存占用进行缓存,可以避免因重复计算而带来的额外开销。

10、在一些可选的实施例中,在所述将当前分支处的所有张量划分为常量和变量之后,还包括:若所述当前分支处的所有张量均为常量,则直接将所述当前分支处的默认执行顺序确定为所述当前分支处的最优执行顺序。考虑到全常量的分支处没有优化空间,此时直接将默认执行顺序确定为最优执行顺序,可以提升优化效率,节约重排资源。

11、在一些可选的实施例中,所述对训练好的模型进行解析,得到所述模型对应的计算图,包括:将基于预设的训练平台训练好的模型,利用所述训练平台提供的api接口,转化成预设格式的模型文件,并对所述模型文件进行解析,得到所述模型对应的计算图。

12、在一些可选的实施例中,所述预设的训练平台为tensorflow训练平台,所述预设格式为tflite格式。



技术特征:

1.一种基于存算一体的深度学习模型终端优化部署方法,其特征在于,包括:

2.根据权利要求1所述的基于存算一体的深度学习模型终端优化部署方法,其特征在于,所述基于各所述分支处对应的最优执行顺序,将所述模型部署在预设终端上进行推理,包括:

3.根据权利要求2所述的基于存算一体的深度学习模型终端优化部署方法,其特征在于,所述当前裁剪类算子没有可交换的对象,包括:

4.根据权利要求1至2中任一项所述的基于存算一体的深度学习模型终端优化部署方法,其特征在于,所述分别计算所述当前分支处的每一个候选执行顺序中,生成各所述变量的算子对应的内存占用峰值,包括:

5.根据权利要求4所述的基于存算一体的深度学习模型终端优化部署方法,其特征在于,在所述将当前分支处的所有张量划分为常量和变量之前,还包括:

6.根据权利要求1至2中任一项所述的基于存算一体的深度学习模型终端优化部署方法,其特征在于,在所述将当前分支处的所有张量划分为常量和变量之后,还包括:

7.根据权利要求1至2中任一项所述的基于存算一体的深度学习模型终端优化部署方法,其特征在于,所述对训练好的模型进行解析,得到所述模型对应的计算图,包括:

8.根据权利要求7所述的基于存算一体的深度学习模型终端优化部署方法,其特征在于,所述预设的训练平台为tensorflow训练平台,所述预设格式为tflite格式。

9.一种电子设备,其特征在于,包括:

10.一种计算机可读存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至8中任一项所述的基于存算一体的深度学习模型终端优化部署方法。


技术总结
本申请的实施例涉及计算图优化设计技术领域,公开了一种基于存算一体的深度学习模型终端优化部署方法,该方法包括:对训练好的模型进行解析,得到所述模型对应的计算图;在计算图中确定模型所有的分支处,遍历各分支处,将当前分支处的所有张量划分为常量和变量;分别计算当前分支处的每一个候选执行顺序中,生成各变量的算子对应的内存占用峰值,并根据内存占用峰值分别确定当前分支处各候选执行顺序对应的内存占用总和,将内存占用总和最小的候选执行顺序确定为当前分支处的最优执行顺序;基于各分支处对应的最优执行顺序,将模型部署在预设终端上进行推理,从而在不影响模型处理精度的前提下,实现最小的内存占用,减少内存开销。

技术研发人员:郭斌,罗诗妍,刘思聪,王柱,梁韵基,於志文
受保护的技术使用者:西北工业大学
技术研发日:
技术公布日:2024/1/25
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1