一种深度学习训练任务的工作方法及装置与流程

文档序号:19527224发布日期:2019-12-27 15:02阅读:232来源:国知局
一种深度学习训练任务的工作方法及装置与流程

本申请涉及深度学习领域,尤其涉及一种深度学习训练任务的工作方法及装置。



背景技术:

深度学习训练技术是目前发展十分迅速的一项崭新技术。随着用于深度学习训练业务的数据量的增加以及对于训练速度要求的提高,对于算力的需求也在显著增加。训练任务对于基础资源的需求从单服务器单gpu训练发展到单服务器多gpu训练以及多服务器多gpu训练,gpu服务器集群的整体规模也在显著提升。

作为集群中使用率较高,且相对于cpu、内存更加稀缺的资源,gpu的利用率通常决定了深度学习训练任务的整体效率。而如何做到在保证gpu利用率的同时做到兼顾单机型任务和多机型任务成为一个亟待解决的问题,在现有技术中缺乏一种能够解决上述问题的深度学习训练任务的工作方法。



技术实现要素:

为了解决现有技术存在的上述技术问题,本申请提供了一种深度学习训练任务的工作方法及装置,通过对单服务器节点以及多服务器节点中gpu中的剩余资源的合理分配解决了现有技术中无法在保证gpu利用率的同时做到兼顾单机型任务和多机型任务的问题。

本发明提供了一种深度学习训练任务的工作方法,包括:

获取用户输入的深度学习训练任务参数;

从所述任务参数中确定所述深度学习训练任务类型,所述深度学习训练任务类型包括:单机型、多机型;

当所述任务类型为单机型时,根据所述深度学习训练任务参数在单一服务器节点中选择满足所述深度学习训练任务参数且剩余资源量最小的gpu进行工作;

当所述任务类型为多机型时,根据所述深度学习训练任务参数先从单一服务器节点中选择满足所述深度学习训练任务参数且剩余资源量最小的gpu进行工作,若不存在满足条件的单一服务器节点,从多个服务器节点的组合中选择满足所述深度学习训练任务参数且剩余资源量最小的gpu进行工作;

根据所述gpu的位置选取与所述gpu之间通信距离最短的cpu进行工作。

可选的,所述深度学习训练任务参数包括:神经网络模型、数据集、训练批量大小batchsize和训练方式。

可选的,所述根据所述深度学习训练任务参数选择剩余资源最小的gpu进行工作包括:

选择满足所述申请网络模型、数据集和batchsize条件的剩余资源最小的gpu进行工作。

可选的,所述根据所述深度学习训练任务参数在服务器节点中选择满足所述深度学习训练任务参数且剩余资源量最小的gpu进行工作包括:

通过bestfit算法根据所述深度学习训练任务参数计算出服务器节点中在满足所述深度学习训练任务参数且剩余资源量最小的gpu进行工作。

可选的,所述单机型任务包括:单机单卡型任务或单机多卡型任务。

可选的,所述多机型任务包括:多机多卡ring-allreduce型任务或多机多卡ps-worker型任务。

可选的,所述当所述任务类型为多机型时,根据所述深度学习训练任务参数先从单一服务器节点中选择满足所述深度学习训练任务参数且剩余资源量最小的gpu进行工作,若不存在满足条件的单一服务器节点,从多个服务器节点的组合中选择满足所述深度学习训练任务参数且剩余资源量最小的gpu进行工作包括:

当所述任务类型为多机多卡ps-worker型任务时,优先从单一cpu子树中寻找是否存在满足所述深度学习训练任务参数的剩余资源最小的gpu;当单一cpu子树中不存在满足所述深度学习训练任务参数的剩余资源最小的gpu时,从单一服务器节点中寻找是否存在满足所述深度学习训练任务参数的剩余资源最小的gpu;当单一服务器节点中不存在满足所述深度学习训练任务参数的剩余资源最小的gpu,在多个服务器节点中寻找是否存在满足所述深度学习训练任务参数的剩余资源最小的gpu;当都不存在时,等待下次调度。

可选的,所述当所述任务类型为多机型时,根据所述深度学习训练任务参数先从单一服务器节点中选择满足所述深度学习训练任务参数且剩余资源量最小的gpu进行工作,若不存在满足条件的单一服务器节点,从多个服务器节点的组合中选择满足所述深度学习训练任务参数且剩余资源量最小的gpu进行工作包括:

