本公开涉及一种数据处理技术,更具体地说,本公开涉及一种分布式数据处理系统、分布式计算任务的部署系统及其方法。
背景技术:
随着机器学习的发展以及人工神经网络的研究的逐步深入,深度学习的概念得到广泛的关注和应用。深度学习是一种特殊的机器学习,它采用网状层级结构来表达所学习的对象,通过简单概念来组合成抽象概念,通过简单概念计算来实现抽象的概念表达。目前,深度学习在图像识别、语音识别以及自然语言处理领域有了长足的进展。深度学习涉及的模型参数多,导致计算量巨大,而且训练数据的规模大,因此需要消耗较多的计算资源等特点。
当前,无论是通用处理器gpu还是专用芯片tpu相对于cpu都强大了许多倍,但现实应用对计算力的渴求是无止境的,从业者需要以更快的速度,以更大规模的模型处理更大规模的数据,这单靠一个硬件设备无法满足。硬件的发展要受限于制造工艺(芯片面积,功耗,时钟信号传播范围)的限制,不可能无限制的提高一颗芯片的处理能力。因此,人们常常通过高速互联技术把多个高通量的设备连接在一起,协同完成大规模任务。一种常见的gpu集群架构,同一个节点(服务器)内部的gpu通过nvlink或者pcie通信,多个节点通过高速以太网或者无限带宽(infiniband)互联。google内部tpucloud的硬件部署中每个服务器管理若干个tpu,多个服务器通过高速互联技术连成大规模集群。
为此,本领域技术人员提出了数据并行。这样把数据分成多份,每个设备处理一份,这样每个设备只需要处理整体数据的一小部分即可,系统运行时间从一个设备处理所有数据需要的时间降低到一个设备处理一小部分数据需要的时间,从而得到加速,这是大数据场景最常见的并行方式。数据并行特别适合卷积神经网络这种场景,卷积神经网络的模型由很多小的卷积核构成,模型体积小,从而设备间同步模型梯度时通信量较小。当前,所有框架都能很好的支持这种并行模式。
但是,现有的数据并行处理在进行分布式深度学习训练时,在将一个批次的数据分割放置在各个计算设备上进行计算,即每个计算设备使用不同的输入数据执行相同的计算流程时,还需要将模型参数镜像的放置在各个计算设备上,并将每个设备计算出的梯度进行聚合,更新参数。目前最主流的梯度聚合方式是allreduce,即将每个计算设备上产生的梯度reduce到一起再broadcast到每个计算设备上去,每个计算设备得到相同的聚合后的梯度,再进行参数更新。注意这种情况下,每个计算设备上面执行的参数更新计算将是完全相同的,所以更新后每个计算设备上面的参数也将继续保存一致。与维护模型参数对应,还需要维护更新组件(optimizer)的参数用于模型参数更新,比如adamoptimizer需要维护数据量和模型参数相同的两个参数m与v,加上梯度,adam进行参数更新时一共会涉及到4倍于模型参数大小的内存(模型参数,梯度,梯度的一阶矩(m),梯度的一阶矩(v)),这种情况下假如使用n个计算设备进行数据并行训练,那么参数更新部分的计算将重复n次,同时将需要n×4×模型大小的设备内存完成参数更新。训练深度学习模型时,一个设备上的前向和后向计算可以独立开展,但每个模型上获得模型的更新梯度后需要在设备间同步,聚合成完整的一个批次数据的梯度之后再做模型参数更新。
而深度学习常用的计算设备通常有cpu、gpu、fpga以及asic(专用集成电路)等,可以将gpu、fpga以及asic统称为数据加速处理设备,数据加速处理设备往往具有更快的计算速度和更高的内存带宽,但是其内存容量往往存在内存有限、单价高昂、不易扩展等问题,如果一味地增加数据加速处理设备的内存容量来满足大规模模型的训练,将为企业带来高企的成本。很显然,现有的数据并行中重复的计算和内存来源于分布式的训练中参数和optimizer也是分布式的(distributed)放置于各个计算设备上面的,这一方面无疑会提高计算设备内存资源的占用,另一方面也必然导致设备间参数同步的传输开销。对于目前计算设备尤其是内存资源昂贵的gpu这种计算设备而言,是一个巨大浪费。
因此,人们期望获得一种用于分布式数据处理系统或一种分布式计算任务的部署系统,其能够降低在数据并行处理过程中计算设备内存与计算资源的浪费。
技术实现要素:
为此,本发明的目的是解决至少上述问题之一。根据本公开的一个方面,提供了一种分布式数据处理系统,用于在多个计算设备上对数据进行并行处理,每个计算设备包含前向数据处理组件和后向数据处理组件,其中至少一个计算设备含有其他计算设备不具有的一个模型参数组件以及与一个所述模型参数组件对应的模型参数更新组件,所述模型参数组件通过与其对应的广播组件将所述模型参数组件含有的一组将被并行处理的数据所使用的模型参数输入到其他计算设备的广播组件,以及所述模型参数更新组件从与所述模型参数更新组件对应的梯度汇聚组件获取对应的全局梯度值进行更新处理。
根据本公开的分布式数据处理系统,其中每个计算设备的广播组件将模型参数输入到对应的前向数据处理组件执行前向数据处理和输入到后向数据处理组件执行后向数据处理。
根据本公开的分布式数据处理系统,其还包括:一个或多个串联在所述模型参数组件和其对应的广播组件之间的多个运算任务组件,所述多个运算任务组件中每一个运算任务组件为单输入与单输出的运算任务组件;以及一个或多个串联在所述模型参数更新组件和其对应的梯度汇聚组件之间的多个运算任务组件,所述多个运算任务组件中每一个运算任务组件为单输入与单输出的运算任务组件。
根据本公开的分布式数据处理系统,其中与所述模型参数组件相连的所述广播组件将模型参数组件中的模型参数输入到所述模型参数组件所在计算设备上的与所述模型参数组件对应的前向运算组件和后向运算组件,并且还输入到其他并行计算设备上的并行广播组件,以便该并行广播组件将所接收到的模型参数输入到并行的前向运算组件和后向运算组件。
根据本公开的另一个方面,提供了一种分布式数据处理方法,包括:将待处理数据按照分布式数据处理架构的计算设备的数量分片成多个分片数据发送到各个计算设备,执行前向数据处理和后向数据处理,将模型参数集合划分成多个子集,将一个子集分布到一个计算设备上的模型参数组件;一个模型参数组件将自身维护的参数通过与其相连的一个广播组件发送到各个并行处理分片数据的其他计算设备的对应一个广播组件,以便各个其他计算设备上的前向数据处理组件和后向数据处理组件基于所接收模型参数对分片数据进行处理。
根据本公开的分布式数据处理方法,还包括:连接到所述模型参数组件的广播组件所对应的一个梯度汇聚组件获取其他计算设备上对应的梯度汇聚组件发送来的梯度值,从而获取全局梯度值,并传输到与该模型参数组件对应的一个模型参数更新组件,以便模型参数更新组件进行模型参数更新处理。
根据本公开的另一个方面,提供了一种分布式计算任务部署系统,包括:作业描述组件,基于作业类型描述作业神经网络模型以及获取将要处理作业的计算资源,所述计算资源包括多个可执行并行计算的计算设备,并为将要进行并行运算的作业数据的分片数据所属的前向运算任务节点、广播节点、后向运算任务节点以及梯度汇聚节点给出所属计算设备的位置标签;模型参数节点配置组件,基于作业神经网络模型的描述,获取处理作业的模型参数,计算所有模型参数的总量,并负载均衡地将所有模型参数划分到几个模型参数节点,其中一个模型参数节点只被配置到一个计算设备上,并经由广播节点置于所述神经网络模型中该模型参数节点的后继前向运算任务节点之前;以及模型参数更新节点配置组件,与每个模型参数节点相对应,配置一个更新组件节点,其中一个模型参数更新节点只被配置在一个计算设备上,并连接到与该模型参数节点的对应广播节点对应的梯度汇聚节点之后,而所述梯度汇聚节点布置在与该模型参数节点的对应运算任务节点相对应的后向运算任务节点之后。
根据本公开的分布式计算任务的部署系统,还包括:单一后继运算任务节点配置组件,遍历所述模型参数节点的每个后继前向运算任务节点,为仅消费所述模型参数节点输出并仅具有单一输出的单一后继前向运算任务节点配置与所述模型参数节点相同的位置标签,并在所述模型参数节点和对应的广播节点之间串联前向运算任务节点,以及在与所述模型参数节点对应的模型参数更新节点和与广播节点相对应梯度汇聚节点之间配置与所述单一后继前向运算任务节点对应的后向运算任务节点。
根据本公开的又一个方面,还提供了一种分布式计算任务部署方法,包括:基于作业类型描述作业神经网络模型以及获取将要处理作业的计算资源,所述计算资源包括多个可执行并行计算的计算设备,并为将要进行并行运算的作业数据的分片数据所属的前向运算任务节点、广播节点、后向运算任务节点以及梯度汇聚节点赋予所属计算设备的位置标签;基于作业的神经网络模型,获取处理作业的模型参数,计算所有模型参数的总量,并负载均衡地将所有模型参数划分成多个部分,配置对应数量的模型参数节点,并为一个模型参数节点配置一个计算设备的位置标签;在每个模型参数节点及其后继前向运算任务节点之间插入广播节点,并配置相同的位置标签;为与一个模型参数节点相对应的一个模型参数更新节点赋予与该模型参数节点相同的计算设备的位置标签;以及在所述模型参数更新节点与对应的后向运算任务节点之间插入与所插入的广播节点对应的梯度汇聚节点,并配置相同的位置标签。
根据本公开的分布式计算任务的部署方法,还包括:遍历所述模型参数节点的每个后继前向运算任务节点,将仅消费所述模型参数节点输出并仅具有单一输出的单一后继前向运算任务节点配置的位置标签修改为与所述模型参数节点相同的位置标签,并将修改了位置标签的前向运算任务节点串联在所述模型参数节点与其对应的广播节点之间;以及修改与所述单一后继前向运算任务节点对应的后向运算任务节点的位置标签为与所述模型参数节点相同的位置标签,并将修改了位置标签的后向运算任务节点串联到所述模型参数更新节点和梯度汇聚节点之间。
根据本公开的又一个方面,还提供了一种分布式计算任务部署方法,包括:基于作业类型描述作业神经网络模型以及获取将要处理作业的计算资源,所述计算资源包括多个可执行并行计算的计算设备,并为将要进行并行运算的作业数据的分片数据所属的前向运算任务节点赋予所属计算设备的位置标签;基于作业的神经网络模型的前向部分,获取处理作业的模型参数,计算所有模型参数的总量,并负载均衡地将所有模型参数划分成多个部分,配置对应数量的模型参数节点,并为一个模型参数节点配置一个计算设备的位置标签;在每个模型参数节点及其后继前向运算任务节点之间插入广播节点,并配置相同的位置标签;基于已经配置的神经网络模型的前向部分,对应配置神经网络模型的后向部分,包括配置与一个模型参数节点相对应的一个模型参数更新节点使其具有与该模型参数节点相同的位置标签,配置与一个广播节点对应的梯度汇聚节点并使其具有与该广播节点相同的位置标签,以及配置与一个前向运算任务节点对应的后向运算任务节点使其具有与该前向运算任务节点相同的位置标签。
根据本公开的分布式计算任务的部署方法,还包括:遍历所述模型参数节点的每个后继前向运算任务节点,将仅消费所述模型参数节点输出并仅具有单一输出的单一后继前向运算任务节点配置的位置标签修改为与所述模型参数节点相同的位置标签,并将修改了位置标签的前向运算任务节点串联在所述模型参数节点与其对应的广播节点之间;以及修改与所述单一后继前向运算任务节点对应的后向运算任务节点的位置标签为与所述模型参数节点相同的位置标签,并将修改了位置标签的后向运算任务节点串联到所述模型参数更新节点和梯度汇聚节点之间。
采用上述分布式计算任务的部署系统和方法以及分布式数据处理系统和方法,将用于数据并行处理的模型参数和更新组件参数部署在多个执行数据并行处理的多个计算设备其中之一上,模型参数组件中的模型参数通过广播组件输入到每一个其他并行计算设备上去供后继的前向数据处理组件和后向数据处理组件使用,这就减少了在其他并行计算设备上部署同样模型参数的需要,从而减少了计算设备在模型参数部署方面的内存空间需求。而且对应地,在部署模型参数的计算设备上对应地部署更新组件参数,通过梯度汇聚组件进行集合通信获得对应其他计算设备上后继后向数据处理组件产生的梯度从而获得全局梯度,从而可以通过模型参数更新组件对模型参数进行更新操作。这样同样减少了在其他并行计算设备上部署同时更新组件参数的需要,从而减少了计算设备在模型参数更新方面的内存空间需求。因此,相比于现有技术采用的全局梯度聚合(allreduce)的数据并行方式,更新组件部分的计算资源和内存的使用都将有效降低。同时,因为全局梯度聚合代价近似的等价于本公开的梯度聚合与广播,因此,本公开的通信效率和现有技术的全局梯度聚合方式的通信效率是一致的。如上所述,除了模型参数,本公开还会把仅有模型参数参与的运算节点(例如模型的类型转换或者归一化处理)与模型参数节点部署同一计算设备上并位于模型参数节点或组件对应的广播节点之前,因此能够进一步降低了这些仅有模型参数参与的运算节点在其他计算设备上的并行部署,也进一步节省了其他计算设备上内存和计算资源的使用。
本发明的其它优点、目标和特征将部分通过下面的说明体现,部分还将通过对本发明的研究和实践而为本领域的技术人员所理解。
附图说明
图1所示的是根据本公开的第一实施例的一种分布式数据处理系统原理结构示意图。
图2所示的是根据本公开的第二实施例的一种分布式数据处理系统原理结构示意图。
图3所示的是根据本公开的分布式数据处理方法的流程示意图。
图4所示的是根据本公开的一个实施例的分布式计算任务的部署系统的原理示意图。
具体实施方式
下面结合实施例和附图对本发明做进一步的详细说明,以令本领域技术人员参照说明书文字能够据以实施。
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
在本公开使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本公开。在本公开和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本公开可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。此外,在提到“第一”时,并不意味存在“第二”,有时候采用第一或第二仅仅是为了简化表述。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
为了使本领域技术人员更好地理解本公开,下面结合附图和具体实施方式对本公开作进一步详细说明。
图1所示的是根据本公开的第一实施例的一种分布式数据处理系统原理结构示意图。如图所示,根据本公开的分布式数据处理系统包括多个计算设备,例如计算设备100、计算设备200、计算设备300以及计算设备400等。为了叙述简便,图1中仅仅显示了四个并行处理数据的计算设备,例如gpu,在实际使用过程中,计算设备的数量根据需要可以减少或增多,至少为两个。如图1所示,根据本公开的分布式数据处理系统,待处理的数据被分片到各个计算设备进行处理,例如分片数据1被输入计算设备100、分片数据2被输入计算设备200、分片数据3被输入计算设备300、分片数据4被输入计算设备400等等。以计算设备100为例,计算设备100包含前向数据处理组件113、213、313、413等以及后向数据处理组件423、323、223以及123等等。这里仅仅是示意性的,其中根据实际数据处理的神经网络模型可以包含更多。用于配置模型参数一个子集的模型参数组件110与广播组件112相连,通过广播组件112向处于本计算设备100上的后继前向数据处理组件113以及后向数据处理组件123发送模型参数子集,同时向其他计算设备200、300以及400中的并行的广播组件112发送模型参数子集,以便其他计算设备中的并行的广播组件112将所获得模型参数子集提供给其他计算设备中的用于处理其他分片数据的并行前向数据处理组件113以及后向数据处理组件123。
同样,用于作业处理的模型参数集合的其他子集也配置到其他计算设备的模型参数组件210、310以及410等等。每个计算设备只配置一个模型参数组件,并且该模型参数组件只管理一个模型参数子集。可选择地,当划分的模型参数子集的数量多于计算设备的数量时,可以在其中一个计算设备上配置多个模型参数组件。例如,用于并行计算的计算设备为4个,而将模型参数分成了8个子集,则可以在每个计算设备上配置两个模型参数组件来管理两个模型参数子集。如果模型参数分成了6个子集,则选择性的在其中两个计算设备上配置两个模型参数组件来管理两个模型参数子集,而在其他两个计算设备上各配置一个模型参数组件来管理两个模型参数子集。用于配置模型参数一个子集的模型参数组件210与广播组件212相连,通过广播组件212向处于本计算设备200上的后继前向数据处理组件213以及后向数据处理组件223发送模型参数子集,同时向其他计算设备100、300以及400中的并行的广播组件212发送模型参数子集,以便其他计算设备中的并行的广播组件212将所获得模型参数子集提供给其他计算设备中的用于处理其他分片数据的并行前向数据处理组件213以及后向数据处理组件223。同样,模型参数组件310以及410也执行类似的处理。
对应于部署在每个计算设备上的模型参数组件110、210、310以及410,在后向处理部分部署有模型参数更新组件120、220、320以及420。同时,对应于部署在每个模型参数组件110、210、310以及410之后的广播组件112、212、312以及412,在后向处理部分部署有梯度汇聚组件122、222、322以及422。每个模型参数更新组件经由部署在同一计算设备上的梯度汇聚组件汇聚分片梯度数据。例如梯度汇聚组件122会从其他计算设备200、300以及400上的并行的梯度汇聚组件122通过集合通讯发送来的不同分片数据经过后向运算处理后产生的梯度,从而获得各个并行分片的梯度值的全局梯度值,并发送到模型参数更新组件120进行更新处理。同样,梯度汇聚组件222会从其他计算设备100、300以及400上的并行的梯度汇聚组件222通过集合通讯发送来的不同分片数据经过后向运算处理后产生的梯度,从而获得各个并行分片的梯度值的全局梯度值,并发送到模型参数更新组件220进行模型参数更新。
如果模型或总的模型参数所需的内存大小为m,计算设备数量为n,按照常规的数据并行分布式数据处理系统,需要将总的模型参数整体输入到每个并行处理的计算设备上,因此需要每个计算设备各自进行所有模型参数的更新处理。这样,以adamoptimizer为例,对于allreduce方式,每个计算设备需要为optimizer分配用于模型参数的一个m空间,用于梯度的一个m的内存空间,用于梯度的一阶矩(m)的一个m空间,用于梯度的二阶矩(v)的一个m的内存空间,这样就是4×m(即模型参数,梯度,m,v)大小的内存,因此对于n个计算设备,总共是n×4×m。如采用根据本公开的上所述的分布式数据处理系统,这样,每个计算设备需要分配2×m(广播后的模型参数,汇聚前的梯度)大小的内存,即在用于广播组件112、212、312以及412等的模型参数的内存空间以及梯度汇聚组件122、222、322以及422所需的梯度的内存空间。此外,所有参数模型更新组件120、220、320以及420所需要的总共为3×m(模型参数,m,v),其中所有计算设备中的模型参数的内存为m,梯度的一阶矩(m)的内存空间为m,以及梯度的二阶矩(v)的内存空间为m,这样n个计算设备在进行模型更新方面总共内存使用为2×n×m+3×m。很显然,这要比传统的分布式并行数据处理系统节省了大量的计算设备的内存空间。而且在理想情况下,在计算设备同为n个的情况下,采用本公开的分布式数据处理系统在模型参数更新组件处的计算开销是常规更新组件部分的计算开销的1/n。
图2所示的是根据本公开的第二实施例的一种分布式数据处理系统原理结构示意图。图2所示的实施例与图1所示的实施例不同指出在于,在每个计算设备上模型参数组件和其对应的广播组件之间串联有运算任务组件111、211、311以及411。尽管每处仅仅显示了一个运算任务组件111,其实际上为任意多个。对应地,在后向部分,在所述模型参数更新组件和其对应的梯度汇聚组件之间的串联运算任务组件,所述多个运算任务组件中每一个运算任务组件为单输入与单输出的运算任务组件121、221、321以及421。这些运算任务组件中的每一个都是为单输入与单输出的运算任务组件。这是一种用于半精度训练的分布式数据处理系统。通过在半精度数据训练中采用本公开的技术分布式数据处理系统,把仅有模型参数参与的运算节点(例如模型的类型转换或者归一化处理)与模型参数节点部署同一计算设备上并位与模型参数节点或组件对应的广播节点之前,因此能够进一步降低了这些仅有模型参数参与的运算节点在其他计算设备上的并行部署,也进一步节省了其他计算设备上内存资源的使用。图2中与图1中相同的部分采用虚线框代替,因此不再重复描述。
具体而言,如果模型或总的模型参数所需的内存大小为m,计算设备数量为n,按照常规的半精度训练用的数据并行分布式数据处理系统,需要将总的模型参数整体输入到每个并行处理的计算设备上,因此需要每个计算设备各自进行所有模型参数的更新处理。这样,以adamoptimizer为例,对于allreduce方式,每个计算设备需要为模型参数更新组件分配5×m(模型参数,梯度的一阶矩(m),梯度的一阶矩(v),半精度的模型和半精度的梯度)大小的内存,总共是n×5×m。如采用根据本公开的上所述的分布式数据处理系统,这样,每个计算设备需要分配m(广播后的半精度模型,汇聚(reduce)前的半精度梯度)。此外,还要在所有计算设备分配总共为4×m(模型,m,v,单精度的梯度)。这样需要为实现模型参数更新总共内存使用为n×m+4×m。很显然,这要比传统的分布式并行数据处理系统节省了大量的计算设备的内存空间。同样,在理想情况下,在计算设备同为n的情况下,采用本公开的分布式数据处理系统在模型参数更新组件处的计算开销是常规更新组件部分的计算开销的1/n。
需要指出的是,在进行实际组件部署时,需要首先遍历所有数据并行的模型参数,对于每一个模型参数,遍历模型参数的后继节点。如果被遍历的模型参数只有一个后继节点或组件且该后继节点或组件仅消费模型参数并且只有一个输出,则这个后继节点将会当作仅消费该模型参数的节点一同处理,并按照相同的条件遍历该后继节点的后继,直到找到所有符合条件的后继节点,将模型参数和所有符合条件的后继节点作为一个组,所有模型的组将组成一个组的列表。
图3所示的是根据本公开的分布式数据处理方法的流程示意图。如图3所示,首先在步骤s310处,基于用于数据并行处理的计算设备的数量,将待处理数据分片成多个分片数据发送到各个计算设备,执行前向数据处理和后向数据处理。同时或随后,在步骤s320处,将进行数据处理所需的模型参数集合划分成多个子集,将一个子集只分发到一个计算设备上的模型参数组件。接着,在步骤s330处,每个模型参数组件将自身维护的参数通过与其相连的一个广播组件发送到各个并行处理分片数据的其他计算设备的对应一个广播组件,以便对应的广播组件将所收到的模型参数子集发送到其所在计算设备的需要该模型参数的后继前向数据处理组件和后向数据处理组件,从而前向数据处理组件和后向数据处理组件基于所获得模型参数对分片数据进行处理。最后,在步骤s340处,梯度汇聚组件获取其他计算设备上对应的梯度汇聚组件发送来的梯度值,从而获取全局梯度值,并传输到与该模型参数组件对应的一个模型参数更新组件,以便模型参数更新组件进行模型参数更新处理。
图4所示的是根据本公开的一个实施例的分布式计算任务的部署系统的原理示意图。如图4所示,分布式计算任务的部署系统500,包括:作业描述组件510、模型参数节点配置组件520、模型参数节点配置组件520以及模型参数更新节点配置组件530。作业描述组件510基于作业类型描述作业神经网络模型以及获取作业将要被处理的计算资源,所述计算资源包括多个可执行并行计算的计算设备。例如计算设备1、计算设备2、计算设备3……等。作业描述组件510为作业数据进行并行运算的分片数据所属的前向运算任务节点、广播节点、后向运算任务节点以及梯度汇聚节点给出所属计算设备的位置标签。模型参数节点配置组件520基于作业神经网络模型的描述,获取处理作业的模型参数,计算所有模型参数的总量,并负载均衡地将所有模型参数划分到几个模型参数节点,其中一个模型参数节点只被配置到一个计算设备上,并经由广播节点置于所述神经网络中其后继前向运算任务节点之前。模型参数更新节点配置组件530与每个模型参数节点相对应,配置一个模型参数更新节点,其中一个模型参数更新节点只被配置在一个计算设备上,并连接到与该模型参数节点的对应的广播节点对应的梯度汇聚节点之后,而所述梯度汇聚节点布置在与该模型参数节点的对应的运算任务节点相对应的后向运算任务节点之后。
可选择地,分布式计算任务的部署系统500还包括单一后继运算任务节点配置组件540,其遍历所述模型参数节点每个后继前向运算任务节点,为仅仅消费所述模型参数节点输出并仅具有单一输出的单一后继前向运算任务节点配置与所述模型参数节点相同的位置标签,并串联在所述模型参数节点与其对应的广播节点之间,以及在与所述模型参数节点和对应的广播节点对应的模型参数更新节点和梯度汇聚节点之间,配置与所述单一后继前向运算任务节点对应的后向运算任何节点。
在图4所示的分布式计算任务的部署系统500上可以实现分布式计算任务在分布式数据处理系统上的部署方法,可以在神经网络的前后向展开之前进行部署,也可以在神经网络的前后向展开之后部署。
具体而言,在前后向展开之前,遍历所有数据并行的模型参数,对于每一个模型参数,遍历模型参数的后继节点,如果模型参数只有一个后继节点且该后继节点仅消费模型参数并且只有一个输出,则这个后继节点将会当作仅消费该模型参数的节点一同处理,并按照相同的条件遍历该后继节点的后继,直到找到所有符合条件的后继节点,将模型参数和所有符合条件的后继节点作为一个组(即模型参数节点与单一输入输出后继节点形成的组,该组中可能会有多个串联的单一输入输出后继节点),所有模型的组将组成一个组的列表。
对于找到的所有组,计算组内模型参数的大小,并按照模型参数的大小,将组分配给各个计算设备,使每个计算设备上面分配到的模型参数大小尽可能的平均,即,使得分配到各个计算设备上的模型参数子集负载均衡。按照模型参数子集的分配结果,修改每组中节点的位置标签(placement),并且在每组中最后一个节点和该节点的后继之间插入广播节点(例如图1中的广播组件112、212、312以及412)。在部署模型参数节点的计算设备上,广播节点以该模型参数节点所在组的最后一个节点为输入,其他设备上面并行的广播节点则以在部署模型参数节点的计算设备上的广播节点为输入。如图2所示,例如计算设备1上的广播节点112以运算节点111为输入,而其他计算设备上的并行广播节点112则以计算设备1上的广播节点112为输入。可选择地,获取每含有模型参数节点的组最后一个节点的后继节点在整个计算图中的拓扑顺序,并将所有组按照组中最后节点所有后继节点拓扑顺序最小值进行升序排序,将每组对应的广播节点按照排序结果对每组对应的广播节点进行顺序控制,保证广播过程按照该顺序执行。
在系统进行后向展开并构建训练图时,部署系统500基于已经放置在单个设备中的前向节点生成的后向节点同样被部署同一设备上。如果是并行的前向节点,对应的并行的后向节点则都部署在多个并行的计算设备上。同样对应于模型参数节点的位置标签,对应的更新组件的相关节点也具有同样的位置标签,从而也部署在同一计算设备上,并且后向中会有与广播节点对应的梯度汇聚节点,例如对应于图1或2中的梯度汇聚组件122、222、322以及42。同样,这些梯度汇聚节点也在其他计算设备上也有并行的梯度汇聚节点。
可选择地,分布式计算任务的部署也可以在所有神经网络的前后向都展开之后进行部署。具体而言,在前后向展开之后,所有前向运算节点和后向运算节点以及损失函数节点都已经获得。遍历所有数据并行的模型参数,对于每一个模型参数,遍历模型参数的后继节点,如果模型参数只有一个后继节点且该后继节点仅消费模型参数并且只有一个输出,则这个后继节点将会当做仅消费该模型参数的节点一同处理,并按照相同的条件遍历该后继节点的后继,直到找到所有符合条件的后继节点,将模型参数和所有符合条件的后继节点作为一个组(即模型参数节点与单一输入输出后继节点形成的组,该组中可能会有多个串联的单一输入输出后继节点),所有模型的组将组成一个组的列表。
对于找到的所有组,计算组内模型参数的大小,并按照模型参数的大小,将组分配给各个计算设备,使每个计算设备上面分配到的模型参数大小尽可能的平均,即,使得分配到各个计算设备上的模型参数子集负载均衡。按照模型参数子集的分配结果,修改每组中节点的位置标签(placement),并且在每组中最后一个节点和该节点的后继之间插入广播节点(例如图1中的广播组件112、212、312以及412)。在部署模型参数节点的计算设备上,广播节点以该模型参数节点所在组的最后一个节点为输入,其他设备上面并行的广播节点则以在部署模型参数节点的计算设备上的广播节点为输入。如图2所示,例如计算设备1上的广播节点112以运算节点111为输入,而其他计算设备上的并行广播节点112则以计算设备1上的广播节点112为输入。可选择地,获取每含有模型参数节点的组最后一个节点的后继节点在整个计算图中的拓扑顺序,并将所有组按照组中最后节点所有后继节点拓扑顺序最小值进行升序排序,将每组对应的广播节点按照排序结果对每组对应的广播节点进行顺序控制,保证广播过程按照该顺序执行。
随后,基于模型参数节点以及其对应的广播节点,寻找已经展开的对应的模型参数更新节点。部署系统500的模型参数更新节点配置组件530会基于其对应的模型参数节点位置标签,修改已经展开的模型参数更新节点的位置标签,使得两者的位置标签一致,从而都只部署在同一计算设备上。并在第一个后向节点(组中最后一个前向节点对应的后向节点)和该节点的前驱节点之间插入与广播节点对应的梯度汇聚节点,如果是该组所在的计算设备,则梯度汇聚节点的输出连接到第一个后向节点,其他设备上面并行的梯度汇聚节点没有输出,或者说,其他计算设备上的梯度汇聚节点的输出通过集合通信方式都合并到与模型参数更新节点对应的梯度汇聚节点。如图2所示,例如计算设备1上的梯度汇聚节点122输出到运算节点121,而其他计算设备上的并行梯度汇聚节点122则以计算设备1上的梯度汇聚节点122作为输出对象。
以上结合具体实施例描述了本公开的基本原理,但是,需要指出的是,对本领域的普通技术人员而言,能够理解本公开的方法和装置的全部或者任何步骤或者部件,可以在任何计算装置(包括处理器、存储介质等)或者计算装置的网络中,以硬件、固件、软件或者它们的组合加以实现,这是本领域普通技术人员在阅读了本公开的说明的情况下运用他们的基本编程技能就能实现的。
因此,本公开的目的还可以通过在任何计算装置上运行一个程序或者一组程序来实现。所述计算装置可以是公知的通用装置。因此,本公开的目的也可以仅仅通过提供包含实现所述方法或者装置的程序代码的程序产品来实现。也就是说,这样的程序产品也构成本公开,并且存储有这样的程序产品的存储介质也构成本公开。显然,所述存储介质可以是任何公知的存储介质或者将来所开发出来的任何存储介质。
还需要指出的是,在本公开的装置和方法中,显然,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本公开的等效方案。并且,执行上述系列处理的步骤可以自然地按照说明的顺序按时间顺序执行,但是并不需要一定按照时间顺序执行。某些步骤可以并行或彼此独立地执行。
上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。