CN116883229A - 异构gpu集群中加速神经网络训练的流水线并行方法 - Google Patents
异构gpu集群中加速神经网络训练的流水线并行方法 Download PDFInfo
- Publication number
- CN116883229A CN116883229A CN202310892762.6A CN202310892762A CN116883229A CN 116883229 A CN116883229 A CN 116883229A CN 202310892762 A CN202310892762 A CN 202310892762A CN 116883229 A CN116883229 A CN 116883229A
- Authority
- CN
- China
- Prior art keywords
- gpu
- training
- neural network
- model
- heterogeneous
- 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
- 238000012549 training Methods 0.000 title claims abstract description 97
- 238000000034 method Methods 0.000 title claims abstract description 56
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 49
- 238000000638 solvent extraction Methods 0.000 claims abstract description 23
- 230000008569 process Effects 0.000 claims abstract description 20
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 17
- 238000004891 communication Methods 0.000 claims abstract description 15
- 238000013135 deep learning Methods 0.000 claims abstract description 7
- 238000004364 calculation method Methods 0.000 claims description 20
- 230000001186 cumulative effect Effects 0.000 claims description 7
- 238000005315 distribution function Methods 0.000 claims description 7
- 238000005192 partition Methods 0.000 claims description 6
- 230000005540 biological transmission Effects 0.000 claims description 5
- 238000012545 processing Methods 0.000 claims description 3
- 238000007667 floating Methods 0.000 claims description 2
- 238000013136 deep learning model Methods 0.000 abstract 1
- 230000008447 perception Effects 0.000 abstract 1
- 238000003062 neural network model Methods 0.000 description 13
- 238000010586 diagram Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 238000005457 optimization Methods 0.000 description 5
- 230000001133 acceleration Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 230000016507 interphase Effects 0.000 description 3
- 230000018199 S phase Effects 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 2
- 238000012512 characterization method Methods 0.000 description 2
- HPTJABJPZMULFH-UHFFFAOYSA-N 12-[(Cyclohexylcarbamoyl)amino]dodecanoic acid Chemical compound OC(=O)CCCCCCCCCCCNC(=O)NC1CCCCC1 HPTJABJPZMULFH-UHFFFAOYSA-N 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004138 cluster model Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000002360 explosive Substances 0.000 description 1
- 238000011478 gradient descent method Methods 0.000 description 1
- 238000012804 iterative process Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008450 motivation Effects 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 238000013138 pruning Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000003860 storage Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000033772 system development Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/70—Arrangements for image or video recognition or understanding using pattern recognition or machine learning
- G06V10/764—Arrangements for image or video recognition or understanding using pattern recognition or machine learning using classification, e.g. of video objects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/70—Arrangements for image or video recognition or understanding using pattern recognition or machine learning
- G06V10/82—Arrangements for image or video recognition or understanding using pattern recognition or machine learning using neural networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/94—Hardware or software architectures specially adapted for image or video understanding
- G06V10/955—Hardware or software architectures specially adapted for image or video understanding using specific electronic processors
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Computing Systems (AREA)
- Multimedia (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Medical Informatics (AREA)
- Databases & Information Systems (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Molecular Biology (AREA)
- Computational Linguistics (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明提供了一种异构GPU集群中加速神经网络训练的流水线并行方法,核心机制主要包含三个部分,分别是深度学习模型刻画、同构GPU模型划分及任务放置与异构GPU模型划分及任务放置。本发明首先针对深度学习应用在GPU训练过程中的资源需求,刻画出使用不同类型的GPU时训练过程中计算量、中间结果通信数量、参数同步量等相应指标,并将其作为模型划分与任务放置的输入。然后根据模型刻画结果和GPU集群的环境,设计基于动态规划的划分算法,实现异构GPU和异构带宽感知的流水线混合并行模型划分与任务放置,目的是最小化划分之后各阶段任务执行时间的最大值,以确保负载均衡,实现深度神经网络的高效分布式训练。
Description
技术领域
本发明涉及异构GPU集群中加速神经网络训练的流水线并行方法,属于分布式计算技术领域。
背景技术
近年来,人工智能发展迅速,而深度神经网络(Deep Neural Networks,DNNs)作为人工智能中最常用的技术,在图像处理,自然语言处理,自动驾驶等方面取得了广泛的应用。深度神经网络是采用人工神经网络为基础架构对训练数据进行表征学习的一种技术,其训练过程主要由以下三个部分组成:
(1)正向传播。正向传播是指神经网络从带有标签的训练集中读取数据,通过中间层进行计算,最后由输出层输出计算结果的过程。为了减少训练过程中的噪声以及提高训练速度,每次正向传播会处理一个批次的数据。
(2)反向传播。正向传播过程结束后,要把正向传播的结果与训练集上的标签对比,并采用相应的损失函数计算出误差。然后通过链式求导法则,从正向传播的反方向求出各个参数的梯度,计算不同参数对误差影响的权重大小,反向传播时要用到对应层正向传播的中间结果。
(3)梯度下降。根据反向传播中得到的参数梯度,采用梯度下降的方法,更新每一层的参数,完成一次训练迭代。不断重复迭代过程直到神经网络达到收敛状态,完成训练。然而随着深度学习的不断发展,为了获得更高的训练精度,深度神经网络的层数不断加深,在训练过程中逐渐暴露出计算资源不足的问题。深度学习的训练需要强大的算力支撑,近年来新的模型不断涌现,训练所需的计算量也呈爆发式增长,计算量增长导致训练所需的时间飙升,传统的单卡训练已经不可行,如何使用GPU集群来进行分布式训练成为了人们关注的重点问题。
传统分布式训练方法主要分为两种方式:
(1)数据并行是指训练过程中,每个GPU计算节点都拥有神经网络模型的完整副本,每次训练时,不同的节点各自独立地使用部分数据执行正向传播和反向传播过程,计算出参数梯度。一次迭代结束后,所有节点将自己计算出的梯度进行参数同步,同步完成后继续执行下一轮迭代。但由于每个节点拥有模型的完整副本,数据并行不能减少显存的占用;而且随着并行度的提高,参数通信量逐渐增加,有限的通信带宽会导致参数同步时间会成为整个训练的瓶颈,影响训练效率。
(2)模型并行。模型并行则将完整的模型切分成多个部分,划分到不同的GPU计算节点上,正向传播时上游节点计算结束产生的中间结果会向下游节点传输,而反向传播时每个节点产生的梯度将会沿着相反的方向传播。由于模型并行将网络进行了切割,每个GPU仅负责计算一部分模型,可以减少显存的占用。训练时,按照神经网络的计算图顺序进行正向传播和反向传播,每个节点计算完成后会将计算结果传输给下游节点,直到完成一轮数据的迭代。但由于计算的依赖性,反向传播需要等待正向传播的过程结束后才能进行,造成GPU存在大量的空闲时间,分布式训练效率很低。
针对这两种并行方式各自的特点,近期研究者们提出了流水线混合并行。流水线混合并行是一种结合了传统数据并行和模型并行的热门训练方法,它将数据进一步划分,每一部分数据都由在不同训练节点的部分模型按以类似流水线的方式依次处理,提高了设备的利用率和训练速度。流水线并行中划分出来的部分模型被称为阶段,数据交由阶段进行处理,然后传递给下一个阶段。然而,流水线并行要求由模型划分而来的每个阶段有着尽可能相同的负载,即每个阶段的执行时间尽可能相同,否则会导致设备利用率和模型训练速度的降低,因此需要一个合适的模型划分和任务放置方法,综合考虑神经网络模型层的划分和对应训练任务的设备选择,以平衡每个阶段的负载,保障较高的训练效率。因此,流水线混合并行训练通过在划分出来的阶段中采用数据并行,以加快单个阶段的训练速度,从而达到平衡负载的目的。此外,现有研究还考虑到了集群中可能存在的网络带宽异构,并通过基于动态规划的方法实现了自动的、负载均衡的模型划分与任务放置。在负载均衡状态下,流水线能够保证较高的设备利用率,从而提高训练速度。
由于GPU产品的快速迭代、成本效率问题和对不同加速效果的需求的综合考虑,现实的GPU集群中异构GPU的使用是不可避免的。在异构GPU集群中,同时存在着GPU的异构性和网络带宽的异构性,即不同类型的GPU处理同一神经网络模型的同一层的计算所需时间不同,且由带宽决定的阶段间的通信时间也不同。但现有异构环境的模型划分方法只解决了带宽异构带来的问题,没有考虑到普遍存在的GPU异构性,其模型划分与任务放置方法是在集群中所有GPU都是同构的这一前提假设的基础上设计的,这就导致现有方法在异构GPU集群中无法保证流水线阶段划分的负载均衡,从而导致设备利用率的降低和训练速度的下降。如下图所示,在异构GPU导致的流水线负载不均衡状态下,不同阶段完成每次计算所需时间存在差距,因而相较于负载均衡状态GPU利用率降低。
发明内容
针对现有技术在异构GPU集群环境中进行流水线并行加速训练时存在的问题,为了在综合考虑GPU异构性和带宽异构性的情况下保证流水线阶段负载均衡,本发明提出一种新型异构GPU感知的分布式流水线训练加速方法。在混合流水线模式下,同一时间片,不同的阶段中GPU在执行模型不同部分的相应计算,为了使得模型训练并行化程度高,提升分布式训练速度,需要在模型划分时不仅考虑训练速度,还应考虑各阶段之间负载均衡。为此,该方法根据深度神经网络的层级特性,异构GPU集群中网络拓扑的层级结构以及节点内GPU同构而节点间GPU异构的情况,先利用动态规划的方法求解出节点内使用同构GPU训练的划分结果,再根据此结果,再次利用动态规划求解出节点间使用异构GPU和异构带宽的负载均衡的模型划分与任务放置。
为了达到上述目的,本发明提供如下技术方案:
异构GPU集群中加速神经网络训练的流水线并行方法,包括如下步骤:
第一部分:为神经网络层次模型建立累积分布函数(CDF)模型,在给定超参数的前提下,分析深度学习应用执行模型划分与任务放置算法所需相应输入条件,分析模型,根据设备拓扑刻画神经网络层级结构相应指标,包括神经网络各层前向反向计算总时间、输入量、输出量和同步参数量,并对物理资源和神经网络模型针对不同类型的GPU进行刻画;为下一个部分做准备。
具体的,由于神经网络训练分为前向传播预测结果和反向传播更新参数过程,数据经过神经网络逐层计算,因此在流水线模式下,对于神经网络的层次结构建立累积分布函数模型。根据累积分布函数模型,根据不同类型GPU的浮点运算能力,刻画出使用每种GPU时神经网络在训练过程中各层的理论计算总时间,激活值大小,参数数量大小等。
第二部分:节点内同构GPU划分求解。本部分以第一部分中刻画得到的相应指标作为输入,对于每种类型的GPU,采用动态规划的算法进行流水线阶段划分,每个阶段内包含神经网络部分连续的层,每次只使用该类型GPU,并给出阶段内是否要采用数据并行,目的是最小化划分之后各阶段任务执行时间之间的最大值,求解出使用该类型GPU进行神经网络任意连续若干层训练时的训练时间,最终得到每种类型的GPU训练深度神经网络任意连续若干层间的最佳模型划分与任务放置方案,从而为后续节点间考虑GPU异构性和网络带宽异构性的流水线阶段划分提供基础。
在异构GPU集群模型划分问题中,划分后的阶段被分配给GPU集合,集合中可能包含有一块或者多块GPU,而且GPU之间存在异构性;此外,不同集群节点内和节点间的网络连接也具有异构性,因此,无法将GPU映射到确定的GPU ID上,此问题转化为一个NP难问题。为了解决NP难问题,本发明根据建模时的网络拓扑划分,进行分层求解。对于第一层拓扑level1,即节点内,GPU是同构的,所以不需要考虑异构GPU的影响。A(i,j,mt)为采用m块类型为t的GPU在i-j层进行流水线并行计算的最小时间,此问题为NP难问题,无法直接求解。但是结合神经网络的层级特性以及训练时的运行特点,我们可以将整个问题拆分为若干个子问题和相邻子问题间的数据传输问题。此问题具有最优子结构性质,即如果将模型划分为n个阶段,此时的划分是最优的,那么其中的任意k(0<k<n)个阶段组成的子问题,也是最优的,所以可以尝试用动态规划来解决此问题。将问题进行分解,为了计算方便,每次只拆分出一个子问题,即数据并行阶段的计算时间,递推公式可以由下面的公式表示:
其中A(i,j,mt)代表第i-j层采用个类型为t的GPU进行并行的最优时间子问题。代表数据通信时间,T(k+1,j,m't)代表将(k+1)-j层神经网络用m个类型为t的GPU进行数据并行所需要的时间,m't为此次划分时使用类型为t的GPU的数量,mt为此次划分时使用类型为t的GPU的剩余数量。根据此公式,遍历i,j,m,t进行动态规划搜索,即可求解出第一层拓扑level1,即节点内划分的最优解,为下一部分做准备工作。
第三部分:异构GPU与异构带宽感知的模型划分与任务放置算法。将第二部分的结果用于节点内同构GPU上的划分,并采用动态规划的算法,在节点内划分的基础上进行节点间的使用异构GPU和异构网络带宽的流水线阶段划分,目的是最小化划分之后各阶段任务执行时间之间的最大值,以保证阶段间的负载均衡,从而提高GPU利用率以加速分布式训练。本步骤中,首先回溯第二部分的结果,得到每种GPU对应的节点内的最佳模型划分与任务放置方案。其次根据节点内的划分结果,采用动态规划的方法,分类考虑此次划分使用的GPU类型,比较新划分阶段的训练时间、该划分点基于带宽的通信时间和剩余部分中阶段所需最大时间的最大值,从而得到存在异构GPU和异构带宽时的最短训练时间。最后回溯步骤3-2的动态规划结果,得到最佳划分点,从而得到最佳的模型划分与任务放置方案。
具体的,在第二部分求解出第一层拓扑后,本部分还需要再进行第二层拓扑level2的求解。定义Hk(i,j,Mk)为i-j层,使用的GPU集合进行模型划分后一次迭代的最小训练时间。按照先前提出的流水线运行方式,模型会被划分为多个阶段,每个阶段由单个GPU执行或者多个GPU执行数据并行,不同阶段间执行模型并行。由于GPU异构性和每个阶段的不确定性,此问题无法直接求解。但是可以注意到,在数据并行阶段,异构GPU由于计算能力不同,按照数据并行的训练模式,在参数同步的时候必然会导致算力较强的GPU计算完成后,等待算力较差的GPU计算完成后才能进行参数同步,出现掉队现象,降低了GPU的利用率,影响整体计算时间。所以在算法划分中可以直接将此情况排除,降低整体的复杂度,即在数据并行阶段只能采用同构GPU。在进行剪枝后,类似level1,此问题仍然具有子结构最优性质,可以用动态规划的算法求解,不过由于GPU的异构性,需要将异构GPU进行分类讨论,递推公式如下:
其中等号右边分为多种情况,分别代表各种类型的GPU划分为数据并行子问题,其中指将9p+1)到j层用/>个类型为tk的节点进行数据并行所需要的时间,遍历i,j,Mk即可得到level2划分的最优解。得出最优解后,还需要对结果进行回溯,得到任务放置方案。具体方法为先对level2的划分结果进行回溯,得到最优的划分点和划分的GPU,即公式中的p和/>继续对子问题进行回溯,一直到p=None,即不需要划分时,得到level2的任务放置方案。接下来,根据level2的任务放置方案,继续对level1进行回溯,即可求得最终的任务放置结果。模型划分与任务放置后,系统将根据模型划分结果,将任务分配给对应的GPU,生成各个阶段执行所需要的模型部分代码,进行流水线并行计算。
与现有技术相比,本发明具有如下优点和有益效果:
本发明。
附图说明
图1是异构GPU集群中加速分布式训练的流水线混合并行方法原型系统示意图。
图2是有着两种类型GPU和三种网络带宽的异构GPU集群示意图。
图3是负载均衡状态与负载不均衡状态的流水线执行示意图。
图4是异构GPU集群中加速分布式训练的流水线混合并行方法执行流程图。
具体实施方式
以下将结合具体实施例对本发明提供的技术方案进行详细说明,应理解下述具体实施方式仅用于说明本发明而不用于限制本发明的范围。
系统的整体原型结构如图1所示。整个系统从逻辑架构上分为四个层次,其中物理资源层主要包括参与模型训练的GPU计算资源、网络资源、存储资源。其次基础框架层主要是系统开发过程中所使用的现有技术,主要包括深度学习训练框架PyTorch,以及使用GPU训练深度神经网络所需要的BLAS库、CUDA库和cuDNN库等,基于这些技术对策略优化层中的模块进行开发实现。然后策略优化层提供相关的关键技术服务,主要包括异构GPU感知的模型划分与任务放置机制模块,以及流水线分布式训练框架,这些模块基于本发明所提出的方法,即异构GPU集群中加速分布式训练的流水线混合并行方法。最后应用层主要包括该系统支持的一系列深度学习应用,比如通过训练图像识别模型,如VGG16模型等,来完成图像识别任务。
图2表示的是本发明适用的同时存在GPU异构性和网络异构性的异构GPU集群示意图。在异构GPU集群中,由于GPU间的算力差异,不同类型的GPU在对神经网络模型的同一层进行训练时,完成训练所需时间不同,这就导致基于同构GPU设计的模型划分与任务放置方案无法保证每个阶段的训练时间尽可能相同,即无法保证流水线阶段的负载均衡,从而导致GPU资源利用率低,进而影响神经网络模型训练速度。图3表示的是负载均衡和负载不均衡状态流水线执行的示意图,可以看出,负载不均衡状态的设备空闲时间远高于负载均衡状态,这说明了保证流水线负载均衡的重要性和本发明提出的动机。
本发明提出的异构GPU集群中加速分布式深度神经网络训练的流水线混合并行方法整体执行流程如图4所示。首先对于神经网络应用而言,使用每种类型的GPU按层执行刻画,建立累积分布函数模型。再根据GPU的物理网络拓扑以及神经网络的拓扑结构进行建模,设计划分以及任务放置算法,目标是最小化划分之后的各个阶段计算和通信时间的最大值。最后根据上述划分与放置算法,执行任务放置后进行流水线分布式训练。
在模型刻画阶段,本发明在异构GPU环境下,刻画出不同GPU在对应模型和batch等参数的条件下的各种数据指标,提供给后面的模块使用。此阶段构建了torch_summary和torch_profile两个模块进行模型刻画,刻画出给定模型的各层参数量、中间结果量、计算时间。torch_summary负责刻画参数量和中间结果,神经网络的参数量是固定的,而中间结果值只与batchsize大小有关,所以给定batchsize大小后,只需要在模块中分析神经网络各层的输入输出张量以及参数形状,即可得到各层的参数值和中间结果。torch_profile负责刻画神经网络各层的计算时间,需要在真实的环境中训练神经网络并统计相关数据,本发明修改了Pytorch源码并重新编译以计算各层的反向传播时间通过模型刻画模块,可以得到模型的各层参数量、中间结果量、计算时间等,然后将这些结果作为下一层模型的参数输入。
在下一步进行节点内模型划分之前,本发明先对流水线划分优化目标进行建模。
1)GPU集群中物理资源建模:
变量 | 含义 |
M | GPU集群设备 |
Mk | GPU集群层级结构中level k的节点 |
Bk | level k各节点内的带宽集合 |
Bk | level k的节点间的网络带宽 |
bt | 类型为t的计算节点的带宽 |
表1物理资源建模表示结果
2)神经网络模型计算需求建模:
表2神经网络模型计算需求建模表示结果
3)模型阶段建模:
表3模型阶段建模表示结果
1)物理资源建模:在GPU集群中,通常节点内的GPU是同构的,而不同节点的GPU可能是异构的;此外,节点内部的带宽是同构的,而不同节点的内部带宽可能不同,不同节点间的带宽同样也可能不同,所以GPU被划分成L层的层级结构。levelk由levelk-1的部件组成,并且将它们作为阶段划分时的划分单位,并且level1使用GPU作为划分单位。我们把有着相同算力和带宽的部件定义为同一类型。
2)神经网络模型建模:对于异构GPU集群中的模型训练,神经网络模型的参数和中间结果的信息在超参数和模型给定之后就是固定的,但由于不同类型GPU的算力差异导致的计算时间差异,对于每种GPU,神经网络模型都需要单独进行刻画。
3)模型阶段划分:模型划分的最终结果是把一个完整的模型划分为若干个阶段,并且决定这些阶段内是否采用数据并行,而流水线并行在阶段间执行,同时保证阶段的负载均衡,以加快训练速度。
在流水线混合并行模式下,阶段s每轮训练的时间由两部分组成,分别是阶段内数据并行计算时间comps和阶段间数据传输通信时间comms。阶段内数据并行计算数据可以通过神经网络模型每层的计算时间和图像时间得到,并可以表示如下:
阶段间数据传输通信时间comms由两部分通信操作组成,第一部分是前向传播过程中从前一个阶段接收中间结果的时间,第二部分则是反向传播过程中从后一个阶段接收梯度的时间。而在流水线并行模式下,这两个通信操作可以并行执行,所以通信时间comms可以取其最大值:
其中,为阶段s-1到阶段s间传输的中间结果大小。
同时,由于流水线并行模式下,计算操作和通信操作同样可以并行执行,所以对于每个阶段s,它的训练时间Cs就是由阶段内数据并行计算时间comps和阶段间数据传输通信时间comms的最大值决定的,即:
Cs=max(comps,comms)
本发明将优化目标,即最小化模型总体训练时间转换为最小化每一轮的训练时间,并且由于流水线并行模式下,总体训练时间由最慢的阶段的训练时间决定,因此可以将目标进一步转换为最小化最慢阶段的训练时间,即:
确定优化目标之后,本发明按照只使用同构设备进行数据并行的原则,根据现实异构GPU集群的层级结构情况,首先进行节点内同构GPU划分求解,再进行节点间异构GPU的划分点确定与设备选择,最后进行回溯以得到需要的模型划分与任务放置方案。本发明提出的一种异构GPU集群中加速分布式神经网络训练的流水线混合并行方法,其算法伪代码如下:
上述算法是在有着两层层级结构的异构GPU集群环境中的模型划分与任务放置算法。主函数partitionMain的输入是GPU集合Mk,神经网络模型经网络模型计算图G,level k各节点内的带宽集合Bk和level k的节点间的带宽Bk,输出是模型划分与任务放置结构。第一个函数computePartition用于解决level k-1层的模型划分问题,并且最佳划分点和使用的划分单位之后会在回溯过程中更新。第二个函数computePartitionHeterogen旨在解决level k的模型划分问题,其最佳划分点和使用的划分单位及类型同样也会在回溯过程中更新。第三个函数analyzePartition用于分析已经完成的模型划分结果,并且执行回溯过程,完成任务放置。在完成模型划分和任务放置之后,系统将根据方案结果,把模型训练任务分配给对应的设备,并执行分布式流水线并行训练。
本发明方案所公开的技术手段不仅限于上述实施方式所公开的技术手段,还包括由以上技术特征任意组合所组成的技术方案。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。
Claims (8)
1.异构GPU集群中加速神经网络训练的流水线并行方法,其特征在于,包括如下步骤:
步骤1:建立深度神经网络的层次累积分布函数模型,分析深度学习应用执行模型划分与任务放置算法所需相应输入条件,通过分析模型,根据设备拓扑刻画神经网络层级结构相应指标;
步骤2:根据步骤1的结果,对于每种类型的GPU,采用动态规划的算法进行流水线阶段划分,最终得到每种类型的GPU训练深度神经网络任意连续若干层间的最佳模型划分与任务放置方案;
步骤3:基于步骤2求解出的同构GPU模型划分与任务放置方案,将步骤2的结果用于节点内同构GPU上的划分,并采用动态规划的算法,在节点内划分的基础上进行节点间的使用异构GPU和异构网络带宽的流水线阶段划分。
2.根据权利要求1所述的异构GPU集群中加速神经网络训练的流水线并行方法,其特征在于,所述步骤1中,在流水线模式下,对于神经网络的层次结构建立累积分布函数模型,根据累积分布函数模型,根据不同类型GPU的浮点运算能力,刻画出使用每种GPU时神经网络在训练过程中各层的指标。
3.根据权利要求1所述的异构GPU集群中加速神经网络训练的流水线并行方法,其特征在于,所述步骤2中根据步骤1的刻画得到的相应指标作为输入,采用动态规划算法,求解出使用该类型GPU进行神经网络任意连续若干层训练时的训练时间。
4.根据权利要求1所述的异构GPU集群中加速神经网络训练的流水线并行方法,其特征在于,所述步骤3中在步骤1和步骤2的基础上,利用动态规划方法将模型在不同类型的GPU上划分为多个阶段,目标是最小化训练最慢的阶段的训练时间,以保证阶段间的负载均衡。
5.根据权利要求1或4所述的异构GPU集群中加速神经网络训练的流水线并行方法,其特征在于,包括以下子步骤:
步骤3-1:首先回溯步骤2的结果,得到每种GPU对应的节点内的最佳模型划分与任务放置方案;
步骤3-2:其次根据节点内的划分结果,采用动态规划的方法,分类考虑此次划分使用的GPU类型,比较新划分阶段的训练时间、该划分点基于带宽的通信时间和剩余部分中阶段所需最大时间的最大值,从而得到存在异构GPU和异构带宽时的最短训练时间;
步骤3-3:最后回溯步骤3-2的动态规划结果,得到最佳划分点,从而得到最佳的模型划分与任务放置方案。
6.根据权利要求1或3所述的异构GPU集群中加速神经网络训练的流水线并行方法,其特征在于,动态规划算法过程如下:
对于第一层拓扑level 1,将整个问题拆分为若干个子问题和相邻子问题间的数据传输问题,每次只拆分出一个子问题,即数据并行阶段的计算时间,递推公式由下面的公式表示:
其中A(i,j,mt)代表第i-j层采用个类型为t的GPU进行并行的最优时间子问题,代表数据通信时间,T(k+1,j,m′t)代表将(k+1)-j层神经网络用m个类型为t的GPU进行数据并行所需要的时间,m′t为此次划分时使用类型为t的GPU的数量,mt为此次划分时使用类型为t的GPU的剩余数量;根据上述公式,遍历i,j,m,t进行动态规划搜索,求解出第一层拓扑level1,即节点内划分的最优解。
7.根据权利要求5所述的异构GPU集群中加速神经网络训练的流水线并行方法,其特征在于,所述步骤3-2中动态规划的方法过程如下:将异构GPU进行分类讨论,递推公式如下:
其中等号右边分为多种情况,分别代表各种类型的GPU划分为数据并行子问题,其中指将(p+1)到j层用/>个类型为tk的节点进行数据并行所需要的时间,遍历i,j,Mk即可得到level 2划分的最优解;得出最优解后,还需要对结果进行回溯,得到任务放置方案;具体方法为先对level 2划分结果进行回溯,得到最优的划分点和划分的GPU,即公式中的p和/>继续对子问题进行回溯,一直到不需要划分时,得到level 2任务放置方案;接下来,根据level 2的任务放置方案,继续对level 1进行回溯,即可求得最终的任务放置结果。
8.根据权利要求5所述的异构GPU集群中加速神经网络训练的流水线并行方法,其特征在于,
还包括如下步骤:
根据模型划分结果,将任务分配给对应的GPU,生成各个阶段执行所需要的模型部分代码,进行流水线并行计算。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310892762.6A CN116883229A (zh) | 2023-07-20 | 2023-07-20 | 异构gpu集群中加速神经网络训练的流水线并行方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310892762.6A CN116883229A (zh) | 2023-07-20 | 2023-07-20 | 异构gpu集群中加速神经网络训练的流水线并行方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116883229A true CN116883229A (zh) | 2023-10-13 |
Family
ID=88258410
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310892762.6A Pending CN116883229A (zh) | 2023-07-20 | 2023-07-20 | 异构gpu集群中加速神经网络训练的流水线并行方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116883229A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118277209A (zh) * | 2024-05-31 | 2024-07-02 | 中国科学技术大学 | 基于流水线并行训练的模型实时监测及分配方法 |
-
2023
- 2023-07-20 CN CN202310892762.6A patent/CN116883229A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118277209A (zh) * | 2024-05-31 | 2024-07-02 | 中国科学技术大学 | 基于流水线并行训练的模型实时监测及分配方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110533183B (zh) | 流水线分布式深度学习中异构网络感知的任务放置方法 | |
CN106297774B (zh) | 一种神经网络声学模型的分布式并行训练方法及系统 | |
CN112784968A (zh) | 一种加速分布式深度神经网络训练的混合流水线并行方法 | |
Xue et al. | EosDNN: An efficient offloading scheme for DNN inference acceleration in local-edge-cloud collaborative environments | |
CN111242282A (zh) | 基于端边云协同的深度学习模型训练加速方法 | |
CN114756383A (zh) | 一种分布式计算方法、系统、设备及存储介质 | |
CN102855153B (zh) | 面向片式多核处理器的流编译优化方法 | |
CN114492770B (zh) | 一种面向循环脉冲神经网络的类脑计算芯片映射方法 | |
CN113708969B (zh) | 一种基于深度强化学习的云数据中心虚拟网络的协同嵌入方法 | |
Tanaka et al. | Automatic graph partitioning for very large-scale deep learning | |
CN113312178A (zh) | 一种基于深度强化学习的流水线并行训练任务分配方法 | |
CN116883229A (zh) | 异构gpu集群中加速神经网络训练的流水线并行方法 | |
CN115437795B (zh) | 一种异构gpu集群负载感知的显存重计算优化方法及系统 | |
CN112862083B (zh) | 一种边缘环境下的深度神经网络推断方法及装置 | |
Li et al. | Amp: Automatically finding model parallel strategies with heterogeneity awareness | |
CN116755876A (zh) | 一种大模型混合并行训练加速方法和系统 | |
CN113627519A (zh) | 具有压缩和延迟补偿的分布式随机梯度下降方法 | |
CN115470889A (zh) | 基于强化学习的片上网络自主最优映射探索系统及方法 | |
CN115186806A (zh) | 一种支持跨节点自动微分的分布式图神经网络训练方法 | |
Lin et al. | Latency-driven model placement for efficient edge intelligence service | |
CN109995095A (zh) | 一种基于数据驱动的配用电系统智能运行控制方法 | |
CN116400963A (zh) | 一种基于负载均衡的模型自动并行方法、设备及存储介质 | |
CN117669741A (zh) | 基于遗传算法的无人机集群大小模型动态协同推理方法 | |
CN112297014A (zh) | 一种面向机器人的云边端架构下的深度学习模型分割方法 | |
CN115766475B (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 |