当所述任务类型为多机多卡ring-allreduce型任务时,优先从单一服务器节点中寻找是否存在满足所述深度学习训练任务参数的剩余资源最小且可成闭环结构的gpu;若不存在,从多个服务器节点中寻找是否存在满足所述深度学习训练任务参数的剩余资源最小且可成闭环结构的gpu;若都不存在,等待下次调度。

可选的,在所述获取用户输入的深度学习训练任务参数前进一步包括:

根据每台服务器资源情况,为每台服务器建立资源拓扑结构,所述资源拓扑结构用于显示服务器中gpu节点之间的通信开销。

可选的,在所述获取用户输入的深度学习训练任务参数前进一步包括:

根据服务器节点之间的网络互联方式和网络拓扑,建立服务器节点之间的拓扑结构,所述拓扑结构用于显示服务器节点之间的通信速度。

可选的,所述当所述任务类型为多机型时,根据所述深度学习训练任务参数先从单一服务器节点中选择满足所述深度学习训练任务参数且剩余资源量最小的gpu进行工作,若不存在满足条件的单一服务器节点,从多个服务器节点的组合中选择满足所述深度学习训练任务参数且剩余资源量最小的gpu进行工作进一步包括:

当存在满足条件的单一服务器节点时,在所述单一服务器节点中选择通信开销最低的gpu进行工作;当不存在满足条件的单一服务器节点时,在多个服务器节点的组合中选取通信速度相同且最小的一组gpu进行工作。

可选的,在所述获取用户输入的深度学习训练任务参数前进一步包括:

动态更新各个节点和各个gpu卡的资源使用情况。

本申请还提供了一种深度学习训练任务的工作装置,所述装置包括:

获取单元,用于获取用户输入的深度学习训练任务参数;

辨别单元,用于从所述任务参数中确定所述深度学习训练任务的类型;其中,所述深度学习训练任务类型包括:单机型、多机型;

第一分配单元,用于为所述训练任务分配gpu节点;其中,当所述任务类型为单机型时,根据所述深度学习训练任务参数在单一服务器节点中选择满足所述深度学习训练任务参数且剩余资源量最小的gpu进行工作;当所述任务类型为多机型时,根据所述深度学习训练任务参数先从单一服务器节点中选择满足所述深度学习训练任务参数且剩余资源量最小的gpu进行工作,若不存在满足条件的单一服务器节点,从多个服务器节点的组合中选择满足所述深度学习训练任务参数且剩余资源量最小的gpu进行工作;

第二分配单元,用于根据所述gpu的位置为所述训练任务分配与所述gpu之间通信距离最短的cpu进行工作。

可选的,所述深度学习训练任务参数包括:神经网络模型、数据集、训练批量大小batchsize和训练方式。

可选的,所述第一分配单元包括:

第一选择单元:用于筛选出满足所述申请网络模型、数据集和batchsize条件的剩余资源最小的gpu。

可选的,所述第一分配单元包括:

计算单元,用于通过bestfit算法根据所述深度学习训练任务参数计算出服务器节点中在满足深度学习训练任务参数且剩余资源量最小的gpu进行工作。

可选的,所述单机型任务包括:单机单卡型任务或单机多卡型任务。

可选的,所述多机型任务包括:多机多卡ring-allreduce型任务或多机多卡ps-worker型任务。

可选的,所述第一分配单元包括:

ps-worker型分配单元,用于当所述任务类型为多机多卡ps-worker型任务时,优先从单一cpu子树中寻找是否存在满足所述深度学习训练任务参数的剩余资源最小的gpu;当单一cpu子树中不存在满足所述深度学习训练任务参数的剩余资源最小的gpu时,从单一服务器节点中寻找是否存在满足所述深度学习训练任务参数的剩余资源最小的gpu;当单一服务器节点中不存在满足所述深度学习训练任务参数的剩余资源最小的gpu,在多个服务器节点中寻找是否存在满足所述深度学习训练任务参数的剩余资源最小的gpu;当都不存在时,等待下次调度。

可选的,所述第一分配单元包括:

ring-allreduce型分配单元,用于当所述任务类型为多机多卡ring-allreduce型任务时,优先从单一服务器节点中寻找是否存在满足所述深度学习训练任务参数的剩余资源最小且可成闭环结构的gpu;若不存在,从多个服务器节点中寻找是否存在满足所述深度学习训练任务参数的剩余资源最小且可成闭环结构的gpu;若都不存在,等待下次调度。

可选的,在所述获取单元前进一步包括:

第一拓扑单元,用于根据每台服务器资源情况,为每台服务器建立资源拓扑结构,所述资源拓扑结构用于显示服务器中gpu节点之间的通信开销。

可选的,在所述获取单元前进一步包括:

第二拓扑单元,用于根据服务器节点之间的网络互联方式和网络拓扑,建立服务器节点之间的拓扑结构,所述拓扑结构用于显示服务器节点之间的通信速度。

可选的,所述第一分配单元进一步包括:

第二选择单元,用于当训练任务为多机型且当存在满足条件的单一服务器节点时,在所述单一服务器节点中选择通信开销最低的gpu进行工作;当不存在满足条件的单一服务器节点时,在多个服务器节点的组合中选取通信速度相同且最小的一组gpu进行工作。

可选的,所述获取单元前进一步包括:

更新单元,用于动态更新各个节点和各个gpu卡的资源使用情况。

本申请所述方法具有以下优点:通过对单机型和多机型任务设定不同的gpu分配策略以及根据gpu剩余资源量最小的原则为训练任务分配gpu节点资源,实现了在同一服务器集群中在满足最大化利用gpu节点资源的前提下,可以同时处理单机型任务以及多机型任务。

同时,本申请还根据单服务器中的资源情况为每台服务器建立拓扑结构,所述资源拓扑结构用于显示服务器中gpu节点之间的通信开销;同时,根据服务器节点之间的网络互联方式和网络拓扑,建立服务器节点之间的拓扑结构,所述拓扑结构用于显示服务器节点之间的通信速度,从而当需要处理多机型任务时,能够选取通信开销最小且通信速度最快的gpu组进行工作。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。

图1为本申请实施例一提供的一种深度学习训练任务的工作方法流程图;

图2为本申请实施例二提供的一种服务器资源拓扑结构图;

图3为本申请实施例二提供的一种服务器资源拓扑树树;

图4为本申请实施例二提供的一种服务器节点邻接矩阵表;

图5为本申请实施例二提供的一种服务器节点之间的拓扑结构图;

图6为本申请实施例二提供的一种服务器节点之间的拓扑树图;

图7为本申请实施例二提供的一种服务器节点之间的拓扑结果表;

图8为本申请实施例二提供的一种深度学习训练任务的另一实施例的工作方法流程图;

图9为本申请实施例三提供的一种深度学习训练任务的工作装置的结构框图。

具体实施方式

实施例一:

本申请实施例一提供了一种深度学习训练任务的工作方法,下面结合附图具体说明。

参见图1,该图为本申请实施例一提供的一种深度学习训练任务的工作方法的流程图。

本申请实施例一所述方法包括以下步骤:

s101:获取用户输入的深度学习训练任务参数;

其中,所述深度学习训练任务参数包括:神经网络模型、数据集、训练批量大小batchsize和训练方式。神经网络模型、数据集以及batchsize决定了所需的gpu资源量,训练方式决定了gpu的分配方式。

s102:从所述任务参数中确定所述深度学习训练任务类型,所述深度学习训练任务类型包括:单机型、多机型;

其中,单机型任务又包括单机单卡型和单机多卡型,单机单卡型是指训练任务时单个进程,只使用一台物理服务器的一张gpu卡;单机多卡型是指训练任务为单个进程,使用同一台物理服务器的多张gpu卡。

多机型任务又包括多机多卡ring-allreduce型任务和多机多卡ps-worker型任务。多机多卡ring-allreduce型任务是指ps节点为0,worker节点大于1的多机多卡型任务;多机多卡ps-worker型任务是指ps节点大于1且worker节点大于0的多机多卡型任务。用户通过对ps节点和worker节点个数的设置来指定相应的训练类型。

s103:当所述任务类型为单机型时,根据所述深度学习训练任务参数在单一服务器节点中选择满足所述深度学习训练任务参数且剩余资源量最小的gpu进行工作;

当任务类型为单机型时,任务只包含一个进程,且只需在一台物理服务器中寻找gpu资源进行分配,因此只需考虑gpu资源分配是否合理即可。

为任务分配gpu资源的原则在满足任务所需资源量的前提下,选择剩余资源量最少的gpu进行分配,从而可以保证gpu资源利用率最大化。任务所需资源量是由用户设置的深度学习训练任务参数中的神经网络模型、数据集及batchsize决定的,具体计算方法为:

模型输出的显存占用=每一层输出规模*batchsize

