一种基于网络重配置的分布式机器学习系统加速方法与流程

文档序号:22500094发布日期:2020-10-13 09:31阅读:193来源:国知局
一种基于网络重配置的分布式机器学习系统加速方法与流程

本发明涉及机器学习系统通信与负载调度的实现方法,尤其是在大规模分布式机器学习系统中,通过合理优化调度减少模型训练时间的方法。



背景技术:

随着人工智能技术的不断发展,海量数据的训练和大规模模型的出现使得单机模型训练日益不能满足人工智能应用在性能上的需求,因此有学者提出了数据并行和模型并行这样的分布式机器学习技术来提升模型的训练速度。数据并行目前已经被广泛地研究并进行性能方面的优化,然而随着模型规模的增大,对于单机内存无法容纳的大模型来说,模型并行是解决计算、存储瓶颈的唯一方法。

在模型并行中,需要将模型划分成多个部分以分配到多台设备上进行并行训练。对模型进行划分时,往往需要考虑模型的结构特点。比如对深层神经网络进行模型划分的时候,可以考虑模型的层次结构,进行逐层的横向划分或者跨层的纵向划分。两种划分方法各有其优缺点,比如采用逐层的横向划分时,各子模型之间的接口清晰、实现简单,但是受到层数的限制,并行度可能不够高,并且在极端情况下,单层的模型参数可能已经超出了一个工作节点的容限。采用跨层的纵向划分方式,可以将模型切分成更多份,但是各子模型之间的依赖关系会更加复杂,实现起来难度更大,并且通信代价也比较高。所以目前分布式机器学习模型训练速度慢,模型参数规模大导致通信代价较高等依然是模型并行面临的主要问题。

模型训练速度慢的一个主要原因之一就是集群中gpu资源存在分配不公平的情况。目前企业通常将gpu资源整合到一个共享集群中来提供服务,和用于大数据分析的集群类似,用于机器学习模型训练任务的gpu共享集群同样具备了多方面的优势,例如减少了开发工作,降低了gpu的维护成本等。但是目前并没有一种针对机器学习负载所设计的能够公平地共享集群gpu资源的任务调度策略。

公平地分配gpu资源对于模型训练任务而言至关重要。研究表明,只有当集群中gpu资源能够被公平得分配给负载时,用户才愿意将训练任务部署到集群上。举个例子,假如有n个用户共享一个gpu集群,集群大小为c,那么理论上来说,每个用户得到的性能体验不能低于大小为c/n的私有集群,这一理论被称为共享激励机制。如果不能保证共享激励机制,那么意味着用户或者需要等待很长一段时间其部署的训练任务才能被调度器调度,或者放弃集群资源转而自己去部署那些昂贵的硬件。

虽然通过公平调度机制提供共享激励的策略已经在先前的集群调度器中得到了广泛研究,例如quincy,drf和carbyne等等。但是,这些技术是专为大数据处理任务而设计的,尽管它们如今已被广泛用于管理gpu集群,但效果远远不如预期。主要原因是由于模型训练任务的工作负载有其独特性,这些特性使现有所谓的“公平”分配方案实际上产生了不公平的结果。首先,与批处理分析任务不同,机器学习任务负载运行周期长,而且这些负载执行需要按照一定的先后顺序。其次,作业中的每个任务通常需要进行多次迭代,在每次迭代结束时还要同步更新模型。另外负载之间需要进行频繁的通信,而频繁的通信意味着属于同一任务的负载所在服务器位置会对任务的性能产生影响(也叫做位置敏感性),所以将同一任务的所有负载放置在同一台机器或同一机架上可显着提高训练速度。但是将同一任务的所有负载放置在同一台机器或同一机架上无法保证执行时的容错性,而且不同的模型训练任务的位置敏感性又是不同的。

模型训练速度慢点的另一个原因是由于参数规模大而导致负载之间进行同步时通信代价较高。虽然目前有可重配置的电路交换机(例如,光或无线)来增强数据中心网络的功能,但是,对于终端设备来说,要想充分利用结合了电路和分组网络的可重配置数据中心网络(rdcn)的全部性能并不是一件容易的事。电路交换器在调整高带宽网络拓扑时会产生一个新配置生效延迟,在这个延迟时间内电路网络的某些部分可能不可用。因此,这样的混合设计会经常导致网络在高带宽和低带宽之间抖动。虽然乍看起来高带宽能够带来更好的网络性能,但是最近的一些研究表明数据中心应该经常调整网络拓扑规则。然而频繁调整网络拓扑规则就会带来一个不可避免的问题:对于应用程序而言,当切换到高带宽网络时,当前存活的tcp连接必须必须迅速提高传输速率以充分利用多余的带宽,然后当切换到低带宽时又要降低传输速率以避免网络拥堵,否则就会对tcp造成性能影响。

