一种基于异构分布式系统的高效神经网络训练调度方法与流程

文档序号:20582075发布日期:2020-04-29 01:32阅读:214来源:国知局
一种基于异构分布式系统的高效神经网络训练调度方法与流程

本发明属于分布式机器学习加速技术领域,具体是一种基于异构分布式系统的高效神经网络训练调度方法。



背景技术:

机器学习特别是深度学习,已成为人工智能领域的核心研究内容之一,在图像识别、自然语言处理等领域获得了广泛应用。随着机器学习训练数据集规模及模型参数数量不断增长,单机训练机器学习模型已不能适应大规模数据环境。庞大的训练数据集规模和复杂的模型结构可提高模型准确率,但是会带来更高的时间开销和资源开销。近年来,随着分布式系统发展以及硬件性能的提高,分布式机器学习已经成为业界研究热点。

在分布式机器学习框架中,通信是多节点协作训练中必不可少的环节.降低分布式机器学习模型的求解时间开销,关键在于提高节点的有效计算时间占比。因此需要设计合理的通信机制,从而更加高效地训练出模型。通信机制分为同步和异步两类。

整体同步并行通信策略bsp(bulksynchronousparallel)通过引入超步有效地避免死锁。超步是指一系列操作的集合,具体包括:计算、全局通信及同步等待这三个步骤。在一个超步内,各节点以不同的速度执行训练。训练完成后与主节点通信并上传训练结果,随后进入同步等待,直到主节点聚合后下载最新的全局参数。当所有节点完成全局通信后,表明当前超步已执行完毕,随后执行下一个超步。bsp严格执行超步内异步、超步间同步的策略。然而bsp存在一些缺陷:

1)通信开销大。bsp强制计算节点在每个超步内进行全局通信,有相关研究表明,在一定条件下通信开销将数倍于计算开销。

2)计算节点间性能差异大时增大了同步等待的时间开销。为了降低同步等待时间,各计算节点应性能相近。然而在分布式系统中,除了固有的硬件性能差异,多任务抢占系统资源也会造成计算节点间存在较大的性能差异,因此难以保证各节点性能相近。相关研究表明即使是负载均衡的集群,部分节点也会随机地并不可预测地慢于其他节点

为了解决bsp存在的缺陷,相关学者提出了一些解决方法。dean提出了异步并行通信策略asynchronousparallelexecution(asp)。由于采用异步更新,将同步等待时间降低为零,即不存在因节点性能差异或集群负载不均带来的弊端。采用asp可极大地减少模型训练的时间开销,但是asp容错性低,模型训练时极易陷入局部最优解或出现计算精度差或根本不收敛等现象。相关学者提出了延迟同步并行通信策略stalesynchronousparallel(ssp)。ssp中定义了一个延迟参数stale,表示节点间步调允许相差的最大值。各计算节点计算梯度后便将结果传至参数服务器进行参数更新,然后从参数服务器取回最新的全局参数。在开始下一轮计算前,参数服务器判断各节点间步调最大差值是否大于给定stale。如果差值大于给定stale则节点进入同步等待,直到步调差小于stale。延迟同步通信ssp是一种介于同步通信与异步通信的通信方式。但是上述策略均无法彻底解决因节点异构或任务抢占导致的负载不均,导致训练经常出现中断、不收敛的情况。因此,如何在保证模型训练具有高准确率、高收敛率的情况下,提高模型训练的鲁棒性、可扩展性成为了一个迫切解决的问题。



技术实现要素:

本发明要解决的技术问题是如何解决异构分布式集群中因节点异构或任务抢占对分布式机器学习模型训练带来的异常中断或不收敛,提高模型训练的鲁棒性、可扩展性,保障训练的高效性。

在基于迭代式训练的分布式机器学习模型中,各计算节点不断地训练本地模型,得到本地计算结果后提交到参数服务器更新,随后从参数服务器获取最新的全局参数后进入下一轮迭代。传统的分布式机器学习模型训练时,只能动态地修改通信策略中的参数,例如ssp中的延迟阈值。此外,无法动态地在不同节点(尤其是空闲节点)上启动任务。本发明解决其技术问题采用的方案是:将训练过程分解为内迭代与外迭代作为任务调度系统的重要子集,并根据资源探测系统提供的分布式系统节点状态信息,自适应地修改参与训练的节点、进程数、通信策略等参数。该方法采用如下步骤实现:

步骤1:建立基于参数服务器的分布式神经网络训练系统。所述的分布式神经网络训练系统,共有两类节点,分别为主(主)节点与计算(工作)节点。主节点与工作节点间采用点对点的方式进行通信。相比于工作节点,主节点中额外设置用于聚合权重以及全局调度的模块。