模型的显存占用=参数w的显存占用+梯度的显存占用+优化器动量的显存占用

(如果是sgd+momentum训练方式)

在模型确定之后,每一层的输出规模也就确定了:

其中out代表计算得到的featuremap的width,inw代表输入尺寸,p代表padding,f代表卷积核大小。

总显存占用=模型的显存占用+模型输出的显存占用

当模型较小或batchsize较大时:

总显存占用≈batchsize*单样本的显存占用

所以,所以当给定一个模型和batchsize之后,我们可以得到一个确定的显存占用量。在调度时,需要保证显存足够。

在得到任务需要的显存占用量后,使用bestfit算法找到最适合的gpu进行分配。bestfit内容具体为:

bestfit算法伪代码

s104:当所述任务类型为多机型时,根据所述深度学习训练任务参数先从单一服务器节点中选择满足所述深度学习训练任务参数且剩余资源量最小的gpu进行工作,若不存在满足条件的单一服务器节点,从多个服务器节点的组合中选择满足所述深度学习训练任务参数且剩余资源量最小的gpu进行工作;

其中,当多机型任务为多机多卡ps-worker型任务时,由于该类型任务是层层向上传递信息的任务,因此在单一物理服务器中树形结构的gpu在执行该任务时速度最快,因此优先从单一cpu子树中寻找是否存在满足所述深度学习训练任务参数的剩余资源最小的gpu;当单一cpu子树中不存在满足所述深度学习训练任务参数的剩余资源最小的gpu时,从单一服务器节点中寻找是否存在满足所述深度学习训练任务参数的剩余资源最小的gpu;当单一服务器节点中不存在满足所述深度学习训练任务参数的剩余资源最小的gpu时,在多个服务器节点中寻找是否存在满足所述深度学习训练任务参数的剩余资源最小的gpu,由于多个服务器之间的传输速度要远远大于单服务器中的gpu之间的信息传输速度,因此当跨服务器进行传输时,树形结构带来的速度优势可以忽略不计;当都不存在时,认为此次调度没有找到合适资源,等待下次调度。

当所述任务类型为多机多卡ring-allreduce型任务时,由于该任务类型为闭环型信息传递任务,因此优先从单一服务器节点中寻找是否存在满足所述深度学习训练任务参数的剩余资源最小且可成闭环结构的gpu;若不存在,从多个服务器节点中寻找是否存在满足所述深度学习训练任务参数的剩余资源最小且可成闭环结构的gpu;若都不存在,认为此次调度没有找到合适资源,等待下次调度。

s105:根据所述gpu的位置选取与所述gpu之间通信距离最短的cpu进行工作。

通过这种方法选取cpu可以保证信息之间的传输速度最快,通信开销最低。

实施例二:

本申请实施例二还提供了另一种深度学习训练任务的方法实施例,下面结合附图具体说明。

参见图8,该图为本申请实施例二提供的一种深度学习训练任务方法的流程图。

本申请实施例包括以下步骤:

s201:根据每台服务器资源情况,为每台服务器建立资源拓扑结构,所述资源拓扑结构用于显示服务器中gpu节点之间的通信开销。

如图2所示,图2是一台服务器中的资源拓扑结构图,图3是根据所述资源拓扑结构图生成的拓扑树图,图4是根据所述资源拓扑结构图生成的节点邻接矩阵表。对于同一台服务器之内不同类型链接的gpu通信开销,本申请定义为以下6个等级:

sys:只能跨socket,通过qpi/upi通信(即跨numa组)。

node:numa组内的通过不同的pciehostbridge通信。

phb:只通过一个pciehostbridge通信。(同组内的cpu与gpu之间通信是这种方式)

pxb:通过多个pcieswitch通信而不经过pciehostbridge。

pix:同一个pcieswitch内通信。

nv#:通过nvlink进行通信。

通信开销从上向下依次减小,sys的开销最大,nvlink的通信开销最小。其中最常见的连接类型是:nv,node和sys。

s202:根据服务器节点之间的网络互联方式和网络拓扑,建立服务器节点之间的拓扑结构,所述拓扑结构用于显示服务器节点之间的通信速度。

服务器之间的拓扑结构如图5所示,图6是根据所述拓扑结构生成的拓扑树图,图7是根据所述拓扑结构生成的节点邻接矩阵图。对于服务器之间的通信速度,本申请按照下面的方式进行定义:

ib1:两个节点之间通过1级ib交换机就可以进行通信。

