基于分布式机器学习的同步训练方法、服务器及系统与流程

文档序号:21591861发布日期:2020-07-24 16:39阅读:390来源:国知局
基于分布式机器学习的同步训练方法、服务器及系统与流程

本发明涉及数据处理技术领域,具体涉及基于分布式机器学习的同步训练方法、服务器及系统。



背景技术:

联邦学习是业界公认的能有效应对数据孤岛的技术,也是一种数据隐私保护的分布式机器学习技术,不直接交互数据,而是在云端参数服务器的协调下交互模型,在不暴露数据的情况下协同完成模型训练。根据应用场景的不同,联邦学习分为面向用户的联邦学习和面向机构的联邦学习。面向用户的联邦学习以用户终端(如移动手机、笔记本电脑等智能设备)为单位参与模型训练,参与的用户数量巨大,甚至可达百亿级。面向机构的联邦学习以机构为单位参与模型训练,参与的机构数量较少,通常仅有2~100个。

联邦学习是一种典型的具有异构且动态集群环境的场景,因此面临着系统异构性和系统动态性带来的严峻挑战。以面向机构的联邦学习为例,系统异构性主要体现在参与机构间的计算能力差异,这种差异将为联邦学习的同步算法带来同步阻塞难题,即最慢的参与机构会阻塞整个集群的训练进程,导致严重的训练低效。同时,系统异构性也为联邦学习的异步算法带来延迟梯度难题,引起模型梯度和模型参数的失配,使得异步算法需要更多迭代才能达到理想性能。此外,由于联邦学习与其它计算业务间的计算资源竞争,参与机构的计算能力随时间动态变化,给同步阻塞和延迟梯度难题带来更多不确定的影响,可能进一步劣化训练效率。

为解决异构且动态集群环境下的同步阻塞难题,现有技术主要有三种:异步算法、基于接受条件或截止期限的算法、基于计算量协调的同步优化算法。

异步算法允许参数服务器在接收到任一参与机构提交的模型更新时立即更新全局模型,而无需等待其它较慢的参与机构,使得各参与机构可以在不同的步调下执行计算和通信,从而避免同步阻塞,提高训练效率。这类算法同时引入了延迟梯度难题,容易对模型质量和收敛性造成损伤,虽然部分改进方法可以抑制延迟梯度的影响,但这些方法仅适用于弱异构集群环境,在强异构的联邦学习集群环境下增益甚微,甚至可能进一步劣化模型质量和收敛性。

部分方法通过设置接受条件或截止期限来解决掉队者(straggler)问题,例如设置截止期限,参与机构只能在截止期限之前执行计算,否则将被丢弃,或只接收前m个到达的模型,丢弃掉队者的延迟模型,以保证掉队者不会拖慢训练进程,从而缓解同步阻塞难题。这些方法简单丢弃了掉队者的数据,在强异构的集群环境中,计算能力弱的机构将没有机会参与联邦学习,等价于丢弃这些机构的数据,会损伤模型质量,然而,获得优质模型是联邦学习的根本目的,因此,这些方法不可用于联邦学习。

部分方法尝试协调各参与机构的本地计算量以平衡计算时间。例如一些研究在每个参与机构各引入一个超参数以控制各参与机构的子问题的求解难度,或根据各参与机构的计算能力调整批数据大小,以减少同步阻塞时延。这些方法引入了额外的超参数,选择这些超参数需综合考虑任务难度、计算能力、通信能力等多种因素,且部分因素是动态变化的,难以建模分析,使得有效的超参数难以设置。并且,静态的计算量平衡方法不适用于动态变化的集群环境。



技术实现要素:

针对现有技术中的上述不足,本发明提供的基于分布式机器学习的同步训练方法、服务器及系统通过状态查询服务器监测所有参与机构内计算服务器的实时能力和任务进度,并为每个计算服务器决策下一动作,能够自适应地协调计算服务器间的本地计算次数,以降低计算服务器的同步阻塞时延,实现分布式机器学习的高效同步训练。

为了达到上述发明目的,本发明采用的技术方案为:

第一方面,基于分布式机器学习的同步训练方法,其应用于状态查询服务器,实现时包括如下步骤:

b1、监听来自参与机构的计算服务器的状态查询消息,若接收到,解析消息中的节点状态,并执行b2。

b2、更新状态数据库中当前计算服务器的状态,并检索状态数据库,找到最慢的参与机构s,读取其计算服务器的状态;

b3、判断当前计算服务器的本地更新计数器是否为零,或者其记录的全局训练轮数是否大于参与机构s的计算服务器的全局训练轮数,若是,进入步骤b7,否则执行步骤b4;

b4、记录当前系统时间,并估计参与机构s的计算服务器完成本地计算还需要的时间

b5、判断当前计算服务器是否就是参与机构s的计算服务器,参与机构s的计算服务器的下一动作是否为立即全局聚合,参与机构s的计算服务器的本地更新计数器是否为1,当前计算服务器完成一次本地计算所需的时间是否大于若四个条件中任一成立,则进入步骤b6,否则执行步骤b7;

b6、更新状态数据库中当前计算服务器的下一动作为立即全局聚合,并将下一动作返回给当前计算服务器,之后进入步骤b1;

b7、更新状态数据库中当前计算服务器的下一动作为继续本地计算,并将下一动作返回给当前计算服务器,之后进入步骤b1。

第二方面,提供一种基于分布式机器学习的同步训练方法,其应用于计算服务器,实现时包括如下步骤:

s1、初始化计算服务器的节点状态,并读取中心机构的参数服务器中的全局模型参数作为初始本地模型参数;

s2、向中心机构的状态查询服务器发送状态查询消息,并接收状态查询服务器采用用于状态查询服务器的同步训练方法输出的下一动作;

s3、判断下一动作是否为继续本地计算,若是,记录当前系统时间,并进入步骤s4,否则执行步骤s6;

s4、在参与机构的数据库服务器中顺序采样若干训练样本,并使用小批量随机梯度下降法更新本地模型参数,在执行本步骤设定次数后进入步骤s5;

s5、记录当前系统时间为完成上一次本地更新的时间,并将本步骤与步骤s3的时间差作为计算服务器的实时计算能力,之后将本地更新计数器累加一次,并返回步骤s2;

s6、根据本地模型参数和初始本地模型参数计算模型更新,并发送给参数服务器用于计算全局模型更新;

s7、将全局训练轮数累加一次,重置本地更新计数器为0,之后判断全局训练轮数是否达到设定最大训练轮数,若是结束算法,否则进入步骤s8;

s8、读取参数服务器中最新的全局模型参数作为初始本地模型参数,并记录当前系统时间后向状态查询服务器发送状态报告消息,之后返回步骤s2。

第三方面,提供一种基于分布式机器学习的同步训练方法,其应用于参数服务器,实现时包括如下步骤:

a1、初始化全局训练轮数为0,随机初始化全局模型参数,清除全局模型更新缓存;

a2、发送全局模型参数至所有参与机构的计算服务器,并接收计算服务器采用用于计算服务器的同步训练方法输出的模型更新,每接收到一个模型更新,将其聚合到全局模型更新,当所有计算服务器均已上传模型更新时,进入步骤a3;

a3、根据当前全局模型参数和全局模型更新,计算新的全局模型参数,之后将全局训练轮数累加一次;

a4、判断全局训练轮数是否达到设定最大训练轮数,若是,输出最新全局模型参数,否则返回步骤a2;

聚合到全局模型更新的计算公式为:

其中,δwr为全局模型更新;r为参数服务器记录的全局训练轮数;n为全局的训练样本数量;nk为参与机构k拥有的训练样本数量;为参与机构k的计算服务器上传的模型参数;rk为参与机构k的计算服务器记录的全局训练轮数。

第四方面,提供一种状态查询服务器,状态查询服务器上存储有基于分布式机器学习的同步训练程序,所述基于分布式机器学习的同步训练程序被执行时实现相应的基于分布式机器学习的同步训练方法的步骤。

第五方面,提供一种计算服务器,计算服务器上存储有基于分布式机器学习的同步训练程序,所述基于分布式机器学习的同步训练程序被执行时实现相应的基于分布式机器学习的同步训练方法的步骤。

第六方面,提供一种基于分布式机器学习的同步训练服务器系统,其包括中心机构和与所述中心机构通过广域网连接的若干参与机构;中心机构包括一个或多个参数服务器和一个状态查询服务器;参与机构包括存储有训练数据集的数据库服务器和计算服务器。

本发明的有益效果为:本方案应用于状态查询服务器的同步训练方法能够通过状态查询服务器统一维护所有参与机构的计算服务器的实时能力和任务进度,能够通过状态查询服务器下发的下一动作统一调度各计算服务器的本地计算次数,通过该种方式,本发明无需引入新的超参数,可以自适应动态变化的集群环境,有效平衡各计算服务器的计算时间,显著提高计算服务器的资源利用率,消除同步阻塞,加速模型训练。

本方案应用于计算服务器的同步训练方法能够根据状态查询服务器下发的下一动作灵活协调本地计算次数,在计算能力强时,计算服务器执行更多次的本地模型计算,利用同步阻塞的等待时间来探索更优质量的模型。通过该种方式,在异构且动态的集群环境下,可以实现数十倍的训练加速,同时保障模型性能无损。

本方案应用于计算服务器的同步训练方法能够根据状态查询服务器的协调,在训练初期,计算能力强的计算服务器快速将计算能力弱的计算服务器的本地模型拉到全局最优解附近,在训练后期,计算能力弱的计算服务器能够将计算能力强的计算服务器的本地模型推出局部最优解,并在全局最优解附近达到动态平衡,直至收敛。通过该种方式,在集群的异构程度持续增大时,计算能力强的计算服务器提交的模型更新趋于饱和,其对全局模型的影响也趋于饱和,使得计算能力弱的计算服务器仍能将全局模型推出局部最优,因此,该种方式可以适应强异构的集群环境。

本方案应用于计算服务器的同步训练方法能够根据状态查询服务器的协调,通过本地累积并延迟传输计算结果,该种方式可以有效减小网络中每秒需要传输的数据量,减小网络的传输压力,提高通信效率,从而加速模型训练。

附图说明

下图中esync代表本方案中基于分布式机器学习的同步训练方法。

图1为状态查询服务器执行的基于分布式机器学习的同步训练方法的流程图。

图2为计算服务器执行的基于分布式机器学习的同步训练方法的流程图。

图3为参数服务器执行的基于分布式机器学习的同步训练方法的流程图。

图4为基于分布式机器学习的同步训练服务器系统的原理框图。

图5为状态查询服务器的原理框图。

图6为状态消息的结构示意图。

图7为不同算法在alexnet模型上的测试精度随时间变化曲线对比。

图8为不同算法的计算时间占总时间的比例分布对比。

图9为esync在训练初期(左2)和后期(左3)的训练过程示意图。

图10为不同异构程度下esync的加速效果对比。

图11为不同算法每秒传输的平均流量大小对比。

具体实施方式

下面对本发明的具体实施方式进行描述,以便于本技术领域的技术人员理解本发明,但应该清楚,本发明不限于具体实施方式的范围,对本技术领域的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。

参考图1,图1示出了状态查询服务器执行的基于分布式机器学习的同步训练方法的流程图;如图1所示,该方法b包括步骤b1至步骤b8。

在步骤b1中,监听来自参与机构的计算服务器的状态查询消息,若接收到,解析消息中的节点状态,并执行b2。

在步骤b2中,更新状态数据库中当前计算服务器的状态,并检索状态数据库,找到最慢的参与机构s,读取其计算服务器的状态;

实施时,本方案优选节点状态包括k,tk,ck,tk,rk,其分别为参与机构的编号、本地更新次数、计算能力(完成一次本地计算所需的时间)、完成上一次本地更新时的时间戳和全局训练轮数;

如图6所示,状态查询消息结构包括发送方标识(sender_id)、接收方标识(receiver_id)、消息类型(msg_type)、节点状态(state_msg)以及下一动作(action)。

所述发送方标识字段用于消息发送器确定接收方地址。所述接收方标识字段用于消息接收器确认自己是否为正确的接收方。所述消息类型字段用于消息路由器正确转发消息到对应的处理器,可选值包括reset、report、query、response,分别对应状态重置消息、状态报告消息、状态查询消息、状态响应消息。

状态报告消息、状态重置消息和状态响应消息的结构与状态查询消息的结构相同。

下一动作字段用于状态响应消息中告知查询机构的计算服务器下一执行的操作,可选值包括compute、aggregate、null,分别对应继续本地计算、立即全局聚合、无动作。所述消息类型字段为reset、report或query时,下一动作字段默认为null。所述消息类型字段为response时,下一动作字段可为compute或aggregate。

所述节点状态字段用于状态报告处理器和状态查询处理器更新状态数据库信息,用于状态查询处理器决策查询机构的计算服务器的下一动作。所述节点状态字段包括参与机构标识(rank)、本地更新次数(iteration)、全局训练轮数(round)、计算能力(capacity)以及上一次本地更新的完成时间(timestamp)。

所述参与机构标识字段用于记录发送该消息的计算服务器所在参与机构的编号。所述本地更新次数字段用于记录上述计算服务器的当前本地更新次数。所述全局训练轮数字段用于记录上述计算服务器的当前全局训练轮数。所述计算能力字段用于记录上述计算服务器处理一个小批量数据所需的时间。所述完成时间字段用于记录上述计算服务器完成上一次本地更新的时间。

在步骤b3中,判断当前计算服务器的本地更新计数器是否为零,或者其记录的全局训练轮数是否大于参与机构s的计算服务器的全局训练轮数,若是,进入步骤b7,否则执行步骤b4;

在步骤b4中,记录当前系统时间,并估计参与机构s的计算服务器完成本地计算还需要的时间tc为记录的当前系统时间;cs为参与机构s的计算服务器完成一次本地更新所需的时间;ts为参与机构s的计算服务器完成上一次本地更新的时间;

在步骤b5中,判断当前计算服务器是否就是参与机构s的计算服务器,参与机构s的计算服务器的下一动作是否为立即全局聚合,参与机构s的计算服务器的本地更新计数器是否为1,当前计算服务器完成一次本地计算所需的时间是否大于若四个条件中任一成立,则进入步骤b6,否则执行步骤b7;

在步骤b6中,更新状态数据库中当前计算服务器的下一动作为立即全局聚合,并将下一动作返回给当前计算服务器,之后进入步骤b1;

在步骤b7中,更新状态数据库中当前计算服务器的下一动作为继续本地计算,并将下一动作返回给当前计算服务器,之后进入步骤b1。

实施时,本方案优选当状态查询服务器监听的消息为计算服务器的状态报告消息时,其还包括:

解析状态报告消息中的节点状态,若当前计算服务器第一个进入新的训练轮数,则更新状态数据库中所有计算服务器的本地更新次数为零,下一动作为继续本地计算;

之后,使用接收的状态报告消息中的节点状态更新状态数据库中当前计算服务器的全局训练轮数和完成上一次本地更新时的时间戳;

当状态查询服务器监听的消息为计算服务器的状态重置消息时,其还包括:

解析状态重置消息中的机构数量k,在状态数据库中创建k个计算服务器的状态记录,初始化第k(k=1,2,…,k)个计算服务器的状态记录为:参与机构标识rank=k,本地更新次数iteration=0,计算能力capacity=0,上一次本地更新的完成时间timestamp=0,全局训练轮数round=0,下一动作为继续本地计算。

参考图2,图2示出了计算服务器执行的基于分布式机器学习的同步训练方法的流程图;如图2所示,该方法s包括步骤s1至步骤s8。

在步骤s1中,初始化计算服务器的节点状态,并读取中心机构的参数服务器中的全局模型参数作为初始本地模型参数;

在步骤s2中,向中心机构的状态查询服务器发送状态查询消息,并接收状态查询服务器采用用于状态查询服务器的同步训练方法输出的下一动作;

在步骤s3中,判断下一动作是否为继续本地计算,若是,记录当前系统时间,并进入步骤s4,否则执行步骤s6;

在步骤s4中,在参与机构的数据库服务器中顺序采样若干训练样本,并使用小批量随机梯度下降法更新本地模型参数,在执行本步骤设定次数后进入步骤s5;其中的设定次数为1次或者为enk/b次,b为每次采样的训练样本数;e为遍历整个训练数据集的次数;nk为参与机构k的训练样本总数量。

在步骤s5中,记录当前系统时间为完成上一次本地更新的时间,并将本步骤与步骤s3的时间差作为计算服务器的实时计算能力ck=tk-tc,tk为本步骤记录的当前系统时间;tc为步骤s3记录的当前系统时间;之后将本地更新计数器累加一次,并返回步骤s2;

在步骤s6中,根据本地模型参数和初始本地模型参数计算模型更新,并发送给参数服务器用于计算全局模型更新为执行步骤s4tk次后得到的本地模型参数,为初始本地模型参数。

在步骤s7中,将全局训练轮数累加一次,重置本地更新计数器为0,之后判断全局训练轮数是否达到设定最大训练轮数,若是结束算法,否则进入步骤s8;

在步骤s8中,读取参数服务器中最新的全局模型参数作为初始本地模型参数,并记录当前系统时间后向状态查询服务器发送状态报告消息,之后返回步骤s2。

参考图3,图3示出了参数服务器执行的基于分布式机器学习的同步训练方法的流程图;如图3所示,该方法a包括步骤a1至步骤a4。

在步骤a1中,初始化全局训练轮数为0,随机初始化全局模型参数,清除全局模型更新缓存;

在步骤a2中,发送全局模型参数至所有参与机构的计算服务器,并接收计算服务器采用用于计算服务器的同步训练方法输出的模型更新,每接收到一个模型更新,将其聚合到全局模型更新,当所有计算服务器均已上传模型更新时,进入步骤a3;

在步骤a3中,根据当前全局模型参数wr和全局模型更新δwr,计算新的全局模型参数wr+1=wr+∈δwr,ε为全局学习率;之后将全局训练轮数累加一次。

在步骤a4中,判断全局训练轮数是否达到设定最大训练轮数,若是,输出最新全局模型参数,否则返回步骤a2;

聚合到全局模型更新的计算公式为:

其中,δwr为全局模型更新;r为参数服务器记录的全局训练轮数;n为全局的训练样本数量;nk为参与机构k拥有的训练样本数量;为参与机构k的计算服务器上传的模型参数;rk为参与机构k的计算服务器记录的全局训练轮数。

上述执行同步训练方法的参数服务器还用于执行向状态查询服务器发送状态重置消息,初始化状态查询服务器。

本方案还提供一种状态查询服务器,其上存储有基于分布式机器学习的同步训练程序,基于分布式机器学习的同步训练程序被执行时实现对应的基于分布式机器学习的同步训练方法的步骤。

本方案还提供一种计算服务器,其上存储有基于分布式机器学习的同步训练程序,基于分布式机器学习的同步训练程序被执行时实现对应的基于分布式机器学习的同步训练方法的步骤。

如图4所示,本方案还提供一种基于分布式机器学习的同步训练服务器系统,其包括中心机构和与所述中心机构通过广域网连接的若干参与机构;所述中心机构包括若干参数服务器和一个状态查询服务器;所述参与机构包括存储有训练数据集的数据库服务器和计算服务器。

如图5所示,在本发明的一个实施例中,状态查询服务器包括:

消息接收器,用于接收参与机构的计算服务器的状态查询消息、状态报告消息或状态重置消息,并对消息进行转换后发送给fifo消息队列;

fifo消息队列,用于缓存来自消息接收器转换后的消息,并在接收到新消息时通知消息路由器取出消息;

消息路由器,用于监听fifo消息队列的新消息,取出fifo消息队列中队头的消息,之后基于取出消息的类型,路由消息至相应处理器;

状态查询处理器,根据状态查询消息,实现用于状态查询服务器的基于分布式机器学习的同步训练方法的步骤;

状态报告处理器,用于处理状态报告消息,并将状态报告消息中的最新计算服务器状态写入状态数据库中;

状态重置处理器,用于处理状态重置消息,并重置状态数据库中记录的计算服务器状态;

消息发送器,用于接收状态查询处理器决策的下一动作,并封装下一动作到状态响应消息中,之后发送状态响应消息到查询机构的计算服务器。

本方案的状态数据库包括状态存储表、多线程异步任务引擎以及任务队列;任务队列用于缓存状态报告处理器、状态重置处理器以及状态查询处理器提交的任务;多线程异步任务引擎用于取出与处理任务队列中的任务,用于更新或重置状态存储表中记录的状态,以及用于返回读出的状态记录给状态查询处理器。

多线程异步任务引擎启用多个线程并行处理多个任务,线程间无读写锁。在读出的状态记录中,若部分字段在读出前未更新,另一部分字段在读出前已更新,不会混淆状态查询处理器决策的下一动作;状态数据库的状态存储表包括所述状态消息结构中节点状态字段下的所有字段,并且额外包括一个动作字段(action),该动作字段用于记录上一次查询时状态查询处理器决策的下一动作。

本方案提供的同步训练方法、服务器及系统可以部署在下面两种实施部署环境,第一种实施部署环境为:

当设定次数为enk/b次时,本方案的系统可以部署在跨地理域分布的多个机构的服务器中,服务器间通过广域网互联。在这些机构中,存在一个中心机构和多个参与机构,每个机构提供至少一台服务器,中心机构的服务器需要和所有参与机构的服务器能够相互通信。这些服务器可以是通用服务器或高性能计算服务器,服务器间的计算能力可以不同。这些服务器需部署有深度学习软件,且参与机构的服务器能够从所在机构的数据库服务器获取训练数据。

本发明实施部署环境时,中心机构部署有一个或多个参数服务器,以及一个状态查询服务器。参与机构部署有一个计算服务器,以及存储有训练数据集的数据库服务器。若某机构同时为中心机构和参与机构,则该机构应部署一个或多个参数服务器、一个状态查询服务器、一个计算服务器以及存储有训练数据集的数据库服务器。

第二种实施部署环境为:

当设定次数为1次时,本方案的系统可以部署在一个机构的多个服务器中,服务器间通过域内网络互连。该机构至少需要有两台服务器,其中至少一台服务器为中心节点,其它服务器为参与节点,中心节点需要能够和所有参与节点相互通信。这些服务器可以是通用服务器或高性能计算服务器,服务器间的计算能力可以不同。这些服务器需部署有深度学习软件,且作为参与节点的服务器能够从数据库服务器获取训练数据。

本发明实施部署环境时,一个机构内包括若干中心节点,其中一个中心节点部署状态查询服务器,其它中心节点分别部署一个参数服务器。若仅有一个中心节点,可在该中心节点上同时部署一个参数服务器和一个状态查询服务器。参与节点部署有一个计算服务器,以及存储有训练数据集的数据库服务器。若某服务器同时为中心节点和参与节点,则该服务器应部署一个参数服务器、一个计算服务器以及存储有训练数据集的数据库服务器,若仅有一个中心节点,该服务器也需要部署一个状态查询服务器。

下面结合具体的实例对本方案提供的同步训练方法、服务器及系统的效果进行说明:

本实例使用了3台服务器来开展上述实验,每台服务器配备有2张gtx1080tigpu计算卡,以及intele5-2650v4cpu计算卡,服务器之间通过局域网内千兆带宽互联。使用docker容器技术部署实验环境,并使用mxnet分布式深度学习框架搭建实验测试平台。

实验在每个服务器上启动4个docker容器来分别运行4个计算服务器,其中包括2个gpu计算服务器和2个cpu计算服务器,共计12个计算能力不同的计算服务器。实验选择一个服务器额外启动2个docker容器来分别运行1个参数服务器和1个状态查询服务器。

实验采用fashion-mnist和cifar10数据集,并将上述两个数据集均匀随机切分到12个计算服务器上;实验采用alexnet和resnet18模型参与训练;实验采用ssgd、asgd以及dc-asgd作为本方案所提算法esync的对比算法,并测试了单机训练standalone可达到的最高测试精度。实验统一采用超参数设置η=0.0005,∈=1,b=64,r=+∞,并设置esync每1次本地模型更新即执行查询。

在上述实验环境中,采用本方案的同步训练方法及现有技术中的对比算法ssgd、asgd和dc-asgd对多种经典人工智能模型进行训练,以对本方案能够达到大幅提高人工智能模型的训练效率,且不损伤模型质量的效果进行说明:

图7示出了不同算法在alexnet模型上的测试精度随时间变化曲线对比,从图7可以看出,相比于对比算法ssgd、asgd以及dc-asgd,本方案所提出的应用于计算服务器的同步训练方法esync能显著提高alexnet模型的训练效率,且可达到单机训练standalone可达到的最高测试精度,能够保证模型质量无损。实验另外采用resnet系列模型和inception-v3模型与fashion-mnist数据集测试esync相对ssgd的加速效果和收敛精度,参见表1:

由表1可知,esync可达到25倍加速比,同时收敛精度不差于单机训练的最高精度。

本方案能够达到大幅提高人工智能模型的训练效率,且不损伤模型质量,主要原因是计算能力强的计算服务器在状态查询服务器的协调下执行了更多次的本地模型计算,利用了同步阻塞的等待时间来探索更优质量的人工智能模型,从而实现训练加速。

接着对本方案的同步训练方法能够实现自适应的计算协调的效果进行说明:

本方案所提出的应用于状态查询服务器的同步训练方法esync无需引入新的超参数,而是通过状态查询服务器统一维护各计算服务器的实时能力和任务进度,并通过状态查询服务器下发的下一动作统一调度各计算服务器的本地计算次数,使得该种方法可以自适应动态变化的集群环境,平衡各计算服务器的计算时间,提高计算服务器的资源利用率,消除同步阻塞,加速模型训练。

实验采样了3个gpu计算服务器和3个cpu计算服务器,并统计了所述esync算法和ssgd、asgd、dc-asgd对比算法下不同的计算服务器的计算时间和通信时间,计算时间占比分布如图8所示。数据表明,esync能够有效平衡算力差异显著的计算服务器间的计算时间,使得计算能力强的计算服务器更加充分地利用本地丰富的计算资源,从而消除同步阻塞问题,加速训练过程。

接着对本方案的同步训练方法能够实现适用于强异构集群环境的效果进行说明:

如图9所示,在训练初期,计算服务器实现的同步训练方法esync能使计算能力强的计算服务器快速将计算能力弱的计算服务器拉到全局最优解附近,而在训练后期,计算能力弱的计算服务器能够将计算能力强的计算服务器的本地模型推出局部极优解,并在全局最优解附近达到动态平衡,直至收敛。通过该种方式,在集群的异构程度持续增大时,计算能力强的计算服务器提交的模型更新趋于饱和,其对全局模型的影响也趋于饱和,使得计算能力弱的计算服务器仍能将全局模型推出局部最优,因此,该种方式可以适应强异构的集群环境。

实验采用alexnet模型和fashion-mnist数据集,通过增强gpu计算服务器的计算能力,控制gpu计算服务器和cpu计算服务器的计算能力比(从1:1增大至300:1),对比了不同异构程度下esync的加速效果。如图10所示,将异构程度从1:1(等价于ssgd)增大至150:1时,esync的加速效果不断提高,在异构程度继续增大至300:1时,训练曲线相比150:1没有明显变化,加速效果趋于饱和。结果表明,集群的异构程度越高,本方案所提的服务器系统及所有同步训练方法取得的加速效果越明显,因此适用于强异构的集群环境。

最后对本方案的同步训练方法能够显著减小网络传输压力的效果进行说明:

现有的asgd和dc-asgd等异步方法在完成计算后即时传输数据,通信频率高,给网络带来较高的传输压力。本方案基于计算服务器实现的同步训练方法esync通过本地累积并延迟传输计算结果,可以有效减小网络中每秒需要传输的数据量,减小网络的传输压力,提高通信效率,从而加速模型训练。

实验统计并比较了esync算法与ssgd、asgd以及dc-asgd对比算法每秒传输的平均流量大小,图11表明,esync能够有效减少每秒需要传输的数据量,从而减小网络的传输压力。

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