一种分布式训练中梯度同步方法及装置与流程

文档序号:19529692发布日期:2019-12-27 15:16阅读:245来源:国知局
一种分布式训练中梯度同步方法及装置与流程

本申请涉及计算机技术领域,特别涉及一种分布式训练中梯度同步方法及装置、计算设备、计算机可读存储介质和芯片。



背景技术:

目前,随着计算机技术的迅猛发展,深度学习技术也得到了快速进步,随着深度学习技术的深入,研发出越来越复杂的算法,这些算法需要大量的数据并耗费大量的时间才能有效的完成训练,因此研发出了分布式训练。

在深度学习的模型优化中,需要使用梯度下降的方法计算梯度找到最小的损失函数,以此来训练模型,加快模型的收敛。在目前的分布式训练中,需要每完成一次训练都要进行梯度信息的传递和梯度信息的同步,以便于将分布式训练节点上的梯度共享,找到最小损失函数,因此在模型训练时会因为高频率的梯度信息传递和传递信息量大的问题导致模型训练时间长、跨度大,严重延缓了模型训练的速度。

因此,如何改善上述问题,就成为目前亟待解决的问题。



技术实现要素:

有鉴于此,本申请实施例提供了一种分布式训练中梯度同步方法及装置、计算设备、计算机可读存储介质和芯片,以解决现有技术中存在的技术缺陷。

根据本申请实施例的第一方面,提供了一种分布式训练中梯度同步方法,包括:

对分布式训练集群中每个训练节点上的训练数据进行分组,获得每个训练节点上的多个子训练数据,其中,分布式训练集群中的训练节点成环形连接;

计算所述分布式训练集群的训练节点中每个子训练数据的子训练平均梯度;

根据所述子训练平均梯度获得与所述子训练平均梯度对应的子训练累加梯度;

将所述子训练累加梯度同步至所述分布式训练集群的每个训练节点。

可选的,对分布式训练集群中每个训练节点上的训练数据进行分组,获得每个训练节点上的多个子训练数据,包括:

根据分布式训练集群中训练节点的数量对每个训练节点上的训练数据进行分组,获得每个训练节点上的多个子训练数据,其中,获得的子训练数据的数量与所述分布式训练集群中训练节点的数量相等。

可选的,计算所述分布式训练集群的训练节点中每个子训练数据的子训练平均梯度,包括:

获取预设的累积梯度步数;

计算所述累积梯度步数内所述子训练数据的子训练梯度;

将所述累积梯度步数内的子训练梯度累积,获得子训练累积梯度;

根据所述子训练累积梯度和所述累积梯度步数,获取子训练平均梯度。

可选的,根据所述子训练平均梯度获得与所述子训练平均梯度对应的子训练累加梯度,包括:

将所述子训练平均梯度在所述分布式训练集群的每个训练节点中进行累加,获取与所述子训练平均梯度对应的子训练累加梯度。

可选的,将所述子训练平均梯度在所述分布式训练集群的每个训练节点中进行累加,获取与所述子训练平均梯度对应的子训练累加梯度,包括:

判断当前训练节点中的第i个子训练平均梯度是否为首发子训练平均梯度,其中i为正整数;

若是,则将所述首发子训练平均梯度发送至后一训练节点;

若否,在接收到前一训练节点发送的第i个子训练平均梯度的情形下,将前一训练节点的第i个子训练平均梯度与当前训练节点的第i个子训练平均梯度进行累加操作,获得累加后的子训练累加梯度;

判断累加后的子训练累加梯度是否为最终子训练累加梯度;

若是,停止累加,获取最终子训练累加梯度;

若否,将累加后的子训练累加梯度发送至后一训练节点。

可选的,在将所述子训练累加梯度同步至所述分布式训练集群的每个训练节点之前,还包括:

预设训练节点接收所述分布式训练集群中的每个训练节点发出的同步信息,并给所述分布式训练集群中的每个训练节点发出同步所述子训练累加梯度的指令。

