CN115269204B - 一种用于神经网络编译的内存优化方法及装置 - Google Patents
一种用于神经网络编译的内存优化方法及装置 Download PDFInfo
- Publication number
- CN115269204B CN115269204B CN202211177784.6A CN202211177784A CN115269204B CN 115269204 B CN115269204 B CN 115269204B CN 202211177784 A CN202211177784 A CN 202211177784A CN 115269204 B CN115269204 B CN 115269204B
- Authority
- CN
- China
- Prior art keywords
- tensor
- graph
- variables
- nodes
- tensor variables
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Abstract
本发明公开了一种用于神经网络编译的内存优化方法和装置,包括如下步骤:步骤1、将神经网络编译为用于神经网络计算的计算图;步骤2、将计算图转换为拓扑图;步骤3、构建关于计算图包含变量生命周期的区间图;步骤4、分析关于计算图节点包含张量变量互相之间的生命周期的关系;本发明提供了一种面向神经网络编译生成的计算图中数据流的内存分配的优化方法,解决了深度学习操作系统在编译阶段为运行时流过计算图中各节点的张量变量预分配内存的问题。本发明提供了一种计算图各节点包含的张量变量之间生命周期关系的分析方法,并通过分析张量变量的生命周期关系提供了一种为计算图节点包含张量变量分配内存的优化方法。
Description
技术领域
本发明涉及基于特定计算模型的计算机技术领域,特别涉及一种用于神经网络编译的内存优化方法及装置。
背景技术
随着近几年自然语言处理领域超大模型的陆续发布,这些大模型在自然语言处理任务上出众的表现使得大模型越来越成为未来的发展趋势。但与之带来的挑战是训练超大模型所需的存储在人工智能硬件上已经无法得到解决,所以优化用于神经网络编译的内存技术变得极为重要。
发明内容
本发明的目的在于提供一种用于神经网络编译的内存优化方法及装置,以克服现有技术中的不足。
为实现上述目的,本发明提供如下技术方案:
本发明公开了一种用于神经网络编译的内存优化方法,包括如下步骤:
步骤1、将神经网络编译为用于神经网络计算的计算图;
步骤2、将计算图转换为拓扑图;
步骤3、构建关于计算图包含变量生命周期的区间图;
步骤4、分析关于计算图节点包含张量变量互相之间的生命周期的关系;
步骤5、将关于计算图节点包含张量变量之间生命周期存在虚边的张量变量进行合并;
步骤6、迭代地将超出空闲寄存器数量的未分配寄存器的张量变量缓存到内存中,并根据所述步骤5进行合并,直至所有超出空闲寄存器数量的未分配寄存器的张量变量全部缓存到内存中,进入下一步骤;
步骤7、将计算图所包含张量变量生命周期关系图中度小于寄存器数量的节点缓存栈中;
步骤8、将空闲寄存器分配给所述生命周期关系图中保留节点中所包含的未分配寄存器的张量变量;
步骤9、迭代地为栈中的节点所包含张量变量分配寄存器。
作为优选的,所述步骤2具体为:先将计算图的子图按照后序顺序进行排序,再将后序所得的子图序列进行逆序排序。
作为优选的,所述步骤4包括如下子步骤:
步骤4.1、将关于计算图节点包含的张量变量互相之间的生命周期存在重叠关系的张量变量采用实线互相连接;
步骤4.2、将关于计算图节点包含的张量变量互相之间的生命周期存在互不重叠关系,且存在赋值关系的张量变量采用虚线互相连接;
步骤4.3、将关于计算图节点包含的张量变量互相之间的生命周期互不重叠的张量变量不连边。
作为优选的,所述步骤6的具体子步骤如下:
步骤6.1、分析缓存到内存中的张量变量的生命周期;
步骤6.2、更新缓存张量变量之后计算图节点包含张量变量生命周期的关系图;
步骤6.3、将关于计算图节点包含张量变量之间生命周期存在虚边的张量变量进行合并;
步骤6.4、根据上述步骤6.1至步骤6.3,依次将所有超出空闲寄存器数量的未分配寄存器的张量变量全部缓存到内存中。
作为优选的,所述步骤6.2具体子步骤如下:
步骤6.2.1、将关于计算图节点包含张量变量之间生命周期的关系图中的超出空闲寄存器数量的未分配寄存器的张量变量的节点删除,然后将与所述节点的连边也同时删除;
步骤6.2.2、利用包含缓存张量变量的节点更新生命周期的关系图。
作为优选的,所述步骤7具体为:依次将所述生命周期关系图中度小于寄存器数量的节点转移到栈中,直至只剩余与空闲寄存器数量相等数量的包含张量变量的节点。
作为优选的,所述步骤9具体为:迭代地为缓存节点的栈中所包含的张量变量分配一个与所在所述生命周期的关系图中相邻节点不同的寄存器;所述为栈中缓存节点包含变量分配寄存器的顺序是按照栈中节点的出栈顺序依次进行张量变量的寄存器分配过程。
本发明公开了一种用于神经网络编译的内存优化装置,所述装置包括存储器和一个或多个处理器,所述存储器中存储有可执行代码,所述一个或多个处理器执行所述可执行代码时,用于实现上述用于神经网络编译的内存优化方法。
本发明的有益效果:本发明一种用于神经网络编译的内存优化方法及装置,提供了一种面向神经网络编译生成的计算图中数据流的内存分配的优化方法,解决了深度学习操作系统在编译阶段为运行时流过计算图中各节点的张量变量预分配内存的问题。本发明提供了一种计算图各节点包含的张量变量之间生命周期关系的分析方法,并通过分析张量变量的生命周期关系提供了一种为计算图节点包含张量变量分配内存的优化方法。本发明提出的用于神经网络编译的内存优化方法既提升了计算图将来在运行时的执行效率,也减少了张量变量对于深度学习操作系统内存资源的开销。所以本发明提出的借助分析张量变量之间生命周期关系,提供的为计算图节点包含张量变量预分配内存的方法优化了用于神经网络编译的计算图的数据流的内存,减少数据流中张量变量所需的内存开销,降低了大模型对于硬件内存资源的要求。本发明提高整个计算图的计算效率,节约硬件和时间成本。
附图说明
图1为将神经网络编译为用于神经网络计算的计算图;
图2为计算图的拓扑结构图;
图3为计算图包含变量的生命周期区间图;
图4为分析关于张量变量之间的生命周期的关系图;
图5为将关于计算图节点包含张量变量之间生命周期存在虚边的张量变量 r3和x合并示意图;
图6为将关于计算图节点包含张量变量之间生命周期存在虚边的张量变量r1和b合并示意图;
图7为分析将超出空闲寄存器数量的张量变量y缓存到内存中后的生命周期区间图;
图8为将已缓存到内存的张量变量的节点和与所述节点的连边删除示意图;
图9为利用包含缓存张量变量的节点更新生命周期的关系图;
图10为将关于计算图节点包含张量变量之间生命周期存在虚边的张量变量进行合并示意图;
图11为将超出空闲寄存器数量的张量变量z缓存到内存中后的生命周期区间图;
图12为将已缓存到内存的张量变量z的节点和与所述节点的连边删除示意图;
图13为利用包含缓存张量变量z的节点更新生命周期的关系图;
图14为将计算图节点包含张量变量之间生命周期存在虚边的张量变量z3进行合并示意图;
图15为将度小于寄存器数量3的节点转移到栈中的示意图;
图16为将为生命周期关系图中保留节点所含变量分配空闲寄存器示意图;
图17为将迭代地为缓存栈中节点所含变量分配寄存器示意图;
图18为本发明实施例一种用于神经网络编译的内存优化装置示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明了,下面通过附图及实施例,对本发明进行进一步详细说明。但是应该理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限制本发明的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本发明的概念。
本发明提供了一种用于神经网络编译的内存优化方法及装置,所述的一种用于神经网络编译的内存优化方法提供了一种面向神经网络编译生成的计算图中数据流的内存分配的优化方法,解决了深度学习操作系统在编译阶段为运行时流过计算图中各节点的张量变量预分配内存的问题。本发明提供了一种计算图各节点包含的张量变量之间生命周期关系的分析方法,并通过分析张量变量的生命周期关系提供了了一种为计算图节点包含张量变量分配内存的优化方法。本发明提出的用于神经网络编译的内存优化方法既提升了计算图将来在运行时的执行效率,也减少了张量变量对于深度学习操作系统内存资源的开销。研究人员和工程应用者开发算法模型的过程中,利用所述的一种用于神经网络编译的内存优化方法及装置优化模型,减少数据流中张量变量所需的内存开销,降低了大模型对于硬件内存资源的要求,推动了深度神经网络模型落地应用的发展。
本发明实施例提供一种用于神经网络编译的内存优化方法,包括如下步骤:
步骤1、将神经网络编译为用于神经网络计算的计算图,如图1所示;
步骤2、将计算图转换为拓扑图;
步骤3、构建关于计算图包含变量生命周期的区间图;
步骤4、分析关于计算图节点包含张量变量互相之间的生命周期的关系;
步骤5、将关于计算图节点包含张量变量之间生命周期存在虚边的张量变量进行合并;
步骤6、迭代地将超出空闲寄存器数量的未分配寄存器的张量变量缓存到内存中,并根据所述步骤5进行合并,直至所有超出空闲寄存器数量的未分配寄存器的张量变量全部缓存到内存中,进入下一步骤;
步骤7、将计算图所包含张量变量生命周期关系图中度小于寄存器数量的节点缓存栈中;
步骤8、将空闲寄存器分配给所述生命周期关系图中保留节点中所包含的未分配寄存器的张量变量;
步骤9、迭代地为栈中的节点所包含张量变量分配寄存器。
步骤2中将计算图转换为拓扑图。所述将计算图转换为拓扑图包括两个过程:
第一、先将计算图的子图按照后序顺序进行排序;
第二、将后序所得的子图序列进行逆序排序。如图2展示计算图的拓扑结构图。
对图中表达式进行解释:
x=a:表示将张量变量a赋予张量变量x;
if 表达式 goto Vi:表示判断表达式的值是否为真,如果为真,则执行Vi节点的计算流;否则执行其他分支节点的计算流;
tf.add(x,y):表示张量x与张量y进行相加操作;
tf.ones(a.shape):表示创建一个与张量a形状相同且所有元素都为1的张量;
goto Vi:表示进入执行Vi节点的计算流;
return:表示返回当前子图计算结果。
步骤3中构建关于计算图包含变量生命周期的区间图。所述构建关于计算图包含变量生命周期的区间图旨在从全局视角分析计算图拓扑结构中各个节点所含变量的生命周期,所述区间图可以直观地观察到计算图运行时的执行流按照拓扑顺序流经各个节点时所需要张量变量的生命周期的分布情况,因此借助生命周期区间图可以高效地分析拓扑结构图上所有张量变量互相之间关于生命周期的关系。如图3展示了计算图包含变量的生命周期区间图。
步骤4分析关于计算图节点包含张量变量互相之间的生命周期的关系。图4的右半边部分展示了分析关于张量变量之间的生命周期的关系图。所述分析关于计算图节点包含张量变量互相之间的生命周期的关系包含如下过程:
第一步、将关于计算图节点包含的张量变量互相之间的生命周期存在重叠关系的张量变量采用实线互相连接。所述将张量变量之间生命周期存在重叠关系的张量变量进行连边旨在分析全局张量变量的生命周期的关系。通过张量变量之间的连边情况判断两个张量变量是否存在生命周期互相冲突的情况,所述实线连边表示两个张量变量的生命周期存在互相冲突的关系。对于存在冲突关系的张量变量,需要将所述两个变量分配到不同的寄存器中。
第二步、将关于计算图节点包含的张量变量互相之间的生命周期存在互不重叠关系,且存在赋值关系的张量变量采用虚线互相连接。所述将张量变量之间生命周期存在存在互不重叠关系,且存在赋值关系的张量变量进行虚线连边旨在分析全局张量变量的生命周期的关系,通过张量变量之间的虚线连边情况判断两个张量变量是否存在生命周期互不冲突的情况,所述虚线连边表示所述两个张量变量的生命周期互相不冲突,并且所述张量变量之间存在赋值关系。对于生命周期不存在冲突关系而且存在赋值关系的两个张量变量,可以将所述两个张量变量进行合并,并且分配到相同的寄存器中。
第三步、将关于计算图节点包含的张量变量互相之间的生命周期互不重叠的张量变量不连边。所述将张量变量之间生命周期互不重叠的张量变量不进行连边旨在分析全局张量变量的生命周期的关系,通过张量变量之间没有连边的情况判断两个张量变量是否属于生命周期互不冲突的情况,所述两个张量变量没有连边的情况表示两个张量变量的生命周期互不重叠。对于生命周期不存在冲突关系的两个张量变量,可以将所述两个张量变量分配到相同的寄存器中,允许所述两个张量变量复用同一个寄存器。
步骤5将关于计算图节点包含张量变量之间生命周期存在虚边的张量变量进行合并。所述将关于计算图节点包含张量变量之间生命周期存在虚边的张量变量进行合并旨在考虑到两个生命周期互不冲突的张量变量且所述两个变量存在赋值关系,可以将所述两个张量变量分配到同一寄存器中,然后可以将所述两个张量之间的赋值指令删除。所以将所述张量变量生命周期关系图中存在虚边的张量进行合并。
图5展示了将关于计算图节点包含张量变量之间生命周期存在虚边的张量变量r3和x进行合并的过程,如图5中的(1)到(2)的过程。
图6展示了将关于计算图节点包含张量变量之间生命周期存在虚边的张量变量r1和b进行合并的过程,如图6中的(3)到(4)的过程
步骤6中迭代地将超出空闲寄存器数量的未分配寄存器的张量变量缓存到内存中,所述将超出空闲寄存器数量的未分配寄存器的张量变量缓存到内存中包含如下过程:
第一步、分析缓存到内存中的张量变量的生命周期;
第二步、更新缓存张量变量之后计算图节点包含张量变量生命周期的关系图。
所述迭代地将超出空闲寄存器数量的未分配寄存器的张量变量缓存到内存中旨在考虑到经过所述合并存在虚边张量变量的步骤已经分别将张量变量b和x分配到物理寄存器 r1和 r3中,所以不再对张量变量b和x进行寄存器分配操作了。所述计算图节点一共包含三个张量变量,需要三个寄存器,但是只剩下r2一个空闲寄存器。所以需要将张量变量y先存储到内存中。所述将超出空闲寄存器数量的未分配寄存器的张量变量y缓存到内存中包含如下过程:
第一步、分析缓存到内存中的张量变量的生命周期。图7展示了分析将超出空闲寄存器数量的张量变量 y 缓存到内存中后的生命周期区间图。
第二步、更新缓存张量变量之后计算图节点包含张量变量生命周期的关系图。所述更新缓存张量变量之后计算图节点包含张量变量生命周期的关系图包含如下两个过程:
第一、将所述关于计算图节点包含张量变量之间生命周期的关系图中表示张量变量 y 的节点删除,然后将与所述节点的连边也同时删除。图8展示了将已缓存到内存的张量变量y的节点和与所述节点的连边删除,如图8中的(5)到(6)的过程。
第二、利用包含缓存张量变量的节点更新生命周期的关系图。图9展示了所述利用包含缓存张量变量的节点更新生命周期的关系图过程:
(1) 构建计算图节点V2处包含的变量y1节点的连边。计算图节点V2处包含的变量y1与物理寄存器r1存在生命周期互相不冲突且存在赋值关系,所以构建包含变量y1与包含寄存器r1节点之间的虚线连边。所述变量y1与变量x存在生命周期相互冲突关系,所以构建包含变量y1与包含变量x节点之间的实线连边;
(2)构建计算图节点V3处包含的变量y2节点的连边。计算图节点V3处包含的变量y2与变量x存在生命周期相互冲突关系,所以构建包含变量y2与包含变量x节点之间的实线连边;
(3)构建计算图节点V5处包含的变量y3节点的连边。计算图节点V5处包含的变量y3与变量x和变量z都存在生命周期相互冲突关系,所以构建包含变量y3与包含变量x和变量z节点之间的实线连边;
(4)构建计算图节点V7处包含的变量y4节点的连边。计算图节点V7处包含的变量y4与变量x以及变量z和变量w都存在生命周期相互冲突关系,所以构建包含变量y4与包含变量x以及变量z和变量w节点之间的实线连边。
第三步、将关于计算图节点包含张量变量之间生命周期存在虚边的张量变量进行合并。如图10中(7)到(8)的过程。
对于存在超出空闲寄存器数量的未分配寄存器的张量变量情形,重复上述步骤。
所述步骤6所得的关于计算图节点包含变量之间生命周期关系图如图10所示,所述关系图表明包含变量w和z的两个节点相互之间存在连边,所以至少需要两个不同寄存器分配给所述变量w和z,但是只剩余一个空闲寄存器r2。由于物理寄存器r1和r3已经分别分配给张量变量y1、b和x。所以无法缓存张量变量y1、b和x到内存中了。所以需要将张量变量w和z二者之一缓存到内存中。由于与包含变量z的节点的连边较多,所以考虑优先将张量变量z缓存到内存中。所述将超出空闲寄存器数量的未分配寄存器的张量变量缓存到内存中包含如下过程:
第一步、分析缓存到内存中的张量变量的生命周期。图11展示了分析将超出空闲寄存器数量的张量变量 z缓存到内存中后的生命周期区间图。
第二步、更新缓存张量变量之后计算图节点包含张量变量生命周期的关系图。所述更新缓存张量变量之后计算图节点包含张量变量生命周期的关系图包含如下两个过程:
将所述关于计算图节点包含张量变量之间生命周期的关系图中表示张量变量 z的节点删除,然后将与所述节点的连边也同时删除。图12展示了将已缓存到内存的张量变量z的节点和与所述节点的连边删除,如图12中的(9)到(10)的过程。
利用包含缓存张量变量的节点更新生命周期的关系图。图13展示了所述利用包含缓存张量变量的节点更新生命周期的关系图过程:
(1) 构建计算图节点V4处包含的变量z1节点的连边。计算图节点V4处包含的变量z1与变量x存在生命周期相互冲突关系,所以构建包含变量z1与包含变量x节点之间的实线连边;
(2)构建计算图节点V9处包含的变量z2节点的连边。计算图节点V9处包含的变量z2与变量x存在生命周期相互冲突关系,所以构建包含变量z2与包含变量x节点之间的实线连边;
(3)构建计算图节点V11处包含的变量z3节点的连边。计算图节点V11处包含的变量z3与变量x存在生命周期相互冲突关系,所以构建包含变量z3与包含变量x节点之间的实线连边。而且变量z3与物理寄存器r1的生命周期不冲突且存在赋值关系,所以构建包含变量z3与包含物理寄存器r1节点之间的虚线连边;
第三步、将关于计算图节点包含张量变量之间生命周期存在虚边的张量变量进行合并。如图14中(11)到(12)的过程。
如上所述,直至所有超出空闲寄存器数量的未分配寄存器的张量变量全部缓存到内存中,进入下一步骤。
步骤7中将计算图所包含张量变量生命周期关系图中度小于寄存器数量的节点转移到栈中。所述将计算图所包含张量变量生命周期关系图中度小于寄存器数量的节点转移到栈中的过程具体为:依次将所述生命周期关系图中度小于寄存器数量的节点转移到栈中,直至只剩余与空闲寄存器数量相等数量的包含张量变量的节点。图15展示了将度小于寄存器数量的节点转移到栈中的过程。
步骤8中将为生命周期关系图保留节点所包含的变量分配空闲寄存器。所述将为生命周期关系图保留节点所包含的变量分配空闲寄存器包含如下过程:将空闲寄存器分配给所述生命周期关系图中保留节点中所包含的未分配寄存器的张量变量。图16展示了将为生命周期关系图中保留节点所含变量w分配空闲寄存器r2。
步骤9中迭代地为栈中的节点所包含张量变量分配寄存器。所述迭代地为栈中的节点所包含张量变量分配寄存器具体过程为:迭代地为缓存节点的栈中所包含的张量变量分配一个与所在所述生命周期的关系图中相邻节点不同的寄存器。所述为栈中缓存节点包含变量分配寄存器的顺序是按照栈中节点的出栈顺序依次进行张量变量的寄存器分配过程。
图17展示了将迭代地为缓存栈中节点所含变量分配寄存器的过程。所述栈中缓存节点所包含的张量变量均与物理寄存器r1和r2没有连边,所以可以为栈中全部张量变量分配寄存器 r1和r2中的任意一个寄存器。如图16展示了将为栈中全部张量变量分配寄存器r1的过程。
参见图18,本发明实施例还提供了一种用于神经网络编译的内存优化装置,还包括存储器和一个或多个处理器,存储器中存储有可执行代码,所述一个或多个处理器执行所述可执行代码时,用于实现上述实施例中的用于神经网络编译的内存优化方法。
本发明一种用于神经网络编译的内存优化装置的实施例可以应用在任意具备数据处理能力的设备上,该任意具备数据处理能力的设备可以为诸如计算机等设备或装置。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在任意具备数据处理能力的设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图18所示,为本发明一种用于神经网络编译的内存优化装置所在任意具备数据处理能力的设备的一种硬件结构图,除了图18所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的任意具备数据处理能力的设备通常根据该任意具备数据处理能力的设备的实际功能,还可以包括其他硬件,对此不再赘述。上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本发明方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本发明实施例还提供一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时,实现上述实施例中的用于神经网络编译的内存优化方法。
所述计算机可读存储介质可以是前述任一实施例所述的任意具备数据处理能力的设备的内部存储单元,例如硬盘或内存。所述计算机可读存储介质也可以是任意具备数据处理能力的设备的外部存储设备,例如所述设备上配备的插接式硬盘、智能存储卡(Smart Media Card,SMC)、SD卡、闪存卡(Flash Card)等。进一步的,所述计算机可读存储介质还可以既包括任意具备数据处理能力的设备的内部存储单元也包括外部存储设备。所述计算机可读存储介质用于存储所述计算机程序以及所述任意具备数据处理能力的设备所需的其他程序和数据,还可以用于暂时地存储已经输出或者将要输出的数据。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换或改进等,均应包含在本发明的保护范围之内。
Claims (7)
1.一种用于神经网络编译的内存优化方法,其特征在于:包括如下步骤:
步骤1、将神经网络编译为用于神经网络计算的计算图;
步骤2、将计算图转换为拓扑图;
步骤3、构建关于计算图包含变量生命周期的区间图;
步骤4、分析关于计算图节点包含张量变量互相之间的生命周期的关系,具体如下:
步骤4.1、将关于计算图节点包含的张量变量互相之间的生命周期存在重叠关系的张量变量采用实线互相连接,采用实线连接表示这些张量变量的生命周期存在互相冲突的关系,对于存在冲突关系的张量变量,将其分别分配到不同的寄存器中;
步骤4.2、将关于计算图节点包含的张量变量互相之间的生命周期存在互不重叠关系,且存在赋值关系的张量变量采用虚线互相连接,采用虚线互相连接表示这些张量变量的生命周期互相不冲突,并且存在赋值关系,将采用虚线互相连接的两个张量变量进行合并,并且分配到相同的寄存器中;
步骤4.3、将关于计算图节点包含的张量变量互相之间的生命周期互不重叠的张量变量不连边,两个张量变量不连边表示两个张量变量的生命周期互不重叠,其生命周期也不存在冲突关系,对于不连边的张量变量可分配到相同的寄存器中,允许张量变量复用同一个寄存器;
步骤5、将关于计算图节点包含张量变量之间生命周期存在虚边的张量变量进行合并;
步骤6、迭代地将超出空闲寄存器数量的未分配寄存器的张量变量缓存到内存中,并根据所述步骤5进行合并,直至所有超出空闲寄存器数量的未分配寄存器的张量变量全部缓存到内存中,进入下一步骤;
步骤7、将计算图所包含张量变量生命周期关系图中度小于寄存器数量的节点缓存栈中;
步骤8、将空闲寄存器分配给所述生命周期关系图中保留节点中所包含的未分配寄存器的张量变量;
步骤9、迭代地为栈中的节点所包含张量变量分配寄存器。
2.如权利要求1所述的一种用于神经网络编译的内存优化方法,其特征在于:所述步骤2具体为:先将计算图的子图按照后序顺序进行排序,再将后序所得的子图序列进行逆序排序。
3.如权利要求1所述的一种用于神经网络编译的内存优化方法,其特征在于:所述步骤6的具体子步骤如下:
步骤6.1、分析缓存到内存中的张量变量的生命周期;
步骤6.2、更新缓存张量变量之后计算图节点包含张量变量生命周期的关系图;
步骤6.3、将关于计算图节点包含张量变量之间生命周期存在虚边的张量变量进行合并;
步骤6.4、根据上述步骤6.1至步骤6.3,依次将所有超出空闲寄存器数量的未分配寄存器的张量变量全部缓存到内存中。
4.如权利要求3所述的一种用于神经网络编译的内存优化方法,其特征在于:所述步骤6.2具体子步骤如下:
步骤6.2.1、将关于计算图节点包含张量变量之间生命周期的关系图中的超出空闲寄存器数量的未分配寄存器的张量变量的节点删除,然后将与所述节点的连边也同时删除;
步骤6.2.2、利用包含缓存张量变量的节点更新生命周期的关系图。
5.如权利要求1所述的一种用于神经网络编译的内存优化方法,其特征在于:所述步骤7具体为:依次将所述生命周期关系图中度小于寄存器数量的节点转移到栈中,直至只剩余与空闲寄存器数量相等数量的包含张量变量的节点。
6.如权利要求1所述的一种用于神经网络编译的内存优化方法,其特征在于:所述步骤9具体为:迭代地为缓存节点的栈中所包含的张量变量分配一个与所在所述生命周期的关系图中相邻节点不同的寄存器;所述为栈中缓存节点包含变量分配寄存器的顺序是按照栈中节点的出栈顺序依次进行张量变量的寄存器分配过程。
7.一种用于神经网络编译的内存优化装置,其特征在于:所述装置包括存储器和一个或多个处理器,所述存储器中存储有可执行代码,所述一个或多个处理器执行所述可执行代码时,用于实现权利要求1-6任一项所述用于神经网络编译的内存优化方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211177784.6A CN115269204B (zh) | 2022-09-27 | 2022-09-27 | 一种用于神经网络编译的内存优化方法及装置 |
PCT/CN2022/124003 WO2024065867A1 (zh) | 2022-09-27 | 2022-10-09 | 一种用于神经网络编译的内存优化方法及装置 |
US17/992,822 US20240104341A1 (en) | 2022-09-27 | 2022-11-22 | Memory optimization method and apparatus for neural network compilation |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211177784.6A CN115269204B (zh) | 2022-09-27 | 2022-09-27 | 一种用于神经网络编译的内存优化方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115269204A CN115269204A (zh) | 2022-11-01 |
CN115269204B true CN115269204B (zh) | 2022-12-30 |
Family
ID=83757090
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211177784.6A Active CN115269204B (zh) | 2022-09-27 | 2022-09-27 | 一种用于神经网络编译的内存优化方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN115269204B (zh) |
WO (1) | WO2024065867A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115878332B (zh) * | 2023-02-14 | 2023-05-26 | 北京燧原智能科技有限公司 | 深度学习网络中的内存资源分配方法、装置、设备及介质 |
CN117093509B (zh) * | 2023-10-18 | 2024-01-26 | 上海为旌科技有限公司 | 一种基于贪婪算法的片上内存地址分配方法和系统 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110955529A (zh) * | 2020-02-13 | 2020-04-03 | 北京一流科技有限公司 | 内存资源静态部署系统及方法 |
CN112199190A (zh) * | 2020-07-31 | 2021-01-08 | 厦门星宸科技有限公司 | 内存分配方法、装置、存储介质及电子设备 |
WO2021056389A1 (en) * | 2019-09-27 | 2021-04-01 | Intel Corporation | Methods and apparatus to process machine learning model in web-browser environment |
WO2022002021A1 (zh) * | 2020-06-29 | 2022-01-06 | 北京一流科技有限公司 | 静态网络中的内存空间预配系统及其方法 |
CN114186687A (zh) * | 2022-02-17 | 2022-03-15 | 之江实验室 | 一种面向神经网络模型计算的中间表示方法和装置 |
CN114358267A (zh) * | 2022-01-05 | 2022-04-15 | 浙江大学 | 一种降低深度神经网络训练过程中gpu内存占用的方法 |
CN114936099A (zh) * | 2022-07-25 | 2022-08-23 | 之江实验室 | 一种用于神经网络计算的图优化方法和装置 |
WO2022178660A1 (zh) * | 2021-02-23 | 2022-09-01 | 华为技术有限公司 | 一种数据处理方法、装置、设备及介质 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10685295B1 (en) * | 2016-12-29 | 2020-06-16 | X Development Llc | Allocating resources for a machine learning model |
CN110597616B (zh) * | 2018-06-13 | 2022-07-29 | 华为技术有限公司 | 一种神经网络的内存分配方法及装置 |
CN111078395B (zh) * | 2019-11-12 | 2023-06-20 | 华中科技大学 | 一种基于张量的深度学习gpu内存管理优化方法及系统 |
CN114995823A (zh) * | 2022-06-07 | 2022-09-02 | 重庆大学 | 一种面向cnn专用加速器的深度学习编译器优化方法 |
-
2022
- 2022-09-27 CN CN202211177784.6A patent/CN115269204B/zh active Active
- 2022-10-09 WO PCT/CN2022/124003 patent/WO2024065867A1/zh unknown
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021056389A1 (en) * | 2019-09-27 | 2021-04-01 | Intel Corporation | Methods and apparatus to process machine learning model in web-browser environment |
CN110955529A (zh) * | 2020-02-13 | 2020-04-03 | 北京一流科技有限公司 | 内存资源静态部署系统及方法 |
WO2022002021A1 (zh) * | 2020-06-29 | 2022-01-06 | 北京一流科技有限公司 | 静态网络中的内存空间预配系统及其方法 |
CN112199190A (zh) * | 2020-07-31 | 2021-01-08 | 厦门星宸科技有限公司 | 内存分配方法、装置、存储介质及电子设备 |
WO2022178660A1 (zh) * | 2021-02-23 | 2022-09-01 | 华为技术有限公司 | 一种数据处理方法、装置、设备及介质 |
CN114358267A (zh) * | 2022-01-05 | 2022-04-15 | 浙江大学 | 一种降低深度神经网络训练过程中gpu内存占用的方法 |
CN114186687A (zh) * | 2022-02-17 | 2022-03-15 | 之江实验室 | 一种面向神经网络模型计算的中间表示方法和装置 |
CN114936099A (zh) * | 2022-07-25 | 2022-08-23 | 之江实验室 | 一种用于神经网络计算的图优化方法和装置 |
Non-Patent Citations (2)
Title |
---|
基于改进图染色算法的ASIP寄存器分配器;任坤等;《浙江大学学报(工学版)》;20101215(第12期);全文 * |
深度学习中的内存管理问题研究综述;马玮良等;《大数据》;20200715(第04期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN115269204A (zh) | 2022-11-01 |
WO2024065867A1 (zh) | 2024-04-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115269204B (zh) | 一种用于神经网络编译的内存优化方法及装置 | |
CN114186687B (zh) | 一种面向神经网络模型计算的中间表示方法和装置 | |
Abadi et al. | Tensorflow: Large-scale machine learning on heterogeneous distributed systems | |
WO2022068663A1 (zh) | 内存分配方法、相关设备及计算机可读存储介质 | |
CN111104120B (zh) | 神经网络编译方法、系统及相应异构计算平台 | |
CN114936099B (zh) | 一种用于神经网络计算的图优化方法和装置 | |
CN115033391B (zh) | 一种用于神经网络计算的数据流动方法和装置 | |
JPH09171503A (ja) | 並列処理方法および並列処理装置 | |
CA2994420C (en) | Data processing graph compilation | |
Jeon et al. | Parallel exact inference on a CPU-GPGPU heterogenous system | |
US11579924B2 (en) | Scheduling artificial intelligence model partitions based on reversed computation graph | |
CN111831285B (zh) | 一种面向内存计算平台的代码转换方法、系统及应用 | |
Bonfietti et al. | Maximum-throughput mapping of SDFGs on multi-core SoC platforms | |
CN113407343A (zh) | 一种基于资源分配的业务处理方法、装置及设备 | |
CN115268936B (zh) | 一种用于计算图编译的优化方法及装置 | |
CN115269205B (zh) | 一种面向神经网络计算的内存优化方法和装置 | |
US20240104016A1 (en) | Intermediate Representation Method and Apparatus for Compiling Computation Graphs | |
US20240104395A1 (en) | Memory optimization method and device oriented to neural network computing | |
US11915135B2 (en) | Graph optimization method and apparatus for neural network computation | |
CN115268877B (zh) | 一种用于图计算并行执行的中间表示方法及装置 | |
CN114579183B (zh) | 一种用于分布式计算的作业分解处理方法 | |
CN116578301A (zh) | 基于有向无环图的算子分组方法、计算方法和计算系统 | |
WO2024087844A1 (zh) | 图神经网络的训练方法、训练系统及异常账号识别方法 | |
Hudak | Distributed applicative processing systems: Project goals, motivation, and status report | |
CN115269016A (zh) | 一种用于图计算的指令执行方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |