CN113515370A - 一种面向大规模深度神经网络的分布式训练方法 - Google Patents
一种面向大规模深度神经网络的分布式训练方法 Download PDFInfo
- Publication number
- CN113515370A CN113515370A CN202110469768.3A CN202110469768A CN113515370A CN 113515370 A CN113515370 A CN 113515370A CN 202110469768 A CN202110469768 A CN 202110469768A CN 113515370 A CN113515370 A CN 113515370A
- Authority
- CN
- China
- Prior art keywords
- data
- gpu
- gpu computing
- data block
- layer
- 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
- 238000000034 method Methods 0.000 title claims abstract description 60
- 238000012549 training Methods 0.000 title claims abstract description 50
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 28
- 230000006854 communication Effects 0.000 claims abstract description 73
- 238000004891 communication Methods 0.000 claims abstract description 63
- 230000008569 process Effects 0.000 claims abstract description 42
- 238000004364 calculation method Methods 0.000 claims abstract description 35
- 238000007906 compression Methods 0.000 claims description 25
- 230000006835 compression Effects 0.000 claims description 25
- 238000006243 chemical reaction Methods 0.000 claims description 12
- 238000013135 deep learning Methods 0.000 claims description 10
- 230000004913 activation Effects 0.000 claims description 9
- 230000005540 biological transmission Effects 0.000 claims description 9
- 230000009365 direct transmission Effects 0.000 claims description 9
- 238000003062 neural network model Methods 0.000 claims description 9
- 238000013500 data storage Methods 0.000 claims description 7
- 230000007246 mechanism Effects 0.000 claims description 7
- 230000006837 decompression Effects 0.000 claims description 6
- 238000009825 accumulation Methods 0.000 claims description 3
- 238000001914 filtration Methods 0.000 claims description 3
- 230000006870 function Effects 0.000 claims description 3
- 230000001537 neural effect Effects 0.000 claims 3
- 230000001133 acceleration Effects 0.000 abstract description 6
- 238000013473 artificial intelligence Methods 0.000 abstract description 3
- 230000009286 beneficial effect Effects 0.000 abstract description 3
- 238000013144 data compression Methods 0.000 abstract description 3
- 230000002441 reversible effect Effects 0.000 abstract description 2
- 239000010410 layer Substances 0.000 description 53
- 238000010586 diagram Methods 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000013136 deep learning model Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002035 prolonged effect Effects 0.000 description 1
- 239000002356 single layer Substances 0.000 description 1
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/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
- 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/5061—Partitioning or combining of resources
- G06F9/5072—Grid computing
-
- 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
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/10—Interfaces, programming languages or software development kits, e.g. for simulating neural networks
-
- 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
Abstract
本发明属于高性能计算与人工智能的交叉领域,特别涉及一种面向大规模深度神经网络的分布式训练方法,具体为通过逐层调度参数同步过程与反向误差传播实现通信过程与计算过程重叠,进而隐藏通信开销加速模型训练,另外在每层的参数同步过程中,根据不同数据块的稀疏性和数据压缩开销动态地决策所要传输的数据实现对Ring‑All‑Reduce通信更细粒度的控制,从而最小化参数同步过程的通信开销大幅度提升性能,在不影响模型准确率和收敛率的情况下,使任意深度神经网络的分布式训练接近于线性加速,并利于集群的高效率扩展。
Description
技术领域
本发明属于高性能计算与人工智能的交叉领域,特别涉及一种面向大规模深度神经网络的分布式训练方法。
背景技术
深度神经网络是人工智能最有效的技术之一,其在图像分类、语音识别、文本处理等众多应用中有着出色的准确率和泛化性能。在现实应用中,有着数千万甚至数十亿参数的大规模深度神经网络往往能产生更高的准确率和鲁棒性。随着深度神经网络层数的加深以及单层内参数规模的扩大,单个CPU或GPU等硬件加速器的计算和存储能力逐渐不能满足训练需求。打破这一限制的直接方式是使用多个硬件加速器进行分布式深度神经网络的训练。
深度学习训练中各个样本参与的运算是相对独立的,因此数据并行是分布式深度学习中最简单且有效的并行方式。分布式环境中每个节点上都需存储整个神经网络模型参数的副本,并将批量的输入数据基于样本维度划分到各个节点上并行处理,训练过程中每次迭代的反向梯度更新时需要对所有节点的参数进行同步以确保模型训练的准确性与收敛性。数据并行根据不同的通信机制可分为参数服务器架构和AllReduce架构。参数服务器架构需要将各个计算节点的梯度数据汇总到参数服务器,该架构容易收到单点故障的影响,若参数服务器宕机则直接导致模型训练失败。目前更为流行的是AllReduce架构,该架构下各个计算节点之间直接进行数据交换。然而,随着深度神经网络模型参数量的扩大,计算节点间的通信量也成比例增加;另一方面,当应用到更大规模的集群环境中时,梯度汇总期间节点间的通信次数也随之增多,从而使得通信延迟成为分布式深度学习训练的性能瓶颈。
因此,为了降低分布式深度学习训练时的通信开销使之更接近于线性加速。
发明内容
为了解决现有技术中存在的上述技术问题,降低分布式深度学习训练时的通信开销使之更接近于线性加速,本发明提供一种面向大规模深度神经网络的分布式训练方法,以解决现有深度学习并行技术中的通信瓶颈,加速深度学习模型的分布式训练,其具体技术方案如下:
一种面向大规模深度神经网络的分布式训练方法,包括如下步骤:
S1:确定总的服务器数和每台机器可用GPU个数并搭建和初始化深度学习分布式环境,确定训练过程中整体的BatchSize和学习率以及参数更新阶段所有GPU计算节点的通信机制;
S2:各个GPU计算节点从数据集中读取相同批量大小且互不相交的样本数据,同时进行深度神经网络的前向计算;
S3:各个GPU计算节点基于各自读取的小批量样本数据逐层计算误差和局部梯度,并将局部梯度应用于本地模型参数的更新,同时保存该层的局部梯度数据;
S4:在所有GPU计算节点进入单个网络层参数同步过程时,将局部梯度数据与本地更新后的模型参数都划分为N个数据块,N为此分布式环境中GPU计算节点个数,计算模型参数和局部梯度数据各个数据块的稀疏性,对比将权重数据块或梯度数据块压缩后传输与不压缩直接传输数据的时间开销,并将带标记的数据块发送到相邻GPU计算节点;
S5:收到前一GPU计算节点的数据后,根据压缩标记判断是否需要解压缩,并将其累加到对应的本地权重参数或局部梯度数据存储区,之后根据所述数据块的最大稀疏性判断发送该GPU计算节点汇总的权重参数部分和数据块或局部梯度部分以及将数据块到下一个相邻GPU计算节点;
S6:重复执行S4与S5步骤N-1次,直至第一阶段的scatter-reduce数据通信完成,此时每个GPU计算节点中都有一个权重参数或者梯度数据数据块汇聚了所有GPU计算节点的信息,之后继续第二阶段allgather的数据通信,每个GPU计算节点接收到上一GPU计算节点的数据之后直接用其覆盖本地相同位置的数据块,迭代N-1次之后各个GPU计算节点都汇聚了其它所有GPU计算节点的数据,该阶段完成后所有GPU计算节点的模型参数保持一致;
S7:根据预先定义的模型训练最大迭代次数,重复执行步骤S2至S6,直至模型训练完成。
进一步的,所述步骤1具体包括:
S11:构建GPU计算节点并对每个GPU设备设置一个序列id号,确定深度神经网络训练时的超参数,包括BatchSize、学习率和迭代次数;
S12:构建深度神经网络的计算图,多个GPU计算节点采用数据并行模式,每个GPU计算节点上都保存完整深度神经网络模型的副本,并采用相同的权重参数初始化策略;
S13:确定参数同步阶段多个GPU计算节点的通信机制,数据并行训练的各个GPU计算节点的参数同步采用逐层Ring-All-Reduce通信模式,每个GPU计算节点只与相邻序号的GPU计算节点连接,末端序号的GPU计算节点与起始序号的GPU计算节点连接,使分布式环境中所有GPU计算节点的通信拓扑图构成环状结构,并逐层进行全局参数同步,在每层进行参数同步的通信过程中,各个GPU计算节点同时执行该层之前网络层的误差与局部梯度计算,使得反向传播过程中GPU计算节点的计算过程与通信过程重叠。
进一步的,所述全局参数同步,具体为:
所有GPU计算节点将该网络层需要通信的数据总量分为N个数据块逐个发送至下一相邻GPU计算节点,其中N为此分布式环境中总的GPU设备数,通信期间主要分为scatter-reduce和allgather两阶段,所述scatter-reduce阶段中每个GPU计算节点收到的数据块与相应位置的本地数据块累加并发送该部分和结果至下一相邻GPU计算节点,迭代N-1之后每个GPU计算节点中都有一个数据块汇聚了所有GPU计算节点的局部参数或梯度信息,其他位置的数据块则保存部分GPU计算节点的局部参数或梯度累加结果,所述allgather阶段中每个GPU计算节点将收到数据块覆盖本地相应位置的数据块并发送该数据块,同样迭代N-1次之后每个GPU计算节点的所有数据块都汇总全局信息,同时各个GPU节点的模型参数保持一致,在所述两个阶段的通信过程中所有GPU计算节点均同步发送相应的数据块至相邻GPU计算节点,在不进行数据压缩的情况下同步所有GPU计算节点中单个网络层权重参数的通信开销由下式表示:
式中T表示参数同步过程中的通信开销,N表示此分布式环境中总的GPU节点数,D表示单个网络层权重参数的数据量大小,B表示GPU节点之间的通信带宽。
进一步的,所述步骤S2具体为:每个GPU节点从数据集中随机读取BatchSize/N个样本数据,基于当前模型权重参数并行计算各个网络层的激活值,其中,GPU计算节点使用的模型参数相同,但输入数据不同,任意网络层的激活值在各个GPU计算节点中都不相同。
进一步的,所述步骤S3具体为:误差传递的方向与模型激活值计算的方向相反,每个GPU计算节点同时计算完一层的误差和局部梯度后进行该层的参数同步过程,同时各个GPU计算节点继续并行计算该层之前网络层的误差和局部梯度。
进一步的,所述步骤S4具体包括如下步骤:
S41:在单个网络层的参数同步过程中,将局部梯度张量与本地更新后的模型参数张量均划分为N个数据块,之后循环计算此2N个数据块的稀疏性并过滤稀疏性小的数据块,各个数据块的稀疏性由下式表示:
Swi=F(Wi)
Sgi=F(Gi)
式中F(·)表示稀疏性计算函数,Wi与Gi分别表示模型参数张量与局部梯度张量的第i个数据块,Swi与Sgi则分别表示模型参数张量与局部梯度张量第i个张量的稀疏度,其中1≤i≤N,若Swi≥Sgi则保存Wi删除Gi,反之则保存Gi删除Wi,并对保存的数据块打上数据属性标签即标记其属于模型参数张量或局部梯度张量;
S42:针对每个保存的数据块衡量其压缩后再传输与不压缩直接传输所需的时间开销,时间开销如下式所示:
式中Ta为不压缩数据块直接传输的时间开销,D为单个网络层的权重参数或梯度的数据量大小,B为GPU计算节点间的通信带宽;Tb为压缩后再传输数据块的总时间开销,Tc为压缩算法的执行时间,Compres(D)为压缩后该数据块所占的存储空间大小,Td为解压缩所需的时间;
若Ta≥Tb,直接传输该数据块至相邻GPU计算节点,反之则该数据块压缩并打上压缩标签后再传输。
进一步的,所述步骤S5包括如下步骤:
S51:将接受的数据块累加至本地对应的模型参数或梯度数据存储区后,随后进行模型参数部分和与梯度数据部分和的稀疏性对比,在对比稀疏性之前需进行数据转换,若接受到的数据块为模型参数数据,则将数据累加后保存,再将其复制并转换成梯度数据,反之转换成模型参数数据,数据转换公式如下:
Pw=η·(Pg′+Pg″)+(k+1)·W0
式中Pw为转换之后模型参数的部分和,Pg′为本地计算的局部梯度数据块,Pg″为接收到的梯度部分和数据块,η为学习率,k表示当前参数同步过程中已进行通信迭代次数,W0为该层前向计算是的权重参数,Pg为转换之后梯度数据的部分和,Pw′为本地更新后的模型参数,Pw″为接收到的模型参数部分和数据块。
S52:计算Pw和Pg数据块的稀疏性,保留稀疏性大的数据块,评估将其压缩后再传输与不压缩直接传输的时间开销,选择性能最优的方式将该数据块发送至下一相邻的GPU计算节点。
进一步的,所述每个网络层参数同步过程的速度受到环中相邻GPU计算节点之间最慢的数据传输限制。
本发明的有益效果是:
传统的深度神经网络数据并行训练方式通常由于参数同步过程中长时间的通信遭遇到性能瓶颈,尤其当训练更大规模的深度神经网络模型或是扩展到更大规模的集群环境中时,通信开销在整个训练周期中所占比例远高于计算开销。与相关技术相比,本发明提供的面向大规模深度神经网络的高效分布式训练方法采用数据并行模式以及Ring-All-Reduce通信架构,通过逐层调度参数同步过程与反向误差传播实现通信过程与计算过程重叠,进而隐藏通信开销加速模型训练,另外在每层的参数同步过程中,根据不同数据块的稀疏性和数据压缩开销动态地决策所要传输的数据实现对Ring-All-Reduce通信更细粒度的控制,从而最小化参数同步过程的通信开销大幅度提升性能,在不影响模型准确率和收敛率的情况下使任意深度神经网络的分布式训练接近于线性加速并利于集群的高效率扩展。
附图说明
图1为本发明方法的整体流程示意图;
图2为本发明的Ring-All-Reduce通信示意图;
图3为本发明的计算过程与参数同步过程并行执行示意图。
具体实施方式
为了使本发明的目的、技术方案和技术效果更加清楚明白,以下结合说明书附图,对本发明的实施例中的技术方案作进一步清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。
如图1-3所示,本发明提供的一种面向大规模深度神经网络的分布式训练方法,包括如下步骤:
S1:确定总的服务器数和每台机器可用GPU个数并搭建和初始化深度学习分布式环境,确定训练过程中整体的BatchSize和学习率以及参数更新阶段所有计算节点的通信机制。
具体的,总的服务器数以及每台服务器可用GPU个数应根据可用资源自行搭配,为了更加灵活的使用当前深度学习框架PyTorch或TensorFlow编写代码实施案例,每台机器可用的GPU个数应尽量相同,并为每个GPU设备设置一个序列id号,确定深度神经网络模型训练时的BatchSize,每个GPU一次处理的样本量即为BatchSize/N,其中N为此分布式环境中总的GPU个数;确定深度神经网络模型训练时的学习率,每个GPU计算节点在并行处理数据时应保持相同的学习率;定义所有训练的深度神经网络模型的计算图结构,多个GPU计算节点采用数据并行模式,每个计算节点上都保存完整深度神经网络模型的副本,并采用相同的权重参数初始化策略;确定参数同步阶段多GPU计算节点的通信机制,数据并行训练的各个GPU节点的参数同步采用逐层Ring-All-Reduce通信模式,每个GPU计算节点只与相邻序号的GPU计算节点连接,末端序号的GPU计算节点与起始序号的GPU计算节点连接,使分布式环境中所有GPU计算节点的通信拓扑图构成环状结构,并逐层进行同步模型参数的GPU计算节点全局通信,由于深度神经网络任意层的参数更新与该层之前网络层的反向误差传播并无数据依赖,因此在每层进行参数同步的通信过程中,各个GPU计算节点可同时执行该层之前网络层的误差与局部梯度计算,使得反向传播过程中GPU计算节点的计算时间与通信时间重叠,从而降低每轮数据迭代更新模型的时间进而加速整个训练过程。
其中,所述同步模型参数的GPU计算节点全局通信的具体过程为:所有GPU计算节点将该层需要通信的数据总量分为N个数据块逐个发送至下一相邻GPU计算节点,其中N为此分布式环境中总的GPU设备数,通信期间主要分为scatter-reduce和allgather两阶段,scatter-reduce阶段中每个GPU计算节点将收到的数据块与相应位置的本地数据块累加并发送该部分和结果至下一相邻节点,迭代N-1之后每个GPU计算节点中都有一个数据块汇聚了所有GPU计算节点的局部参数或梯度信息,其他位置的数据块则保存了部分GPU计算节点的局部参数或梯度累加结果,而allgather阶段中每个GPU计算节点则将收到数据块覆盖本地相应位置的数据块并发送该数据块,同样迭代N-1次之后每个GPU计算节点的所有数据块都汇总了全局信息,此时各个GPU计算节点的模型参数保持一致,需要说明的是,在两个阶段的通信过程中所有GPU计算节点都是同步发送相应的数据块至相邻节点,因此该通信模式与GPU计算节点数量无关,通信时间不随节点数量的增多而延长,只与所需传输的数据总量和GPU计算节点之间的通信带宽有关,在不进行数据压缩的情况下同步所有GPU计算节点中单个网络层权重参数的通信开销由下式表示:
式中T表示参数同步过程中的通信开销,N表示此分布式环境中总的GPU计算节点数,D表示单个网络层权重参数的数据量大小,B表示GPU计算节点之间的通信带宽。
S2:各个节点从数据集中读取相同批量大小且互不相交的样本数据同时进行深度神经网络的前向计算。
具体的,每个GPU计算节点从数据集中随机读取BatchSize/N个样本数据,基于当前模型权重参数并行计算各个网络层的激活值。可以理解的是,各个GPU计算节点使用的模型参数相同而输入数据不同,因此任意网络层的激活值在各个GPU计算节点中都不相同。
S3:各个节点基于各自读取的小批量样本数据逐层计算误差和局部梯度,并将局部梯度应用于本地模型参数的更新,同时保存该层的局部梯度数据。
具体的,误差传递的方向与模型激活值计算的方向相反,每个GPU计算节点同时计算完一层的误差和局部梯度后即可开始进行该层的参数同步过程,同时各个GPU计算节点继续并行计算该层之前网络层的误差和局部梯度,该方式使得计算与通信开销重叠,达到降低总的通信延迟加速网络模型训练的效果。
S4:所有GPU计算节点进入单个网络层参数同步过程,将局部梯度数据与本地更新后的模型参数都划分为N个数据块,N为此分布式环境中GPU计算节点个数,计算模型参数和局部梯度数据各个数据块的稀疏性,对比将权重数据块或梯度数据块压缩后传输与不压缩直接传输数据的时间开销并将带标记的数据块发送到相邻GPU计算节点。
需要说明的是,模型参数和梯度数据占有相同的存储空间而稀疏性可能不同,根据网络层不同数据块的稀疏性动态地决策所要传输的数据和是否对数据进行压缩,该策略相比之前的技术能够更细粒度的控制参数同步过程,从而最小化参数同步过程中的通信开销并大幅度加速深度神经网络模型的训练。
具体的,所述步骤S4包括如下步骤:
S41:在单个网络层的参数同步过程中,将局部梯度张量与本地更新后的模型参数张量都被划分为N个数据块,之后循环计算此2N个数据块的稀疏性并过滤稀疏性小的数据块,各个数据块的稀疏性由下式表示:
Swi=F(Wi)
Sgi=F(Gi)
式中F(·)表示稀疏性计算函数,Wi与Gi分别表示模型参数张量与局部梯度张量的第i个数据块,Swi与Sgi则分别表示模型参数张量与局部梯度张量第i个张量的稀疏度,其中1≤i≤N,若Swi≥Sgi则保存Wi删除Gi,反之则保存Gi删除Wi,并对保存的数据块打上数据属性标签即标记其属于模型参数张量或局部梯度张量;
S42:针对每个保存的数据块衡量其压缩后再传输与不压缩直接传输所需的时间开销,时间开销如下式所示:
式中Ta为不压缩数据块直接传输的时间开销,D为单个网络层的权重参数或梯度的数据量大小,B为GPU计算节点间的通信带宽;Tb为压缩后再传输数据块的总时间开销,Tc为压缩算法的执行时间,Compres(D)为压缩后该数据块所占的存储空间大小,Td为解压缩所需的时间;
若Ta≥Tb,直接传输该数据块至相邻节点,反之则该数据块压缩并打上压缩标签后再传输。
需要说明的是,上述的压缩算法并不局限于一种,可根据不同压缩算法的时间复杂度和能达到的压缩率进行灵活选择。
S5:收到前一节点的数据后,根据压缩标记判断是否需要解压缩,并将其累加到对应的本地权重参数或局部梯度数据存储区,之后根据该数据块的最大稀疏性判断发送该节点汇总的权重参数部分和数据块或局部梯度部分和数据块到下一个相邻节点。
可以理解的是,若接收到的数据块为梯度数据块则将其累加到本地的局部梯度数据存储区,反之则累加到本地权重参数存储区。
具体的,所述步骤S5包括如下步骤:
S51:将接受的数据块累加至本地对应的模型参数或梯度数据存储区后,随后进行模型参数部分和与梯度数据部分和的稀疏性对比,在对比稀疏性之前需进行数据转换,若接受到的数据块为模型参数数据,则将数据累加后保存,再将其复制并转换成梯度数据,反之转换成模型参数数据,数据转换公式如下:
Pw=η·(Pg′+Pg″)+(k+1)·W0
式中Pw为转换之后模型参数的部分和,Pg′为本地计算的局部梯度数据块,Pg″为接收到的梯度部分和数据块,η为学习率,k表示当前参数同步过程中已进行通信迭代次数,W0为该层前向计算是的权重参数,Pg为转换之后梯度数据的部分和,Pw′为本地更新后的模型参数,Pw″为接收到的模型参数部分和数据块。
S52:计算Pw和Pg数据块的稀疏性,并保留稀疏性大的数据块,评估将其压缩后再传输与不压缩直接传输的时间开销,选择性能最优的方式将该数据块发送至下一相邻的GPU节点。
S6:重复执行S4与S5步骤N-1次,直至第一阶段的scatter-reduce数据通信完成,此时每个计算节点中都有一个权重参数或者梯度数据数据块汇聚了所有计算节点的信息,之后继续第二阶段allgather的数据通信,与scatter-reduce阶段不同的是每个节点接收到上一节点的数据之后直接用其覆盖本地相同位置的数据块,同样迭代N-1次之后各个节点都汇聚了其它所有节点的数据,该阶段完成后所有节点的模型参数又保持一致。
需要说明的是,由于稀疏性不同使得每个数据块被压缩后的数据量大小也不相同,从而导致各个相邻GPU计算节点间的通信时间存在差异,因此每个网络层参数同步过程的速度受到环中相邻GPU节点之间最慢的数据传输限制。
S7:根据预先定义的模型训练最大迭代次数,重复执行步骤S2至S6,直至模型训练完成。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其它相关的技术领域,均同理包括在本发明的专利保护范围。
Claims (8)
1.一种面向大规模深度神经网络的分布式训练方法,其特征在于,包括如下步骤:
S1:确定总的服务器数和每台机器可用GPU个数并搭建和初始化深度学习分布式环境,确定训练过程中整体的BatchSize和学习率以及参数更新阶段所有GPU计算节点的通信机制;
S2:各个GPU计算节点从数据集中读取相同批量大小且互不相交的样本数据,同时进行深度神经网络的前向计算;
S3:各个GPU计算节点基于各自读取的小批量样本数据逐层计算误差和局部梯度,并将局部梯度应用于本地模型参数的更新,同时保存该层的局部梯度数据;
S4:在所有GPU计算节点进入单个网络层参数同步过程时,将局部梯度数据与本地更新后的模型参数都划分为N个数据块,N为此分布式环境中GPU计算节点个数,计算模型参数和局部梯度数据各个数据块的稀疏性,对比将权重数据块或梯度数据块压缩后传输与不压缩直接传输数据的时间开销,并将带标记的数据块发送到相邻GPU计算节点;
S5:收到前一GPU计算节点的数据后,根据压缩标记判断是否需要解压缩,并将其累加到对应的本地权重参数或局部梯度数据存储区,之后根据所述数据块的最大稀疏性判断发送该GPU计算节点汇总的权重参数部分和数据块或局部梯度部分以及将数据块到下一个相邻GPU计算节点;
S6:重复执行S4与S5步骤N-1次,直至第一阶段的scatter-reduce数据通信完成,此时每个GPU计算节点中都有一个权重参数或者梯度数据数据块汇聚了所有GPU计算节点的信息,之后继续第二阶段allgather的数据通信,每个GPU计算节点接收到上一GPU计算节点的数据之后直接用其覆盖本地相同位置的数据块,迭代N-1次之后各个GPU计算节点都汇聚了其它所有GPU计算节点的数据,该阶段完成后所有GPU计算节点的模型参数保持一致;
S7:根据预先定义的模型训练最大迭代次数,重复执行步骤S2至S6,直至模型训练完成。
2.如权利要求1所述的一种面向大规模深度神经网络的分布式训练方法,其特征在于,所述步骤1具体包括:
S11:构建GPU计算节点并对每个GPU设备设置一个序列id号,确定深度神经网络训练时的超参数,包括BatchSize、学习率和迭代次数;
S12:构建深度神经网络的计算图,多个GPU计算节点采用数据并行模式,每个GPU计算节点上都保存完整深度神经网络模型的副本,并采用相同的权重参数初始化策略;
S13:确定参数同步阶段多个GPU计算节点的通信机制,数据并行训练的各个GPU计算节点的参数同步采用逐层Ring-All-Reduce通信模式,每个GPU计算节点只与相邻序号的GPU计算节点连接,末端序号的GPU计算节点与起始序号的GPU计算节点连接,使分布式环境中所有GPU计算节点的通信拓扑图构成环状结构,并逐层进行全局参数同步,在每层进行参数同步的通信过程中,各个GPU计算节点同时执行该层之前网络层的误差与局部梯度计算,使得反向传播过程中GPU计算节点的计算过程与通信过程重叠。
3.如权利要求2所述的一种面向大规模深度神经网络的分布式训练方法,其特征在于,所述全局参数同步,具体为:
所有GPU计算节点将该网络层需要通信的数据总量分为N个数据块逐个发送至下一相邻GPU计算节点,其中N为此分布式环境中总的GPU设备数,通信期间主要分为scatter-reduce和allgather两阶段,所述scatter-reduce阶段中每个GPU计算节点收到的数据块与相应位置的本地数据块累加并发送该部分和结果至下一相邻GPU计算节点,迭代N-1之后每个GPU计算节点中都有一个数据块汇聚了所有GPU计算节点的局部参数或梯度信息,其他位置的数据块则保存部分GPU计算节点的局部参数或梯度累加结果,所述allgather阶段中每个GPU计算节点将收到数据块覆盖本地相应位置的数据块并发送该数据块,同样迭代N-1次之后每个GPU计算节点的所有数据块都汇总全局信息,同时各个GPU节点的模型参数保持一致,在所述两个阶段的通信过程中所有GPU计算节点均同步发送相应的数据块至相邻GPU计算节点,在不进行数据压缩的情况下同步所有GPU计算节点中单个网络层权重参数的通信开销由下式表示:
式中T表示参数同步过程中的通信开销,N表示此分布式环境中总的GPU节点数,D表示单个网络层权重参数的数据量大小,B表示GPU节点之间的通信带宽。
4.如权利要求1所述的一种面向大规模深度神经网络的分布式训练方法,其特征在于,所述步骤S2具体为:每个GPU节点从数据集中随机读取BatchSize/N个样本数据,基于当前模型权重参数并行计算各个网络层的激活值,其中,GPU计算节点使用的模型参数相同,但输入数据不同,任意网络层的激活值在各个GPU计算节点中都不相同。
5.如权利要求1所述的一种面向大规模深度神经网络的分布式训练方法,其特征在于,所述步骤S3具体为:误差传递的方向与模型激活值计算的方向相反,每个GPU计算节点同时计算完一层的误差和局部梯度后进行该层的参数同步过程,同时各个GPU计算节点继续并行计算该层之前网络层的误差和局部梯度。
6.如权利要求1所述的一种面向大规模深度神经网络的分布式训练方法,其特征在于,所述步骤S4具体包括如下步骤:
S41:在单个网络层的参数同步过程中,将局部梯度张量与本地更新后的模型参数张量均划分为N个数据块,之后循环计算此2N个数据块的稀疏性并过滤稀疏性小的数据块,各个数据块的稀疏性由下式表示:
Swi=F(Wi)
Sgi=F(Gi)
式中F(·)表示稀疏性计算函数,Wi与Gi分别表示模型参数张量与局部梯度张量的第i个数据块,Swi与Sgi则分别表示模型参数张量与局部梯度张量第i个张量的稀疏度,其中1≤i≤N,若Swi≥Sgi则保存Wi删除Gi,反之则保存Gi删除Wi,并对保存的数据块打上数据属性标签即标记其属于模型参数张量或局部梯度张量;
S42:针对每个保存的数据块衡量其压缩后再传输与不压缩直接传输所需的时间开销,时间开销如下式所示:
式中Ta为不压缩数据块直接传输的时间开销,D为单个网络层的权重参数或梯度的数据量大小,B为GPU计算节点间的通信带宽;Tb为压缩后再传输数据块的总时间开销,Tc为压缩算法的执行时间,Compres(D)为压缩后该数据块所占的存储空间大小,Td为解压缩所需的时间;
若Ta≥Tb,直接传输该数据块至相邻GPU计算节点,反之则该数据块压缩并打上压缩标签后再传输。
7.如权利要求1所述的一种面向大规模深度神经网络的分布式训练方法,其特征在于,所述步骤S5包括如下步骤:
S51:将接受的数据块累加至本地对应的模型参数或梯度数据存储区后,随后进行模型参数部分和与梯度数据部分和的稀疏性对比,在对比稀疏性之前需进行数据转换,若接受到的数据块为模型参数数据,则将数据累加后保存,再将其复制并转换成梯度数据,反之转换成模型参数数据,数据转换公式如下:
Pw=η·(Pg′+Pg″)+(k+1)·W0
式中Pw为转换之后模型参数的部分和,Pg′为本地计算的局部梯度数据块,Pg″为接收到的梯度部分和数据块,η为学习率,k表示当前参数同步过程中已进行通信迭代次数,W0为该层前向计算是的权重参数,Pg为转换之后梯度数据的部分和,Pw′为本地更新后的模型参数,Pw″为接收到的模型参数部分和数据块。
S52:计算Pw和Pg数据块的稀疏性,保留稀疏性大的数据块,评估将其压缩后再传输与不压缩直接传输的时间开销,选择性能最优的方式将该数据块发送至下一相邻的GPU计算节点。
8.如权利要求1所述的一种面向大规模深度神经网络的分布式训练方法,其特征在于,所述每个网络层参数同步过程的速度受到环中相邻GPU计算节点之间最慢的数据传输限制。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110469768.3A CN113515370B (zh) | 2021-04-28 | 2021-04-28 | 一种面向大规模深度神经网络的分布式训练方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110469768.3A CN113515370B (zh) | 2021-04-28 | 2021-04-28 | 一种面向大规模深度神经网络的分布式训练方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113515370A true CN113515370A (zh) | 2021-10-19 |
CN113515370B CN113515370B (zh) | 2024-03-12 |
Family
ID=78064102
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110469768.3A Active CN113515370B (zh) | 2021-04-28 | 2021-04-28 | 一种面向大规模深度神经网络的分布式训练方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113515370B (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114358859A (zh) * | 2022-03-21 | 2022-04-15 | 北京大学 | 用于点击率预测的基于图的大规模embedding模型训练方法及系统 |
CN114398949A (zh) * | 2021-12-13 | 2022-04-26 | 鹏城实验室 | 一种脉冲神经网络模型的训练方法、存储介质及计算设备 |
CN114627342A (zh) * | 2022-03-03 | 2022-06-14 | 北京百度网讯科技有限公司 | 基于稀疏度的图像识别模型的训练方法、装置和设备 |
CN115600687A (zh) * | 2022-11-08 | 2023-01-13 | 北京百度网讯科技有限公司(Cn) | 模型训练方法、装置、设备以及存储介质 |
CN115906983A (zh) * | 2022-11-23 | 2023-04-04 | 北京百度网讯科技有限公司 | 分布式模型训练方法、装置、设备、存储介质及程序产品 |
CN115994567A (zh) * | 2022-12-28 | 2023-04-21 | 兰州交通大学 | 一种深度神经网络模型并行计算任务异步调度方法 |
CN116090551A (zh) * | 2023-03-06 | 2023-05-09 | 浪潮电子信息产业股份有限公司 | 一种梯度数据同步方法及装置 |
CN116452951A (zh) * | 2023-04-18 | 2023-07-18 | 郑州大学 | 基于中央数据池的遥感信息提取模型分布式训练方法 |
CN116704296A (zh) * | 2023-08-04 | 2023-09-05 | 浪潮电子信息产业股份有限公司 | 一种图像处理方法、装置、系统、设备及计算机存储介质 |
CN116962438A (zh) * | 2023-09-21 | 2023-10-27 | 浪潮电子信息产业股份有限公司 | 一种梯度数据同步方法、系统、电子设备及可读存储介质 |
CN116974654A (zh) * | 2023-09-21 | 2023-10-31 | 浙江大华技术股份有限公司 | 一种图像数据的处理方法、装置、电子设备及存储介质 |
CN117093871A (zh) * | 2023-10-16 | 2023-11-21 | 之江实验室 | 一种面向深度学习分布式训练测评方法和系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180253646A1 (en) * | 2017-03-05 | 2018-09-06 | International Business Machines Corporation | Hybrid aggregation for deep learning neural networks |
CN109902818A (zh) * | 2019-01-15 | 2019-06-18 | 中国科学院信息工程研究所 | 一种面向深度学习训练任务的分布式加速方法及系统 |
CN112464784A (zh) * | 2020-11-25 | 2021-03-09 | 西安烽火软件科技有限公司 | 一种基于混合并行的分布式训练方法 |
CN112463189A (zh) * | 2020-11-20 | 2021-03-09 | 中国人民解放军国防科技大学 | 基于通信操作稀疏化的分布式深度学习多步延迟更新方法 |
-
2021
- 2021-04-28 CN CN202110469768.3A patent/CN113515370B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180253646A1 (en) * | 2017-03-05 | 2018-09-06 | International Business Machines Corporation | Hybrid aggregation for deep learning neural networks |
CN109902818A (zh) * | 2019-01-15 | 2019-06-18 | 中国科学院信息工程研究所 | 一种面向深度学习训练任务的分布式加速方法及系统 |
CN112463189A (zh) * | 2020-11-20 | 2021-03-09 | 中国人民解放军国防科技大学 | 基于通信操作稀疏化的分布式深度学习多步延迟更新方法 |
CN112464784A (zh) * | 2020-11-25 | 2021-03-09 | 西安烽火软件科技有限公司 | 一种基于混合并行的分布式训练方法 |
Non-Patent Citations (2)
Title |
---|
杨志刚;吴俊敏;徐恒;尹燕;: "基于虚拟化的多GPU深度神经网络训练框架", 计算机工程, no. 02, 21 April 2017 (2017-04-21) * |
顾乃杰;赵增;吕亚飞;张致江;: "基于多GPU的深度神经网络训练算法", 小型微型计算机系统, no. 05, 15 May 2015 (2015-05-15) * |
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114398949A (zh) * | 2021-12-13 | 2022-04-26 | 鹏城实验室 | 一种脉冲神经网络模型的训练方法、存储介质及计算设备 |
CN114627342A (zh) * | 2022-03-03 | 2022-06-14 | 北京百度网讯科技有限公司 | 基于稀疏度的图像识别模型的训练方法、装置和设备 |
CN114358859A (zh) * | 2022-03-21 | 2022-04-15 | 北京大学 | 用于点击率预测的基于图的大规模embedding模型训练方法及系统 |
CN114358859B (zh) * | 2022-03-21 | 2022-07-01 | 北京大学 | 用于点击率预测的基于图的大规模embedding模型训练方法及系统 |
CN115600687A (zh) * | 2022-11-08 | 2023-01-13 | 北京百度网讯科技有限公司(Cn) | 模型训练方法、装置、设备以及存储介质 |
CN115906983A (zh) * | 2022-11-23 | 2023-04-04 | 北京百度网讯科技有限公司 | 分布式模型训练方法、装置、设备、存储介质及程序产品 |
CN115906983B (zh) * | 2022-11-23 | 2024-01-02 | 北京百度网讯科技有限公司 | 分布式模型训练方法、装置、设备、存储介质及程序产品 |
CN115994567A (zh) * | 2022-12-28 | 2023-04-21 | 兰州交通大学 | 一种深度神经网络模型并行计算任务异步调度方法 |
CN115994567B (zh) * | 2022-12-28 | 2024-03-22 | 兰州交通大学 | 一种深度神经网络模型并行计算任务异步调度方法 |
CN116090551A (zh) * | 2023-03-06 | 2023-05-09 | 浪潮电子信息产业股份有限公司 | 一种梯度数据同步方法及装置 |
CN116452951A (zh) * | 2023-04-18 | 2023-07-18 | 郑州大学 | 基于中央数据池的遥感信息提取模型分布式训练方法 |
CN116452951B (zh) * | 2023-04-18 | 2023-11-21 | 郑州大学 | 基于中央数据池的遥感信息提取模型分布式训练方法 |
CN116704296A (zh) * | 2023-08-04 | 2023-09-05 | 浪潮电子信息产业股份有限公司 | 一种图像处理方法、装置、系统、设备及计算机存储介质 |
CN116704296B (zh) * | 2023-08-04 | 2023-11-03 | 浪潮电子信息产业股份有限公司 | 一种图像处理方法、装置、系统、设备及计算机存储介质 |
CN116962438A (zh) * | 2023-09-21 | 2023-10-27 | 浪潮电子信息产业股份有限公司 | 一种梯度数据同步方法、系统、电子设备及可读存储介质 |
CN116974654B (zh) * | 2023-09-21 | 2023-12-19 | 浙江大华技术股份有限公司 | 一种图像数据的处理方法、装置、电子设备及存储介质 |
CN116962438B (zh) * | 2023-09-21 | 2024-01-23 | 浪潮电子信息产业股份有限公司 | 一种梯度数据同步方法、系统、电子设备及可读存储介质 |
CN116974654A (zh) * | 2023-09-21 | 2023-10-31 | 浙江大华技术股份有限公司 | 一种图像数据的处理方法、装置、电子设备及存储介质 |
CN117093871A (zh) * | 2023-10-16 | 2023-11-21 | 之江实验室 | 一种面向深度学习分布式训练测评方法和系统 |
CN117093871B (zh) * | 2023-10-16 | 2024-02-13 | 之江实验室 | 一种面向深度学习分布式训练测评方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN113515370B (zh) | 2024-03-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113515370B (zh) | 一种面向大规模深度神经网络的分布式训练方法 | |
US20220391771A1 (en) | Method, apparatus, and computer device and storage medium for distributed training of machine learning model | |
CN109299781B (zh) | 基于动量和剪枝的分布式深度学习系统 | |
CN106297774B (zh) | 一种神经网络声学模型的分布式并行训练方法及系统 | |
CN113128702A (zh) | 一种基于强化学习的神经网络自适应分布式并行训练方法 | |
CN108460457A (zh) | 一种面向卷积神经网络的多机多卡混合并行异步训练方法 | |
Jiang et al. | Fedmp: Federated learning through adaptive model pruning in heterogeneous edge computing | |
CN113159287B (zh) | 一种基于梯度稀疏的分布式深度学习方法 | |
CN113449839A (zh) | 一种分布式训练方法、梯度通信方法、装置以及计算设备 | |
CN113033712A (zh) | 一种基于联邦学习的多用户协同训练人流统计方法及系统 | |
CN114402293A (zh) | 具有持续且异步更新的流水线式神经网络处理 | |
CN112633477A (zh) | 一种基于现场可编程阵列的量化神经网络加速方法 | |
CN113272854A (zh) | 利用高级互连技术加速ai训练的方法和系统 | |
CN110600020B (zh) | 一种梯度传输方法及装置 | |
CN113452655A (zh) | 一种分布式训练方法、梯度通信方法、装置以及计算设备 | |
CN111935005B (zh) | 数据传输方法、装置、处理设备及介质 | |
Zhou et al. | AdaptCL: Efficient collaborative learning with dynamic and adaptive pruning | |
CN111160535A (zh) | 基于Hadoop的DGCNN模型加速方法 | |
WO2022223052A1 (zh) | 加速器、计算机系统和方法 | |
CN116153089A (zh) | 基于时空卷积与动态图的交通流量预测系统及方法 | |
CN116128701A (zh) | 一种用于执行图计算任务的装置、图计算方法 | |
CN115292044A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
US11928598B2 (en) | Method and system for distributed neural network training | |
CN107025099B (zh) | 一种基于双队列模型的异步图计算实现方法及系统 | |
CN115953651B (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 |