步骤2:建立资源探测系统(rds)。利用开源工具sigar建立资源探测系统。该系统可获取操作系统级别的硬件信息,部署在主节点与工作节点上用于实时获取各节点的资源利用情况。

步骤3:建立任务调度系统(tas)。任务调度系统首先将迭代式训练解耦为内迭代与外迭代。其中外迭代执行环境初始化、统计调度性能。内迭代执行具体计算。利用rds获取分布式系统中各节点的实时资源利用情况并计算节点空闲率。随后,根据空闲率对各节点降序排序,优先选择空闲率高的节点参与训练并设置进程数。

步骤4:设置环境参数。由于分布式系统存在节点异构性以及多任务抢占系统资源,导致不同时间段内的资源可用情况不同。因此在开始训练前针对实时资源可用情况重置环境参数。例如,通信策略ssp中的延迟阈值。

步骤5:开始训练。各工作开始训练,训练完毕后迭代轮数加1。

步骤6:重复执行步骤3-步骤5直到完成指定迭代轮数。

本发明的有益效果:本发明提出一种基于异构分布式系统的高效神经网络训练调度方法。该方法采用参数服务器、资源探测系统与任务调度系统实现。首先基于参数服务器作为实现架构对分布式系统内的节点进行划分。随后在该分布式系统内部署资源探测系统与任务调度系统训练机器学习模型。资源探测模型参考了rpc并利用开源工具包sigar实现。任务调度系统将训练过程解耦为内迭代与外迭代两部分。实验表明,本发明在异构分布式环境下,可保证高准确率、高收敛率并显著地提高了鲁棒性与可扩展性,可应用于大规模分布式机器学习。

附图说明

图1资源探测系统架构图;

图2任务调度系统执行流程;

图3几种同步通信策略的性能对比;

图4本发明与几种同步通信策略的性能对比;

图5本发明与几种同步通信策略的鲁棒性对比;

图6参数服务器架构图。

具体实施方式

本发明方法的具体步骤是:

步骤1.建立基于参数服务器的分布式神经网络训练系统。所述的分布式神经网络训练系统,共有两种节点,分别为主节点与工作节点。其中,主节点与工作节点间采用点对点的方式进行通信。

如图6所示,本发明采用以参数服务器为实现架构,利用进程模拟主节点与工作。其中主节点采用多线程的方式与工作节点进行点对点通信。工作节点与工作节点间没有数据通信,工作节点仅与主节点进行数据通信,从而极大地减少了出现网络拥塞的出现。在模拟主节点的进程中,额外设置一个线程用于聚合各个计算节点传输来的模型参数。

步骤2.建立资源探测系统(rds)。

利用开源工具sigar建立资源探测系统。该系统可获取操作系统级别的硬件信息,部署在主节点与工作节点上用于实时获取各节点的资源利用情况。作为机器学习模型训练的重要组成部分,资源探测系统可探测异构分布式环境下的资源动态变化。为实现上述功能,本发明基于开源工具包sigar获取系统级硬件信息,参考rpc设计并实现资源探测系统。资源探测系统架构如图1所示。其中利用sigar可以轻松获取cpu利用率、内存利用率、硬盘利用率、i/o使用情况以及网络状态等信息。

rds采用主从结构。如图1所示,rds-slave部署在工作节点上,用于统计资源利用情况;rds-master部署在主节点(即参数服务器)中,用于收集各节点的统计信息并做进一步处理。主节点与工作节点之间仅交换计算节点的资源统计信息。主接收到各工作发送的数据后由性能分析模块处理。性能分析模块解析统计信息,根据计算节点历史状态参数设定本次运行的参数,例如总进程数、参与计算的节点等。若当前可用计算资源大于等于所需资源,系统仅分配所需资源;若当前可用计算资源小于可运行的最少所需资源,系统将拒绝执行训练;若当前可用计算资源介于上述情况之间,则分配系统所有可提供的资源。分配后将结果写入日志系统模块保存。

步骤3.建立任务调度系统(tas)。

利用rds获取分布式系统中各节点的实时资源利用情况并计算节点空闲率。随后选择参与训练的节点并设置进程数。根据各节点rds记录的cpu利用率、内存利用率以及网络可达性计算节点的空闲率后,优先选择空闲率高的节点参与训练。