另外,tcp与rdcn的交互最初是在支持毫秒级重新配置延迟的交换机中进行的。考虑到现代数据中心中普遍存在的亚毫秒级传播延迟,毫秒级重配置网络中的电路使用了往返时间(rtt)作为本次网络连接存活时间的计量单位,因此tcp能够适应这些时间段内的连接速度变化。但是,目前支持重置的交换机其配置生效的延迟时间已经达到微秒级别。较低的重置时间能够能够在降低开销的同时将多余带宽配置到更有需要的地方,但是在这种情况下tcp传输速率上升得太慢从而无法充分利用短时大量增加的带宽,因此网络带宽利用率依旧很低。



技术实现要素:

由于目前分布式机器学习系统所使用的调度器是针对大数据处理任务所设计的,这些调度器在调度时没有充分考虑到机器学习任务负载的特性,使得模型训练中常出现长尾延迟等问题。另外,模型训练过程中经常涉及不同服务器之间的数据同步,而分布式机器学习模型通常具有较大的数据规模,因此服务器之间进行通信时对网络性能的要求较高,虽然目前数据中心中出现了可重配置网络等网络优化技术,但是由于底层tcp技术栈的一些限制,网络的利用率并没有得到实际的提高。因此,本发明在优化了数据中心可重配置网络的基础上,针对分布式机器学习任务的特点,设计了一套公平调度策略,使得部署在同一集群中的模型能合理获取到gpu资源,最终提高了模型的训练速度。

本发明解决技术问题所采取的技术方案为:

步骤1:调度器从数据库里获取一定数量待训练模型,包括其参数、位置偏好性等具体信息。

步骤2:根据各个训练任务的位置偏好性将其划分成多个子任务部署到各个服务器上。

步骤3:在模型训练程序运行过程中,调度策略管理器不断根据各个任务距离达到时间公平性的难易程度分配gpu资源。

步骤4:在一轮迭代过后各个负载之间需要进行数据同步时,根据当前网络状况动态调整tcp缓冲区大小。

步骤5:调度策略管理器根据负载运行情况将相应结果,比如训练是否成功等信息,记录到数据库中。

步骤6:根据数据库中待训练模型的情况决定是否继续进行调度。

在实施上述步骤过程中涉及到以下两方面:基于时间公平性和位置敏感性的调度策略,基于可重配置网络的tcp优化策略。

(1)基于时间公平性和位置敏感性的调度策略

针对已有的调度器没有考虑机器学习模型负载调度周期长、运行周期长以及对部署位置的敏感性等特点,本发明提出了一种新的基于时间公平性和位置敏感性的调度策略。本发明将一个应用程序时间公平性定义为n个应用程序在共享集群中的运行完成时间与该应用程序单独在1/n规模的集群中运行完成所需时间之比。为了在达到时间公平性的同时考虑到位置敏感性,采取了如下两种策略。

第一,扩展了应用程序和训练平台之间的接口,从而使开发者可以直接在应用程序里设置在不同gpu资源分配情况下该应用程序达到时间公平性的值。为此,在单次拍卖的基础上引入了逐轮拍卖的概念,同时使用租约来管理长期运行的模型训练任务。在租约到期时调度程序会重新开始进行gpu资源的拍卖。每次拍卖开始时,调度程序会从训练任务处获得其完成时间公平性的指标。每个应用都有机会对目前可用的gpu资源进行竞标(gpu资源被划分成多种规格大小进行拍卖)。应用程序会根据不同gpu资源对其达到时间公平性的帮助程度大小进行投标,然后由一个中央仲裁程序确定中标价格,从而在最大程度上确保所有出价的应用都能够达到时间公平性。使用拍卖的方式意味着所有应用程序应当根据自己实际情况出价,即要确保应用程序没有多要gpu资源。为了保证这一点,使用部分拍卖的方式来尽可能保证应用程序根据实际所需gpu资源进行报价。该方法从整个过程来看是保证公平分配的,同时在短期内能够确保负载的高效运行和对位置敏感性的考虑。