ib2:两个节点之间需要通过2级ib交换机进行通信。

ibn:两个节点之间需要通过n级ib交换机进行通信。

ethernet1:两个节点之间只需经过1个交换机就可以通信。(对于两个同级交换机做堆叠,视为1个交换机)

ethernet2:两个节点之间需要通过2级交换机进行通信。

ethernetn:两个节点之间需要通过n级交换机进行通信。

n>2,n∈n+。通信开销从上向下依次增大,ib交换速度高于ethernet交换。

由图5可知,node1与node2同属一个接入交换机。node2与node3通过不同接入交换机,但通过相同汇聚交换机相连。node3与node4通过相同ib交换机互联。node4与node5通过ib路由器互联。由此可以得到邻接矩阵图6。其中x表示互相不连通。其中ib1为通信速度最快。ib1权值定义为1,ethernet1权值定义为100。x权值定义为-1。各类型权值依次升高ib1<ib2<ethernet1<ethernet2(即权值分别为1,2,100,101,暂不考虑100层以上的ib)。

s203:动态更新各个节点和各个gpu卡的资源使用情况。

该步骤是为了使系统可以及时找到符合条件的gpu卡。

s204-s206:与s101-s103相同。

s207:当所述任务类型为多机型时,根据所述深度学习训练任务参数先从单一服务器节点中选择满足所述深度学习训练任务参数且剩余资源量最小且通信开销最低的一组gpu进行工作,若不存在满足条件的单一服务器节点,从多个服务器节点的组合中选择满足所述深度学习训练任务参数、剩余资源量最小且通信速度最快且相同的gpu进行工作。

由于多机型训练任务中包含多个进程,因此需要进行进程之间的信息传递。当多机型训练任务在单一服务器中进行时,根据上述单一服务器资源拓扑结构选择通信开销最低的gpu组进行通信;当多机型训练任务在多个服务器中进行时,由于服务器之间的通信速度要远远慢于单一服务器的资源节点之间的通信速度,因此此时只考虑如何节省服务器之间的通信速度。通过上述服务器节点拓扑结构可以选择出一组通讯速度最快的服务器节点的gpu。同时,在多机型任务为多机多卡ps-worker型任务时,由于在树形结构中,一次传递时需要每一个下层gpu向上传递过程都结束后才能完成此次传递;在多机型任务为多机多卡ring-allreduce型任务时,由于在环形结构中,一次传递时需要每一个gpu节点都向下一个gpu节点传递信息完成后才能完成此次传递,因此,根据木桶效应,所述的两种多机型任务的一次传递的时间都取决于传递最慢的两个gpu节点,因此,本申请限定在选择gpu节点时,选取通信速度相同的一组gpu节点,以减少资源浪费。

s208:根据所述gpu位置选取与所述gpu之间通信距离最短的cpu进行工作。

实施例三:

基于上述实施例提供的一种深度学习训练任务的工作方法,本申请实施例三还提供了一种深度学习训练任务的工作装置,下面结合附图具体说明。

如图9所示,图9为本申请实施例三提供的一种深度学习训练任务的工作装置,所述装置包括:

101:获取单元,用于获取用户输入的深度学习训练任务参数;

102:辨别单元,用于从所述任务参数中确定所述深度学习训练任务的类型;其中,所述深度学习训练任务类型包括:单机型、多机型;

103:第一分配单元,用于为所述训练任务分配gpu节点;其中,当所述任务类型为单机型时,根据所述深度学习训练任务参数在单一服务器节点中选择满足所述深度学习训练任务参数且剩余资源量最小的gpu进行工作;当所述任务类型为多机型时,根据所述深度学习训练任务参数先从单一服务器节点中选择满足所述深度学习训练任务参数且剩余资源量最小的gpu进行工作,若不存在满足条件的单一服务器节点,从多个服务器节点的组合中选择满足所述深度学习训练任务参数且剩余资源量最小的gpu进行工作;

104:第二分配单元,用于根据所述gpu的位置为所述训练任务分配与所述gpu之间通信距离最短的cpu进行工作。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置的具体工作过程可以参考前述方法实施例中的对应过程,在此不再赘述。

应当理解,在本申请中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“a和/或b”可以表示:只存在a,只存在b以及同时存在a和b三种情况,其中a,b可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元及模块可以是或者也可以不是物理上分开的。另外,还可以根据实际的需要选择其中的部分或者全部单元和模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

以上所述仅是本申请的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1