CN115858173A - 一种大型深度学习模型训练的gpu内存瓶颈改进方法 - Google Patents
一种大型深度学习模型训练的gpu内存瓶颈改进方法 Download PDFInfo
- Publication number
- CN115858173A CN115858173A CN202211682713.1A CN202211682713A CN115858173A CN 115858173 A CN115858173 A CN 115858173A CN 202211682713 A CN202211682713 A CN 202211682713A CN 115858173 A CN115858173 A CN 115858173A
- Authority
- CN
- China
- Prior art keywords
- memory
- gpu
- data
- cpu
- model
- 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
Landscapes
- Complex Calculations (AREA)
Abstract
本发明公开了一种大型深度学习模型训练的GPU内存瓶颈改进方法,该GPU内存瓶颈改进方法包括以下步骤:S1、利用GPU内存存储数据,并分析存储数据所需的存储空间的大小;S2、在GPU内存中加入CPU内存和NVMe存储,并构成异构的GPU内存集群;S3、基于GPU内存集群对中心处理大规模深度学习训练模型进行训练与数据计算;S4、使用带宽中心分区和GPU内存集群结合,利用所有并行设备的聚合内存带宽,在GPU内存和CPU内存中存储和更新优化器状态。本发明利用GPU、CPU和NVMe内存,在GPU内存不足的情况下结合三者内存对于超大型深度学习模型的训练与计算。
Description
技术领域
本发明涉及,具体来说,涉及一种大型深度学习模型训练的GPU内存瓶颈改进方法。
背景技术
目前,随着人工智能的广泛使用,深度学习所需要的训练集模型与规模快速增长。在过去的三年里,深度学习中最大的训练密集模型增长了1000倍,从1亿个参数(ELMo)增长到超过1000亿个参数(GPT-3),相比之下,单个GPU内存仅增加了5倍(16GB到80GB),当前主要通过共用内存来适应模型规模的快速增长,我们一般允许大型模型使用多个GPU的聚合GPU内存。
但是这样的设计难以解决逐渐严重的GPU内存瓶颈问题,Transformer类的深度学习模型训练一般需要巨大的内存,当前最大的模型GPT3一共有1750亿参数,需要超过19TB的内存,这样大规模的运算是一般的实验环境难以实现的。此外,这种规模的训练模型需要并行性技术的复杂组合,这给数据研究者重构他们的模型也带来了很大的负担。
在当前的技术中,聚合的GPU内存根本不够大,不足以支持模型大小的增长。即使最新的NVIDIA100图形处理器与80gb的内存,3D并行性需要320个这样的GPU,但这只是适合一个万亿参数模型训练。未来可能会扩展到一百万亿参数的模型需要超过6000个这样的GPU。即使我们假设在未来几年能够增加5倍GPU内存,依然很难追赶上参数规模增大的速度,因为GPU内存的瓶颈,我们不能再适应训练模型规模的持续增长。
因此,GPU内存瓶颈也限制了数据研究者研究今天的大型模型,特别是微调大型模型的参数,大型模型首先对大量的通用数据进行预训练,通过微调,相同的模型可以专门用于广泛的应用程序,虽然对一个具有数千亿参数的模型进行预训练可能需要数百万小时的GPU时间,但微调它要方便得多,需要显著更少的GPU时间,并且可以在只有少量GPU的单个计算节点上完成。虽然许多企业和用户都可以访问这些计算资源,但不幸的是,它们受到这些计算节点上可用内存的限制,这反过来又限制了可以进行微调的训练模型的大小。它使大多数研究人员和公司都无法对于大规模的GPU集群上面训练的大型模型进行微调。
除了GPU内存不足,训练大量的大型模型在可用性和灵活性方面也受到限制。3D并行性需要以复杂的方式结合数据、模型和管道并行性,以获得数千亿或数万亿个参数。虽然目前通过共用内存的设计非常有效,但它需要数据科学家执行主要的模型代码重构,用张量切片版本替换单个GPU操作符,并将模型分割为负载平衡的管道阶段。这也使得3D并行性在它所能支持的模型类型中不灵活,这种具有复杂依赖关系的模型不能轻易地转换为负载平衡的管道模型。
因此,现在遇到了以下问题:
1、在未来,我们如何支持模型规模未来1000倍的增长,从有1750亿个参数的GPT-3模型到有数百万亿个参数的模型。
2、如何才能让更多无法使用数百个GPU的数据研究者能够方便的训练现在的大型模型。
3、能否通过消除模型重构和多种并行形式的需要,使大型模型训练更容易。
针对相关技术中的问题,目前尚未提出有效的解决方案。
发明内容
针对相关技术中的问题,本发明提出一种大型深度学习模型训练的GPU内存瓶颈改进方法,以克服现有相关技术所存在的上述技术问题。
为此,本发明采用的具体技术方案如下:
一种大型深度学习模型训练的GPU内存瓶颈改进方法,该GPU内存瓶颈改进方法包括以下步骤:
S1、利用GPU内存存储数据,并分析存储数据所需的存储空间的大小;
S2、在GPU内存中加入了CPU内存和大量的NVMe存储,并构成异构的GPU内存集群;
S3、基于GPU内存集群对中心处理大规模深度学习训练模型进行训练与数据计算;
S4、使用带宽中心分区和GPU内存集群结合,利用所有并行设备的聚合内存带宽,在GPU内存和CPU内存中存储和更新优化器状态,并利用聚合GPU内存和CPU内存带宽及聚合CPU内存计算优化器状态。
进一步的,所述存储数据包括模型状态和剩余状态记忆所需的存储空间。
进一步的,所述模型状态包括模型参数、优化器状态及梯度数据。
进一步的,所述存储数据,并分析存储数据所需的存储空间的大小包括以下步骤:
S11、使用Adam优化器进行的混合精度训练,并将模型参数和梯度数据存储在FP16中;
S12、将模型状态卸载到CPU或NVMe,并在模型中最大的单个操作符中执行正向或向后向传播所需的最小GPU内存量;
S13、在执行实际的反向传播之前,在反向传播中重新计算激活所需的内存。
进一步的,所述模型参数的计算公式为:
12×nl×hd2
式中,hd为因此维数,nl为Transformer层数。
进一步的,所述剩余状态记忆所需的存储空间的计算公式为:
2×bsz×seq×hd×nl/ci
式中,ci为两个激活检查点之间的Transformer块的数量,nl为Transformer层数,bsz×seq×hd为每个Transformer块中的输入数据的大小。
进一步的,所述基于GPU内存集群对中心处理大规模深度学习训练模型进行训练与数据计算包括以下步骤:
S31、使用峰值计算吞吐量、数据移动带宽及其算术强度,并估计训练效率;
S32、使用DL并行训练解决方案;
S33、将所有的模型状态卸载到CPU或NVMe内存中,或根据内存需求将它们保持在GPU中,并将激活工作内存卸载到CPU内存中。
进一步的,所述带宽中心分区包括数据映射和并行数据检索策略:
所述数据映射包括以下步骤:
在所有数据上传和卸载并行进程中划分单个参数;
每一层的参数属于一个数据并行过程,并在需要访问参数时使用集合而不是广播参数到所有的接收设备;
若数据位于GPU内存中,则在数据移动量方面广播通信集体和所有聚集通信的集体通信成本是相同的;
所述并行数据检索策略包括以下步骤:
基于分区参数和集合的方法,所有的PCIe链接都是并行活动的;
让每个链接都带来参数为1/dpth的部分,其中,dp是数据并行度。
进一步的,所述使用带宽中心分区和GPU内存集群结合,并利用所有并行设备的聚合内存带宽包括以下步骤:
将一个大型操作分解成可以顺序执行的小算子以减少工作内存需求,并按照顺序执行分解成的小算子;
按照每个小算子的参数和梯度,依次获取和释放这些内存空间。
进一步的,所述在GPU内存和CPU内存中存储和更新优化器状态,并利用聚合GPU内存和CPU内存带宽及聚合CPU内存计算优化器状态包括以下步骤:
将这些请求与GPU/GPU或GPU/CPU通信或计算相重叠
利用DeepNVMe在NVMe存储设备中实现接近峰值的顺序读和写带宽;
将源向量和目标向量驻留在固定内存缓冲区中
通过重用少量的固定内存缓冲区将整个模型状态卸载到CPU内存或NVMe存储设备来管理有限的固定内存供应;
降激活检查点的频率,并有效地重叠激活检查点与CPU内存与GPU内存上的正向和反向计算的通信。
本发明的有益效果为:
1、发明公开了记忆需求的大型模型训练的记忆和性能特征,定量和定性描述了对于一个大型模型训练的不同组件以及它们的带宽需求。
2、利用GPU,CPU和NVMe内存,结合GPU和CPU的计算资源完成了在GPU内存不足的情况下结合三者内存对于超大型深度学习模型的训练与计算。
3、基于共享的内存处理方式使得当前处理超大规模深度学习训练模型的方法中不需要模型并行,减少了编程复杂度,在微调参数的时候可以快速进行调整而不需要重新运行整个训练模型。
4、基于带宽中心分区,利用所有并行设备的聚合内存带宽,同时利用带宽和总线的重叠通信使得我们的处理方式和只使用GPU内存的效率相似,并且不需要模型代码重构。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本发明实施例的一种大型深度学习模型训练的GPU内存瓶颈改进方法的流程图;
图2是根据本发明实施例的一种大型深度学习模型训练的GPU内存瓶颈改进方法中在四个数据并行级别上训练一个两层模型的示意图模型图;
图3是根据本发明实施例的一种大型深度学习模型训练的GPU内存瓶颈改进方法中训练模型结构图。
具体实施方式
为进一步说明各实施例,本发明提供有附图,这些附图为本发明揭露内容的一部分,其主要用以说明实施例,并可配合说明书的相关描述来解释实施例的运作原理,配合参考这些内容,本领域普通技术人员应能理解其他可能的实施方式以及本发明的优点,图中的组件并未按比例绘制,而类似的组件符号通常用来表示类似的组件。
根据本发明的实施例,提供了一种大型深度学习模型训练的GPU内存瓶颈改进方法。
现结合附图和具体实施方式对本发明进一步说明,如图1所示,根据本发明实施例的大型深度学习模型训练的GPU内存瓶颈改进方法,该GPU内存瓶颈改进方法包括以下步骤:
S1、利用GPU内存存储数据,并分析存储数据所需的存储空间的大小;
在一个实施例中,所述存储数据包括模型状态和剩余状态记忆所需的存储空间(激活计算所需的空间);
在具体应用时,剩余状态记忆所需的存储空间,这部分主要由激活记忆组成,这取决于模型架构、批大小(bsz)和序列长度(seq),它可能会相当大。在积极的一面,激活记忆所需的存储空间可以通过激活检查点显著减少,它需要进行0.33倍额外的重计算,如Turing-NLG17.2B和GPT-3175B等大型模型都使用激活检查点进行训练
在一个实施例中,所述模型状态包括模型参数、优化器状态及梯度数据。
在具体应用时,模型参数:一般情况下,对于使用Adam优化器进行的混合精度训练,参数和梯度存储在FP16中,而优化器的状态由FP32的动量、方差、参数和梯度组成。每个参数平均需要20个字节的内存。基于Transformer(变压器;促使变化者;改革者)的模型中的参数总数主要取决于隐藏维数(hd)和Transformer层数(nl)。Transformer块中的几乎所有参数都来自每个块内的四个线性层,其大小分别为:(hd,3hd)、(hd,hd)、(hd,4hd)和(4hd,hd)。因此,在一个基于Transformer的模型状态中的总参数和可以近似为12×nl×hd2,一共需要240×nl×hd2字节的存储空间来存储模型的状态。
模型状态工作内存(MSWM):指在所有模型状态都被卸载到CPU或NVMe后,在模型中最大的单个操作符上执行正向或向后向传播所需的最小GPU内存量。这是由模型中该算符的参数的大小和梯度给出的,因为必须至少有足够的内存来保存该参数及其梯度,以便进行反向传播。对于基于Transformer的模型,最大的算子是一个线性层,它将隐藏状态从hd转换到4hd。参数的大小和这个线性图层的梯度为4×nl×4hd字节。MSWM在计算中需要连续内存中的多个千兆字节,这可能导致在训练期间缺乏足够的连续内存满足MSWM的需求,使得内存耗尽。
在一个实施例中,所述存储数据,并分析存储数据所需的存储空间的大小包括以下步骤:
S11、使用Adam优化器进行的混合精度训练,并将模型参数和梯度数据存储在FP16中;
S12、将模型状态卸载到CPU或NVMe,并在模型中最大的单个操作符中执行正向或向后向传播所需的最小GPU内存量;
S13、在执行实际的反向传播之前,在反向传播中重新计算激活所需的内存。
在具体应用时,激活工作内存(AWM):在执行实际的反向传播之前,在反向传播中重新计算激活所需的内存。这是两个连续的激活检查点之间需要激活的内存的大小。例如,如果我们为每个变压器块创建一个激活检查点,则内存可以用每个变压器块的总激活量的大小计算得到。这部分空间大小大概是bsz×seq×ci×(16×hd+2×attn_heads×seq)字节。
在一个实施例中,所述模型参数的计算公式为:
12×nl×hd2
式中,hd为因此维数,nl为Transformer层数。
在一个实施例中,所述剩余状态记忆所需的存储空间的计算公式为:
2×bsz×seq×hd×nl/ci
式中,ci为两个激活检查点之间的Transformer块的数量,nl为Transformer层数,bsz×seq×hd为每个Transformer块中的输入数据的大小。
S2、在GPU内存中加入了CPU内存和大量的NVMe存储,并构成异构的GPU内存集群;
在具体应用时,我们使用将GPU内存存储不下的部分卸载到CPU和NVMe内存中来解决GPU内存不足的问题。这首先可能带来的问题是有限的上传下载带宽是否会影响训练的效率。我们也分析了带宽对训练效率的影响:
假设工作负载执行没有任何计算和通信重叠,我们可以使用峰值计算吞吐量(peaktp)、数据移动带宽(bw)及其算术强度(ait)来估计训练效率。工作负载的算术强度(AIT)指的是总计算量与计算所需的数据之间的比率,它描述了每次数据移动的计算量。越高的AIT意味着对数据移动带宽的要求越低,因为对于每个加载的数据,加速器可以做更多的计算。效率度量的公式如下:
式中,compute_time为所有计算时间,total_computation为所有计算量,peaktp为峰值计算吞吐量,ait为算数强度,computation_time为内部通信时间,efficiency为最终效率,bw为数据移动带宽。
如此巨大的内存需要使得一般的GPU内存难以达到要求,所以我们的设计中加入了CPU内存(约50倍GPU内存)和大量的NVMe存储(约20倍CPU内存),组成一个异构的GPU集群。在这个设计中,我们使用DL并行训练解决方案,这样我们可以将所有的模型状态卸载到CPU或NVMe内存中,或者根据内存需求将它们保持在GPU上;也可以在必要的时候将激活工作内存卸载到CPU内存中。
S3、基于GPU内存集群对中心处理大规模深度学习训练模型进行训练与数据计算;
在一个实施例中,所述基于GPU内存集群对中心处理大规模深度学习训练模型进行训练与数据计算包括以下步骤:
S31、使用峰值计算吞吐量、数据移动带宽及其算术强度,并估计训练效率;
S32、使用DL并行训练解决方案;
具体的,(DL指的是deep learning,即深度学习)训练方式即使用上述提到的公式进行反馈误差调整训练,找到最合适的参数,由此合理分配我们现有的存储和计算资源。
S33、将所有的模型状态卸载到CPU或NVMe内存中,或根据内存需求将它们保持在GPU中,并将激活工作内存卸载到CPU内存中。
在具体应用时,简化启发的实现,允许在有限的资源上实现比较大规模的模型训练,同时也不需要将模型代码重构。本发明实现了优秀的训练吞吐量和可伸缩性,不受有限的CPU或NVMe带宽的限制,我们需要注意到的是,CPU内存比GPU内存要慢一个数量级,而NVMe内存比CPU内存还要慢一个数量级,从GPU读取这部分内存的速度会比较慢,这使得模型训练的速度受到了极大的影响。
如图2所示,描述了第一层的反向传递的通信。分区参数从慢内存移动到GPU,然后收集以形成完整的层。在计算梯度之后,它们被聚合、重新分区,然后卸载到慢内存中。层用下标表示,DP秩用上标表示。
因此以下是我们的设计方案,针对在背景技术中提及的以减轻内存读写速度慢对于训练效率造成的影响。
参数和梯度数据传输:参数和梯度的数据移动带宽必须大于70GB/s,接近于DGX-2集群上可用的GPU-GPU带宽。因此,对于在不同的GPU内存中的数据,DL并行训练解决方案在使用GPU之前进行GPU之间的前后向传播,就可以有效地运行。但是从单个GPU到CPU内存或NVMe的12GB/sPCIe的带宽不足以支持这样规模的异构训练,甚至一些大型模型的激活工作内存会很大,超过了现有的CPU内存大小,使得简单的将数据转存到CPU内存无法满足要求;同时当扩展到数百或数千个GPU实现有效收敛时,有效批处理大小将变得很大。
S4、使用带宽中心分区和GPU内存集群结合,利用所有并行设备(包括系统中的所有GPU和CPU)的聚合内存带宽,在GPU内存和CPU内存中存储和更新优化器状态,并利用聚合GPU内存和CPU内存带宽及聚合CPU内存计算优化器状态;
在一个实施例中,所述带宽中心分区包括数据映射和并行数据检索策略:
所述数据映射包括以下步骤:
在所有数据上传和卸载并行进程中划分单个参数;
每一层的参数属于一个数据并行过程,并在需要访问参数时使用集合而不是广播参数到所有的接收设备;
若数据位于GPU内存中,则在数据移动量方面广播通信集体和所有聚集通信的集体通信成本是相同的;
所述并行数据检索策略包括以下步骤:
基于分区参数和集合的方法,所有的PCIe链接都是并行活动的;
让每个链接都带来参数为1/dpth的部分,其中,dp是数据并行度。
带宽中心分区:我们使用一种新的数据映射和并行数据检索策略,用于卸载参数和梯度。其中数据映射方案指的是我们在所有数据上传和卸载并行进程中划分单个参数,每一层的参数属于一个数据并行过程,并在需要访问参数时使用集合而不是广播参数到所有的接收设备。如果数据位于GPU上,那么在数据移动量方面,广播通信集体和所有聚集通信的集体通信成本是相同的。因此,这对于仅使用GPU内存的训练并没有任何区别。在数据位于NVMe或者CPU内存上的时候,我们使用并行数据检索策略,基于分区参数和集合的方法,所有的PCIe链接都是并行活动的,每个链接都带来参数的1/dpth部分,其中dp是数据并行度。因此,NVMe或CPU内存与GPU之间的有效通信带宽随dp呈线性增加。
重叠使用PCIe为中心的设计:我们不仅在PCIe上重叠GPU-GPU通信与计算,还重叠NVMe-CPU和CPU-GPU通信。我们将一个大型操作分解成可以顺序执行的小算子以减少工作内存需求,并按照顺序执行分解成的小算子。在计算的时候我们可以按照每个算子的参数和梯度,依次获取和释放这些内存空间,因此可以与小算子数量成比例地减少工作所需的内存。在合理的划分下,我们可以支持任意大小的大型操作,而不依赖于模型并行来适应有限的GPU内存。
在一个实施例中,所述使用带宽中心分区和GPU内存集群结合,并利用所有并行设备的聚合内存带宽包括以下步骤:
将一个大型操作分解成可以顺序执行的小算子以减少工作内存需求,并按照顺序执行分解成的小算子;
按照每个小算子的参数和梯度,依次获取和释放这些内存空间。
在一个实施例中,所述在GPU内存和CPU内存中存储和更新优化器状态,并利用聚合GPU内存和CPU内存带宽及聚合CPU内存计算优化器状态包括以下步骤:
将这些请求与GPU/GPU或GPU/CPU通信或计算相重叠
利用DeepNVMe在NVMe存储设备中实现接近峰值的顺序读和写带宽;
将源向量和目标向量驻留在固定内存缓冲区中
通过重用少量的固定内存缓冲区将整个模型状态卸载到CPU内存或NVMe存储设备来管理有限的固定内存供应;
降激活检查点的频率,并有效地重叠激活检查点与CPU内存与GPU内存上的正向和反向计算的通信。
此外在具体应用时,与在正向和反向传播过程中依次消耗和产生的参数和梯度不同,优化器的状态可以同时并行更新,在本发明中,分别在所有可用的GPU和CPU中并行地在GPU和CPU内存中存储和更新优化器状态。在将优化器状态从GPU内存卸载到CPU内存时,还可以利用聚合GPU和CPU内存带宽以及聚合CPU计算来进行优化器步骤。主要依靠于以下两个设计方案:
1、DeepNVMe:一个功能强大的C++NVMe读/写库,支持异步完成的批量读/写请求,以及刷新正在进行的读/写的显式同步请求。这样我们可以将这些请求与GPU/GPU或GPU/CPU通信或计算相重叠。最重要的是,DeepNVMe能够在NVMe存储设备上实现接近峰值的顺序读和写带宽。它通过许多优化来实现这种高性能,包括I/O请求的积极并行化(无论是来自单个用户线程还是跨多个用户线程)、智能工作调度、避免数据复制和内存锁定。
2、固定内存管理层:为了确保有关NVMe和CPU内存的高性能读写,源向量和目标向量必须驻留在固定内存缓冲区中。然而,固定的内存缓冲区是稀缺的系统资源,它们被单个进程的过度占用可能会降低系统的整体性能或导致系统不稳定。该层通过重用少量的固定内存缓冲区将整个模型状态卸载到CPU或NVMe来管理有限的固定内存供应。内存缓冲区的重用防止了CPU和GPU内存的内存碎片,这一层还提供了具有固定内存数据的PyTorch张量,允许在位计算张量,这样它们就可以被写入NVMe,而不需要任何进一步的复制来提高带宽。
此外,如图3所示,激活工作内存:在DGX-2节点上,每个GPU可以在PCIe上并行以3GB/s读写CPU内存,允许激活检查点卸载到CPU内存,同时对隐藏的大小更大或更大的8K保持80%以上的效率。为了在更小的隐藏尺寸下实现高效率,我们降低了激活检查点的频率,并有效地重叠激活检查点与CPU内存与GPU上的正向和反向计算的通信。
综上所述,借助于本发明的上述技术方案,本发明公开了记忆需求的大型模型训练的记忆和性能特征,定量和定性描述了对于一个大型模型训练的不同组件以及它们的带宽需求;同时利用GPU,CPU和NVMe内存,结合GPU和CPU的计算资源完成了在GPU内存不足的情况下结合三者内存对于超大型深度学习模型的训练与计算;基于共享的内存处理方式使得当前处理超大规模深度学习训练模型的方法中不需要模型并行,减少了编程复杂度,在微调参数的时候可以快速进行调整而不需要重新运行整个训练模型;基于带宽中心分区,利用所有并行设备的聚合内存带宽,同时利用带宽和总线的重叠通信使得我们的处理方式和只使用GPU内存的效率相似,并且不需要模型代码重构。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种大型深度学习模型训练的GPU内存瓶颈改进方法,其特征在于,该GPU内存瓶颈改进方法包括以下步骤:
S1、利用GPU内存存储数据,并分析存储数据所需的存储空间的大小;
S2、在GPU内存中加入CPU内存和NVMe存储,并构成异构的GPU内存集群;
S3、基于GPU内存集群对中心处理大规模深度学习训练模型进行训练与数据计算;
S4、使用带宽中心分区和GPU内存集群结合,利用所有并行设备的聚合内存带宽,在GPU内存和CPU内存中存储和更新优化器状态,并利用聚合GPU内存和CPU内存带宽及聚合CPU内存计算优化器状态。
2.根据权利要求1所述的一种大型深度学习模型训练的GPU内存瓶颈改进方法,其特征在于,所述存储数据包括模型状态和剩余状态记忆所需的存储空间。
3.根据权利要求2所述的一种大型深度学习模型训练的GPU内存瓶颈改进方法,其特征在于,所述模型状态包括模型参数、优化器状态及梯度数据。
4.根据权利要求1所述的一种大型深度学习模型训练的GPU内存瓶颈改进方法,其特征在于,所述存储数据,并分析存储数据所需的存储空间的大小包括以下步骤:
S11、使用Adam优化器进行的混合精度训练,并将模型参数和梯度数据存储在FP16中;
S12、将模型状态卸载到CPU或NVMe,并在模型中最大的单个操作符中执行正向或向后向传播所需的最小GPU内存量;
S13、在执行实际的反向传播之前,在反向传播中重新计算激活所需的内存。
5.根据权利要求4所述的一种大型深度学习模型训练的GPU内存瓶颈改进方法,其特征在于,所述模型参数的计算公式为:
12×nl×hd2
式中,hd为因此维数,nl为Transformer层数。
6.根据权利要求4所述的一种大型深度学习模型训练的GPU内存瓶颈改进方法,其特征在于,所述剩余状态记忆所需的存储空间的计算公式为:
2×bsz×seq×hd×nl/ci
式中,ci为两个激活检查点之间的Transformer块的数量,nl为Transformer层数,bsz×seq×hd为每个Transformer块中的输入数据的大小。
7.根据权利要求1所述的一种大型深度学习模型训练的GPU内存瓶颈改进方法,其特征在于,所述基于GPU内存集群对中心处理大规模深度学习训练模型进行训练与数据计算包括以下步骤:
S31、使用峰值计算吞吐量、数据移动带宽及其算术强度,并估计训练效率;
S32、使用DL并行训练解决方案;
S33、将所有的模型状态卸载到CPU或NVMe内存中,或根据内存需求将它们保持在GPU中,并将激活工作内存卸载到CPU内存中。
8.根据权利要求1所述的一种大型深度学习模型训练的GPU内存瓶颈改进方法,其特征在于,所述带宽中心分区包括数据映射和并行数据检索策略:
所述数据映射包括以下步骤:
在所有数据上传和卸载并行进程中划分单个参数;
每一层的参数属于一个数据并行过程,并在需要访问参数时使用集合而不是广播参数到所有的接收设备;
若数据位于GPU内存中,则在数据移动量方面广播通信集体和所有聚集通信的集体通信成本是相同的;
所述并行数据检索策略包括以下步骤:
基于分区参数和集合的方法,所有的PCIe链接都是并行活动的;
让每个链接都带来参数为1/dpth的部分,其中,dp是数据并行度。
9.根据权利要求8所述的一种大型深度学习模型训练的GPU内存瓶颈改进方法,其特征在于,所述使用带宽中心分区和GPU内存集群结合,并利用所有并行设备的聚合内存带宽包括以下步骤:
将一个大型操作分解成可以顺序执行的小算子以减少工作内存需求,并按照顺序执行分解成的小算子;
按照每个小算子的参数和梯度,依次获取和释放这些内存空间。
10.根据权利要求1所述的一种大型深度学习模型训练的GPU内存瓶颈改进方法,其特征在于,所述在GPU内存和CPU内存中存储和更新优化器状态,并利用聚合GPU内存和CPU内存带宽及聚合CPU内存计算优化器状态包括以下步骤:
将这些请求与GPU/GPU或GPU/CPU通信或计算相重叠
利用DeepNVMe在NVMe存储设备中实现接近峰值的顺序读和写带宽;
将源向量和目标向量驻留在固定内存缓冲区中
通过重用少量的固定内存缓冲区将整个模型状态卸载到CPU内存或NVMe存储设备来管理有限的固定内存供应;
降激活检查点的频率,并有效地重叠激活检查点与CPU内存与GPU内存上的正向和反向计算的通信。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211682713.1A CN115858173A (zh) | 2022-12-27 | 2022-12-27 | 一种大型深度学习模型训练的gpu内存瓶颈改进方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211682713.1A CN115858173A (zh) | 2022-12-27 | 2022-12-27 | 一种大型深度学习模型训练的gpu内存瓶颈改进方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115858173A true CN115858173A (zh) | 2023-03-28 |
Family
ID=85653397
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211682713.1A Pending CN115858173A (zh) | 2022-12-27 | 2022-12-27 | 一种大型深度学习模型训练的gpu内存瓶颈改进方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115858173A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116862019A (zh) * | 2023-07-06 | 2023-10-10 | 清华大学 | 基于数据并行范式的模型训练方法及装置 |
CN117687802A (zh) * | 2024-02-02 | 2024-03-12 | 湖南马栏山视频先进技术研究院有限公司 | 一种基于云平台的深度学习并行调度方法、装置和云平台 |
-
2022
- 2022-12-27 CN CN202211682713.1A patent/CN115858173A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116862019A (zh) * | 2023-07-06 | 2023-10-10 | 清华大学 | 基于数据并行范式的模型训练方法及装置 |
CN116862019B (zh) * | 2023-07-06 | 2024-03-19 | 清华大学 | 基于数据并行范式的模型训练方法及装置 |
CN117687802A (zh) * | 2024-02-02 | 2024-03-12 | 湖南马栏山视频先进技术研究院有限公司 | 一种基于云平台的深度学习并行调度方法、装置和云平台 |
CN117687802B (zh) * | 2024-02-02 | 2024-04-30 | 湖南马栏山视频先进技术研究院有限公司 | 一种基于云平台的深度学习并行调度方法、装置和云平台 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115858173A (zh) | 一种大型深度学习模型训练的gpu内存瓶颈改进方法 | |
Yu et al. | Gillis: Serving large neural networks in serverless functions with automatic model partitioning | |
CN109978171B (zh) | 一种基于云计算的Grover量子仿真算法优化方法 | |
Nguyen et al. | Why globally re-shuffle? Revisiting data shuffling in large scale deep learning | |
Oyama et al. | Accelerating deep learning frameworks with micro-batches | |
CN103718197A (zh) | 可编程概率处理 | |
Wan et al. | Adaptive message quantization and parallelization for distributed full-graph gnn training | |
LaSalle et al. | Mpi for big data: New tricks for an old dog | |
Sun et al. | Cognn: efficient scheduling for concurrent gnn training on gpus | |
Ma et al. | Adaptive stochastic gradient descent for deep learning on heterogeneous CPU+ GPU architectures | |
CN108108242B (zh) | 基于大数据的存储层智能分发控制方法 | |
US11429299B2 (en) | System and method for managing conversion of low-locality data into high-locality data | |
Gusak et al. | Survey on large scale neural network training | |
Wen et al. | A swap dominated tensor re-generation strategy for training deep learning models | |
CN117234710A (zh) | 一种采用强化学习实现ai模型训练内存优化的方法 | |
Krishnan et al. | Multi-stage memory efficient strassen's matrix multiplication on GPU | |
US20220391571A1 (en) | Fast quantum circuit simulations with parallel task-based tensor network contraction | |
US8090762B2 (en) | Efficient super cluster implementation for solving connected problems in a distributed environment | |
US20210286328A1 (en) | Information processing apparatus, information processing method, and non-transitory computer-readable storage medium | |
Patel et al. | FreeLunch: Compression-based GPU memory management for convolutional neural networks | |
Tabuchi et al. | The 16,384-node parallelism of 3D-CNN training on an arm CPU based supercomputer | |
You et al. | Accelerating the cryo-EM structure determination in RELION on GPU cluster | |
Li et al. | Job placement strategy with opportunistic resource sharing for distributed deep learning clusters | |
WO2024131170A1 (zh) | 算子的处理方法、装置、芯片、计算设备及存储介质 | |
Lee et al. | OCAM: Out-of-core coordinate descent algorithm for matrix completion |
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 |