第二,提出了两级调度体系设计,该调度体系中主要包含一个底层中央调度器和一些简洁明了的接口。中央调度器用于协调各个不同的应用程序,而接口是为了和上层超参数调节框架进行整合。目前许多现有的框架,例如hyperdrive和hyperopt,可以在单个应用程序中智能地在各种作业之间分配gpu资源,并且在某些情况下,如果用户对目前程序的运行进展不满意,也可以提前终止程序。本发明的设计中允许应用程序直接使用此类现有的超参数调整框架。

(2)基于可重配置网络的tcp优化策略

机器学习模型训练过程中不同负载之间需要进行大规模的数据同步,而目前数据中心里对可重配置网络的利用率并不高,主要原因在于底层的tcp技术栈实现无法适应短时间内突然变大或变小的网络带宽。为此,本发明提出了一种基于可重配置网络的tcp优化策略,该策略对目前系统底层的tcp实现是完全无侵入性的。也就是说,完全可以在现有的系统基础上使用该策略来提高网性能。

本发明通过解决由于tcp缓冲区大小不能和网络带宽的变化速度相匹配导致的数据包丢失问题来促使tcp尽可能快地提升数据包发送速率,从而提高数据中心内部网络带宽的利用率。为此,本发明需要在数据发送过程中动态调整tcp缓冲区的大小。调整tcp缓冲区的大小并不需要对终端设备进行任何改动,因此完全可以在现有的tcp栈下实现这一技术。通常情况下,在可重配置网络中网络带宽发生波动的时间是可以根据调度策略预知的,而且调整tcp缓冲区的大小并不需要对终端设备进行任何改动,因此所做的改动对服务器而言是完全透明的。

为了进一步提升数据中心内部的网络性能,还对tcp协议底层做了一些设置。如果消息接收方接收数据包的频率或可用网络带宽明显下降,那么就将tcp回复消息头部的ecn-echo(ece)标志位设为1,以便消息发送方适当减小缓冲区大小从而降低消息的发送频率,等到消息接收方接收数据包的频率或可用网络带宽重新提高时再将ecn-echo(ece)标志位设为0。

本发明的有益效果:本发明在系统运行阶段可以有多种效果不同的调度方法,而根据时间公平性和位置敏感性的任务调度策略,可以避免出现机器学习模型训练过程中出现长尾延迟等问题,提高了集群的服务质量。本发明通过竞拍的方式,根据任务达到时间公平性的难易程度合理分配gpu资源,同时结合tcp动态调整策略,在保证模型训练质量的基础上进一步加快了模型的训练速度。

附图说明

图1是基于网络重配置提升机器学习模型分布式训练速度方法体系结构图。

图2是调度系统体系结构图。

图3是数据中心内部可重配置网络原理图。

具体实施方式

以下结合附图对本发明作进一步说明,请参阅图1和图3;图1给出了本发明提出的基于网络重配置提升机器学习模型分布式训练速度方法体系结构。其中1是模型数据库;2、3、4分别是调度策略管理器、调度器、状态存储器,构成了资源协调器;5、6、7分别是机架顶部的无线路由器、机架内部的工作机和交换机。

下面对本发明体系结构重要组成部分做具体介绍。

(1)模型数据库

模型数据库用于存储用户提交的待训练的机器学习模型,以及存储待训练模型相关参数,资源协调器会从该数据库里主动拉取待训练模型,训练完成后,资源协调器会将训练结果,训练是否成功等信息存入数据库中。

(2)调度策略管理器

调度策略管理器从状态存储器内读取数据中心内各个工作机空闲gpu资源信息,并且根据不同时刻的各个训练任务达到时间公平性的难易程度,使用局部拍卖的方式将这些空闲gpu资源分配给对应的负载。当新的机器学习任务来临时,调度策略管理器负载判断任务类型,并生成调度安排后发给调度器执行。每隔固定时间间隔调度策略管理器会统计当前空闲的gpu资源,并把如何分配这些空闲gpu资源的策略发送给调度器。

(3)调度器

本发明中的调度器用于进行数据中心内gpu资源的调度。通过与数据中心内调度控制器通信,控制gpu资源的动态分配更等,实现优化策略的下达。同时,调度器负责接收数据中心中状态收集器收集的gpu资源监控数据,同调度动作一同送往状态存储器。

(4)状态存储器

本发明中的状态存储器用于调度器动作与gpu资源状态的存储。根据策略学习设置的窗口大小,以一定频率将状态发送给调度策略管理器。

(5)无线路由器

本发明中的无线路由器在数据中心有线网络的基础上对数据中心的网络进行增强,整个无线网络拓扑可以随时进行更改。

(6)服务器