可选的,将所述子训练累加梯度同步至所述分布式训练集群的每个训练节点,包括:

将所述子训练累加梯度按照预设顺序依次同步至每个训练节点相应的子训练平均梯度中。

可选的,将所述子训练累加梯度按照预设顺序依次同步至每个训练节点相应的子训练平均梯度中,包括:

将所述子训练累加梯度进行压缩,获得子训练累加压缩梯度;

将所述子训练累加压缩梯度同步至所述分布式训练集群的每个训练节点。

根据本申请实施例的第二方面,提供了一种分布式训练中梯度同步装置,包括:

分组模块,被配置为对分布式训练集群中每个训练节点上的训练数据进行分组,获得每个训练节点上的多个子训练数据,其中,分布式训练集群中的训练节点成环形连接;

计算模块,被配置为计算所述分布式训练集群的训练节点中每个子训练数据的子训练平均梯度;

累加模块,被配置为根据所述子训练平均梯度获得与所述子训练平均梯度对应的子训练累加梯度;

同步模块,被配置为将所述子训练累加梯度同步至所述分布式训练集群的每个训练节点。

可选的,所述分组模块,进一步被配置为根据分布式训练集群中训练节点的数量对每个训练节点上的训练数据进行分组,获得每个训练节点上的多个子训练数据,其中,获得的子训练数据的数量与所述分布式训练集群中训练节点的数量相等。

可选的,所述计算模块,进一步被配置获取预设的累积梯度步数;计算所述累积梯度步数内所述子训练数据的子训练梯度;将所述累积梯度步数内的子训练梯度累积,获得子训练累积梯度;根据所述子训练累积梯度和所述累积梯度步数,获取子训练平均梯度。

可选的,所述累加模块,进一步被配置为将所述子训练平均梯度在所述分布式训练集群的每个训练节点中进行累加,获取与所述子训练平均梯度对应的子训练累加梯度。

可选的,所述累加模块,包括:

第一判断子单元,被配置为判断当前训练节点中的第i个子训练平均梯度是否为首发子训练平均梯度,其中i为正整数;

第一发送子单元,被配置为将所述首发子训练平均梯度发送至后一训练节点;

接收子单元,被配置为在接收到前一训练节点发送的第i个子训练平均梯度的情形下,将前一训练节点的第i个子训练平均梯度与当前训练节点的第i个子训练平均梯度进行累加操作,获得累加后的子训练累加梯度;

第二判断子单元,被配置为判断累加后的子训练累加梯度是否为最终子训练累加梯度;

获取子单元,被配置为停止累加,获取最终子训练累加梯度;

第二发送子单元,被配置为将累加后的子训练累加梯度发送至后一训练节点。

可选的,所述装置还包括:

接收发送指令模块,被配置为预设训练节点接收所述分布式训练集群中的每个训练节点发出的同步信息,并给所述分布式训练集群中的每个训练节点发出同步所述子训练累加梯度的指令。

可选的,所述同步模块,进一步被配置为将所述子训练累加梯度按照预设顺序依次同步至每个训练节点相应的子训练平均梯度中。

可选的,所述同步模块,进一步被配置为将所述子训练累加梯度进行压缩,获得子训练累加压缩梯度;将所述子训练累加压缩梯度同步至所述分布式训练集群的每个训练节点。

根据本申请实施例的第三方面,提供了一种计算设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机指令,所述处理器执行所述指令时实现所述分布式训练中梯度同步方法的步骤。

根据本申请实施例的第四方面,提供了一种计算机可读存储介质,其存储有计算机指令,该指令被处理器执行时实现所述分布式训练中梯度同步方法的步骤。

根据本申请实施例的第五方面,提供了一种芯片,其存储有计算机指令,该指令被芯片执行时实现所述分布式训练中梯度同步方法的步骤。

本申请提供的分布式训练中梯度同步方法,通过对分布式训练集群中每个训练节点上的训练数据进行分组,获得每个训练节点上的多个子训练数据,其中,分布式训练集群中的训练节点成环形连接;计算所述分布式训练集群的训练节点中每个子训练数据的子训练平均梯度;根据所述子训练平均梯度获得与所述子训练平均梯度对应的子训练累加梯度;将所述子训练累加梯度同步至所述分布式训练集群的每个训练节点。模型训练过程中,在每个训练节点上将训练数据分为若干份,计算不同批量大小训练数据的平均梯度,可以保证梯度的震荡范围较小,能更准确的确定梯度下降的方向,通过累积梯度后再计算平均梯度,既可以降低梯度信息的通讯频率,减少梯度信息的传递时间,又可以减少梯度同步过程中数据量的大小,加快模型的训练速度,提高模型训练的效率。

附图说明

图1是本申请实施例提供的计算设备的结构框图;

图2是本申请实施例提供的分布式训练中梯度同步方法的流程图;

图3是本申请实施例提供的子训练平均梯度计算方法的流程图;

图4是本申请另一实施例提供的分布式训练中梯度同步方法的流程图;

图5是本申请一实施例提供的分布式训练集群的结构示意图;

图6是本申请实施例提供的分布式训练中梯度同步装置的结构示意图。

具体实施方式

在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此本申请不受下面公开的具体实施的限制。

在本申请一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请一个或多个实施例。在本申请一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本申请一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本申请一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

首先,对本发明一个或多个实施例涉及的名词术语进行解释。

梯度:梯度是一个向量,表示某一函数在该点处的方向导数沿着该方向取得最大值,即函数在该点处沿着该方向(此梯度的方向)变化最快,变化率最大,在模型训练中梯度用来找到最小损失函数,训练模型,加快模型的收敛。模型训练的次数即梯度的步数。

梯度下降法(gradientdescent):是一个最优化算法,通常也称为最速下降法。梯度下降法是求解无约束优化问题的常用的方法之一,现在更多的用于机器学习中用来递归性地逼近最小偏差模型。尤其是对于神经网络中的反向传播算法,梯度下降法为其提供了理论基础。

梯度累积:将多步训练的梯度累积在一起。

分布式训练:使用多个训练节点进行训练的方法。

子训练累积梯度:计算分布式训练集群的每个训练节点上的训练数据的梯度,将多次计算得到的梯度累积起来,获得子训练累积梯度。

子训练平均梯度:根据子训练数据对应的子训练累积梯度和累积次数计算均值,获得子训练平均梯度。

子训练累加梯度:将分布式训练集群中所有节点对应的子训练平均梯度累加起来,获得子训练累加梯度。

在本申请中,提供了一种分布式训练中梯度同步方法及装置、计算设备、计算机可读存储介质和芯片,在下面的实施例中逐一进行详细说明。

图1示出了根据本申请一实施例的计算设备100的结构框图。该计算设备100的部件包括但不限于存储器110和处理器120。处理器120与存储器110通过总线130相连接,数据库150用于保存数据。

计算设备100还包括接入设备140,接入设备140使得计算设备100能够经由一个或多个网络160通信。这些网络的示例包括公用交换电话网(pstn)、局域网(lan)、广域网(wan)、个域网(pan)或诸如因特网的通信网络的组合。接入设备140可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(nic))中的一个或多个,诸如ieee802.11无线局域网(wlan)无线接口、全球微波互联接入(wi-max)接口、以太网接口、通用串行总线(usb)接口、蜂窝网络接口、蓝牙接口、近场通信(nfc)接口,等等。

在本申请的一个实施例中,计算设备100的上述部件以及图1中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图1所示的计算设备结构框图仅仅是出于示例的目的,而不是对本申请范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。

计算设备100可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或pc的静止计算设备。计算设备100还可以是移动式或静止式的服务器。

其中,处理器120可以执行图2所示分布式训练中梯度同步方法中的步骤。图2示出了根据本申请一实施例的分布式训练中梯度同步方法的流程图,包括步骤202至步骤208。

步骤202:对分布式训练集群中每个训练节点上的训练数据进行分组,获得每个训练节点上的多个子训练数据,其中,分布式训练集群中的训练节点成环形连接。

