掌桥专利:专业的专利平台
掌桥专利
首页

一种加速分布式深度神经网络训练的混合流水线并行方法

文献发布时间:2023-06-19 10:57:17


一种加速分布式深度神经网络训练的混合流水线并行方法

所属领域

本发明涉及一种混合流水线分布式深度学习中的模型划分与任务放置方法,属于分布式计算技术领域。

背景技术

深度学习是一类模式分析方法的总称,通过深度神经网络,利用多层非线性信息进行有监督或无监督的特征提取和转换。近年来,随着技术的不断进步,深度学习在譬如图像识别、自然语言处理、人机对抗等多个领域取得了广泛的应用。但是随着深度学习的不断发展,网络的深度越来越深,层数越来越多,训练时间也在不断地增加,通常训练一个完整的深度神经网络模型需要几十小时甚至数周或数月,因此如何高效地执行训练过程,减少训练时间,成为近期人们研究的热点。

深度神经网络的训练主要包含三个部分:(1)正向传播。正向传播指神经网络从训练集中读取带有标签的数据,通过隐藏层和激活层运算,最后由输出层输出结果的过程。为了加快训练速度以及减少噪声带来的影响,通常一次迭代会处理一组数据。(2)反向传播。正向传播输出结果后,需要与训练集本身的标签进行比对,用合适的函数计算出训练值与真实值之间的误差。由于各个参数对误差影响的权重大小不同,为了计算权重,从正向传播的反方向,由链式求导法则,依次求出各层参数的梯度,计算梯度时需要用到相应层前向传播的中间结果。(3)梯度下降。根据计算值与真实值之间的误差和反向传播中求解出的各层参数的梯度,对每一层的参数进行梯度下降,更新参数,完成一次迭代。通过这三个步骤的不断迭代,最终神经网络达到收敛的状态。

由于随着模型的不断发展,模型层数越来越多,所需要的计算能力和显存占用越来越大,分布式机器学习成为了人们关注的重点问题。传统分布式机器学习主要分为两种方式:(1)数据并行。数据并行是指在多块GPU上,每块GPU都含有一个模型的完整副本,使用部分数据,各自相对独立地进行训练。一次迭代完成后,会由参数服务器收集所有GPU上的参数然后执行参数同步更新。随着GPU计算能力的不断提升,计算时间不断被缩短,这时参数同步所需的通信时间就成为了数据并行中的瓶颈,大大降低了分布式训练的性能。(2)模型并行。模型并行将模型从中间切分,划分到不同的GPU上,每块GPU只拥有完整模型的一部分。正向传播时,先计算模型的第一部分stage1,然后将中间结果发送到第二部分stage2,继续计算。反向传播和梯度下降同理。但是由于stage正向传播后需要等待后面的stage反向传播的结果,等待时间中该GPU一直处于空闲状态,大大降低了分布式计算的性能。同时,如何合理地切分模型,使得各个stage达到负载均衡,也是用户需要考虑的难点。

针对这两种并行方式各自的特点,近期研究者们提出了两种方式来改进分布式机器学习。一种是混合并行,传统的数据并行是从数据的batch维度进行切分的,混合并行从张量的角度进行切分,扩展了并行方式,从而减少通信瓶颈,提高了GPU的利用率。另一种是流水线并行,是一种对模型并行的改进。在模型并行的正向传播过程中,一个GPU在进行完一组数据的计算后,不再一直等待反向传播,而是继续计算下一组数据的正向传播过程。通过合理地分配正向和反向传播的执行顺序,达到理论上的负载均衡,大大减少了GPU的空闲时间,提高了并行效率。但是,在现有的工作中,并没有综合考虑这两种并行方式,导致策略的划分不够完备,GPU的利用率不够高。因此,如何结合混合并行和流水线并行,设计有效的算法实现模型划分从而提升训练速度,成为关键问题。

发明内容

本发明主要针对目前流水线训练模式下分布式深度学习的训练加速,提出一种混合模型划分与任务放置方法。在混合流水线模式下,同一时间片,不同的阶段中GPU在执行模型不同部分的相应计算,为了使得模型训练并行化程度高,提升分布式训练速度,需要在模型划分时不仅考虑训练速度还应考虑各阶段之间负载均衡以及混合并行的方式。为此,该方法根据深度神经网络的层级特性,先求解出混合并行的结果,再根据此结果,结合流水线并行的特点,用动态规划求解出负载均衡的模型划分与任务放置。

为了实现上述目的,本发明的技术方案如下:一种加速分布式深度神经网络训练的混合流水线并行方法,该方法包括以下步骤:

步骤一:建立深度神经网络的层次累积分布函数(CDF)模型,分析深度学习应用执行模型划分与任务放置算法所需相应输入条件,使用pytorch框架,得到每一层的参数量;然后根据给定的batch-size大小,计算出每一层的中间结果通信量;最后根据每层网络的类型,比如卷积层,全连接层等,计算出每一层的浮点计算量,为步骤二做准备工作;

步骤二:根据步骤一的结果,采用动态规划的算法,求解出深度神经网络任意两层间采用不同混合并行方式时的并行时间,为步骤三做准备工作;

步骤三:基于步骤二中求解出的混合并行模式下的结果,采用动态规划的算法,划分不同的阶段,每个阶段内包含神经网络部分连续的层,并给出阶段内采用的混合并行方式,目的是最小化划分之后各阶段任务执行时间之间的最大值,使得混合并行模式下,GPU负载尽可能地均衡,提升GPU利用率以加速分布式训练。

其中,所述步骤一具体如下:

为神经网络层次模型建立累积分布函数模型,在给定超参数的前提下,根据设备拓扑D刻画神经网络层级结构相应指标:

a刻画神经网络各层前向反向计算总时间T

b刻画神经网络各层输入量Sizein

c刻画神经网络各层输出量Sizeout

d刻画神经网络各层参数量w

其中,所述步骤二具体如下:

混合并行划分算法,混合并行划分的目标是求解出任意两层间最优的混合并行方式,在给定带宽B的前提下,根据综合根据动态规划的思想,该问题转换为求任意一层到最后一层间混合并行的并行时间,保留中间结果即可通过回溯找到任意两层间的最优混合并行策略,根据Sizein

所述步骤三中,以步骤二的混合并行划分结果为基础,用动态规划的算法,将模型划分为多个阶段,每个阶段为神经网络中的部分连续层,阶段内采用最优的混合并行的方式,阶段间采用流水线模型并行,根据Sizein

通过动态规划的方法,求解出所有阶段中计算和通信时间之和的最大的阶段所用的时间,使得各个阶段的时间大致相当,在混合并行模式下,GPU负载尽可能地均衡。

相对于现有技术,本发明的有益效果如下:该方案提供的一种加速分布式深度神经网络训练的混合流水线并行方法能解决传统模型划分与任务放置对模型的划分方式考虑不够全面,导致分布式深度学习过程负载不均及GPU利用不充分的问题,从张量计算的角度出发,通过对张量的不同维度进行切分,提出了混合并行的方法,扩展了传统的并行方式,增加了并行的可能性;然后全面考虑多种划分方式,将模型划分为多个阶段,阶段内采用混合并行,阶段间采用流水线并行,最小化所有阶段中计算和通信时间之和的最大的阶段所用的时间,从而提升GPU集群环境中流水线分布式深度学习的训练速度。

附图说明

图1为本发明GPU集群示意图;

图2为本发明混合并行方式示意图;

图3为本发明整体流程图;

图4为本发明总体设计示意图。

具体实施方式

下面结合附图及具体实施方式对本发明再作进一步详细的说明。

实施例1:参见图1,一种加速分布式深度神经网络训练的混合流水线并行方法,该方法包括以下步骤:

步骤一:建立深度神经网络的层次累积分布函数(CDF)模型,分析深度学习应用执行模型划分与任务放置算法所需相应输入条件,使用pytorch框架,得到每一层的参数量;然后根据给定的batch-size大小,计算出每一层的中间结果通信量;最后根据每层网络的类型,比如卷积层,全连接层等,计算出每一层的浮点计算量,为步骤二做准备工作;

步骤二:根据步骤一的结果,采用动态规划的算法,求解出深度神经网络任意两层间采用不同混合并行方式时的并行时间,为步骤三做准备工作;

步骤三:基于步骤二中求解出的混合并行模式下的结果,采用动态规划的算法,划分不同的阶段,每个阶段内包含神经网络部分连续的层,并给出阶段内采用的混合并行方式,目的是最小化划分之后各阶段任务执行时间之间的最大值,使得混合并行模式下,GPU负载尽可能地均衡,提升GPU利用率以加速分布式训练。

其中,所述步骤一具体如下:

为神经网络层次模型建立累积分布函数模型,在给定超参数的前提下,根据设备拓扑D刻画神经网络层级结构相应指标:

a刻画神经网络各层前向反向计算总时间T

b刻画神经网络各层输入量Sizein

c刻画神经网络各层输出量Sizeout