本发明中的工作机负责执行具体的机器学习训练任务。调度器通过分析各个训练任务的位置偏好性将负载部署到各个工作机上,当每轮迭代过后属于同一训练任务的负载之间需要进行通信时,由工作机将通信数据发往交换机或路由器。

(7)交换机

交换机主要用来转发负载之间的通信数据,本发明中的交换机能够根据网络带宽的变化动态调整缓冲队列的大小,从而有效提高了网络带宽利用率。

图2是基于时间公平性的公平调度机制体系结构。本发明中的公平调度机制可以有效实现时间公平性这个服务级目标。为了实现时间公平性,本发明在调度过程中引入了类似拍卖的过程。

下面对公平调度机制的主要过程做具体介绍。

步骤1:中央仲裁程序获取所有应用程序的时间公平性指标;

步骤2:中央仲裁程序初始化拍卖过程;

步骤3:所有应用程序并行获取即将拍卖的gpu资源信息以准备报价;

步骤4:中央仲裁程序在每一个轮拍卖过程中根据所有应用程序的报价决定该轮拍卖的获胜者,拍卖结果由代理程序通知每个应用程序;

步骤5:代理程序将赢得拍卖的应用程序所应该分配到的gpu资源通知资源调度器进行分配。

本发明提出了一种基于可重配置网络加速机器学习系统的方法,步骤如下:

步骤1:调度器从数据库里获取一定数量待训练模型,包括其参数、位置偏好性等具体信息。

步骤2:根据各个训练任务的位置偏好性将其划分成多个子任务部署到各个服务器上。

步骤3:在模型训练程序运行过程中,调度策略管理器不断根据各个任务距离达到时间公平性的难易程度分配gpu资源。

步骤4:在一轮迭代过后各个负载之间需要进行数据同步时,根据当前网络状况动态调整tcp缓冲区大小。

步骤5:调度策略管理器根据负载运行情况将相应结果,比如训练是否成功等信息,记录到数据库中。

步骤6:根据数据库中待训练模型的情况决定是否继续进行调度。

下面分别对上述实施步骤进行详细说明。

(1)步骤1

调度器从存有待训练模型信息的数据中获取待训练模型的所有数据,包括模型的输入参数,位置偏好性,日志文件位置等信息。

(2)步骤2

根据各个训练任务的位置偏好性将其划分成多个子任务部署到各个服务器上。

(3)步骤3

在模型训练程序运行过程中,调度策略管理器不断根据各个任务距离达到时间公平性的难易程度分配gpu资源。为此,首先定义了时间公平性的计算公式:

其中,tid是将模型放在一个独立集群进行训练的完成时间,而tsh是将模型放在共享集群中进行训练的完成时间。与应用程序在独立集群中的运行状况不同,在共享集群中的完成时间还要考虑由于负载放置以及应用程序在共享集群中进行调度时遇到的任何排队延迟而导致的速度下降问题,所以放置位置越不理想,tsh的值越高。因此根据定义,如果时间公平性的值小于1,则将模型放在共享集群中进行训练所需的时间更短。所以为了确保时间公平性,分配机制必须针对不同的gpu分配情况估算各个训练任务的时间公平性的值。但是由于不同应用在不同gpu资源分配情况下的性能具有极大的差异,所以调度引擎很难预测或确定时间公平性这个指标的值。

因此,在应用程序和调度引擎之间实现了一个接口,该接口可以允许该应用程序以表格的形式为多种gpu资源分配表达偏好程度。表格中每列都由一个可能的gpu分配情况和在该分配情况下应用程序时间公平性的估计值组成。调度引擎后续可以通过这个表格来进行gpu资源的公平分配。

为了保证应用程序不会故意要求超出其实际需要的gpu资源,本发明提出了在调度过程中使用拍卖的方法进行gpu资源分配。首先介绍了单次拍卖策略,然后将基于单次拍卖引入在资源分配过程中使用的多次拍卖策略。

单次拍卖

为了便于描述,本发明首先给出了进行拍卖所需的输入信息,然后再具体描述如何进行拍卖。

拍卖需要的输入为当前可用的gpu资源以及应用程序对资源的报价。本发明使用一个数组表示当前可用的gpu资源,数组的长度代表当前可用的gpu数量,数组中每个元素的初始值均为1,表示该gpu是空闲的。当某个gpu被分配给某个应用程序后,数组相应位置的元素值变为0。后续每个应用程序根据不同gpu分配方案对其达到时间公平性指标的难易程度进行相应的报价。

单次拍卖主要由以下两部分组成:

1.初始分配。首先基于所有应用程序的完成时间计算所有应用程序的初始时间公平性,然后为每个应用程序分配相应的gpu资源。

2.确保应用程序根据实际情况申请gpu资源。为了让应用程序能够根据实际情况申请gpu资源,在拍卖过程中使用gpu部分分配资源的方式。

多次拍卖

为了最大程度上缩短所有应用程序在共享集群中的运行时间,希望尽可能多的应用程序的时间公平性的值小于1。为此本发明采取了在单次拍卖的基础上采取了多次拍卖的方法,主要包含如下三个过程:

1.逐轮拍卖。在逐轮拍卖过程中,拍卖所得的gpu资源使用权仅在租约期限内有效。租约到期后,被释放的gpu资源将被重新拍卖。这种方式同样适用于线上场景,因为当gpu资源空闲时就可以触发新一轮拍卖。同时这种方式也考虑到了应用程序失效和运行参数可能会被重新配置等情况。

2.逐轮过滤。为了让尽可能多的应用程序的时间公平性的值小于1,在每轮拍卖开始前,本发明会将部分时间公平性值较大的应用程序排除,即这些应用程序不具备本轮竞拍资格。这样做可以尽可能将资源不要浪费在不可能达到时间公平性的应用程序上。并且逐轮过滤也减少了应用程序对gpu资源的竞争程度,从而使应用程序可以通过更低的竞拍价获得相同的资源。

虽然在每一轮中都过滤一些时间公平性值比较大的应用程序可能导致这些应用程序的时间公平性值进一步增大,但是在下一轮拍卖中,这些应用程序竞拍得到gpu资源的概率会比上一轮中已经获得gpu资源的应用程序要大。这是因为经过上一轮拍卖,有些应用程序的时间公平性值已经小于1了,没必要再去获取更多的gpu资源,因此采取逐轮过滤的策略是合理的。

3.剩余分配。由于采用了部分拍卖策略,在每轮拍卖结束后都会有部分剩余的gpu资源没有被分配出去,因此在每轮拍卖结束后将这些剩余的gpu资源随机分配给未参与本轮拍卖的应用,从而提高资源利用率。

(4)步骤4

在一轮迭代过后各个负载之间需要进行数据同步时,根据当前网络状况设定tcp缓冲区大小。

为了提升tcp对快速变化的带宽的适应性,提出了一种动态调整tcp缓冲区大小的方法。由于rdcn内网络带宽的变动是根据调度计划的进行的,并不是随意变动的,因此可以根据网络带宽的变化以及消息接收方接收数据包速率的大小来实时地调整tcp缓冲区大小。通过上述方法,分组交换器仅用一个非常小的tcp缓冲区就可以有效实现高吞吐率。本发明在源服务器和目标服务器所在的机架之间的连接建立之前就开始动态调整tcp缓冲区大小的初始值,然后再启动这两个机架之间的网络连接。如果事先的调度计划中已经确定了该机架对之间的通信会将大部分时间花费在数据包交换机上,那么将使用较小的tcp缓冲区来避免产生额外的延迟。提前调整tcp缓冲区大小有两个好处:1)数据包会先在缓冲区中累积,然后在连接建立时这些数据包立即被丢弃,从而产生瞬时突发流量以维持高带宽;2)当缓冲的数据包被发送完时,它们会生成大量的ack消息从而增加消息发送者的拥塞窗口(cwnd)和发送速率。

动态调整tcp缓冲区大小主要包括以下三个步骤:

a.设置tcp缓冲区大小的最小值和最大值;

b.设定时间t,即在网络连接建立的t毫秒之前就开始动态调整tcp缓冲区大小;

c.在通信过程中根据实际发送的数据包数量以及网络带宽的变化动态调整tcp缓冲区大小。如果消息接收方接收数据包的速率或可用网络带宽明显下降,那么就要将tcp回复报文头部的ecn-echo(ece)标志位设为1,以便消息发送方适当减小缓冲区大小从而降低消息的发送速率,等到消息接收方接收数据包的速率或可用网络带宽重新提高时再将

ecn-echo(ece)标志位设为0。

(5)步骤5

调度策略管理器根据各个模型训练任务的负载运行情况,将相应结果,比如本次训练过程是否成功等信息记录到数据库中,以便后续分析

(6)步骤6

当有训练任务完成时,调度策略管理首先从数据库中查询是否还有待训练任务,如果还有的话,则根据当前集群资源从数据库中继续拉取一定数量的模型信息开始执行训练任务。

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