分布式训练中的分布式训练集群有多个训练节点,每个训练节点中放置有相同的待训练模型,将所有的训练样本平均分配到每个训练节点中,在每个训练节点中采用不同的训练样本对待训练模型进行单独的训练。

分布式训练集群中的训练节点成环形连接,为每个训练节点指定与其对应的前一训练节点和后一训练节点,每个训练节点完成自己当前节点的训练并计算出梯度,并将梯度传输给后一训练节点,同时接收前一训练节点的梯度。

子训练数据为将每个训练节点上的训练数据分组后得到的多个训练数据。

可选的,根据分布式训练集群中训练节点的数量对每个训练节点上的训练数据进行分组,获得每个训练节点上的多个子训练数据,其中,获得的子训练数据的数量与所述分布式训练集群中训练节点的数量相等。

获取分布式训练集群中训练节点的数量为n个,将每个训练节点上的训练数据均等的随机分为n组,获得n个子训练数据,每个训练节点上的训练数据的数量与分布式训练集群中训练节点的数量相等,将每个训练节点上的训练数据均等的随机分组,保证了训练数据的随机性,保证了分布式训练集群中各训练节点的负载均衡。

步骤204:计算所述分布式训练集群的训练节点中每个子训练数据的子训练平均梯度。

在每个训练节点中,使用子训练数据对模型进行多次训练,计算子训练数据每次训练的子训练梯度,并计算多次训练后的子训练平均梯度。

梯度与训练数据密切相关,训练数据不同则计算出的相应梯度不同,在每个训练节点中用随机分组的多个子训练数据计算相应的子训练梯度,保证了子训练梯度的随机性,有利于快速找到最小损失函数,加快训练模型的收敛。

可选的,参见图3,步骤204可通过下述步骤302至步骤308实现。

步骤302:获取预设的累积梯度步数。

在模型训练完成后,需要累积梯度的步数为累积梯度步数,所述累积梯度步数是预先设置好的,在此只需获取预设的累积梯度步数。

在本申请提供的实施例中,在每个训练节点上,在完成模型训练后,需要累积5步的梯度,获取的预设的累积梯度步数为5。

步骤304:计算所述累积梯度步数内所述子训练数据的子训练梯度。

在某个训练节点上,计算某组子训练数据的在累积梯度步数内的子训练梯梯度。

在本申请提供的实施例中,沿用上例,在第一个训练节点上,第一组子训练数据记做d1,在第一步计算梯度时使用第一批量大小的小批量梯度下降法获得的子训练梯度记做g1,第二步计算梯度时使用第二批量大小的小批量梯度下降法获得的子训练梯度记做g2,第三步计算梯度时使用第三批量大小的小批量梯度下降法获得的子训练梯度记做g3,第四步计算梯度时使用第四批量大小的小批量梯度下降法获得的子训练梯度记做g4,第五步计算梯度时使用第五批量大小的小批量梯度下降法获得的子训练梯度记做g5。其中,第一批量大小、第二批量大小、第三批量大小、第四批量大小和第五批量大小的训练数据量互不相同。

步骤306:将所述累积梯度步数内的子训练梯度累积,获得子训练累积梯度。

将所述累积梯度步数内的子训练梯度进行累积,获得子训练累积梯度。

在本申请提供的实施例中,沿用上例,第一组子训练数据d0对应的子训练累积梯度为gn,其中gn=g1+g2+g3+g4+g5。

步骤308:根据所述子训练累积梯度和所述累积梯度步数,获取子训练平均梯度。

将获得的所述子训练累积梯度除以所述累积梯度步数,计算得出该子训练数据对应的子训练平均梯度。计算子训练平均梯度不仅减少了通讯频率,还减小了数据量的大小,同时,缩小了因为训练数据批量大小的不同而引起的梯度震荡范围。

在本申请提供的实施例中,沿用上例,第一组子训练数据d0对应的子训练累积梯度为gn,累积梯度步数为5,因此第一组子训练数据d0对应的子训练平均梯度a0=gn/5。

