CN116107754A - 一种面向深度神经网络的内存管理方法及系统 - Google Patents
一种面向深度神经网络的内存管理方法及系统 Download PDFInfo
- Publication number
- CN116107754A CN116107754A CN202310161062.XA CN202310161062A CN116107754A CN 116107754 A CN116107754 A CN 116107754A CN 202310161062 A CN202310161062 A CN 202310161062A CN 116107754 A CN116107754 A CN 116107754A
- Authority
- CN
- China
- Prior art keywords
- tensor
- memory
- neural network
- deep neural
- recalculation
- 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.)
- Pending
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/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- 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
-
- 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
- G06N3/084—Backpropagation, e.g. using gradient descent
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- Biophysics (AREA)
- General Engineering & Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- General Physics & Mathematics (AREA)
- Biomedical Technology (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Neurology (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种面向深度神经网络的内存管理方法及系统,属于数据存储技术领域,根据深度神经网络的计算图、一次迭代所处理的样本量以及硬件参数对重计算和内存交换两种方法所消耗的内存和计算资源进行预估比较,对不同的张量选择开销更低的方法。本发明基于张量粒度进行内存管理,允许不同的决策在张量访问时触发,在显存容量有限的情况下,减少了训练深度神经网络的显存占用,增加了一次迭代所处理的样本量,提高了内存的利用率,大大减少了深度神经网络的整体训练时间。此外,在训练过程中,本发明还将存储状态为内存交换状态和写入显存状态的张量分别放置在不同的存储块中,以避免由于内存交换带来的内存碎片问题。
Description
技术领域
本发明属于数据存储技术领域,更具体地,涉及一种面向深度神经网络的内存管理方法及系统。
背景技术
深度神经网络(DNN)广泛用于许多机器学习任务,例如计算机视觉、自然语言处理等。为了获得更高的训练准确度,用于训练的DNN模型层数越来越深,规模越来越大。现有的GPU内存大小无法满足常用的DNN模型训练所需的存储开销,通常只能通过减小批量大小的方法完成训练,而这不仅会造成训练时间的增长,也会大大降低GPU的利用率。
在深度学习的训练过程中,内存占用主要包括特征图、梯度图、卷积工作空间和权重。其中,权重占比小,梯度图和卷积工作空间会在当前的计算完成后立即释放,而特征图占比大且会在显存中驻留较长的时间,因此,现有的工作主要对特征图(即张量)的显存占用进行优化。
现有的工作主要通过重计算和内存交换的方式,在前向传播过程中释放部分处于空闲状态的张量的内存,并在反向传播过程中重新生成该张量。但现有的工作是基于神经网络不同层的特点选择重计算和内存交换的方式,而对于相同类型的层,会产生大小不同的张量,这使得以上粗粒度的决策并不是最佳决策,限制了内存使用的优化空间。而在进行内存交换的过程中,由于将部分张量转移到主存中存储,在显存中便会产生大量的内存碎片,使得通过内存交换释放的内存在之后的训练过程中并不能得到很好的利用,降低了显存的利用率,深度神经网络的整体训练时间较慢。
发明内容
针对现有技术的以上缺陷或改进需求,本发明提供了一种面向深度神经网络的内存管理方法及系统,其目的在于,在显存容量有限的情况下,减少训练深度神经网络的显存占用,增加一次迭代所处理的样本量,提高了内存的利用率,以减少深度神经网络的整体训练时间。
为了实现上述目的,第一方面,本发明提供了一种面向深度神经网络的内存管理方法,包括:
若训练深度神经网络所需的显存容量大于所提供的显存容量,则:
在训练前执行以下操作:
A1、将深度神经网络的每个张量的存储状态均设置为写入显存状态,并记深度神经网络所有张量所构成的集合为张量集;
A2、基于张量集中各张量的数据依赖关系,计算得到张量集中每一个张量的重计算时间;获取张量集中逐出时间最大的张量、以及大小与其重计算时间的比值最大的张量,若前者的生成开销小于后者的生成开销,则将前者的存储状态置为内存交换状态,并将其从张量集中移出;否则,将后者的存储状态置为重计算状态,并将其从张量集中移出;
A3、更新张量集中各张量的数据依赖关系,重复步骤A2-A3进行迭代,直至训练深度神经网络所需的显存容量小于或等于所提供的显存容量;
在训练过程中:对于存储状态为写入显存状态的张量,在前向传播过程中将其存储在显存中;对于存储状态为内存交换状态的张量,在前向传播过程中将其转移到主存中,并在反向传播访问该张量前将其从主存中预取到显存中;对于存储状态为重计算状态的张量,在前向传播过程中不存储该张量,而在反向传播访问该张量前,在显存中根据数据依赖关系重新计算该张量;
其中,张量的逐出时间为在所提供的显存容量大于训练深度神经网络所需的显存容量的条件下对深度神经网络进行训练时,张量前向传播被访问到反向传播被访问的时间间隔与张量的传输时间之差;前者的生成开销为张量大小与PCIe带宽的比值;后者的生成开销为张量的重计算时间。
进一步优选地,张量的传输时间为在所提供的显存容量大于训练深度神经网络所需的显存容量的条件下对深度神经网络进行训练时的将张量卸载到主存的时间与从主存预取张量的时间之和。
进一步优选地,张量的重计算时间基于张量集中数据依赖关系,通过对其所依赖的各张量的计算时间相加得到。
进一步优选地,在训练过程中:在显存中分配两个存储块,分别记为默认存储块和交换存储块;
对于存储状态为写入显存状态的张量,在前向传播过程中将其存储在默认存储块中;对于存储状态为内存交换状态的张量,在前向传播过程中将其写入到交换存储块中,并在PCIe资源空闲时将其从交换存储块转移到主存中,在反向传播访问张量前,在PCIe资源空闲时将其转移到交换存储块中;对于存储状态为重计算状态的张量,在前向传播过程中不存储该张量,而在反向传播访问该张量前,在显存中根据数据依赖关系重新计算该张,并存储在默认存储块中。
进一步优选地,上述步骤A2包括:
基于张量集中各张量的数据依赖关系,计算得到张量集中每一个张量的重计算时间;计算张量集中每一个张量的大小与其重计算时间的比值,得到每一个张量所对应的单位时间释放内存;
对张量集中的张量按照其逐出时间从大到小进行排序,得到内存交换优先序列;对张量集中的张量按照所对应的单位时间释放内存从大到小进行排序,得到重计算优先序列;
获取内存交换优先序列和重计算优先序列中的第一个张量,并对二者的生成开销进行比较,若前者小于后者,则将前者的存储状态置为内存交换状态,并将其从张量集中移出;否则,将后者的存储状态置为重计算状态,并将其从张量集中移出。
进一步优选地,上述内存管理方法还包括:在步骤A1之前执行的步骤A0,具体包括:在所提供的显存容量大于训练深度神经网络所需的显存容量的条件下对深度神经网络进行训练,并记录各个张量的访问时间、计算时间以及大小。
进一步优选地,上述深度神经网络为用于图像处理或自然语音处理的深度神经网络。
第二方面,本发明提供了一种面向深度神经网络的内存管理系统,包括:存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时执行本发明第一方面所提供的内存管理方法。
第三方面,本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序被处理器运行时控制所述存储介质所在设备执行本发明第一方面所提供的内存管理方法。
总体而言,通过本发明所构思的以上技术方案,能够取得以下有益效果:
1、本发明提供了一种面向深度神经网络的内存管理方法,根据深度神经网络的计算图、一次迭代所处理的样本量以及硬件参数对重计算和内存交换两种方法所消耗的内存和计算资源进行预估比较,对不同的张量选择开销更低的方法。由于在开销排序时会考虑到张量大小(对显存的占用)和计算时间(整体训练时间)两个因素,但重计算和内存交换两种方法对于这两者的影响因素的排序方式是不同的,无法通过统一的标准进行直接的排序比较,因此为了实现上述目的,本发明整体将训练时间作为优先的优化指标,对排序后的张量使用反向传播时重新生成该张量的时间进行选择,在具体操作上,本发明根据张量的大小和硬件的参数对张量的逐出时间和单位时间释放的内存(张量大小与其重计算时间的比值)进行预估,从而得到内存交换方法下和重计算方法下对显存容量影响最大的两个张量,即逐出时间最大的张量和单位时间释放的内存最大的张量,通过比较重新生成(重新计算或预取)这两个张量的时间开销,选择开销更低的方法对张量进行处理;本发明基于张量粒度进行内存管理,允许不同的决策在张量访问时触发,在显存容量有限的情况下,减少了训练深度神经网络的显存占用,增加了一次迭代所处理的样本量,提高了内存的利用率,大大减少了深度神经网络的整体训练时间。
2、进一步地,在训练过程中,由于内存交换会导致内存碎片问题,被逐出张量所释放的块不一定能够在之后的训练过程中分配使用,为了进一步解决内存交换带来的内存碎片的技术问题,本发明所提供的内存管理方法,对存储状态为内存交换状态的张量与存储状态为写入显存状态的张量分别实施不同的放置策略,通过将二者分别放置在不同的存储块中,有效地避免了由于内存交换所带来的内存碎片问题,进一步地提升了内存利用率。
附图说明
图1为本发明实施例1提供的面向深度神经网络的内存管理方法示意图;
图2为本发明实施例1提供的内存交换开销排序方法示意图;
图3为本发明实施例1提供的碎片解决方法示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
为了解决深度神经网络训练过程中的内存不足的问题,通常使用重计算和内存交换方法,具体做法包括:重计算方法为在前向传播时不将张量写入显存,而在反向传播访问张量前根据数据依赖关系重新计算张量;内存交换方法为在前向传播过程中将张量转移到主存中,而在反向传播访问张量前从主存中预取到显存中。
由于这两种方法会产生不同的开销:重计算方法在反向传播过程中对张量进行重新计算,需要额外的计算资源;内存交换方法在反向传播时需要占用主存到显存的PCIe通道。因此,本发明在显存容量不足时,选择性地选择重计算和内存交换方法对训练中每次迭代的中间数据进行处理;通过对两种方法的开销进行比较,选择开销更低的方法对张量进行处理。下面结合具体实施例对本本发明所提供的面向深度神经网络的内存管理方法进行详述:
实施例1、
本实施例所提供的一种面向深度神经网络的内存管理方法,包括:
若训练深度神经网络所需的显存容量大于所提供的显存容量,则:
在训练前执行以下操作:
A1、将深度神经网络的每个张量的存储状态均设置为写入显存状态,并记深度神经网络所有张量所构成的集合为张量集;
A2、基于张量集中各张量的数据依赖关系,计算得到张量集中每一个张量的重计算时间;获取张量集中逐出时间最大的张量、以及张量大小与其重计算时间的比值最大的张量,若前者的生成开销小于后者的生成开销,则将前者的存储状态置为内存交换状态,并将其从张量集中移出;否则,将后者的存储状态置为重计算状态,并将其从张量集中移出;
由于在排序时会考虑到两个因素,一个是张量大小(对显存的占用),一个是计算时间(整体训练时间),但重计算和内存交换两种方法对于这两者影响因素的排序方法是不一样的,因此,本发明进行选择时需要统一比较的标准,即根据反向传播时重新生成该张量的时间来选择,以实现在花很少的时间重新生成张量的前提下,尽可能多地减少内存占用的目的;例如,一个张量的计算时间很短,但它本身的大小很小,那对它进行内存交换或重计算的性价比不高,因为本发明的主要目的是减少内存占用,其次是在减少内存占用的同时尽量减少训练的时间。
需要说明的是,写入显存状态、重计算状态和内存交换状态的可以有多种表示方式。本实施例中,写入显存状态用存储标志位0来表示;重计算状态用存储标志位1来表示;内存交换状态用存储标志位2来表示。
优选地,在一种可选实施方式下,如图1所示,上述步骤A2包括:
基于张量集中各张量的数据依赖关系,计算得到张量集中每一个张量的重计算时间;计算张量集中每一个张量的大小与其重计算时间的比值,得到每一个张量所对应的单位时间释放内存;
对张量集中的张量按照其逐出时间从大到小进行排序,得到内存交换优先序列;对张量集中的张量按照所对应的单位时间释放内存从大到小进行排序,得到重计算优先序列;
将内存交换优先序列和重计算优先序列的首个张量在反向传播阶段的生成开销进行比较,为张量选取开销较小的存储方案,并修改相应的存储状态;具体地,获取内存交换优先序列和重计算优先序列中的第一个张量,并对二者的生成开销进行比较,若前者小于后者,则将前者的存储状态置为内存交换状态,并将其从张量集中移出;否则,将后者的存储状态置为重计算状态,并将其从张量集中移出。
其中,前者的生成开销为张量大小与PCIe带宽的比值;后者的生成开销为张量的重计算时间。由于重计算的生成开销与张量的源张量有关,当其源张量选择内存交换存储方式,张量的源张量则会变为源张量的源张量,需要对这部分张量的重计算方法的开销进行重排序,并对之前已经选择重计算的张量重新进行决策。
需要说明的是,由于内存交换优先序列在第一次排序完成后,后续的排序顺序并不会发生变化,仅将内存交换优先序列的第一个张量从内存交换优先序列中移出即可,因此通过上述排序法来获取逐出时间最大的张量和大小与其重计算时间的比值最大时的张量时效率最高,可以作为一种优选实施方式。
A3、更新张量集中各张量的数据依赖关系,重复步骤A2-A3进行迭代,直至训练深度神经网络所需的显存容量小于或等于所提供的显存容量;具体地,每选择一次内存交换方法或重计算方法,因其张量在训练过程中会被逐出,数据依赖关系发生了改变,需要对重计算方法的开销进行重排序。当从张量集中移出的张量大小大于训练模型所缺少的内存大小,则停止进一步选择逐出张量,准备开始训练;
进一步说明的是,当某一张量A从张量集中移出后,使得依赖于该张量A的张量直接依赖于张量A所依赖的张量;体现在张量计算图中时即将张量A的子节点直接指向张量A的父节点,以实现张量集中各张量的数据依赖关系的更新。
在训练过程中:对于存储状态为写入显存状态的张量,在前向传播过程中将其存储在显存中;对于存储状态为内存交换状态的张量,在前向传播过程中将其转移到主存中,并在反向传播访问张量前将其从主存中预取到显存中;对于存储状态为重计算状态的张量,在前向传播过程中不存储该张量,而在反向传播访问该张量前,在显存中根据数据依赖关系重新计算该张量;
其中,如图2所示,张量的逐出时间为在所提供的显存容量大于训练深度神经网络所需的显存容量的条件下对深度神经网络进行训练时,张量前向传播被访问到反向传播被访问的时间间隔与张量的传输时间之差;张量的传输时间为在所提供的显存容量大于训练深度神经网络所需的显存容量的条件下对深度神经网络进行训练时的将张量卸载到主存的时间与从主存预取张量的时间之和;张量的重计算时间基于张量集中数据依赖关系,通过对其所依赖的各张量的计算时间相加得到;张量的生成开销为张量的内存交换开销和重计算开销中的较小值;张量的内存交换开销为张量大小与PCIe带宽的比值;张量的重计算开销为张量的重计算时间。
优选地,在一种可选实施方式下,上述内存管理方法还包括:在步骤A1之前执行的步骤A0,具体包括:在所提供的显存容量大于训练深度神经网络所需的显存容量的条件下对深度神经网络进行训练,并记录各个张量的访问时间(包括张量前向传播过程中被访问的时间和反向传播被访问的时间)、计算时间以及大小。需要说明的是,此时训练深度神经网络所采用的训练集与后续训练过程中所采用的训练集相同。
通过以上方式可以有效解决现有的工作中基于层的类型的重计算和内存交换的粗粒度存储决策方案限制了内存使用的优化空间的技术问题;具体地,在训练前,根据张量的大小和硬件的参数对张量的逐出时间和单位时间释放的内存进行预估,得到张量的重计算和内存交换方法的性能优先序列,基于张量粒度为张量选择时间开销最小的方案,同时也提高了内存的利用率。
在训练过程中,由于内存交换会导致内存碎片问题,被逐出张量所释放的块不一定能够在之后的训练过程中分配使用,为了进一步解决内存交换带来的内存碎片的技术问题,如图3所示,在一种可选实施方式下,对存储状态为内存交换状态的张量(存储标志位为2)与存储状态为写入显存状态的张量(存储标志位为0)实施不同的放置策略,放置在不同的存储块中。通过对不同种类的张量使用不同的放置策略,以避免由于内存交换带来的内存碎片问题;具体地,在显存中分配两个存储块,分别记为默认存储块和交换存储块,二者的大小可以相同也可以不同,本实施方式下,默认存储块和交换存储块的大小相同;
在前向传播过程中,若张量的存储状态为写入显存状态,则将该张量张量放置在默认存储块中;若张量的存储状态为内存交换状态,则将该张量写入到交换存储块中,并在PCIe资源空闲时将该张量从交换存储块转移到主存中;若张量的存储状态为重计算状态,则不存储该张量;
在反向传播过程中,若张量的存储状态为内存交换状态,在PCIe资源空闲时将该张量转移到交换存储块中;若张量的存储状态为重计算状态,则将重新计算的存储状态为重计算状态的张量放置在默认存储块中。
由于存储状态为内存交换状态的张量很快会被卸载到主存中,而预取到显存的张量也很快会被访问后释放,因此交换存储块很少有内存不足的情况。如果产生此类情况,只需增加最初分配的交换存储块的大小即可。
总的来说,本实施例根据张量的大小和硬件的参数对张量的逐出时间和单位时间释放的内存进行预估,通过开销排序的方式为张量选择生成开销最小的方案,基于张量粒度进行内存管理,提高了内存的利用率。同时,本发明通过对不同种类的张量使用不同的放置策略,进一步地解决了因内存交换方法产生的内存碎片问题,进一步地提高了内存的利用率。
需要说明的是,上述深度神经网络可以为用于图像处理(如图像分类、图像检测等)、自然语音处理等场景下的深度神经网络。当用于进行图像处理时,上述张量为图像特征;当用于进行自然语音处理时,上述张量为文本特征。
实施例2、
一种面向深度神经网络的内存管理系统,包括:存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时执行本发明实施例1所提供的内存管理方法。
相关技术方案同实施例1,这里不做赘述。
实施例3、
一种计算机可读存储介质,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序被处理器运行时控制所述存储介质所在设备执行本发明实施例1所提供的内存管理方法。
相关技术方案同实施例1,这里不做赘述。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (9)
1.一种面向深度神经网络的内存管理方法,其特征在于,包括:若训练深度神经网络所需的显存容量大于所提供的显存容量,则:
在训练前执行以下操作:
A1、将深度神经网络的每个张量的存储状态均设置为写入显存状态,并记深度神经网络所有张量所构成的集合为张量集;
A2、基于张量集中各张量的数据依赖关系,计算得到张量集中每一个张量的重计算时间;获取张量集中逐出时间最大的张量、以及大小与其重计算时间的比值最大的张量,若前者的生成开销小于后者的生成开销,则将前者的存储状态置为内存交换状态,并将其从张量集中移出;否则,将后者的存储状态置为重计算状态,并将其从张量集中移出;
A3、更新张量集中各张量的数据依赖关系,重复步骤A2-A3进行迭代,直至训练深度神经网络所需的显存容量小于或等于所提供的显存容量;
在训练过程中:对于存储状态为写入显存状态的张量,在前向传播过程中将其存储在显存中;对于存储状态为内存交换状态的张量,在前向传播过程中将其转移到主存中,并在反向传播访问该张量前将其从主存中预取到显存中;对于存储状态为重计算状态的张量,在前向传播过程中不存储该张量,而在反向传播访问该张量前,在显存中根据数据依赖关系重新计算该张量;
其中,张量的逐出时间为在所提供的显存容量大于训练深度神经网络所需的显存容量的条件下对深度神经网络进行训练时,张量前向传播被访问到反向传播被访问的时间间隔与张量的传输时间之差;前者的生成开销为张量大小与PCIe带宽的比值;后者的生成开销为张量的重计算时间。
2.根据权利要求1所述的内存管理方法,其特征在于,张量的传输时间为在所提供的显存容量大于训练深度神经网络所需的显存容量的条件下对深度神经网络进行训练时的将张量卸载到主存的时间与从主存预取张量的时间之和。
3.根据权利要求1所述的内存管理方法,其特征在于,所述步骤A2包括:
基于张量集中各张量的数据依赖关系,计算得到张量集中每一个张量的重计算时间;计算张量集中每一个张量的大小与其重计算时间的比值,得到每一个张量所对应的单位时间释放内存;
对张量集中的张量按照其逐出时间从大到小进行排序,得到内存交换优先序列;对张量集中的张量按照所对应的单位时间释放内存从大到小进行排序,得到重计算优先序列;
获取所述内存交换优先序列和所述重计算优先序列中的第一个张量,并对二者的生成开销进行比较,若前者小于后者,则将前者的存储状态置为内存交换状态,并将其从张量集中移出;否则,将后者的存储状态置为重计算状态,并将其从张量集中移出。
4.根据权利要求1-3任意一项所述的内存管理方法,其特征在于,张量的重计算时间基于张量集中数据依赖关系,通过对其所依赖的各张量的计算时间加和得到。
5.根据权利要求1-3任意一项所述的内存管理方法,其特征在于,在训练过程中:
在显存中分配两个存储块,分别记为默认存储块和交换存储块;
对于存储状态为写入显存状态的张量,在前向传播过程中将其存储在默认存储块中;对于存储状态为内存交换状态的张量,在前向传播过程中将其写入到交换存储块中,并在PCIe资源空闲时将其从交换存储块转移到主存中,在反向传播访问张量前,在PCIe资源空闲时将其转移到交换存储块中;对于存储状态为重计算状态的张量,在前向传播过程中不存储该张量,而在反向传播访问该张量前,在显存中根据数据依赖关系重新计算该张量,并存储在默认存储块中。
6.根据权利要求1-3任意一项所述的内存管理方法,其特征在于,还包括:在步骤A1之前执行的步骤A0,具体包括:在所提供的显存容量大于训练深度神经网络所需的显存容量的条件下对深度神经网络进行训练,并记录各个张量的访问时间、计算时间以及大小。
7.根据权利要求1所述的内存管理方法,其特征在于,所述深度神经网络为用于图像处理或自然语音处理的深度神经网络。
8.一种面向深度神经网络的内存管理系统,其特征在于,包括:存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时执行权利要求1-7任意一项所述的内存管理方法。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序被处理器运行时控制所述存储介质所在设备执行权利要求1-7任意一项所述的内存管理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310161062.XA CN116107754A (zh) | 2023-02-24 | 2023-02-24 | 一种面向深度神经网络的内存管理方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310161062.XA CN116107754A (zh) | 2023-02-24 | 2023-02-24 | 一种面向深度神经网络的内存管理方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116107754A true CN116107754A (zh) | 2023-05-12 |
Family
ID=86259757
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310161062.XA Pending CN116107754A (zh) | 2023-02-24 | 2023-02-24 | 一种面向深度神经网络的内存管理方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116107754A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116432778A (zh) * | 2023-06-12 | 2023-07-14 | 摩尔线程智能科技(北京)有限责任公司 | 一种数据处理的方法、装置、存储介质及电子设备 |
CN117130693A (zh) * | 2023-10-26 | 2023-11-28 | 之江实验室 | 张量卸载方法、装置、计算机设备及存储介质 |
CN117892769A (zh) * | 2024-03-15 | 2024-04-16 | 之江实验室 | 神经网络训练方法、显存调度方法、系统、设备和产品 |
CN118519786A (zh) * | 2024-07-22 | 2024-08-20 | 中国科学技术大学 | 端测设备下深度学习模型训练时的内存管理方法及装置 |
-
2023
- 2023-02-24 CN CN202310161062.XA patent/CN116107754A/zh active Pending
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116432778A (zh) * | 2023-06-12 | 2023-07-14 | 摩尔线程智能科技(北京)有限责任公司 | 一种数据处理的方法、装置、存储介质及电子设备 |
CN116432778B (zh) * | 2023-06-12 | 2023-09-19 | 摩尔线程智能科技(北京)有限责任公司 | 一种数据处理的方法、装置、存储介质及电子设备 |
CN117130693A (zh) * | 2023-10-26 | 2023-11-28 | 之江实验室 | 张量卸载方法、装置、计算机设备及存储介质 |
CN117130693B (zh) * | 2023-10-26 | 2024-02-13 | 之江实验室 | 张量卸载方法、装置、计算机设备及存储介质 |
CN117892769A (zh) * | 2024-03-15 | 2024-04-16 | 之江实验室 | 神经网络训练方法、显存调度方法、系统、设备和产品 |
CN117892769B (zh) * | 2024-03-15 | 2024-06-11 | 之江实验室 | 神经网络训练方法、显存调度方法、系统、设备和产品 |
CN118519786A (zh) * | 2024-07-22 | 2024-08-20 | 中国科学技术大学 | 端测设备下深度学习模型训练时的内存管理方法及装置 |
CN118519786B (zh) * | 2024-07-22 | 2024-10-18 | 中国科学技术大学 | 端侧设备下深度学习模型训练时的内存管理方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN116107754A (zh) | 一种面向深度神经网络的内存管理方法及系统 | |
CN111078395B (zh) | 一种基于张量的深度学习gpu内存管理优化方法及系统 | |
JP7430744B2 (ja) | 機械学習モデルを改良して局所性を改善させること | |
CN109471594B (zh) | 一种mlc闪存读写方法 | |
CN112463189B (zh) | 基于通信操作稀疏化的分布式深度学习多步延迟更新方法 | |
CN117194502B (zh) | 一种基于长短期记忆网络的数据库内容缓存替换方法 | |
US10891150B2 (en) | Storage control method and storage controller for user individual service environment | |
EP4280107A1 (en) | Data processing method and apparatus, device, and medium | |
CN117234710A (zh) | 一种采用强化学习实现ai模型训练内存优化的方法 | |
CN116501249A (zh) | 一种减少gpu内存重复数据读写的方法及相关设备 | |
CN112015765B (zh) | 基于缓存价值的Spark缓存淘汰方法及系统 | |
CN112597076B (zh) | 一种面向Spark的基于数据感知的缓存替换方法及系统 | |
CN118245207A (zh) | 基于张量版本控制的内存优化方法及装置 | |
CN111898752A (zh) | 执行lstm神经网络运算的装置和方法 | |
CN111783984A (zh) | 一种神经网络运算方法、装置、设备及存储介质 | |
CN116466890A (zh) | 固态硬盘利用接口协议提高服务器综合运算速率的方法 | |
CN111507885B (zh) | 一种基于最佳缓存空间计算的混合图元渲染方法及系统 | |
US12093806B1 (en) | Static memory allocation for neural network inference | |
CN115686855A (zh) | 缓存数据的访问调度方法、处理器、电子设备及存储介质 | |
CN112463389A (zh) | 分布式机器学习任务的资源管理方法及装置 | |
CN116467353B (zh) | 一种基于lru差异化的自适应调节的缓存方法及系统 | |
CN116980423B (zh) | 模型调度方法、装置、计算系统、设备及可读存储介质 | |
CN117806837B (zh) | 一种硬盘任务管理方法、装置、存储介质及系统 | |
CN116188239B (zh) | 多请求并发的gpu图随机游走优化实现方法及系统 | |
WO2024131170A1 (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 |