一种加速分布式机器学习的方法及系统与流程

文档序号:20920717发布日期:2020-05-29 14:06阅读:239来源:国知局
一种加速分布式机器学习的方法及系统与流程

本发明涉及计算机技术领域,尤其涉及一种加速分布式机器学习的方法及系统。



背景技术:

随着数据量的增长,基于数据并行的分布式训练已经成为业界广泛采用的机器学习加速方式。在数据并行中,不同计算节点有同一模型的多个副本,每个计算节点使用不同的训练数据计算模型更新,然后所有计算节点之间汇总模型更新。模型汇总完成后,便开始新一轮计算。随着模型规模的增大(如bert模型参数量高达3亿),模型汇总带来的通信开销逐渐成为影响分布式机器学习性能的一大因素。

机器学习计算是逐层进行的,并可分为前向计算和反向传播两个阶段:前向计算负责计算模型的损失,反向传播负责计算模型的更新。为了降低通信对分布式机器学习性能的影响,现有方案普遍采用“无需等待的反向传播”方式,即反向传播时,后层模型更新的传输和前层模型更新的计算重叠,以尽可能隐藏模型更新传输的开销。

然而,现有方案均未考虑前向计算过程中通信和计算的重叠,参数传输顺序具有随机性,从而导致迭代时间会大大增加,且机器学习效率低下。



技术实现要素:

为了解决上述问题,本发明实施例提供一种加速分布式机器学习的方法及系统。

第一方面,本发明实施例提供一种加速分布式机器学习的方法,包括:将机器学习模型输入到分布式机器学习系统中,对于所述分布式机器学习系统中的任意两个节点,在所述任意两个节点之间建立多条连接;

将所述机器学习模型的参数分配到多条连接上进行传输,并赋予多条连接不同的优先级,以对分布式机器学习训练进行加速。

优选地,所述将所述机器学习模型的参数分配到多条连接上进行传输,具体包括:

对所述分布式机器学习系统中的每条连接设置一个优先级;

对于任一优先级的连接,获取所述任一优先级的连接对应的目标参数,所述目标参数为所述任一优先级的连接需要传输的所述机器学习模型参数;

所述任一优先级的连接对所述目标参数进行传输。

优选地,还包括:将所述任一优先级作为所述目标参数的优先级。

优选地,对于任意两个不同优先级的目标参数,当这两个目标参数进入网络时,先传输优先级高的目标参数。

优选地,所述获取所述任一优先级的连接对应的目标参数,具体包括:

通过启发式算法计算所述机器学习模型的参数在不同优先级之间的分配比例;

根据所述分配比例,获取所述任一优先级的连接对应的目标参数。

第二方面,本发明实施例提供一加速分布式机器学习的系统,包括:连接模块,用于将机器学习模型输入到分布式机器学习系统中,对于所述分布式机器学习系统中的任意两个节点,在所述任意两个节点之间建立多条连接;

训练模块,用于将所述机器学习模型的参数分配到多条连接上进行传输,并赋予多条连接不同的优先级,以对分布式机器学习训练进行加速。

第三方面,本发明实施例提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行程序时实现本发明第一方面加速分布式机器学习的方法的步骤。

第四方面,本发明实施例提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现本发明第一方面加速分布式机器学习的方法的步骤。

本发明实施例提供的一种加速分布式机器学习的方法及系统,本方案考虑前向计算过程中通信和计算的重叠,通过优先传输紧急参数,减少现有机器学习框架下参数传输顺序的随机性,可以重叠前向计算过程中的通信和计算,隐藏通信开销,并通过网络级别的流调度协调不同节点的通信,实现分布式的通信调度,从而加速训练过程。

附图说明

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

图1为参数随机传输和按序传输的比较示意图;

图2为本发明实施例中一种加速分布式机器学习的方法的流程图;

图3为本发明实施例中网络调度和端侧调度的比较的示意图;

图4为本发明实施例提供的一种加速分布式机器学习的系统的结构示意图;

图5为本发明实施例提供的一种电子设备的实体结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

机器学习计算是逐层进行的,并可分为前向计算和反向传播两个阶段:前向计算负责计算模型的损失,反向传播负责计算模型的更新。为了降低通信对分布式机器学习性能的影响,现有方案普遍采用“无需等待的反向传播”方式,即反向传播时,后层模型更新的传输和前层模型更新的计算重叠,以尽可能隐藏模型更新传输的开销。

然而,现有方案均未考虑前向计算过程中通信和计算的重叠,参数传输顺序具有随机性,因此分布式机器学习训练性能仍有待提高。基于此,本发明的目的在于,设计一种基于流调度的分布式机器学习加速方案。

图1为参数随机传输和按序传输的比较示意图,如图1所示,图1中(a)表示机器学习模型的参数随机传输,图1中(b)表示机器学习模型的参数按序传输,这里我们假设机器学习模型有4层,从前往后的顺序是第1层layer1、layer2、layer3和layer4,也就是图中的1、2、3、4。图中pull表示拉取参数,push表示推送梯度,forwardpass表示前向计算,back-propagation(简称bp)表示反向传播,aggregation表示参数汇总。network表示网络,worker表示工作者节点,ps表示参数服务器。

参见图1中(b),在执行过程开始时首先要获取机器学习模型参数,当layer1的参数从ps到达worker后,layer1便可以开始计算了,此时layer2的参数传输可以和layer1的计算并行,当layer1计算完成,layer2的参数也到达worker了,那layer2的计算也可以开始,如此这样,直到最后一层layer4计算完成。

然后开始bp过程,bp是反向的,从layer4到layer1的顺序,当layer4的梯度计算完成后,可以将其传输到ps上,与此同时,layer3的梯度计算也可以并行进行。当layer4的梯度到达ps上,ps可以汇总不同worker上的梯度,并更新参数。直到所有梯度都汇总完成,一次迭代计算结束,便可以开始下一次迭代了。

参见图1中(a),当参数按照3、2、4、1的顺序到达worker时,worker只有收到layer1的参数才能开始layer1的计算,而layer2的计算依赖于layer1的计算结果,因此即使收到layer2的参数也无法开始。图里同样是一次迭代的过程。

对比图1中(a)和图1中(b)可以看到,如果参数按序传输的话,迭代时间会大大缩短,因此分布式机器学习训练过程得以加速。

本发明设计了geryon——一种基于流调度的分布式机器学习训练加速方案,可以重叠前向计算过程中的通信和计算,隐藏通信开销,并通过全网规模的流调度协调不同节点的通信,实现分布式的通信调度,从而加速分布式机器学习训练过程。

本发明提出的方法的思路在于:机器学习的前向计算是逐层的,并且对参数具有依赖性,可以通过设计合理的调度策略,使得不同层的通信和计算充分重叠,以隐藏通信开销,并且优先传输紧急参数,提高训练速度。具体地,本发明采用以下三方面策略对分布式机器学习训练进行加速:

第一、“多连接策略”:现有的分布式机器学习系统在任意两个计算节点间只有一条连接,geryon通过在分布式机器学习系统内的计算节点间建立多条连接,将不同的机器学习模型参数分配到不同的连接上进行传输,从而减少紧急参数在端侧的单一发送队列中的排队时延。

图2为本发明实施例中一种加速分布式机器学习的方法的流程图,如图2所示,该方法包括:

s1,将机器学习模型输入到分布式机器学习系统中,对于所述分布式机器学习系统中的任意两个节点,在所述任意两个节点之间建立多条连接;

s2,将所述机器学习模型的参数分配到多条连接上进行传输,并赋予多条连接不同的优先级,以对分布式机器学习训练进行加速。

首先将机器学习模型输入到分布式机器学习系统中,对分布式学习系统中的任意两个节点,此处的任意两个节点是指工作者节点和参数服务器节点,也就是在任意一个工作者节点和任意一个参数服务器节点之间建立多条连接,并将机器学习模型的不同参数分配到不同的连接上进行传输,从而减少紧急参数在端侧的单一发送队列中的排队时延。

具体地,所述将所述机器学习模型的参数分配到多条连接上进行传输,具体包括:

对所述分布式机器学习系统中的每条连接设置一个优先级;

对于任一优先级的连接,获取所述任一优先级的连接对应的目标参数,所述目标参数为所述任一优先级的连接需要传输的所述机器学习模型参数;

所述任一优先级的连接对所述目标参数进行传输。

第二,“多优先级策略”:geryon通过为不同的连接赋予不同的优先级,承载紧急参数的连接被分配更高的优先级,在端侧和交换机处均采用严格优先级调度,保证高优先级连接所承载的紧急参数在整个网络中均可以优先被传输。

geryon需要网卡(也就是端侧)和交换机都要配置严格优先级调度策略。geryon将不同的参数分配到不同的连接上,每条连接具有一个优先级,这一优先级标记会在该连接的每个数据包中都会携带。端侧和交换机要对这些数据包做严格优先级调度,依赖的就是数据包上的优先级标记。

具体地,还包括:将所述任一优先级作为所述目标参数的优先级。

需要注意的是,由于每个数据包上均包含优先级标记,数据包上的优先级就是传输该数据包的连接的优先级,这样交换机可以区分来自不同节点的紧急程度不同的参数,实现分布式的通信调度。

在上述实施例的基础上,优选地,通过启发式算法计算所述机器学习模型的参数在不同优先级之间的分配比例;

根据所述分配比例,获取所述任一优先级的连接对应的目标参数。

第三、“自适应参数分配策略”:geryon支持使用任意数量的优先级,最少仅需要两个优先级。针对不同的优先级数量,通过启发式算法计算参数在不同优先级间的切分比例,也就是在所有参数中,哪些参数分配到高优先级连接上,哪些参数分配到低优先级上,以实现自适应的参数分配策略,提高使用性。

在上述实施例的基础上,优选地,对于任意两个不同优先级的目标参数,当这两个目标参数进入网络时,先传输优先级高的目标参数。

图3为本发明实施例中网络调度和端侧调度的比较的示意图,如图3所示,ps0表示参数服务器0,ps1表示参数服务器1,networkfabric表示网络结构,network-leverscheduling表示网络调度策略,end-host-levelscheduling表示端侧调度策略,low-priorityparameterinps0表示ps0上维护的参数是低优先级的,high-priorityparameterinps1表示ps1上维护的参数是高优先级的,flowdirection表示流向,physicallink表示物理连接。

在分布式机器学习系统中,存在多个ps和多个worker,这里为了展示清楚,只放了一个worker和两个ps,然后对比通过流调度控制参数传输顺序和通过应用层控制参数发送顺序两个方案。左边是网络调度,右边是端侧调度。

假设低优先级参数位于ps0上,高优先级参数位于ps1上,当这两个参数进入网络中时,端侧调度无法控制这两个参数的先后传输顺序,因此,两个参数共同竞争网络资源,传输时间都很长。

而对网络调度而言,仍然可以确保高优先级参数优先被传输,低优先级参数不会占用带宽,只有当高优先级参数传输完成后,低优先级参数才会传输。因此,网络调度可以在全网范围内保证紧急参数的优先传输。

因此,本申请中当两个不同优先级的目标参数进入到网络中时,先传输高优先级的参数,只有当高优先级参数传输完成后,低优先级参数才会传输。因此,网络调度可以在全网范围内保证紧急参数的优先传输。

本发明实施例基于tensorflow的rdma实现加入流调度机制,使用两个优先级队列,在由8台各包含一块k40cgpu的服务器组成的分布式机器学习集群上,对alexnet、vgg-19、resnet-50和yolo等常用的benchmark模型进行了测量,并和标准的tensorflow分布式训练以及负载均衡改进的tensorflow分布式训练进行了比较。不同的方案均采用相同的超参数设置,保证模型的收敛性不受影响。

对比指标为不同方案的训练吞吐,即单位时间内训练的图片数量。

实验结果表明,在10g网络环境下,相比于标准的tensorflow分布式训练,geryon可提高训练吞吐多达4.37倍,相比于加入负载均衡改进的tensorflow分布式训练,训练吞吐提升多达1.2倍。

进一步地,我们和端侧通信调度方案进行了对比,发现随着参数单元数量的增多,geryon相对于端侧通信调度方案的性能优势越来越明显。当vgg-19模型的切片数量达到680个时,geryon的训练吞吐为端侧通信调度性能的1.25倍。

图4为本发明实施例提供的一种加速分布式机器学习的系统的结构示意图,如图4所示,该系统包括连接模块401和训练模块402,其中:

连接模块401用于将机器学习模型输入到分布式机器学习系统中,对于所述分布式机器学习系统中的任意两个节点,在所述任意两个节点之间建立多条连接;

训练模块402用于将所述机器学习模型的参数分配到多条连接上进行传输,以对分布式机器学习训练进行加速。

首先连接模块401将机器学习模型输入到分布式机器学习系统中,对分布式机器学习系统中的任意两个节点,建立多条连接。

训练模块402将机器学习模型的参数分配到多条连接上进行传输,并赋予多条连接不同的优先级,使得分布式机器学习的训练加速。

本发明实施例提供的系统实施例是为了实现上述各方法实施例的,具体流程和详细内容请参照上述方法实施例,此处不再赘述。

图5为本发明实施例提供的一种电子设备的实体结构示意图,如图5所示,该电子设备可以包括:处理器(processor)501、通信接口(communicationsinterface)502、存储器(memory)503和总线504,其中,处理器501,通信接口502,存储器503通过总线504完成相互间的通信。通信接口502可以用于电子设备的信息传输。处理器501可以调用存储器503中的逻辑指令,以执行包括如下的方法:

将机器学习模型输入到分布式机器学习系统中,对于所述分布式机器学习系统中的任意两个节点,在所述任意两个节点之间建立多条连接;

将所述机器学习模型的参数分配到多条连接上进行传输,并赋予多条连接不同的优先级,以对分布式机器学习训练进行加速。

此外,上述的存储器503中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明上述各方法实施例的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

另一方面,本发明实施例还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各实施例提供的传输方法,例如包括:

将机器学习模型输入到分布式机器学习系统中,对于所述分布式机器学习系统中的任意两个节点,在所述任意两个节点之间建立多条连接;

将所述机器学习模型的参数分配到多条连接上进行传输,并赋予多条连接不同的优先级,以对分布式机器学习训练进行加速。

以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

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