步骤206:根据所述子训练平均梯度获得与所述子训练平均梯度对应的子训练累加梯度。

可选的,将所述子训练平均梯度在所述分布式训练集群的每个训练节点中进行累加,获取与所述子训练平均梯度对应的子训练累加梯度。

在每个训练节点中,将每个训练节点上的子训练数据对应的子训练平均梯度进行累加,例如分布式训练集群中有5个训练节点,每个训练节点中有5组子训练数据,将每个训练节点上的第1组子训练数据对应的子训练平均梯度进行累加,第2组子训练数据对应的子训练平均梯度进行累加,以此类推,直至将5个训练节点中的5组子训练数据对应的子训练平均梯度进行累加。

步骤208:将所述子训练累加梯度同步至所述分布式训练集群的每个训练节点。

可选的,将所述子训练累加梯度按照预设顺序依次同步至每个训练节点相应的子训练平均梯度中。

分布式训练集群中的训练节点成环形连接,因此预设顺序可以是顺时针,也可以是逆时针。将训练节点上的子训练累加梯度按照预设的顺序依次同步至所述分布式训练集群中的每个训练节点上。

本申请实施例提供的分布式训练中梯度同步方法,通过计算子训练数据的子训练梯度,并计算多步子训练梯度累积后子训练累积梯度的子训练平均梯度,再将子训练平均梯度在分布式训练集群中每个训练节点上进行梯度信息传递,可以保证梯度的震荡范围较小,能更准确的确定梯度下降的方向,通过累积梯度后再计算平均梯度,既可以降低梯度信息的通讯频率,减少梯度信息的传递时间,又可以减少梯度同步过程中数据量的大小,加快模型的训练速度,提高模型训练的效率。

图4示出了本申请一实施例的分布式训练中梯度同步方法,该分布式训练中梯度同步方法以对包含有四个训练节点的分布式训练集群中梯度同步为例进行描述,包括步骤402至步骤420。

步骤402:对分布式训练集群中每个训练节点上的训练数据进行分组,获得每个训练节点上的多个子训练数据,其中,分布式训练集群中的训练节点成环形连接。

步骤404:计算所述分布式训练集群的训练节点中每个子训练数据的子训练平均梯度。

步骤402至步骤404与上述步骤202至步骤204的方法一致,关于步骤402~404的具体解释,参见前述实施例中的步骤202~204的详细内容,在此就不再赘述。

参见图5,图5示出了本申请一实施例提供的分布式训练集群的结构示意图,以分布式训练集群中有四个训练节点,以及每个训练节点中分四组子训练数据为例进行解释说明。

图5中的训练节点成环形连接,为图5中的每个训练节点指定与其对应的前一训练节点和后一训练节点,即训练节点0的前一训练节点为训练节点3,训练节点0的后一训练节点为训练节点1;训练节点1的前一训练节点为训练节点0,训练节点1的后一训练节点为训练节点2;训练节点2的前一训练节点为训练节点1,训练节点2的后一训练节点为训练节点3;训练节点3的前一训练节点为训练节点2,训练节点3的后一训练节点为训练节点0。

步骤406:判断当前训练节点中的第i个子训练平均梯度是否为首发子训练平均梯度。若是,则执行步骤408,若否,则执行步骤410。

其中i为正整数,首发子训练平均梯度是指开始同步子训练平均梯度时,在分布式训练集群的每个训练节点中,每个节点都会对应一个子训练平均梯度,从该子训练平均梯度开始进行梯度同步。首发子训练平均梯度为第一个开始梯度同步的子训练平均梯度。第i个子训练平均梯度只在分布式训练集群的一个训练节点中是首发子训练平均梯度。例如,第2个子训练平均梯度只在分布式训练集群的训练节点1中是首发子训练平均梯度,在分布式训练集群的其他训练节点中都不会被作为首发子训练平均梯度。