对于不同类型的机器学习任务,训练出最优模型所需的迭代次数也不同。经验表明,迭代次数越多,模型将具有更好的性能。然而,训练轮次过多也将导致模型出现过拟合及有效计算时间占比低等问题。此外,以mpi作为通信手段的程序具有以下瓶颈:训练中无法动态修改节点、进程数;鲁棒性、可扩展性低;程序出现异常而崩溃时,只能重新开始训练,极大地浪费系统资源和时间。为了解决上述问题,tas迭代式训练解耦为内迭代与外迭代。其中外迭代执行环境初始化、统计调度性能。内迭代执行具体计算并结合早停策略,从而提高模型训练的鲁棒性、可扩展性。

tas的调度流程如图2所示,整个计算流程分为两部分:内迭代和外迭代。其中外迭代执行任务调度与环境设置,内迭代执行神经网络训练。在每轮外迭代中,利用rds收集各个工作的系统硬件资源使用情况。然后对上述资源的使用情况进行分析并得到各节点的空闲率,将可用资源不足的工作从可用节点列表中删除。最后根据所需资源数量与可用节点列表分配节点及进程数。下面给出用于度量节点空闲率的标准:

其中,c表示节点内各cpu占用率,m表示内存占用率,α表示cpu数量,β表示内存大小,ω表示cpu或内存的权重,μ表示网络是否联通。

根据上述标准计算完各节点的空闲率后,调用如下算法即可完成节点及进程分配:

步骤4.设置环境参数。

由于分布式系统存在节点异构性以及多任务抢占系统资源,导致不同时间段内的资源可用情况不同。因此在开始训练前针对实时资源可用情况重置环境参数。例如,通信策略ssp中的延迟阈值。执行上述操作后进入内迭代开始计算梯度更新。内迭代结束后输出本轮计算信息、模型精度以及性能统计信息随后进入下一轮外迭代。下面先对各通信策略的性能进行对比,然后与本发明提出的方法进行对比。

图3展示了同步通信策略(bsp)与延迟同步通信策略(ssp)的性能对比。随着进程数增加,无论采用何种通信策略,准确率都随之降低。其中,bsp准确率高于ssp。模型训练采用sgd作为优化方法。由于sgd具有随机性、在解空间搜索的盲目性,因此易陷入局部最优解。在分布式同步sgd的迭代过程中,同步往往造成较大的延迟。为了解决同步延迟,采用分布式异步sgd作为优化方法。但是异步sgd在更新梯度时极有可能使用旧的参数造成所求梯度并非最新且最快下降的梯度,因此较分布式同步sgd准确率较低。在进程数增加时,这一现象被进一步放大。bsp中引入超步这一概念,每个超步内仅对已有数据进行一次完整的训练。由于bsp限制每个超步内必须进行一次强制参数同步,因此模型所求梯度总是最快下降方向;而ssp设置了延迟阈值,减少同步次数但是增大了每步产生非最优梯度的概率,因此ssp准确率不如bsp。随着进程数增加,求解的时间开销逐步降低。不断增大阈值,通信次数逐渐减小,因此bsp较ssp具有更大的时间开销。

图4展示了本发明(asf)、bsp与ssp的性能对比。当进程数小于18时,asf的准确率低于bsp以及ssp当s小于等于2时;当进程数继续增加时,asf的准确率趋于稳定,而其它通信策略的准确率继续降低。当进程数小于18时,asf的时间开销低于ssp当s大于等于3时;当进程数继续增加时,asf的时间开销趋于稳定,而其它通信策略的时间开销有不同程度的增长。结论表明,asf在准确率与时间开销上有良好的权衡。由此可见,合理规划节点、进程数和通信策略有利于提高资源利用率、模型准确率,降低训练时间开销。

图5展示了本发明(asf)与同步通信策略bsp与ssp的鲁棒性对比。训练结果共有三种,分别为训练正常结束、训练中断和训练不收敛。训练中断或不收敛的原因是计算进程无法独占计算资源而产生阻塞或异常,当分布式系统异构性增大或抢占资源的任务增加时,这一现象会频繁发生。图5中的a与图5中的b以非asf分别在有干扰与无干扰的条件下训练模型,图5中的c与图5中的d以asf分别在有干扰与无干扰的条件下训练模型。结果表明,无论是有干扰或无干扰,采用非asf训练模型时无法收敛和中断的次数明显多于asf训练模型。结论表明采用asf训练模型相较于ssp训练模型,具有更高的鲁棒性。

步骤5.开始训练。各个工作开始训练神经网络,训练完毕后迭代轮数加1。

步骤6.重复执行步骤3-步骤5直到达到指定迭代轮数。

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