神经网络模型的内存管理方法及系统、电子设备与流程
- 国知局
- 2024-11-21 12:15:53
本发明涉及神经网络学习的,具体而言,涉及一种神经网络模型的内存管理方法及系统、电子设备。
背景技术:
1、随着科学技术的不断发展,神经网络学习在计算机视觉、图像或语音识别、自然语言处理等领域也取得突破性进展。在神经网络模型的应用中,越来越多的神经网络学习算法需要部署到资源受限的嵌入式设备上。
2、但发明人发现,大模型(具有大规模参数和复杂计算结构的神经网络模型)在资源受限的嵌入式设备中会受到算力和ddr(double data rate,双倍数据传输速率)存储的影响,使得在资源受限的嵌入式设备中,具有较多层数的神经网络模型在应用中面临一些技术挑战。
3、例如,具有较多层数的神经网络模型会需要大量的计算资源,而使得推理速度较慢;以及,深层的神经网络模型会需要更多的内存以存储参数和中间计算结果,而由于嵌入式设备的内存有限,存在可能无法容纳大型模型的问题。
技术实现思路
1、本发明提供了一种神经网络模型的内存管理方法及系统、电子设备,用于解决神经网络模型在进行算子执行过程中嵌入式设备的内存有限的问题。
2、根据本发明的一方面,本发明提供了一种神经网络模型的内存管理方法,该内存管理方法包括:构建神经网络模型的目标有向图,目标有向图包括多个算子和多条有向边;向目标设备获取一个连续的内存区域;对连续的内存区域进行分区管理,以得到多个内存分区,多个内存分区至少包括第一内存分区、第二内存分区和第三内存分区;基于多个内存分区对目标有向图中算子的执行数据进行内存预分配。
3、根据本发明的一些实施例,算子的执行数据包括参数数据,基于多个内存分区对目标有向图中算子的执行数据进行内存预分配包括:确定算子在算子执行过程中的所有参数数据的大小;根据所有参数数据的大小确定总需内存;基于总需内存在第一内存分区中相对应地分配一个的连续的内存区域。
4、根据本发明的一些实施例,内存管理方法还包括:对存放在第一内存分区的参数数据进行重排,以将参数数据的相关参数信息保存至第一内存分区;将相关参数信息在第一内存分区中的内存偏移值保存至外部存储区域中,以使得外部存储区域中包含参数数据在第一内存分区中的位置相关信息。
5、根据本发明的一些实施例,算子的执行数据包括输入或输出数据,基于多个内存分区对目标有向图中算子的执行数据进行内存预分配包括:基于输入或输出数据分配一个具有第一预设字节的第一内存;对第一内存进行内存对齐得到第二内存;基于管理第三内存分区的空闲内存块确定出是否存在满足第二内存的最小内存;在存在满足第二内存的最小内存的情况下,在空闲内存块中确定出最小内存;判断最小内存与第二内存的差值是否大于第一预设阈值;在最小内存与第二内存的差值大于第一预设阈值的情况下,对最小内存进行切分,以将切分后的内存区域加入空闲内存块中;将分配给最小内存的内存区域加入至已用内存块中;在最小内存与第二内存的差值不大于第一预设阈值的情况下,直接将分配给最小内存的内存区域加入至已用内存块中。
6、根据本发明的一些实施例,在不存在满足第二内存的最小内存的情况下,内存管理方法还包括:调用预设接口向目标设备获取扩容内存;将扩容内存的内存信息输入至预设哈希表中;判断扩容内存与第二内存的差值是否大于第二预设阈值;在扩容内存与第二内存的差值大于第二预设阈值的情况下,将扩容内存切分为第二内存大小后,将切分后的内存区域加入空闲内存块中;将所切分的第二内存的内存区域加入至已用内存块中;在扩容内存与第二内存的差值不大于第二预设阈值的情况下,直接将所切分的第二内存的内存区域加入至已用内存块中。
7、根据本发明的一些实施例,内存管理方法包括:基于多个内存分区对目标有向图中算子的输入数据进行内存释放,包括:确定算子的输入数据的引用计数;对算子完成算子执行后,对引用计数进行单位性递减;遍历算子的引用计数,将引用计数为0的输入数据进行内存释放,并将所释放的内存归还至第三内存分区。
8、根据本发明的一些实施例,内存管理方法包括:基于多个内存分区对目标有向图中第一类型算子的输出数据进行内存优化,包括:将第一类型算子的输出数据直接复用第一类型算子的输入数据的内存;其中,第一类型算子为输出数据直接来自输入数据的算子类型。
9、根据本发明的一些实施例,内存管理方法包括:基于多个内存分区对目标有向图中第二类型算子的输出数据进行内存优化,包括:将第二类型算子的输出数据与其它所有算子的输出数据分配一个总的内存;其中,第二类型算子为输入数据来自多个算子的输出数据的算子类型。
10、根据本发明的另一方面,本发明提供了一种神经网络模型的内存管理系统,包括图构建模块、内存处理模块和内存管理模块。图构建模块构建神经网络模型的目标有向图,目标有向图包括多个算子和多条有向边;内存处理模块向目标设备获取一个连续的内存区域,对连续的内存区域进行分区管理,以得到多个内存分区,多个内存分区至少包括第一内存分区、第二内存分区和第三内存分区;内存管理模块基于多个内存分区对目标有向图中算子的执行数据进行内存预分配。
11、根据本发明的又一方面,本发明还提供了一种电子设备。电子设备包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当一个或多个程序被一个或多个处理器执行时,使得一个或多个处理器,能够实现如上文所述的内存管理方法。
12、根据本发明的又一方面,本发明还提供了一种非易失性计算机可读存储介质。该存储介质上存储有计算机程序,该计算机程序被处理器执行时能够实现如上文所述的内存管理方法。
13、本发明通过构建神经网络模型的目标有向图,并对目标有向图在算子执行过程中的内存池进行分区管理,根据算子的执行数据预分配相应的内存区域,可以在算子执行过程中,向特定的内存区域进行内存申请和释放,可以减少频繁调用设备内存进行内存分配/释放的系统函数的开销,从而可以提高神经网络模型的推理速度和性能。
技术特征:1.一种神经网络模型的内存管理方法,其特征在于,包括:
2.根据权利要求1所述的内存管理方法,其特征在于,所述算子的执行数据包括参数数据,所述基于所述多个内存分区对所述目标有向图中算子的执行数据进行内存预分配包括:
3.根据权利要求2所述的内存管理方法,其特征在于,所述内存管理方法还包括:
4.根据权利要求1所述的内存管理方法,其特征在于,所述算子的执行数据包括输入或输出数据,所述基于所述多个内存分区对所述目标有向图中算子的执行数据进行内存预分配包括:
5.根据权利要求4所述的内存管理方法,其特征在于,在不存在满足所述第二内存的最小内存的情况下,所述内存管理方法还包括:
6.根据权利要求1所述的内存管理方法,其特征在于,所述内存管理方法包括:
7.根据权利要求1所述的内存管理方法,其特征在于,所述内存管理方法包括:
8.根据权利要求1所述的内存管理方法,其特征在于,所述内存管理方法包括:
9.一种神经网络模型的内存管理系统,其特征在于,所述内存管理系统用于执行如权利要求1-8任一所述的内存管理方法,所述内存管理系统包括:
10.一种电子设备,其特征在于,包括:
技术总结本发明提供了一种神经网络模型的内存管理方法及系统、电子设备,涉及神经网络学习的技术领域。所述内存管理方法包括:构建神经网络模型的目标有向图,目标有向图包括多个算子和多条有向边;向目标设备获取一个连续的内存区域;对连续的内存区域进行分区管理,以得到多个内存分区,多个内存分区至少包括第一内存分区、第二内存分区和第三内存分区;基于多个内存分区对目标有向图中算子的执行数据进行内存预分配。本发明提供的内存管理方法,可以减少调用设备内存进行内存分配或释放的系统函数的开销,可以提高神经网络模型的推理速度和性能。技术研发人员:丁勇,蔡权雄,牛昕宇受保护的技术使用者:深圳鲲云信息科技有限公司技术研发日:技术公布日:2024/11/18本文地址:https://www.jishuxx.com/zhuanli/20241120/335063.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。
下一篇
返回列表