进一步优选的,在每个训练节点中自动设置一个首发子训练平均梯度,首发子训练平均梯度对应的编号与当前训练节点的编号一致,保证分布式训练集群中负载均衡,充分利用分布式训练集群中的训练节点,节约资源。

在本申请提供的实施例中,参见表1,如表1所示,训练节点0中的a0、训练节点1中的b1、训练节点2中的c2、训练节点3中的d3为首发子训练平均梯度,因此对a0,b1,c2,d3,执行步骤408,对于其他子训练平均梯度,执行步骤410。

表1

步骤408:将所述首发子训练平均梯度发送至后一训练节点。

在本申请提供的实施例中,参见表1,将训练节点0中的首发子训练平均梯度a0发送至训练节点1,将训练节点1中的首发子训练平均梯度b1发送至训练节点2,将训练节点2中的首发子训练平均梯度c2发送至训练节点3,将训练节点3中的首发子训练平均梯度d3发送至训练节点0。

步骤410:在接收到前一训练节点发送的第i个子训练平均梯度的情形下,将前一训练节点的第i个子训练平均梯度与当前训练节点的第i个子训练平均梯度进行累加操作,获得累加后的子训练累加梯度。

训练节点中的非首发子训练平均梯度等待接收前一训练节点发送的子训练平均梯度,并将前一训练节点发送的子训练平均梯度与当前训练节点的子训练平均梯度进行累加操作,获得子训练累加梯度。

在本申请提供的实施例中,参见表2,如表2所示,训练节点0接收到训练节点3发送的第4个子训练平均梯度d3,并与训练节点0的第4个子训练平均梯度d0进行累加操作,累加后获得子训练累加梯度d3+d0,以此类推,训练节点1获得累加后的子训练累加梯度为a0+a1,训练节点2获得累加后的子训练累加梯度为b1+b2,训练节点3获得累加后的子训练累加梯度为c2+c3。

表2

步骤412:判断累加后的子训练累加梯度是否为最终子训练累加梯度,若否,则执行步骤414,若是,则执行步骤416。

最终子训练累加梯度为每个训练节点上的子训练平均梯度都经过一次累加之后得到的梯度,累加的次数为分布式训练集群中的训练节点数减1,即当分布式训练集群中的训练节点数为n时,最终子训练累加梯度为每个训练节点上的子训练累加梯度经过n-1次累加后获得的梯度。当累加后的子训练累加梯度不为最终子训练累加梯度时,执行步骤414,当累加后的子训练累加梯度为最终子训练累加梯度时,执行步骤416。

步骤414:将累加后的子训练累加梯度发送至后一训练节点。

在本申提供的实施例中,分布式训练集群中训练节点数为4,最终子训练累加梯度应为经过3次累加后获得的梯度,参见表2,此时累加的次数为1次,a0+a1,b1+b2,c2+c3,d3+d0经过判断都不是最终子训练累加梯度,因此需要将累加后的子训练累加梯度发送至后一训练节点,继续进行子训练平均梯度的累加。

步骤416:停止累加,获取最终子训练累加梯度。

在本申提供的实施例中,参见表3,训练节点0中的b1+b2+b3+b0为经过3次累加后获得的梯度,是最终子训练累加梯度,同理训练节点1中的c2+c3+c0+c1为最终子训练累加梯度,训练节点2中的d3+d0+d1+d2为最终子训练累加梯度,训练节点3中的a0+a1+a2+a3为最终子训练累加梯度。

表3

步骤418:预设训练节点接收所述分布式训练集群中的每个训练节点发出的同步信息,并给所述分布式训练集群中的每个训练节点发出同步所述子训练累加梯度的指令。

成环形连接的分布式训练集群中没有仅用于接收同步信息的训练节点,因此预先指定一个训练节点做接收发送同步信息的指令,该节点也参与到梯度信息接收、发送的同步行为动作中,使梯度信息在所述分布式训练集群中的环形训练节点中流动同步。