d刻画神经网络各层参数量w

其中,所述步骤二具体如下:

混合并行划分算法,混合并行划分的目标是求解出任意两层间最优的混合并行方式,在给定带宽B的前提下,根据综合根据动态规划的思想,该问题转换为求任意一层到最后一层间混合并行的并行时间,保留中间结果即可通过回溯找到任意两层间的最优混合并行策略,根据Sizein

所述步骤三中,以步骤二的混合并行划分结果为基础,用动态规划的算法,将模型划分为多个阶段,每个阶段为神经网络中的部分连续层,阶段内采用最优的混合并行的方式,阶段间采用流水线模型并行,根据Sizein

通过动态规划的方法,求解出所有阶段中计算和通信时间之和的最大的阶段所用的时间,使得各个阶段的时间大致相当,在混合并行模式下,GPU负载尽可能地均衡。

具体实施例:本发明主要在GPU集群环境下进行。

图1表示的是GPU集群示意图,主要包若干GPU服务器节点,每个服务器节点上有若干块GPU,节点内部通过PCIe连接,节点间通过以太网等连接。

图2表示的是混合并行方式示意图,同一矩形划分两部分,代表划分方式,不同部分的矩形堆叠在一起代表重复计算部分,也即需要通信的部分。三张图对应三种张量划分方式,分别需要通信权重参数,输出层数据,输入层数据。

图3表示的是整体的流程图,首选初始化系统,载入输入数据并且创建指定模型,之后按层刻画模型,计算出累积分布函数模型。再根据GPU集群的环境进行混合并行划分。最后用混合并行划分的结果,设计划分流水线并行的各个阶段,每个阶段内包含神经网络部分连续的层,并给出阶段内采用的混合并行方式,目的是最小化划分之后各阶段任务执行时间之间的最大值,给出最终策略。

在模型刻画阶段,对于计算量而言,利用torchstat库打印出神经网络在GPU上依次执行前向传播反向传播的矩阵计算(mkldnn_convolution、max_pool2d_with_indices、batch_norm、addmm等)所需计算量,然后按照GPU计算能力得到计算时间。对于通信量而言,同样打印出各层输出的矩阵形状以及神经网络各层参数的数量,然后按照浮点数所需字节计算得到各层中间结果以及参数大小。通过预训练之后得到:各层刻画神经网络各层前向反向计算总时间T

在混合并行划分阶段,目标是求解出任意两层间最优的混合并行方式,根据动态规划的思想,该问题转换为求任意一层到最后一层间混合并行的并行时间,保留中间结果即可通过回溯找到任意两层间的最优混合并行策略。

在混合流水线并行划分阶段,将模型划分为多个阶段,每个阶段为神经网络中的部分连续层。阶段内采用最优的混合并行的方式,阶段间采用流水线模型并行。划分目标是最小化划分之后各个阶段计算和通信时间的最大值,提高GPU利用率,加快训练速度。

对于混合并行划分和混合流水线并行划分问题,建立数学模型:

1)GPU集群中物理资源建模:

表1物理资源建模表示结果

2)神经网络建模:

表2神经网络计算需求建模表示结果

a.第i层的通信量:

b.第i层的总时间

T=T

c.表i→j层,使用m块卡混合并行的最优策略:

d.整体目标为最小化一次迭代的总时间,可以转化为所有阶段中计算和通信时间之和的最大的阶段所用的时间。

混合并行划分阶段的伪代码如下:

对于算法1而言,输入为神经网络各层参数Layer,GPU个数M,GPU集群带宽M,。算法输出为任意两层间最优的混合并行方式。算法1的第一第二行,使用for循环,遍历了任意层到最后一层在任意设备下的混合并行情况,由于这是一个子最优问题,采用动态规划的思想,可以同时得出任意两层间任意设备下的混合并行情况。第4行到第6行,具体计算混合并行所需要的时间。在当前层选择一种并行方式,根据Sizein

算法2的输入为算法1中混合并行的结果,GPU个数M,GPU集群带宽M,输出为混合流水线并行划分结果。算法2第2行到第5行初始化参数,使用for循环,循环遍历任意i到j层,从中间的k层切分,i~k层使用m块卡进行混合并行。第6行到第8行,每次划分后,根据Sizein

本发明还可有其他多种实施方式,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员可根据本发明做出各种相应的改变和变形,这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。

相关技术
  • 一种加速分布式深度神经网络训练的混合流水线并行方法
  • 高性能流水线并行深度神经网络训练
技术分类

06120112739611