CN117892769A - 神经网络训练方法、显存调度方法、系统、设备和产品 - Google Patents
神经网络训练方法、显存调度方法、系统、设备和产品 Download PDFInfo
- Publication number
- CN117892769A CN117892769A CN202410296736.1A CN202410296736A CN117892769A CN 117892769 A CN117892769 A CN 117892769A CN 202410296736 A CN202410296736 A CN 202410296736A CN 117892769 A CN117892769 A CN 117892769A
- Authority
- CN
- China
- Prior art keywords
- video memory
- memory
- tensor
- neural network
- gpu
- 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.)
- Granted
Links
- 230000015654 memory Effects 0.000 title claims abstract description 604
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 153
- 238000012549 training Methods 0.000 title claims abstract description 136
- 238000000034 method Methods 0.000 title claims abstract description 107
- 238000005457 optimization Methods 0.000 claims abstract description 36
- 230000008569 process Effects 0.000 claims abstract description 33
- 230000008859 change Effects 0.000 claims description 27
- 238000004590 computer program Methods 0.000 claims description 23
- 238000004364 calculation method Methods 0.000 claims description 15
- 238000003860 storage Methods 0.000 claims description 15
- 230000003044 adaptive effect Effects 0.000 claims description 12
- 238000010586 diagram Methods 0.000 description 9
- 238000004458 analytical method Methods 0.000 description 8
- 238000004519 manufacturing process Methods 0.000 description 6
- 238000012545 processing Methods 0.000 description 6
- 238000013461 design Methods 0.000 description 5
- 238000003062 neural network model Methods 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000012216 screening Methods 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- OKTJSMMVPCPJKN-UHFFFAOYSA-N Carbon Chemical compound [C] OKTJSMMVPCPJKN-UHFFFAOYSA-N 0.000 description 1
- 108010001267 Protein Subunits Proteins 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 229910021389 graphene Inorganic materials 0.000 description 1
- 210000001503 joint Anatomy 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- 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/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- 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
-
- 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/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Biophysics (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Biomedical Technology (AREA)
- Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Life Sciences & Earth Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Image Processing (AREA)
- Television Signal Processing For Recording (AREA)
Abstract
本申请涉及一种神经网络训练方法、显存调度方法、系统、设备和产品,通过对第一神经网络在训练过程中的多个张量执行显存调度,记录各张量在显存调度期间对应的显存信息和重用距离,显存信息包括对应于各张量的显存占用量、显存利用率以及适用于各张量的显存释放模式;以各张量的显存占用量、显存利用率和重用距离作为样本数据的输入,以适用于各张量的显存释放模式作为样本数据的输出,构建训练数据集;根据训练数据集训练初始的第二神经网络,得到经训练的第二神经网络,经训练的第二神经网络可作为线上显存优化的决策引擎,使得决策引擎能够适用于多GPU训练场景的显存调度。
Description
技术领域
本申请涉及显存优化技术领域,特别是涉及一种神经网络训练方法、显存调度方法、系统、设备和产品。
背景技术
深度神经网络被广泛应用于各类领域,如计算机视觉、自然语言处理、语音识别以及推荐系统等,但随着深度神经网络的准确度不断提高,其深度和宽度也不断加深,因而深度神经网络在训练过程中对于显存的需求量也越来越大。目前,深度神经网络大模型的显存需求量普遍超出了一个GPU显存容量,为确保深度神经网络在训练期间的显存需求,亟需针对此场景对显存使用进行进一步的优化。然而,传统的显存优化策略大多针对单GPU场景,单GPU场景下的显存优化策略并不能完全适用于多GPU训练场景。
针对相关技术中存在缺乏针对多GPU训练场景的显存调度策略的问题,目前还没有提出有效的解决方案。
发明内容
在本实施例中提供了一种用于构建决策引擎的神经网络训练方法、显存调度方法、显存调度系统、计算机设备和计算机程序产品,以解决相关技术中缺乏针对多GPU训练场景的显存调度策略的问题。
第一个方面,在本实施例中提供了一种用于构建决策引擎的神经网络训练方法,所述方法包括:
对第一神经网络在训练过程中的多个张量执行显存调度,记录各所述张量在显存调度期间对应的显存信息和重用距离,所述显存信息包括对应于各所述张量的显存占用量、显存利用率以及适用于各所述张量的显存释放模式;
以各所述张量的显存占用量、显存利用率和重用距离作为样本数据的输入,以适用于各所述张量的显存释放模式作为样本数据的输出,构建训练数据集;
根据所述训练数据集训练初始的第二神经网络,得到经训练的第二神经网络,所述经训练的第二神经网络用于构建决策引擎。
在其中的一些实施例中,对所述第一神经网络在训练过程中的多个张量执行显存调度,包括:
获取当前张量在多个预设显存释放模式下引入的时间开销,所述多个预设显存释放模式包括内存交换和重计算,所述内存交换包括GPU-CPU内存交换和GPU-GPU内存交换;
若存在唯一的最小时间开销,则将所述唯一的最小时间开销所对应的预设显存释放模式作为适用于所述当前张量的显存释放模式;或者,
若存在多个最小时间开销,则确定与所述当前张量的显存占用量相匹配的所述多个预设显存释放模式的优先级顺序,根据确定出的所述优先级顺序,在所述多个最小时间开销所分别对应的预设显存释放模式中选取目标显存释放模式作为适用于所述当前张量的显存释放模式。
在其中的一些实施例中,确定与所述当前张量的显存占用量相匹配的所述多个预设显存释放模式的优先级顺序,包括:
当所述当前张量的显存占用量不低于预设的显存量阈值时,将第一优先级顺序作为与所述当前张量的显存占用量相匹配的优先级顺序;或者,
当所述当前张量的显存占用量低于预设的显存量阈值时,将第二优先级顺序作为与所述当前张量的显存占用量相匹配的优先级顺序;
所述第一优先级顺序依次为GPU-CPU内存交换、GPU-GPU内存交换、重计算;所述第二优先级顺序依次为GPU-GPU内存交换、GPU-CPU内存交换、重计算。
在其中的一些实施例中,获取当前张量在多个预设显存释放模式下引入的时间开销,包括:
在所述预设显存释放模式为所述内存交换的情况下,计算在不同内存之间传输所述当前张量所需的往返时间,以及所述当前张量的重用距离,根据所述往返时间与所述重用距离之间的差值确定所述时间开销;或者,
在所述预设显存释放模式为所述重计算的情况下,计算复现所述当前张量的状态的所需时间,根据所述所需时间确定所述时间开销。
第二个方面,在本实施例中提供了一种显存调度方法,所述方法包括:
调用决策引擎,输出针对第三神经网络的显存调度方案,所述显存调度方案包括所述第三神经网络在训练过程中需要释放显存的张量以及相适应的显存释放模式,所述决策引擎通过上述第一个方面所述的神经网络训练方法训练得到的神经网络构建;
根据所述显存调度方案,对所述第三神经网络执行显存调度。
在其中的一些实施例中,调用决策引擎,输出针对第三神经网络的显存调度方案,根据所述显存调度方案,对所述第三神经网络执行显存调度,包括:
在所述第三神经网络所处的存储空间的显存利用率到达预设的显存优化启动阈值的情况下,在所述第三神经网络的当前迭代周期,基于所述第三神经网络中各所述张量的显存占用量、显存利用率和重用距离,确定待释放显存的张量集合以及相适应的显存释放模式,所述显存释放模式包括以下之一:内存交换、重计算,所述内存交换包括GPU-CPU内存交换和GPU-GPU内存交换;
自所述第三神经网络的下一个迭代周期开始,响应于所述张量集合中张量的变更,基于所述相适应的显存释放模式对变更张量执行显存释放,直至所述存储空间的当前显存利用率到达预设的显存优化停止阈值。
在其中的一些实施例中,根据所述显存调度方案,对所述第三神经网络执行显存调度,还包括:
在各所述GPU中,为所述内存交换和所述决策引擎的张量计算分别开设独立线程,多个所述独立线程并行执行;或者,
为所述GPU-CPU内存交换设置缓冲队列,若与所述变更张量相适应的显存释放模式对应的业务属于所述GPU-CPU内存交换,则将所述变更张量加入至所述GPU-CPU内存交换的缓冲队列中;或者,
针对通过所述内存交换释放显存的所述变更张量进行预取,并当所述变更张量所在第一网络层的前一层或者前几层在所述第三神经网络的计算线程中被访问处理时,设置所述变更张量进行内存换入的开始时间,所述内存换入的开始时间用于作为所述变更张量在下一次被访问之前恢复其在相应GPU上的状态的起始时间。
第三个方面,在本实施例中提供了一种显存调度系统,所述系统包括:训练模块、决策引擎和执行模块;其中,
所述训练模块用于执行上述第一个方面所述的神经网络训练方法,训练所述决策引擎的内置模型;
所述决策引擎用于输出针对第三神经网络的显存调度方案,所述显存调度方案包括所述第三神经网络在训练过程中需要释放显存的张量以及相适应的显存释放模式;
所述执行模块用于根据所述显存调度方案,对所述第三神经网络执行显存调度。
第四个方面,在本实施例中提供了一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述第一个方面或者第二个方面所述的方法的步骤。
第五个方面,在本实施例中提供了一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现上述第一个方面或者第二个方面所述的方法的步骤。
上述用于构建决策引擎的神经网络训练方法、显存调度方法、显存调度系统、计算机设备和计算机程序产品,通过对深度神经网络的训练过程执行显存调度,采集显存调度过程中所得到的在线张量数据,以此制作成训练数据集;而后将该训练数据集用于决策引擎内置模型的训练,该内置模型具有多层感知机结构且显存利用率可感知,从而将线下显存优化经验线上化;然后将训练好的、具有显存利用率可感知能力的神经网络模型作为线上显存优化的决策引擎,可针对当前深度神经网络训练的实时工作负载信息及显存利用率,在线推理并实时调整张量显存调度方案,其不受深度神经网络单迭代周期的约束,打破了单GPU场景训练的限制,避免传统的显存优化方案的张量调度方案单一、不能感知当前工作负载信息的问题。
本申请的一个或多个实施例的细节在以下附图和描述中提出,以使本申请的其他特征、目的和优点更加简明易懂。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为一个实施例中终端的硬件结构框图;
图2为一个实施例中神经网络训练方法的流程图;
图3为一个实施例中显存调度方法的流程图;
图4为另一个实施例中显存调度方法的流程图;
图5为另一个实施例中显存调度方法的流程图;
图6为一个实施例中决策引擎的显存调度流程图;
图7为一个实施例中的显存调度系统的结构示意图;
图8为另一个实施例中显存调度系统的结构示意图;
图9为一个实施例中计算机设备的内部结构图。
具体实施方式
为更清楚地理解本申请的目的、技术方案和优点,下面结合附图和实施例,对本申请进行了描述和说明。
除另作定义外,本申请所涉及的技术术语或者科学术语应具有本申请所属技术领域具备一般技能的人所理解的一般含义。在本申请中的“一”、“一个”、“一种”、“该”、“这些”等类似的词并不表示数量上的限制,它们可以是单数或者复数。在本申请中所涉及的术语“包括”、“包含”、“具有”及其任何变体,其目的是涵盖不排他的包含;例如,包含一系列步骤或模块(单元)的过程、方法和系统、产品或设备并未限定于列出的步骤或模块(单元),而可包括未列出的步骤或模块(单元),或者可包括这些过程、方法、产品或设备固有的其他步骤或模块(单元)。在本申请中所涉及的“连接”、“相连”、“耦接”等类似的词语并不限定于物理的或机械连接,而可以包括电气连接,无论是直接连接还是间接连接。在本申请中所涉及的“多个”是指两个或两个以上。“和/或”描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。通常情况下,字符“/”表示前后关联的对象是一种“或”的关系。在本申请中所涉及的术语“第一”、“第二”、“第三”等,只是对相似对象进行区分,并不代表针对对象的特定排序。
在本实施例中提供的方法实施例可以在终端、计算机或者类似的运算装置中执行。比如在终端上运行,图1是本申请一实施例的用于构建决策引擎的神经网络训练方法或者显存调度方法的终端的硬件结构框图。如图1所示,终端可以包括一个或多个(图1中仅示出一个)处理器102和用于存储数据的存储器104,其中,处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置。上述终端还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述终端的结构造成限制。例如,终端还可包括比图1中所示更多或者更少的组件,或者具有与图1所示出的不同配置。
存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如在本实施例中的神经网络训练方法或者显存调度方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输设备106用于经由一个网络接收或者发送数据。上述的网络包括终端的通信供应商提供的无线网络。在一个实例中,传输设备106包括一个网络适配器(NetworkInterface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输设备106可以为射频(Radio Frequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。
相关技术的显存优化策略由传统的张量级显存调度的决策引擎生成,其大多针对单GPU场景进行显存优化实践,但单GPU场景下的显存优化策略并不能完全适用于多GPU训练场景。针对该问题,本实施例将提供一种神经网络训练方法,通过该方法训练得到的模型,可以作为线上显存优化的决策引擎,该决策引擎能够对多种深度神经网络的训练过程执行显存调度方案推理,打破了单GPU场景训练的限制。为避免混淆,将传统的决策引擎定义为第一决策引擎,将本申请提供的决策引擎定义为第二决策引擎。需要说明的是,文中出现的“显存优化”、“显存调度”,都是针对神经网络的张量而言,属于张量级别的操作,“显存优化”和“显存调度”可以互换。
图2为本实施例所提供的一种用于构建决策引擎的神经网络训练方法的流程图,以该方法应用于图1中的终端为例进行说明,包括如下步骤:
步骤S201,对第一神经网络在训练过程中的多个张量执行显存调度,记录各张量在显存调度期间对应的显存信息和重用距离,显存信息包括对应于各张量的显存占用量、显存利用率以及适用于各张量的显存释放模式。
该步骤可以利用第一决策引擎对第一神经网络的训练过程进行显存调度方案决策,并采集显存调度过程中所得到的在线张量数据,即为显存信息和重用距离。
第一神经网络,是指样本神经网络,其可以包含多种深度神经网络。深度神经网络,其由输入层、至少一个隐藏层以及输出层组成,层与层之间连接的数据以张量的形式表示。
张量,是指第一神经网络中的基本数据结构,它可以是标量、向量、矩阵或更高维度的数据集。张量存储于显存中,显存是GPU上用于存储模型参数、中间计算结果和其他相关数据的内存空间。由于深度神经网络模型通常很大,而且训练过程中可能涉及大量的计算和数据存储,有效地管理显存变得至关重要。对张量执行操作,合理地释放显存,能够确保在训练过程中充分利用显存资源,防止显存溢出或者显存不足,提高神经网络训练的稳定性和效率。
显存占用量,是指张量在生成或者更新时刻其对存储空间的占用量。
显存利用率,是指某一特定时刻显存中所有张量占用的存储空间的量和总容量之间的比例。
重用距离,是指自张量生成或更新时刻至张量再次被访问时刻之间的时间间隙。
需要说明的是,在显存信息中,显存占用量是客观存在的,并不依附于显存调度,也就是说,张量的显存占用量是张量的固有属性,随张量的生成而生成,随张量的消亡而消亡。由于本实施例需要利用显存利用率等信息,而显存利用率是实时变动的,因此,在显存调度方案执行期间,某张量被执行显存释放操作那一时刻获取显存利用率信息和显存占用量信息,可以提升所获取信息的精确性。
显存释放模式,是指对张量所占用的显存进行释放的模式。可选的,第一决策引擎中设置有多个预设显存释放模式,包括重计算和内存交换,内存交换可以包括GPU-CPU内存交换和GPU-GPU内存交换。
其中,重计算,是指在神经网络执行反向传播算法以更新权重时,并非全程存储每一层的激活值(forward pass时产生的中间结果),而是根据需要重新计算这些激活值。
GPU-CPU内存交换,是指在使用GPU进行神经网络训练时,数据和中间结果通常以张量的形式存储在GPU显存中。当GPU显存容量不足时,通过内存调度将部分不常访问或者暂时不需要的数据从GPU显存移至CPU内存(系统内存)中。GPU-CPU内存交换可以包括GPU-CPU内存换出和GPU-CPU内存换入。
GPU-GPU内存交换,是指当有多块GPU并行参与训练时(如使用数据并行、模型并行或混合并行策略),不同的GPU之间可能也需要进行显存调度。这种情况下,如果某一块GPU的显存不足以存放分配给它的部分模型参数或数据,可能触发GPU与GPU之间的显存交换。GPU-GPU内存交换可以包括GPU-GPU内存换出和GPU-GPU内存换入。
步骤S202,以各张量的显存占用量、显存利用率和重用距离作为样本数据的输入,以适用于各张量的显存释放模式作为样本数据的输出,构建训练数据集。
在制作训练数据集时,以各张量的显存占用量、显存利用率和重用距离作为样本数据的输入,丰富了输入数据的维度。并且,将显存利用率纳入输入数据,可以使得待训练的神经网络具备显存利用率感知能力。
步骤S203,根据训练数据集训练初始的第二神经网络,得到经训练的第二神经网络,经训练的第二神经网络用于构建决策引擎。
第二神经网络,是指第二决策引擎的内置模型。该步骤将训练数据集用于第二神经网络的训练,第二神经网络具有多层感知机结构且显存利用率可感知,其能够将线下显存优化经验线上化。训练完备的第二神经网络可作为第二决策引擎的内置模型,对其他神经网络的训练进行显存调度。
在上述步骤S201至S203中,通过对深度神经网络的训练过程执行显存调度,采集显存调度过程中所得到的在线张量数据,以此制作成训练数据集;而后将该训练数据集用于第二决策引擎内置模型的训练,该内置模型具有多层感知机结构且显存利用率可感知,从而将线下显存优化经验线上化;然后将训练好的、具有显存利用率可感知能力的神经网络模型作为线上显存优化的决策引擎,可针对当前深度神经网络训练的实时工作负载信息及显存利用率,在线推理并实时调整张量显存调度方案,其不受深度神经网络单迭代周期的约束,打破了单GPU场景训练的限制,避免传统的显存优化方案的张量调度方案单一、不能感知当前工作负载信息的问题。
在一个实施例中,图3提供了一种显存调度方法的流程图,当要对第一神经网络在训练过程中的多个张量执行显存调度时,可以通过图3所示的流程实现,其包括如下步骤:
步骤S301,获取当前张量在多个预设显存释放模式下引入的时间开销,多个预设显存释放模式包括内存交换和重计算,内存交换包括GPU-CPU内存交换和GPU-GPU内存交换。
其中,在获取当前张量在多个预设显存释放模式下引入的时间开销时,可以通过如下方案实现:
在预设显存释放模式为内存交换的情况下,计算在不同内存之间传输当前张量所需的往返时间,以及当前张量的重用距离,根据往返时间与重用距离之间的差值确定时间开销。例如,计算各张量在GPU-CPU内存交换或者GPU-GPU内存交换方式下对应的时间耗时,将时间耗时减去各张量的重用距离,若差值为负数,则前述时间开销计为零,否则,将二者差值记为前述时间开销数值。
在预设显存释放模式为重计算的情况下,计算复现当前张量的状态的所需时间,根据所需时间确定时间开销。
步骤S302,确定最小时间开销,并将所确定的最小时间开销所对应的预设显存释放模式作为适用于当前张量的显存释放模式。
在本实施例中,通过计算当前张量在多个预设显存释放模式下引入的时间开销,确定最小时间开销,并将所确定的最小时间开销所对应的预设显存释放模式作为适用于当前张量的显存释放模式。如此设置,使得训练数据集能够指导第二神经网络朝着减小显存调度时间开销的方向进行训练,从而让训练完备的第二神经网络可以尽可能地降低因张量显存调度给模型训练带来的时间开销。
在一些实施例中,在上述步骤S302中,当要确定最小时间开销时,可能有唯一的最小时间开销或者至少两个最小时间开销。针对这些情况,本实施给出了两种显存调度方法。图4为本实施例的显存调度方法的流程图,如图4所示,在图3的基础上,显存调度流程包括如下步骤。
步骤S401,获取当前张量在多个预设显存释放模式下引入的时间开销,多个预设显存释放模式包括内存交换和重计算,内存交换包括GPU-CPU内存交换和GPU-GPU内存交换;
步骤S402,确定最小时间开销;
步骤S403,判断最小时间开销是否唯一;若是,则执行步骤S404;若否,则执行步骤S405;
步骤S404,将唯一的最小时间开销所对应的预设显存释放模式作为适用于当前张量的显存释放模式;
步骤S405,确定与当前张量的显存占用量相匹配的多个预设显存释放模式的优先级顺序,根据确定出的优先级顺序,在多个最小时间开销所分别对应的预设显存释放模式中选取目标显存释放模式作为适用于当前张量的显存释放模式。
进一步地,在一个实施例中,在确定与当前张量的显存占用量相匹配的多个预设显存释放模式的优先级顺序时,可以通过如下方案实现:
当当前张量的显存占用量不低于预设的显存量阈值时,将第一优先级顺序作为与当前张量的显存占用量相匹配的优先级顺序。或者,当当前张量的显存占用量低于预设的显存量阈值时,将第二优先级顺序作为与当前张量的显存占用量相匹配的优先级顺序。其中,第一优先级顺序依次为GPU-CPU内存交换、GPU-GPU内存交换、重计算;第二优先级顺序依次为GPU-GPU内存交换、GPU-CPU内存交换、重计算。
如此设置,综合考虑各张量的显存占用量以及他们在三种显存释放模式下的时间开销,在保证由各张量的显存释放模式引入的时间开销最小的前提下,为每个张量选取当下最恰当的显存释放模式。
在一个实施例中,提供了一种显存调度方法,图5为本实施例所提供的一种显存调度方法的流程图,以该方法应用于图1中的终端为例进行说明,包括如下步骤:
步骤S501,调用第二决策引擎,输出针对第三神经网络的显存调度方案,显存调度方案包括第三神经网络在训练过程中需要释放显存的张量以及相适应的显存释放模式,第二决策引擎通过上述任一项的神经网络训练方法训练得到的神经网络构建;
步骤S502,根据显存调度方案,对第三神经网络执行显存调度。
本实施例采用上述任一实施例的方法训练得到的神经网络(即第二神经网络),将其作为第二决策引擎的内置模型,该决策引擎能够对多种深度神经网络的训练过程执行显存调度方案推理,打破了单GPU场景训练的限制。需要说明的是,本实施例中关于神经网络训练方法的具体示例可以参考上述实施例及可选实施方式中所描述的示例,在本实施例中不再赘述。
在一个实施例中,图6给出了第二决策引擎的显存调度流程,如图6所示,该流程包括如下步骤:
步骤S601,在第三神经网络所处的存储空间的显存利用率到达预设的显存优化启动阈值的情况下,在第三神经网络的当前迭代周期,基于第三神经网络中各张量的显存占用量、显存利用率和重用距离,确定待释放显存的张量集合以及相适应的显存释放模式;
步骤S602,自第三神经网络的下一个迭代周期开始,响应于张量集合中张量的变更,基于相适应的显存释放模式对变更张量执行显存释放,直至存储空间的当前显存利用率到达预设的显存优化停止阈值。
其中,显存释放模式包括以下之一:内存交换、重计算,内存交换包括GPU-CPU内存交换和GPU-GPU内存交换。相应地,第二决策引擎设置有多个预设显存释放模式,分别包括内存交换和重计算,内存交换包括GPU-CPU内存交换和GPU-GPU内存交换。关于重计算和内存交换,已在前述实施例做过介绍,本实施例不再赘述。
在一些实施例中,在各GPU中,为内存交换和决策引擎的张量计算分别开设独立线程,多个独立线程并行执行。其中,张量计算,是指在构建和训练第三神经网络过程中,对多维数据数组(即张量)进行的一系列数学运算。示例性地,需要在每张GPU卡上为张量计算、GPU-CPU内存换出、GPU-GPU内存换出、GPU-CPU内存换入、GPU-GPU内存换入5种业务分别开启一个线程,以便它们并行执行,尽可能地实现其在时间维度上的重叠。如此设置,使得张量计算与内存交换可以独立进行,以及两种内存交换方式(GPU-CPU、GPU-GPU)可以全双工运行。
在实际应用中,深度神经网络在训练期间对显存的需求量远远大于显存本身的容量,所以要通过释放一部分已存在的张量占用的显存来给后续要访问的张量分配显存空间。那么这一部分被释放显存的张量有两大类释放方式:内存交换和重计算。而张量计算是指前述深度神经网络本身在训练期间是需要进行张量计算的,所以才会有张量的不断产生和更新。在本实施例中,第三神经网络的计算线程就是用于第三神经网络中的各张量的计算,从而推进第三神经网络训练的进度。而第三神经网络在不断进行张量计算推进训练进度的同时,为了保证其产生的张量有空间得以存放,为此,需要第二决策引擎作为在线显存调度方案决策者。而此时,第二决策引擎在线推理也需要进行张量计算,为了不让第二决策引擎与第三神经网络的张量计算互相影响,可以为第二决策引擎的张量计算开启独立线程,以使二者可以并行执行。
在一些实施例中,为GPU-CPU内存交换设置缓冲队列,若与变更张量相适应的显存释放模式对应的业务属于GPU-CPU内存交换,则将变更张量加入至GPU-CPU内存交换的缓冲队列中。如此设置,可以防止因GPU-CPU内存换入/换出导致PCIe(peripheral componentinterconnect express,高速串行计算机扩展总线标准)通道冲突,为GPU-CPU内存换入/换出分别设置缓冲队列,以保证张量在GPU-CPU间的数据转移可以有序进行。
在一些实施例中,可以针对通过内存交换释放显存的变更张量进行预取,并当变更张量所在第一网络层的前一层或者前几层在第三神经网络的计算线程中被访问处理时,设置变更张量进行内存换入的开始时间,内存换入的开始时间用于作为变更张量在下一次被访问之前恢复其在相应GPU上的状态的起始时间。
在本实施例中,为了尽可能减小因内存换入引入的时间开销,需要对通过内存交换(GPU-CPU、GPU-GPU)释放显存的张量进行预取,通过合理安排各张量内存换入开始的时间点,以便张量在下一次被访问前恢复其在GPU上的状态。其中,对张量进行预取(TensorPrefetching),是指提前加载未来将要使用的数据到高速缓存或内存中,从而减少延迟并提高计算效率。具体而言,对于硬件加速器比如GPU,其内部也存在层次化的存储结构,预取不仅发生在不同硬件组件之间(如CPU与GPU),也可以在GPU自身的内存层级间进行,以最大化数据访问速度和计算效率。
基于和上述方法相似的发明构思,在一个实施例中,提供了一种显存调度系统,用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。以下所使用的术语“模块”、“单元”、“子单元”等可以实现预定功能的软件和/或硬件的组合。尽管在以下实施例中所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图7为本实施例的显存调度系统的结构示意图,如图7所示,该系统包括:训练模块、第二决策引擎和执行模块。其中,训练模块用于执行上述任一实施例的神经网络训练方法,训练第二决策引擎的内置模型。第二决策引擎用于输出针对第三神经网络的显存调度方案,显存调度方案包括第三神经网络在训练过程中需要释放显存的张量以及相适应的显存释放模式。执行模块用于根据显存调度方案,对第三神经网络执行显存调度。
可选地,训练模块可以包括数据集制作单元和训练单元。其中,数据集制作单元用于借助第一决策引擎采集样本数据,从而构建训练数据集。训练单元用于设计初始的第二神经网络的结构,并基于训练数据集训练第二神经网络。
第二决策引擎可以包含性能分析单元和决策单元。其中,性能分析单元用于对深度神经网络的一个迭代周期进行性能分析,得出各张量的显存占用量、显存利用率和重用距离。决策单元用于处理各张量的显存占用量、显存利用率和重用距离,决策生成显存调度方案。
执行模块可以包括内存交换缓冲队列、张量预取单元和线程池。其中,内存交换缓冲队列用于为GPU-CPU内存交换设置缓冲队列,若与变更张量相适应的显存释放模式对应的业务属于GPU-CPU内存交换,则将变更张量加入至GPU-CPU内存交换的缓冲队列中。张量预取单元用于针对通过内存交换释放显存的变更张量进行预取,并当变更张量所在第一网络层的前一层或者前几层在第三神经网络的计算线程中被访问处理时,设置变更张量进行内存换入的开始时间,内存换入的开始时间用于作为变更张量在下一次被访问之前恢复其在相应GPU上的状态的起始时间。线程池可以包含张量计算线程、内存交换线程等。其中,内存交换线程可以包含内存换出线程(GPU-CPU内存换出、GPU-GPU内存换出)、内存换入线程(GPU-CPU内存换入、GPU-GPU内存换入)。
需要说明的是,本实施例中关于神经网络训练方法和显存调度方法的具体示例可以参考上述实施例及可选实施方式中所描述的示例,在本实施例中不再赘述。
为使得本申请的技术更加浅显易懂,在一个实施例中,提供了另一种显存调度系统。图8为本实施例的显存调度系统的结构示意图,如图8所示,该系统分为离线部分和在线部分。
其中,离线部分包括训练模块,训练模块和第一决策引擎对接,用于通过第一决策引擎采集样本数据来构建训练数据集,并基于训练数据集训练第二神经网络以得到第二决策引擎的内置模型。其中,第一决策引擎具备张量级显存优化的功能,其又包括性能分析单元、张量选择器、用于决策张量显存释放模式的决策器。
离线部分的显存调度方案的设计服务于在线部分的显存调度方案,属于前期准备工作。为使在线部分的第二决策引擎具有更好、更全面的表达能力,可通过扩充离线部分数据集的方式来实现,方法概述如下:
利用离线部分的第一决策引擎对多种深度神经网络训练过程进行显存优化调度,归纳并统计尽可能多的显存调度张量在线信息,以扩充数据集中样本数据的涵盖范围,再将此数据集用于显存利用率可感知的神经网络(即第二神经网络)的训练中,以至于网络模型训练为收敛状态,便可使该网络模型对于显存调度张量的筛选标准及显存释放模式的决策标准拥有更准确的表达能力。具体的离线部分的显存优化方案的设计见本申请的其他实施例,此处不再赘述。
在线部分包括第二决策引擎、执行模块。其中,第二决策引擎,可以视为对第一决策引擎的替代,其具备显存利用率可感知功能。与传统的显存优化方案不同,本实施例提出的显存调度方案并不仅限于深度神经网络训练的第一个迭代周期,而是在显存利用率满足显存优化调度的条件的任意时刻皆可发挥作用,且可以以迭代周期为单位,按照深度神经网络在当前迭代周期的实际调度情况实时调整张量的显存释放模式,并在下一个迭代周期实行新的显存调度方法,以尽可能地降低因张量显存调度给模型训练带来的时间开销。同时,第二决策引擎采用多层感知机的内部结构设计,模型轻量、设计简单,占用显存量小,且在线推理速度快,可比传统的决策引擎引入更小的时间开销。另外,该第二决策引擎具有显存利用率可感知能力,鉴于深度神经网络模型训练工作负载也是时时处于变动之中,因而其显存利用率必然不会一成不变,而利用本实施例提出的第二决策引擎可以根据当下的显存利用率在线实时推理下一步的张量显存调度方法,以便优化接下来的迭代周期内的张量显存调度。
以下将给出图8所示的显存调度系统的运行流程,该流程包括如下步骤:
步骤S1:构建第一决策引擎。
步骤S1.1:利用第一决策引擎的性能分析工具对第一神经网络训练的一个迭代周期进行性能分析,得出各张量的显存占用量和重用距离。
步骤S1.2:以张量的显存占用量为第一筛选标准,以张量的重用距离为第二筛选标准,筛选出显存占用量大或重用距离长的张量集合作为释放显存的候选张量集合。其中,“显存占用量大”,是指显存占用量不低于预设的显存占用量阈值,“重用距离长”,是指重用距离不低于预设的重用距离阈值。
步骤S1.3:评估步骤S1.2中候选张量集合中各候选张量在三种显存释放模式下所需的时间耗时,然后再结合各候选张量的重用距离,计算出各候选张量采用三种显存释放模式时会引入的时间开销,并按照前述时间开销从小到大的顺序对各候选张量的三种显存释放模式进行排序。
其中,三种显存释放模式是指GPU-CPU内存交换、GPU-GPU内存交换和重计算。而各候选张量在三种显存释放模式下所需的时间耗时分别是指:各候选张量在GPU-CPU内存交换或GPU-GPU内存交换下传输该候选张量所需的往返时间、各候选张量在重计算方式下复现该候选张量状态的所需时间。
各候选张量在三种显存释放模式下引入的时间开销计算方式为:各候选张量在前两种显存释放模式下对应的时间耗时减去各候选张量的重用距离,若差值为负数,则前述时间开销计为零,否则,将二者差值记为前述时间开销数值;而各候选张量在重计算这种显存释放模式下的时间开销均为各候选张量在重计算方式下复现该候选张量状态所需时间。
步骤S1.4:综合考虑各候选张量所占用显存大小以及他们在三种显存释放模式下的时间开销,在保证由各候选张量的显存释放模式引入的时间开销最小的前提下,为每个候选张量选取当下最恰当的显存释放模式。
步骤S1.4.1:如果候选张量引入时间开销最小的显存释放模式唯一,则该候选张量的显存释放模式选为具有最小时间开销的显存释放模式。
步骤S1.4.2:如果候选张量引入时间开销最小的显存释放模式不唯一,且候选张量的显存占用量足够大,则在其最小时间开销的显存释放模式中按照GPU-CPU内存交换、GPU-GPU内存交换、重计算的优先级顺序为该候选张量选择显存释放模式。
步骤S1.4.3:如果候选张量引入时间开销最小的显存释放模式不唯一,且候选张量的显存占用量不够大,则在候选张量的最小时间开销的显存释放模式中按照GPU-GPU内存交换、GPU-CPU内存交换、重计算的优先级顺序为该候选张量选择显存释放模式。
步骤S2:利用步骤S1中的第一决策引擎对第一神经网络训练过程的显存进行优化,统计各张量的实际显存释放模式等相关信息,并基于此制作训练数据集。
步骤S2.1:设置启动和停止显存优化措施时的显存利用率,且二者不能相同。
步骤S2.2:利用步骤S1的第一决策引擎对第一深度神经网络训练过程的显存使用情况进行优化,并且,统计并记录下期间产生的张量的显存占用量、重用距离、张量释放显存时对应的显存利用率以及其最终的显存释放模式。
步骤S2.3:以各张量的显存占用量、显存利用率和重用距离作为样本数据的输入,以适用于各张量的显存释放模式作为样本数据的输出,构建训练数据集。其中,样本数据的输出(显存释放模式)共有4种,除包含步骤S1.3中的三种模式外,还包括不释放显存。
步骤S3:构建显存利用率可感知的初始的第二神经网络,利用步骤S2中的训练数据集进行训练至收敛,使其具备在不同显存利用率下根据张量的显存占用量、显存利用率和重用距离,生成对应显存释放模式的能力。其中,该第二神经网络的内部结构设计为多层感知机结构,其输入节点和输出节点与步骤S2中数据集的数据样本的输入/输出保持一致;
步骤S4:将训练好的步骤S3中的显存利用率可感知的第二神经网络作为第二决策引擎。在线推理需要释放显存的一批候选张量以及其对应的显存释放模式,提高张量调度效率。
步骤S4.1:设置显存优化启动阈值(第一预设显存利用率)与停止阈值(第二预设显存利用率)。
步骤S4.2:为了使张量计算与内存交换可以独立进行,以及两种内存交换方式(GPU-CPU、GPU-GPU)可以全双工运行,需要在每张GPU卡上为张量计算、GPU-CPU内存换出、GPU-GPU内存换出、GPU-CPU内存换入、GPU-GPU内存换入5种业务分别开启一个线程,以便它们并行执行,尽可能地实现其在时间维度上的重叠。
步骤S4.3:为防止因GPU-CPU内存换入、换出导致PCIe通道冲突,为GPU-CPU内存换入、换出分别设置缓冲队列,以保证张量在GPU-CPU间的数据转移可以有序进行。
当显存利用率到达显存优化启动阈值时,执行以下步骤:
步骤S4.4:利用性能分析工具分析当前深度神经网络负载中的张量占用显存大小、重用距离等必要信息;
步骤S4.5:利用步骤S3得到的第二决策引擎在线推理,就可以决策出释放显存的张量集合及其对应的显存释放模式;
步骤S4.6:自下一个迭代周期开始,每当步骤S4.5中释放显存张量集合中的张量产生或更新时,便立即对该张量执行对应的显存释放模式。更进一步地,如果该张量的显存释放模式为GPU-CPU内存交换,则将该张量加入至GPU-CPU内存换出缓冲队列中;
步骤S4.7:为了尽可能减小因内存换入引入的时间开销,需要对通过内存交换(GPU-CPU、GPU-GPU)方式释放显存的张量进行预取,通过合理安排各张量内存换入开始的时间点,以便张量在下一次被访问前恢复其在GPU上的状态;
步骤S4.8:在每轮迭代周期结束时,重复步骤S4.4至S4.7,直至当前显存利用率到达显存优化停止阈值。
在上述步骤S1至S4中,在不损失深度神经网络训练精度的前提下,通过第一决策引擎对多种深度神经网络的训练过程执行显存调度决策,并采集显存调度过程中所得到的在线张量数据,以此制作成训练数据集。而后将该训练数据集用于第二决策引擎内置模型的训练,该内置模型具有多层感知机结构且显存利用率可感知,从而将线下显存优化经验线上化。然后,将训练好的、具有显存利用率可感知能力的神经网络模型作为线上显存优化的决策引擎,可针对当前深度神经网络训练的实时工作负载信息及显存利用率,在线推理并实时调整张量显存调度方案,其不受深度神经网络单迭代周期的约束,打破了单GPU场景训练的限制,避免传统的显存优化方案的张量调度方案单一、不能感知当前工作负载信息、不够灵活多变的缺陷,且该第二决策引擎的网络结构简单、推理速度快,可尽可能地通过动态实时调节的方式降低因张量显存调度引入的时间开销。
结合上述实施例中提供的神经网络训练方法,在本实施例中还可以提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述任一项神经网络训练方法的步骤。
结合上述实施例中提供的显存调度方法,在本实施例中还可以提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述任一项显存调度的步骤。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图9所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库可用于存储从第一决策引擎采集的样本数据、第二决策引擎输出的显存调度方案或者第三神经网络的张量数据等。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种神经网络训练方法或者显存调度方法。
本领域技术人员可以理解,图9中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
应该明白的是,上述描述的具体实施例只是用来解释相关应用,而不是用来对它进行限定。根据本申请提供的实施例,本领域普通技术人员在不进行创造性劳动的情况下得到的所有其它实施例,均属本申请保护范围。
显然,附图只是本申请的一些例子或实施例,对本领域的普通技术人员来说,也可以根据这些附图将本申请适用于其他类似情况,但无需付出创造性劳动。另外,可以理解的是,尽管在此开发过程中所做的工作可能是复杂和漫长的,但是,对于本领域的普通技术人员来说,根据本申请披露的技术内容进行的某些设计、制造或生产等更改仅是常规的技术手段,不应被视为本申请公开的内容不足。
“实施例”一词在本申请中指的是结合实施例描述的具体特征、结构或特性可以包括在本申请的至少一个实施例中。该短语出现在说明书中的各个位置并不一定意味着相同的实施例,也不意味着与其它实施例相互排斥而具有独立性或可供选择。本领域的普通技术人员能够清楚或隐含地理解的是,本申请中描述的实施例在没有冲突的情况下,可以与其它实施例结合。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据。本申请实施例中涉及对数据的获取、存储、使用、处理等均符合国家法律法规的相关规定。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对专利保护范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。
Claims (10)
1.一种用于构建决策引擎的神经网络训练方法,其特征在于,所述方法包括:
对第一神经网络在训练过程中的多个张量执行显存调度,记录各所述张量在显存调度期间对应的显存信息和重用距离,所述显存信息包括对应于各所述张量的显存占用量、显存利用率以及适用于各所述张量的显存释放模式;
以各所述张量的显存占用量、显存利用率和重用距离作为样本数据的输入,以适用于各所述张量的显存释放模式作为样本数据的输出,构建训练数据集;
根据所述训练数据集训练初始的第二神经网络,得到经训练的第二神经网络,所述经训练的第二神经网络用于构建决策引擎。
2.根据权利要求1所述的神经网络训练方法,其特征在于,对所述第一神经网络在训练过程中的多个张量执行显存调度,包括:
获取当前张量在多个预设显存释放模式下引入的时间开销,所述多个预设显存释放模式包括内存交换和重计算,所述内存交换包括GPU-CPU内存交换和GPU-GPU内存交换;
若存在唯一的最小时间开销,则将所述唯一的最小时间开销所对应的预设显存释放模式作为适用于所述当前张量的显存释放模式;或者,
若存在多个最小时间开销,则确定与所述当前张量的显存占用量相匹配的所述多个预设显存释放模式的优先级顺序,根据确定出的所述优先级顺序,在所述多个最小时间开销所分别对应的预设显存释放模式中选取目标显存释放模式作为适用于所述当前张量的显存释放模式。
3.根据权利要求2所述的神经网络训练方法,其特征在于,确定与所述当前张量的显存占用量相匹配的所述多个预设显存释放模式的优先级顺序,包括:
当所述当前张量的显存占用量不低于预设的显存量阈值时,将第一优先级顺序作为与所述当前张量的显存占用量相匹配的优先级顺序;或者,
当所述当前张量的显存占用量低于预设的显存量阈值时,将第二优先级顺序作为与所述当前张量的显存占用量相匹配的优先级顺序;
所述第一优先级顺序依次为GPU-CPU内存交换、GPU-GPU内存交换、重计算;所述第二优先级顺序依次为GPU-GPU内存交换、GPU-CPU内存交换、重计算。
4.根据权利要求2所述的神经网络训练方法,其特征在于,获取当前张量在多个预设显存释放模式下引入的时间开销,包括:
在所述预设显存释放模式为所述内存交换的情况下,计算在不同内存之间传输所述当前张量所需的往返时间,以及所述当前张量的重用距离,根据所述往返时间与所述重用距离之间的差值确定所述时间开销;或者,
在所述预设显存释放模式为所述重计算的情况下,计算复现所述当前张量的状态的所需时间,根据所述所需时间确定所述时间开销。
5.一种显存调度方法,其特征在于,所述方法包括:
调用决策引擎,输出针对第三神经网络的显存调度方案,所述显存调度方案包括所述第三神经网络在训练过程中需要释放显存的张量以及相适应的显存释放模式,所述决策引擎通过权利要求1至4中任一项所述的神经网络训练方法训练得到的神经网络构建;
根据所述显存调度方案,对所述第三神经网络执行显存调度。
6.根据权利要求5所述的显存调度方法,其特征在于,调用决策引擎,输出针对第三神经网络的显存调度方案,根据所述显存调度方案,对所述第三神经网络执行显存调度,包括:
在所述第三神经网络所处的存储空间的显存利用率到达预设的显存优化启动阈值的情况下,在所述第三神经网络的当前迭代周期,基于所述第三神经网络中各所述张量的显存占用量、显存利用率和重用距离,确定待释放显存的张量集合以及相适应的显存释放模式,所述显存释放模式包括以下之一:内存交换、重计算,所述内存交换包括GPU-CPU内存交换和GPU-GPU内存交换;
自所述第三神经网络的下一个迭代周期开始,响应于所述张量集合中张量的变更,基于所述相适应的显存释放模式对变更张量执行显存释放,直至所述存储空间的当前显存利用率到达预设的显存优化停止阈值。
7.根据权利要求6所述的显存调度方法,其特征在于,根据所述显存调度方案,对所述第三神经网络执行显存调度,还包括:
在各所述GPU中,为所述内存交换和所述决策引擎的张量计算分别开设独立线程,多个所述独立线程并行执行;或者,
为所述GPU-CPU内存交换设置缓冲队列,若与所述变更张量相适应的显存释放模式对应的业务属于所述GPU-CPU内存交换,则将所述变更张量加入至所述GPU-CPU内存交换的缓冲队列中;或者,
针对通过所述内存交换释放显存的所述变更张量进行预取,并当所述变更张量所在第一网络层的前一层或者前几层在所述第三神经网络的计算线程中被访问处理时,设置所述变更张量进行内存换入的开始时间,所述内存换入的开始时间用于作为所述变更张量在下一次被访问之前恢复其在相应GPU上的状态的起始时间。
8.一种显存调度系统,其特征在于,所述系统包括:训练模块、决策引擎和执行模块;其中,
所述训练模块用于执行权利要求1至4中任一项所述的神经网络训练方法,训练所述决策引擎的内置模型;
所述决策引擎用于输出针对第三神经网络的显存调度方案,所述显存调度方案包括所述第三神经网络在训练过程中需要释放显存的张量以及相适应的显存释放模式;
所述执行模块用于根据所述显存调度方案,对所述第三神经网络执行显存调度。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至权利要求7中任一项所述的方法的步骤。
10.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至权利要求7中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410296736.1A CN117892769B (zh) | 2024-03-15 | 2024-03-15 | 神经网络训练方法、显存调度方法、系统、设备和产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410296736.1A CN117892769B (zh) | 2024-03-15 | 2024-03-15 | 神经网络训练方法、显存调度方法、系统、设备和产品 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117892769A true CN117892769A (zh) | 2024-04-16 |
CN117892769B CN117892769B (zh) | 2024-06-11 |
Family
ID=90651034
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410296736.1A Active CN117892769B (zh) | 2024-03-15 | 2024-03-15 | 神经网络训练方法、显存调度方法、系统、设备和产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117892769B (zh) |
Citations (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109919310A (zh) * | 2019-01-15 | 2019-06-21 | 中国科学院信息工程研究所 | 一种面向深度学习训练任务的gpu内存优化方法及系统 |
CN110942138A (zh) * | 2019-11-13 | 2020-03-31 | 华中科技大学 | 一种混合内存环境下深度神经网络的训练方法和系统 |
CN111078395A (zh) * | 2019-11-12 | 2020-04-28 | 华中科技大学 | 一种基于张量的深度学习gpu内存管理优化方法及系统 |
US20210064997A1 (en) * | 2018-01-10 | 2021-03-04 | Seoul National University R&Db Foundation | Method for gpu memory management for deep neural network and computing device for performing same |
CN112669852A (zh) * | 2020-12-15 | 2021-04-16 | 北京百度网讯科技有限公司 | 内存分配方法、装置及电子设备 |
CN112748998A (zh) * | 2021-01-21 | 2021-05-04 | 中南大学 | 一种移动端的卷积神经网络任务调度方法及系统 |
US20220051104A1 (en) * | 2020-08-14 | 2022-02-17 | Microsoft Technology Licensing, Llc | Accelerating inference of traditional ml pipelines with neural network frameworks |
CN114358267A (zh) * | 2022-01-05 | 2022-04-15 | 浙江大学 | 一种降低深度神经网络训练过程中gpu内存占用的方法 |
CN114611675A (zh) * | 2022-03-22 | 2022-06-10 | 浙江大学 | 数据处理方法、装置、电子装置和存储介质 |
CN115146757A (zh) * | 2021-03-31 | 2022-10-04 | 华为技术有限公司 | 一种神经网络模型的训练方法及装置 |
CN115168041A (zh) * | 2022-07-18 | 2022-10-11 | 北京一流科技有限公司 | 支持逆向动态重计算的内存释放决策系统及其方法 |
CN115391036A (zh) * | 2022-08-23 | 2022-11-25 | 浙江大学 | 一种基于强化学习内存调度决策的模型训练方法及系统 |
CN115437795A (zh) * | 2022-11-07 | 2022-12-06 | 东南大学 | 一种异构gpu集群负载感知的显存重计算优化方法及系统 |
CN116090521A (zh) * | 2023-02-22 | 2023-05-09 | 重庆大学 | 一种神经网络张量算子组合自动调优方法及装置 |
CN116107754A (zh) * | 2023-02-24 | 2023-05-12 | 华中科技大学 | 一种面向深度神经网络的内存管理方法及系统 |
CN116893904A (zh) * | 2023-09-11 | 2023-10-17 | 腾讯科技(深圳)有限公司 | 神经网络模型的内存管理方法、装置、设备、介质及产品 |
CN116991560A (zh) * | 2023-09-25 | 2023-11-03 | 粤港澳大湾区数字经济研究院(福田) | 针对语言模型的并行调度方法、装置、设备及存储介质 |
CN117009093A (zh) * | 2023-10-07 | 2023-11-07 | 之江实验室 | 降低神经网络推理所需内存占用量的重计算方法和系统 |
-
2024
- 2024-03-15 CN CN202410296736.1A patent/CN117892769B/zh active Active
Patent Citations (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20210064997A1 (en) * | 2018-01-10 | 2021-03-04 | Seoul National University R&Db Foundation | Method for gpu memory management for deep neural network and computing device for performing same |
CN109919310A (zh) * | 2019-01-15 | 2019-06-21 | 中国科学院信息工程研究所 | 一种面向深度学习训练任务的gpu内存优化方法及系统 |
CN111078395A (zh) * | 2019-11-12 | 2020-04-28 | 华中科技大学 | 一种基于张量的深度学习gpu内存管理优化方法及系统 |
CN110942138A (zh) * | 2019-11-13 | 2020-03-31 | 华中科技大学 | 一种混合内存环境下深度神经网络的训练方法和系统 |
US20220051104A1 (en) * | 2020-08-14 | 2022-02-17 | Microsoft Technology Licensing, Llc | Accelerating inference of traditional ml pipelines with neural network frameworks |
CN112669852A (zh) * | 2020-12-15 | 2021-04-16 | 北京百度网讯科技有限公司 | 内存分配方法、装置及电子设备 |
CN112748998A (zh) * | 2021-01-21 | 2021-05-04 | 中南大学 | 一种移动端的卷积神经网络任务调度方法及系统 |
CN115146757A (zh) * | 2021-03-31 | 2022-10-04 | 华为技术有限公司 | 一种神经网络模型的训练方法及装置 |
CN114358267A (zh) * | 2022-01-05 | 2022-04-15 | 浙江大学 | 一种降低深度神经网络训练过程中gpu内存占用的方法 |
CN114611675A (zh) * | 2022-03-22 | 2022-06-10 | 浙江大学 | 数据处理方法、装置、电子装置和存储介质 |
CN115168041A (zh) * | 2022-07-18 | 2022-10-11 | 北京一流科技有限公司 | 支持逆向动态重计算的内存释放决策系统及其方法 |
CN115391036A (zh) * | 2022-08-23 | 2022-11-25 | 浙江大学 | 一种基于强化学习内存调度决策的模型训练方法及系统 |
CN115437795A (zh) * | 2022-11-07 | 2022-12-06 | 东南大学 | 一种异构gpu集群负载感知的显存重计算优化方法及系统 |
CN116090521A (zh) * | 2023-02-22 | 2023-05-09 | 重庆大学 | 一种神经网络张量算子组合自动调优方法及装置 |
CN116107754A (zh) * | 2023-02-24 | 2023-05-12 | 华中科技大学 | 一种面向深度神经网络的内存管理方法及系统 |
CN116893904A (zh) * | 2023-09-11 | 2023-10-17 | 腾讯科技(深圳)有限公司 | 神经网络模型的内存管理方法、装置、设备、介质及产品 |
CN116991560A (zh) * | 2023-09-25 | 2023-11-03 | 粤港澳大湾区数字经济研究院(福田) | 针对语言模型的并行调度方法、装置、设备及存储介质 |
CN117009093A (zh) * | 2023-10-07 | 2023-11-07 | 之江实验室 | 降低神经网络推理所需内存占用量的重计算方法和系统 |
Non-Patent Citations (3)
Title |
---|
XINGYI LIU; KESHAB K. PARHI: "Tensor Decomposition for Model Reduction in Neural Networks: A Review [Feature]", 《IEEE CIRCUITS AND SYSTEMS MAGAZINE》, 21 July 2023 (2023-07-21) * |
李景军;张宸;曹强;: "面向训练阶段的神经网络性能分析", 计算机科学与探索, no. 10, 28 November 2017 (2017-11-28) * |
武昱;闫光辉;王雅斐;马青青;刘宇轩;: "结合GPU技术的并行CP张量分解算法", 计算机科学, no. 11, 15 November 2018 (2018-11-15) * |
Also Published As
Publication number | Publication date |
---|---|
CN117892769B (zh) | 2024-06-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111667051A (zh) | 适用边缘设备的神经网络加速器及神经网络加速计算方法 | |
CN110481536B (zh) | 一种应用于混合动力汽车的控制方法及设备 | |
CN115034390B (zh) | 一种基于云边端协同的深度学习模型推理加速方法 | |
JP2007317068A (ja) | リコメンド装置およびリコメンドシステム | |
CN113037800B (zh) | 作业调度方法以及作业调度装置 | |
CN109472361A (zh) | 神经网络优化方法 | |
US11709783B1 (en) | Tensor data distribution using grid direct-memory access (DMA) controller | |
CN110795226B (zh) | 利用计算机系统处理任务的方法、电子设备和存储介质 | |
CN112862112A (zh) | 联邦学习方法、存储介质、终端、服务器、联邦学习系统 | |
CN116112563A (zh) | 一种基于流行度预测的双策略自适应缓存替换方法 | |
CN117234710A (zh) | 一种采用强化学习实现ai模型训练内存优化的方法 | |
Chen et al. | A3c-based and dependency-aware computation offloading and service caching in digital twin edge networks | |
CN117707795B (zh) | 基于图的模型划分的边端协同推理方法及系统 | |
WO2021115082A1 (zh) | 作业调度方法以及作业调度装置 | |
CN116820730B (zh) | 多引擎计算系统的任务调度方法、装置及存储介质 | |
CN117892769B (zh) | 神经网络训练方法、显存调度方法、系统、设备和产品 | |
CN109359542A (zh) | 基于神经网络的车辆损伤级别的确定方法及终端设备 | |
EP3859611B1 (en) | Method, apparatus and device for updating convolutional neural network using gpu cluster | |
CN117011118A (zh) | 模型参数更新方法、装置、计算机设备以及存储介质 | |
Wu et al. | Heterogeneity-aware memory efficient federated learning via progressive layer freezing | |
CN116226652A (zh) | 一种训练加速方法及相关装置 | |
CN113238975A (zh) | 优化深度神经网络的参数的内存、集成电路及板卡 | |
CN118313429B (zh) | 模型训练显存优化方法、装置、电子装置和存储介质 | |
CN114995751B (zh) | 一种通用缓存替换方法及系统 | |
CN117834643B (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 |