在本申请提供的实施例中,选取训练节点0作为预设的训练节点,训练节点0在接收到训练节点0、训练节点1、训练节点2、训练节点3发出的子训练累加梯度已经累加完成,可以同步的同步信息后,向训练节点0、训练节点1、训练节点2、训练节点3发出同步子训练累加梯度的指令。

可选的,将所述子训练累加梯度进行压缩,获得子训练累加压缩梯度。

在本申请提供的实施例中,获得的子训练累加梯度为32位,通过压缩梯度将所述子训练累加梯度压缩至8位。在实际应用中,根据实际情况采用不同的压缩方法,在此不对压缩方法做限定。通过压缩子训练累加梯度,如深度梯度压缩(deepgradientcompression,dgc)等,可以减少子训练累加梯度的参数大小,减少了同步过程中参数的大小,节约了通信时间,提高模型训练效率。

步骤420:将所述子训练累加梯度同步至所述分布式训练集群的每个训练节点。

可选的,将子训练累加压缩梯度同步至所述分布式训练集群的每个训练节点。

可选的,将子训练累加压缩梯度在所述分布式训练集群中按照顺序依次进行最终子训练累加梯度的同步,同步次数为分布式训练集群中的训练节点数减1。

在本申请提供的实施例中,为实现所述分布式训练集群的负载均衡,将每个训练节点中的最终子训练累加梯度在所述分布式训练集群中按照顺序依次进行最终子训练累加梯度的同步,如表4所示,训练节点3中的最终子训练累加梯度a0+a1+a2+a3同步至训练节点0中,训练节点0中的最终子训练累加梯度b1+b2+b3+b0同步至训练节点1中,训练节点1中的最终子训练累加梯度c2+c3+c0+c1同步至训练节点2中,训练节点2中的最终子训练累加梯度d3+d0+d1+d2同步至训练节点3中。

表4

如表5所示,训练节点0中的最终子训练累加梯度a0+a1+a2+a3同步至训练节点1,再从训练节点1中同步至训练节点2;训练节点1中的最终子训练累加梯度b1+b2+b3+b0同步至训练节点2,再从训练节点2中同步至训练节点3;训练节点2中的最终子训练累加梯度c2+c3+c0+c1同步至训练节点3,再从训练节点3中同步至训练节点0;训练节点3中的最终子训练累加梯度d3+d0+d1+d2同步至训练节点0,再从训练节点0中同步至训练节点1。至此,在本实施例中,最终子训练累加梯度在所述分布式训练集群中进行3次同步,完成子训练累加梯度在所述分布式训练集群的每个训练节点上的同步。

表5

本申请实施例提供的分布式训练中梯度同步方法,通过计算子训练数据的子训练梯度,并计算多步子训练梯度累积后子训练累积梯度的子训练平均梯度,再将子训练平均梯度在分布式训练集群中每个训练节点上进行梯度信息传递,可以保证梯度的震荡范围较小,能更准确的确定梯度下降的方向,通过累积梯度后再计算平均梯度,既可以降低梯度信息的通讯频率,减少梯度信息的传递时间,又可以减少梯度同步过程中数据量的大小,加快模型的训练速度,提高模型训练的效率。在同步子训练累加梯度时,通过压缩子训练累加梯度,并将压缩后的子训练累加压缩梯度在成环形连接的训练节点中进行同步,压缩了梯度同步过程中的参数,加速模型训练,节约模型训练时间。

与上述方法实施例相对应,本申请还提供了分布式训练中梯度同步装置实施例,图6示出了本申请一个实施例的分布式训练中梯度同步装置的结构示意图。如图6所示,该装置包括:

分组模块602,被配置为对分布式训练集群中每个训练节点上的训练数据进行分组,获得每个训练节点上的多个子训练数据,其中,分布式训练集群中的训练节点成环形连接。

计算模块604,被配置为计算所述分布式训练集群的训练节点中每个子训练数据的子训练平均梯度。

累加模块606,被配置为根据所述子训练平均梯度获得与所述子训练平均梯度对应的子训练累加梯度。

同步模块608,被配置为将所述子训练累加梯度同步至所述分布式训练集群的每个训练节点。

可选的,所述分组模块602,进一步被配置为根据分布式训练集群中训练节点的数量对每个训练节点上的训练数据进行分组,获得每个训练节点上的多个子训练数据,其中,获得的子训练数据的数量与所述分布式训练集群中训练节点的数量相等。

可选的,所述计算模块604,进一步被配置为获取预设的累积梯度步数;计算所述累积梯度步数内所述子训练数据的子训练梯度;将所述累积梯度步数内的子训练梯度累积,获得子训练累积梯度;根据所述子训练累积梯度和所述累积梯度步数,获取子训练平均梯度。

可选的,所述累加模块606,进一步被配置为将所述子训练平均梯度在所述分布式训练集群的每个训练节点中进行累加,获取与所述子训练平均梯度对应的子训练累加梯度。

可选的,所述累加模块606,包括:

第一判断子单元,被配置为判断当前训练节点中的第i个子训练平均梯度是否为首发子训练平均梯度,其中i为正整数。

第一发送子单元,被配置为将所述首发子训练平均梯度发送至后一训练节点。

接收子单元,被配置为在接收到前一训练节点发送的第i个子训练平均梯度的情形下,将前一训练节点的第i个子训练平均梯度与当前训练节点的第i个子训练平均梯度进行累加操作,获得累加后的子训练累加梯度。

第二判断子单元,被配置为判断累加后的子训练累加梯度是否为最终子训练累加梯度。

获取子单元,被配置为停止累加,获取最终子训练累加梯度。

第二发送子单元,被配置为将累加后的子训练累加梯度发送至后一训练节点。

可选的,所述装置还包括:接收发送指令模块,被配置为预设训练节点接收所述分布式训练集群中的每个训练节点发出的同步信息,并给所述分布式训练集群中的每个训练节点发出同步所述子训练累加梯度的指令。

可选的,所述同步模块608,进一步被配置为将所述子训练累加梯度按照预设顺序依次同步至每个训练节点相应的子训练平均梯度中。

可选的,所述同步模块608,进一步被配置为将所述子训练累加梯度进行压缩,获得子训练累加压缩梯度;将所述子训练累加压缩梯度同步至所述分布式训练集群的每个训练节点。

本申请实施例提供的分布式训练中梯度同步装置,通过计算子训练数据的子训练梯度,并计算多步子训练梯度累积后子训练累积梯度的子训练平均梯度,再将子训练平均梯度在分布式训练集群中每个训练节点上进行梯度信息传递,可以保证梯度的震荡范围较小,能更准确的确定梯度下降的方向,通过累积梯度后再计算平均梯度,既可以降低梯度信息的通讯频率,减少梯度信息的传递时间,又可以减少梯度同步过程中数据量的大小,加快模型的训练速度,提高模型训练的效率。在同步子训练累加梯度时,通过压缩子训练累加梯度,并将压缩后的子训练累加压缩梯度在成环形连接的训练节点中进行同步,压缩了梯度同步过程中的参数,加速模型训练,节约模型训练时间。

本申请一实施例中还提供一种计算设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机指令,所述处理器执行所述指令时实现所述的分布式训练中梯度同步方法的步骤。

本申请一实施例还提供一种计算机可读存储介质,其存储有计算机指令,该指令被处理器执行时实现如前所述分布式训练中梯度同步方法的步骤。

上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的分布式训练中梯度同步方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述分布式训练中梯度同步方法的技术方案的描述。

本申请实施例公开了一种芯片,其存储有计算机指令,该指令被处理器执行时实现如前所述分布式训练中梯度同步方法的步骤。

上述对本申请特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。

所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。

需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本申请所必须的。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。

以上公开的本申请优选实施例只是用于帮助阐述本申请。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本申请的内容,可作很多的修改和变化。本申请选取并具体描述这些实施例,是为了更好地解释本申请的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本申请。本申请仅受权利要求书及其全部范围和等效物的限制。

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