一种梯度传输的方法及分布式训练系统与流程

文档序号:17994896发布日期:2019-06-22 01:06阅读:244来源:国知局
一种梯度传输的方法及分布式训练系统与流程

本申请实施例涉及信息技术领域,尤其涉及一种梯度传输的方法及分布式训练系统。



背景技术:

目前,人工智能(artificialintelligence,ai)受到广泛关注,其核心技术在各个领域取得重大突破,ai的核心技术之一就是深度学习,深度学习是一种基于神经网络模型的机器学习技术。神经网络模型包括多层神经元,每层神经元对应至少一个权重。神经网络模型经过多次迭代才能正常使用,神经网络模型的迭代可以为:根据海量的训练数据确定出最优的权重,使神经网络模型的预测结果与先验知识的差值最小。

在对神经网络模型的迭代中,为提高训练效率,可以采用多个训练设备进行分布式训练。在多个训练设备对神经网络模型的一次迭代中,针对任一权重,多个训练设备计算出的该权重的梯度可能是不同的,多个训练设备需要将计算出的各个权重的梯度进行传输,以便确定梯度均值。多个训练设备采用梯度均值对权重进行更新,针对任一权重,多个训练设备更新后的权重是相同的。各个训练设备在对各层神经元对应的权重进行更新后,分别使用更新后的各层神经元对应的权重对神经网络模型进行下一次迭代。

多个训练设备在一次迭代的过程中,如何对多个训练设备得到的梯度进行同步对训练效率的影响较大。



技术实现要素:

本申请实施例提供一种梯度传输的方法,用以提升训练过程中生成的梯度在神经网络模型间同步的效率。

第一方面,本发明提供了一种梯度传输的方法,在神经网络模型的分布式训练系统中,包括多个神经网络模型,每个神经网络模型包括n层神经元,每层神经元对应至少一个权重,其中,n为正整数,多个神经网络模型同时进行一次迭代,多个神经网络模型中的每个神经网络模型在进行一次迭代时,过程类似。以分布式训练系统中的任一神经网络模型为例进行说明。

神经网络模型在一次迭代中,首先,可以输入训练数据,根据输入的训练数据,获取该神经网络模型的第i层神经元对应的权重的梯度,其中,i为不大于n的正整数;将该神经网络模型的第i层神经元对应的权重的梯度发送至该神经网络模型的梯度缓存区。在将梯度发送至梯度缓存区后,可以判断该神经网络模型的梯度缓存区内存储的梯度的数量是否超过确定出的传输阈值;然后根据判断结果,将该神经网络模型的梯度缓存区内存储的梯度发送至梯度收集模块,在发送完后,梯度缓存区就没有梯度了;一般,当梯度缓存区内存储的梯度的数量超过确定出的传输阈值后,将梯度缓存区内存储的梯度发送至梯度收集模块。多个神经网络模型均将梯度发送至梯度搜集模块,则梯度搜集模块中存储有多个神经网络模型发送的梯度,进一步地,获取根据该梯度收集模块内存储的该多个神经网络模型发送的梯度得到的该神经网络模型的第i层神经元对应的权重的梯度均值;最后,根据该神经网络模型的第i层神经元对应的权重的梯度均值更新该神经网络模型的第i层神经元对应的权重,以执行该神经网络模型的下一次迭代。

通过设置传输阈值,将存储的梯度的数量与传输阈值进行比较,确定是否将梯度进行传输,并且还根据多个神经网络模型的梯度,确定梯度均值,采用梯度均值对权重值进行更新,不仅实现了梯度的传输,也提高分布式训练的训练效率。此外,根据神经网络模型确定传输阈值,不同的神经网络模型采用不同的传输阈值,避免了因传输阈值和神经网络模型不匹配而导致的传输效率的损失,进一步提高分布式训练的训练效率。

结合第一方面,在第一方面的第一种可能的实现方式中,在判断神经网络模型的梯度缓存区内存储的梯度的数量是否超过确定出的传输阈值前,可以确定传输阈值集合,传输阈值集合中有m个备选传输阈值,通过m次迭代获取传输阈值集合中m个备选传输阈值中每一个备选传输阈值对应的传输时长;然后根据该m个传输时长,确定出该传输阈值。

进一步地,可以预先确定包括至少两个备选传输阈值的阈值集合,在分布式训练系统的迭代的过程中,在至少两个备选传输阈值中确定传输阈值,以实现传输效率的最大化。

结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,在根据该m个传输时长,确定出该传输阈值时,可以是选择该m个传输时长中最短的传输时长对应的备选传输阈值作为该传输阈值。

进一步地,可以将最短传输时长对应的备选传输阈值作为最终的传输阈值,以实现快速传输,提高分布式训练的效率。

结合第一方面的第一或第二种可能的实现方式,在第一方面的第三种可能的实现方式中,每个备选传输阈值均不小于该神经网络模型的任一层神经元对应的权重的个数。

第二方面,本发明提供了一种分布式训练系统,该分布式训练系统具有实现上述第一方面和第一方面的任一种可能的实现中的方法的功能模块。该功能模块可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的模块。

该分布式训练系统包括多个神经网络模型和多个传输模块,该神经网络模型和该传输模块一一对应,每个神经网络模型包括n层神经元,每层神经元对应至少一个权重,其中,n为正整数。

该神经网络模型,用于在一次迭代中,根据输入的训练数据,获取该神经网络模型的第i层神经元对应的权重的梯度,其中,i为不大于n的正整数;将该神经网络模型的第i层神经元对应的权重的梯度发送至该神经网络模型的梯度缓存区;

该传输模块,用于判断该神经网络模型的梯度缓存区内存储的梯度的数量是否超过确定出的传输阈值;根据判断结果,将该神经网络模型的梯度缓存区内存储的梯度发送至梯度收集模块;

该神经网络模型,还用于获取根据该梯度收集模块内存储的该多个神经网络模型发送的梯度得到的该神经网络模型的第i层神经元对应的权重的梯度均值;根据该神经网络模型的第i层神经元对应的权重的梯度均值更新该神经网络模型的第i层神经元对应的权重,以执行该神经网络模型的下一次迭代。

通过设置传输阈值,将存储的梯度的数量与传输阈值进行比较,确定是否将梯度进行传输,并且还根据多个神经网络模型的梯度,确定梯度均值,采用梯度均值对权重值进行更新,不仅实现了梯度的传输,也提高分布式训练的训练效率。此外,根据神经网络模型确定传输阈值,不同的神经网络模型采用不同的传输阈值,避免了因传输阈值和神经网络模型不匹配而导致的传输效率的损失,进一步提高分布式训练的训练效率。

结合第二方面,在第二方面的第一种可能的实现方式中,该传输模块,还用于通过m次迭代获取传输阈值集合中m个备选传输阈值中每一个备选传输阈值对应的传输时长;根据该m个传输时长,确定出该传输阈值,并触发该传输模块执行判断神经网络模型的梯度缓存区内存储的梯度的数量是否超过确定出的传输阈值的步骤。

进一步地,可以预先确定包括至少两个备选传输阈值的阈值集合,在分布式训练系统的迭代的过程中,在至少两个备选传输阈值中确定传输阈值,以实现传输效率的最大化。

结合第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,该传输模块用于根据该m个传输时长,确定出该传输阈值时,具体用于:选择该m个传输时长中最短的传输时长对应的备选传输阈值作为该传输阈值。

进一步地,可以将最短传输时长对应的备选传输阈值作为的传输阈值,以实现快速传输,提高分布式训练的效率。

结合第二方面的第一或第二种可能的实现方式,在第二方面的第三种可能的实现方式中,每个备选传输阈值均不小于该神经网络模型的任一层神经元对应的权重的个数。

第三方面,本发明提供了一种分布式训练系统,该分布式训练系统包括至少一个训练设备,每个训练设备包括:处理器和存储器。该存储器,用于存储计算机指令;该处理器,用于执行该存储器中的计算机指令,以实现上述第一方面和第一方面的任一种可能的实现中该的方法。

第四方面,本发明提供一种非易失性计算机可读存储介质,该存储介质中存储有计算机指令,该计算机指令用于由处理器执行以实现上述第一方面和第一方面的任一可能的实现中各种的方法。

第五方面,本发明提供一种计算机程序产品,当计算机读取并执行该计算机程序产品时,使得计算机执行上述第一方面和第一方面的任一可能的实现中该的方法。

第六方面,本发明提供一种芯片,该芯片与存储器耦合,用于读取并执行该存储器中存储的软件程序,以实现上述第一方面和第一方面的任一可能的实现中该的方法。

附图说明

图1a为本申请实施例中提供的一种神经网络模型示意图;

图1b为本申请实施例中提供的一种分布式训练系统示意图;

图1c为本申请实施例中提供的一种去中心化的分布式训练系统示意图;

图2a为本申请实施例中提供的一种迭代过程示意图;

图2b为本申请实施例中提供的一种梯度传输的过程示意图;

图3为本申请实施例中提供的一种确定传输阈值的过程示意图;

图4为本申请实施例中提供的一种确定阈值集合的过程示意图;

图5为本申请实施例中提供的一种分布式训练系统示意图。

具体实施方式

下面将结合附图,对本申请实施例进行详细描述。

为了便于理解本方案,首先对神经网络模型进行介绍。应理解,神经网络模型是一种模仿动物神经网络行为特征的网络模型,这种网络模型依靠其复杂程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的。

训练神经网络的过程也就是对神经元对应的权重进行学习的过程,其最终目的是得到训练好的神经网络模型的每一层神经元对应的权重。

下面结合图1a,对应用于本申请实施例的一种可能的神经网络模型的训练过程进行详细描述。

图1a是本申请实施例提供的一种神经网络模型100的示意性框图。神经网络模型100包括n层神经元,n层神经元中的每一层包括一个或者多个神经元,每一层的所有神经元与下一层的所有神经元连接。以图1a中的神经网络模型100为例进行说明,参考图1a第1层包括两个神经元、第2至n-1层中的每一层均包括三个神经元、第n层包括一个神经元,其中,n为不小于2的正整数,图1a中的i为不大于n且不小于1的正整数。每个神经元具有对应的权重。

下面对神经网络模型100训练过程中的一次迭代进行详细描述。

从训练数据集中获取训练数据,将训练数据作为神经网络模型100的第1层的输入,第一层的输入经过第1至第n层中的多个神经元之后,从第n层输出一个预测结果。具体地,每一层神经元均具有对应的权重。将训练数据输入第一层神经元,第一层神经元基于对应的权重输出第一层神经元的输出值。以第一层神经元的输出值作为第二层神经元的输入,第二层神经元基于对应的权重输出第二层神经元的输出值。同理,以此类推,最终从第n层输出一个预测结果。

在训练神经网络模型100的过程中,希望神经网络模型100的第n层输出的预测结果尽可能的接近训练数据的先验知识(priorknowledge),先验知识也被称为真实值(groundtruth),一般包括由人提供的训练数据对应的真实结果。所以可以通过比较当前的预测结果和先验知识,再根据两者之间的差异情况来更新神经网络模型100中每一层神经元对应的权重(当然,在第一次更新之前通常会有初始化的过程,即为初始化神经网络模型100中各层神经元对应的权重)。因此,得到第n层输出的预测结果后,采用误差算法,根据预测结果和先验知识修正神经元对应的权重,具体如下。

根据预测结果和先验知识计算损失函数,根据损失函数,沿着第n层至第1层的方向,修正神经网络模型100中每一层神经元对应的权重。可通过计算出每一个权重对应的梯度来对权重进行修正,该梯度由损失函数得到,该梯度可以通过损失函数对权重求导数获得。

根据预测结果和先验知识修正权重包括,根据预测结果和先验知识计算损失函数,根据损失函数,沿着第n层至第1层的方向计算每层神经元对应的权重的梯度。换句话说,各层神经元对应的权重的梯度的计算是按照从第n层到第1层的顺序逐层进行的,计算完第i层神经元对应的权重的梯度后,开始计算第i-1层神经元对应的权重的梯度。得到每层神经元对应的权重的梯度后,根据各梯度对各层神经元对应的权重进行修正,完成一次迭代。

在多次迭代的过程中,各层神经元对应的权重不断地得到修正,从而实现神经网络模型100输出的预测结果尽可能的接近训练数据的先验知识。

本申请中的梯度传输方法应用于神经网络模型的分布式训练系统。分布式训练系统包括多个训练设备。每个训练设备上部署有相同的神经网络模型,各训练设备分别获取训练数据集中的不同训练数据进行训练。经过若干次迭代后,所述多个训练设备得到多个相同的训练后的神经网络模型,任一训练设备上的训练后的神经网络模型即为完成分布式训练的神经网络模型。

除此之外,每个训练设备还包括传输模块。以图1b中的分布式训练系统200为例说明分布式训练的过程。示例性地,本发明实施例中仅绘制出分布式训练系统200中的训练设备210和训练设备220,实际的训练设备的数量可以更多。

分布式训练的一次迭代中,每个训练设备均从训练数据集中获取训练数据,各训练设备对应的训练数据不同。各训练设备分别将训练数据输入对应训练设备上的神经网络模型,例如,训练设备210将获取的训练数据输入训练设备210上的神经网络模型211,训练设备220将获取的训练数据输入训练设备220上的神经网络模型221。各神经网络模型分别获得针对输入的训练数据的预测结果,并基于预测结果和先验知识计算得出的各层神经元对应的权重的梯度。由于输入每个神经网络模型的训练数据不同,一次迭代中,每个神经网络模型计算得出的梯度不同。也就是说,如图1b所示的分布式训练系统200中,在一次迭代中,输入神经网络模型211与神经网络模型221的训练数据不同,那么,基于不同的训练数据,神经网络模型211所得的梯度与神经网络模型221所得的梯度不同。若根据神经网络模型211所得的梯度来调整神经网络模型211中各层神经元对应的权重,根据神经网络模型221所得的梯度来调整神经网络模型221中各层神经元对应的权重,若干次迭代后,训练后的神经网络模型211中各层神经元对应的权重与神经网络模型221中各层神经元对应的权重不同,训练后的神经网络模型211与神经网络模型221互不相同。

因此,在每次迭代的过程中,各神经网络模型得到权重的梯度后,先将权重的梯度发送至各自对应的梯度缓存区进行存储,当各训练设备中的传输模块确定梯度缓存区中存储的梯度的数量大于传输阈值时,对应的传输模块需对权重的梯度进行传输。具体地,训练设备210中的传输模块212将权重的梯度发送至梯度收集模块230,训练设备220中的传输模块222将权重的梯度发送至梯度收集模块230。梯度收集模块中存储有每个梯度缓冲区中的梯度。根据梯度收集模块中存储的各神经网络模型的梯度缓冲区中的梯度计算权重的梯度均值。每个神经网络模型根据梯度均值计算更新对应的权重。可选地,对各神经网络模型所得的权重的梯度做平均得到该权重的梯度均值,也可对各神经网络模型所得的权重的梯度做加权平均得到该权重的梯度均值,也可以对各神经网络模型所得的权重的梯度做其他处理以生成该权重的梯度均值。

分布式训练系统200中的各训练设备可以是中心化部署的,也可以是去中心化部署的。若各训练设备为中心化部署的,梯度收集模块独立于多个训练设备,或者梯度收集模块部署在多个训练设备中的一个上。各训练设备均将所得的梯度传输至该梯度收集模块。若各训练设备为去中心化部署的,每个训练设备上均部署有梯度收集模块。图1b中绘制出的分布式训练系统200为中心化部署,且梯度收集模块230独立于训练设备210和训练设备220。去中心化部署的分布式训练系统200如图1c所示,训练设备210上部署有梯度收集模块2301,和训练设备220上部署有梯度收集模块2302。

采用分布式训练系统对神经网络模型进行训练时,分布式训练系统中的多个训练设备并行执行训练神经网络模型的步骤。下面结合图2a,以分布式训练系统中的一个训练设备为例,介绍分布式训练系统对神经网络模型训练的过程。

步骤21:从训练数据集种获取训练数据,将获取的训练数据输入神经网络模型;根据神经网络模型中各层神经元对应的权重,得到针对输入的训练数据的预测结果。

在首次迭代的过程中,每层神经元对应的权重是初始化过程确定的,初始化过程是为每个神经网络模型设置每层神经元对应的权重的过程。

步骤22:获取该训练数据的先验知识,根据该训练数据的预测结果和先验知识,计算损失函数。

步骤23:获取传输阈值,根据损失函数计算各层神经元对应的权重的梯度,并根据传输阈值传输各层神经元对应的权重的梯度。

在根据损失函数计算各层神经元对应的权重的梯度时,需要按照最后一层神经元(第n层神经元)至第一层神经元的顺序依次计算每层神经元对应的权重的梯度。

由于需要计算权重的梯度均值,因此,计算完各层神经元对应的权重的梯度之后,需传输各层神经元对应的权重的梯度。传输各层神经元对应的权重的梯度即将梯度发送至梯度收集模块,使得梯度收集模块计算权重的梯度均值。传输梯度时,可以是计算完所有层神经元对应的权重的梯度后,将所有层神经元对应的权重的梯度进行传输。梯度的传输需要时间,为了提高效率,可以在计算出若干层神经元对应的权重的梯度后,将计算出的梯度进行传输,该计算出的梯度在传输的过程中即可以开始计算前一层(以第1层为最前的一层为例)神经元对应的权重的梯度,降低了下一次迭代开始前需要等待梯度的传输而导致的时延。具体地,每计算完一层神经元对应的权重的梯度,即将该梯度缓存至训练设备上的梯度缓冲区;设置传输阈值,将梯度缓冲区中缓存的梯度的数量与传输阈值进行比较,梯度缓冲区中缓存的梯度的数量超过传输阈值后启动一次传输。

传输阈值的设置是提高训练效率的关键。不同的神经网络模型对应的传输阈值不同。由于一次传输的启动需要时间,而过小的传输阈值会造成传输频繁地启动,因此,过小的传输阈值无法有效地缩小传输带来的时延;当神经网络模型中各层神经元对应的权重的总个数较小,过大的传输阈值无法有效地提高传输的效率。因此,需根据神经网络模型确定该神经网络模型采用的传输阈值,不同的神经网络模型确定出的传输阈值不同。可选地,根据神经网络模型各层神经元对应的权重的总个数来确定传输阈值。根据神经网络模型确定传输阈值的具体过程后续进行描述。

步骤23中根据损失函数计算各层神经元对应的权重的梯度,并根据传输阈值传输各层神经元对应的权重的梯度的具体过程可参见步骤231至步骤236的描述。

步骤24:针对各层神经元对应的权重中的每个权重,梯度收集模块计算的该权重的梯度均值。

步骤25:获取每个权重对应的梯度均值,采用梯度均值对对应权重进行更新。

经过上述的步骤21-步骤25,训练设备完成一次迭代,在训练数据集中获取新的训练数据,基于更新后的权重进行下一次迭代。每个训练设备均按照步骤21-25,采用不同的训练数据完成一次迭代。在进行权重更新后,每个训练设备更新后的权重是相同的,多个训练设备就可以对神经网络模型进行下一次迭代,直至步骤22中计算出的损失函数符合设定的条件,则认为训练好了该神经网络模型。

以下详细说明一次迭代中步骤23中根据损失函数计算每层神经元对应的权重的梯度,并根据传输阈值传输每层神经元对应的权重的梯度的具体过程,具体参见图2b:

步骤231:计算当前层神经元对应的每个权重的梯度,在计算出每个权重的梯度后,将计算出的梯度发送至梯度缓存区进行缓存。

神经网络模型中包括n层神经元,以第i层神经元作为当前层神经元,i为不大于n的正整数。一次迭代中按第n层神经元至第1层神经元的顺序依次计算每一层的神经元对应的权重对应的梯度,即i的初始值为n。

每计算出一个权重的梯度后,可以对该梯度进行缓存。

步骤232:确定是否完成神经网络模型的所有层神经元对应的权重的梯度的计算。确定是否完成所有层神经元对应的权重的梯度的计算的具体实施方式包括确定当前层神经元是否为神经网络模型的第一层神经元。如果当前层神经元是第i层神经元,则确定i是否为1。如果尚未完成所有层神经元对应的权重的梯度的计算,执行步骤233;如果完成了所有层神经元对应的权重的梯度的计算,直接执行步骤236,在步骤236中完成所有神经元对应的权重的梯度的传输。

步骤233:确定当前梯度缓存区存储的梯度的数量是否不小于传输阈值,如果是,则执行步骤234,对缓存的梯度进行传输;如果否,则进行步骤235,继续计算前一层神经元对应的权重的梯度。步骤233中,也可以用当前梯度缓存区存储的梯度的大小(存储容量)与传输阈值进行比较,如果当前梯度缓存区存储的梯度的大小大于传输阈值,则执行235,否则执行步骤234。

步骤234:将当前缓存的梯度发送至梯度收集模块。

步骤234还包括将当前缓存的梯度发送至梯度收集模块后,删除已经被传输至梯度收集模块的梯度,步骤234执行完后,梯度缓冲区中不存在已传输的梯度。

步骤235:以第i-1层作为当前层神经元,执行步骤231,计算前一层神经元对应的权重的梯度。此时未完成所有层神经元对应的权重的梯度的计算,也就是当前计算完成的层神经元不是第一层神经元,因此还需对当前计算完成的层神经元的前一层神经元对应的权重的梯度进行计算。

步骤236:将当前缓存的梯度发送至梯度收集模块。

此时已计算出第1层神经元对应的权重的梯度,即已完成所有层神经元对应的权重的梯度计算,需完成所有神经元对应的权重的梯度的传输。此时,梯度缓存区中仍存储有当前缓存的梯度(当前缓存的梯度包括步骤231中计算出的第1层神经元对应的权重的梯度),且此时当前缓存的梯度尚未传输,因此需要传输当前缓存的梯度,即将当前缓存的梯度发送至梯度收集模块。此时,即将当前缓存的梯度发送至梯度收集模块之前,不需要判断缓存区域中缓存的梯度的数量是否不小于传输阈值。在步骤236后,也可以删除缓存区中已经传输的梯度,完成一次迭代中所有层神经元对应的权重的梯度的计算和传输。

在本申请中,传输阈值根据神经网络模型确定,具体地,根据神经网络模型中各层神经元对应的权重的个数确定。例如,遍历神经网络模型中的每层神经元,获得每层神经元对应的权重的总个数,第i层神经元对应的权重的总个数为qi,其中,神经网络模型包括n层神经元,则i为不大于n的正整数。可以将每层神经元对应的权重的总个数中的最大值,或最小值,或中值,或平均值等作为传输阈值。

进一步地,可以预先确定包括至少两个备选传输阈值的阈值集合,在分布式训练系统的迭代的过程中,在至少两个备选传输阈值中确定传输阈值,以实现传输效率的最大化。具体的,根据神经网络模型确定阈值集合中的每个备选传输阈值的具体过程可参见图4中的步骤41-步骤44。

以下参见图3所示的在阈值集合中选取备选传输阈值的过程。阈值集合中包括m个备选传输阈值,m为不小于2的正整数。图3提供了一种实施方式,通过神经网络模型训练过程中的m次迭代的确定传输阈值。

步骤31:在第a次迭代中,将训练数据输入神经网络模型;根据神经网络模型中每层神经元对应的权重,得到针对输入的训练数据的预测结果,a的初始值为1,a的终止值为m。

此处提到的步骤31为上述的步骤21,具体过程不再进行赘述。

步骤32:根据预测结果和先验知识,计算损失函数。

此处提到的步骤32为上述的步骤22,具体过程不再进行赘述。

步骤33:在阈值集合中选取没有获取对应传输时长的备选传输阈值。

在本申请中,根据传输阈值传输每层神经元对应的权重的梯度,为了确定出最终的传输阈值,确定将阈值集合中的每个备选传输阈值对应的传输市场,备选传输阈值对应的传输时长为采用该备选传输阈值进行一次迭代时,从开始计算第n层神经元对应的权重的梯度到完成n层神经元对应的权重的梯度的传输的时长。在第a次迭代中,可以在阈值集合中选取没有获取对应传输时长的一个备选传输阈值。

步骤34:根据损失函数计算每层神经元对应的权重的梯度,并根据备选传输阈值传输每层神经元对应的权重的梯度。

此处的步骤34与前述的步骤23类似,具体过程在此不再进行赘述。

步骤35:获取该备选传输阈值对应的传输时长。

该传输时长表征该训练设备根据该备选传输设备传输各层神经元对应的权重的梯度所需要的时间。具体地,该备选传输阈值的传输时长为该训练设备从开始计算第n层神经元对应的权重的梯度至完成所有层神经元的梯度的传输所使用的传输时长。

步骤36:确定获取了阈值集合中的每个备选传输阈值对应的传输时长。

步骤37:根据每个备选传输阈值对应的传输时长,选取一个传输阈值,将选取的传输阈值作为传输阈值进行后续迭代,根据传输阈值进行迭代的过程可参见前面的描述。

具体的,可以选择传输时长最短的备选传输阈值作为传输阈值用于后续的训练中。

需要说明的是,在确定阈值集合中的多个备选传输阈值时,可以是每个训练设备分别根据神经网络模型确定的备选传输阈值;也可以是某个或某几个训练设备根据神经网络模型确定备选传输阈值,并将确定的备选传输阈值分发给其他的训练设备;还可以是管理设备根据神经网络模型确定备选传输阈值,并将确定的备选传输阈值分发给每个训练设备。

上述的步骤33与步骤31的先后顺序在本申请中不进行限定,步骤33与步骤32的先后顺序在本申请中也不进行限定。

以下以图4为例,详细说明确定阈值集合中的每个备选传输阈值的具体过程:

步骤41、遍历神经网络模型中的每个层神经元,每层神经元对应的权重的总个数,第i层神经元对应的权重的总个数为qi,并计算出神经网络模型中的权重的总数量s,神经网络模型中的权重的总数量为s,其中,神经网络模型包括n层神经元,i为不大于n的正整数。

步骤42、对每层神经元对应的权重的总个数qi至qn进行去重处理,将去重后得到的每个总个数确定为阈值集合中的每个备选传输阈值。

步骤43、向阈值集合中添加k个备选传输阈值。

为了找出能够体现分布式训练的性能的传输阈值,还可以在阈值集合中添加一些备选传输阈值,添加的备选传输阈值的个数k可以预先设定,例如设定k为5、10、15等。

上述的步骤42和步骤43的先后顺序不限。

在一种可实施的方式中,添加的备选传输阈值的个数k可以根据以下公式确定:

其中,s为神经网络模型中的权重的总数量,qmax为神经网络模型中各层神经元对应的权重的总个数中的最大值,x为常数,x可以是8、10、15,采用上述公式确定k的值,意在表示在步骤42中确定出的阈值集合中添加至少x个备选传输阈值。

在阈值集合中添加的k个备选传输阈值可以是在设定的取值范围内随机生成的。一般为了适应方案的需要,阈值集合中的每个备选传输阈值符合一定的取值范围。为了避免在每计算出一层神经元对应的权重的梯度,就将该层神经元对应的权重的梯度进行传输,而带来的建立通信次数多的问题,备选传输阈值的取值可以不小于qmin,qmin为神经网络模型中各层神经元对应的权重的总个数中的最小值;为了避免在计算出所有层神经元对应的权重的梯度后,才将计算的所有层神经元对应的权重的梯度进行传输,而带来的训练时间长的问题,阈值的取值范围可以不大于神经网络模型中的权重的总数量s。因此添加的k个阈值可以是在[qmin,s]取值范围内随机选取k个备选传输阈值添加到阈值集合中。

为了使阈值集合中的备选传输阈值更加均匀,以及弥补qmax与总数量s的搜索空白区间,在一种可实施的方式中,添加的k个备选传输阈值可以根据以下公式确定:

pj=qmax+(i+1)*(s-qmax)/k,i∈[0,k),pi为在阈值集合添加的任一备选传输阈值。

根据上述公式确定k个备选传输阈值的过程可以为:将神经网络模型的权重的总数量s与神经网络模型各层神经元分别对应的权重的总个数qi中最大值qmax的差值与k的商,确定为目标步长值;将总个数的最大值qmax和目标步长值的和,作为基数;以所述基数作为添加的首个备选传输阈值,并采用在上一次新确定出的备选传输阈值基础上,增加目标步长值作为本次新确定出的备选传输阈值的方式,确定阈值集合中添加的k个备选传输阈值。

步骤44、针对阈值集合中的每个备选传输阈值,确定该备选传输阈值是否小于预设值,如果是,则将该备选传输阈值从所述阈值集合中滤除。

为了合理利用传输资源,以及缩小搜索空间,还可以将较小的备选传输阈值剔除掉,即将小于预设值的备选传输阈值从阈值集合中滤除,预设值可以是s/1000。

上述的步骤44可在步骤43和/或步骤42之前或之后进行,也可以与步骤42和/或步骤43同时进行。总的来说,进行备选传输阈值滤除判断的步骤,可在确定出一个备选传输阈值后就进行一次滤除判断,也可以是在确定出一部分,或全部的备选传输阈值后进行滤除判断,步骤44与用于确定备选传输阈值的其他步骤的先后顺序在本申请中不进行具体限定。

通过上述的步骤41-步骤44,确定出了阈值集合中的每个备选传输阈值。

基于与上述的梯度传输方法的同一发明构思,本申请实施例还提供了一种分布式训练系统,所述分布式训练系统包括多个神经网络模型和多个传输模块;该神经网络模型具体为图1b中的神经网络模型211或221,该传输模块具体为图1b中的传输模块212或222。

所述神经网络模型,用于在一次迭代中,根据输入的训练数据,获取所述神经网络模型的第i层神经元对应的权重的梯度,其中,i为不大于n的正整数;

所述传输模块,用于将所述神经网络模型的第i层神经元对应的权重的梯度发送至所述神经网络模型的梯度缓存区;判断所述神经网络模型的梯度缓存区内存储的梯度的数量是否超过确定出的传输阈值;根据判断结果,将所述神经网络模型的梯度缓存区内存储的梯度发送至梯度收集模块;

所述神经网络模型,还用于获取根据所述梯度收集模块内存储的所述多个神经网络模型发送的梯度得到的所述神经网络模型的第i层神经元对应的权重的梯度均值;根据所述神经网络模型的第i层神经元对应的权重的梯度均值更新所述神经网络模型的第i层神经元对应的权重,以执行所述神经网络模型的下一次迭代。

示例的,所述神经网络模型,还用于通过m次迭代获取传输阈值集合中m个备选传输阈值中每一个备选传输阈值对应的传输时长;根据所述m个传输时长,确定出所述传输阈值,并触发所述传输模块执行判断神经网络模型的梯度缓存区内存储的梯度的数量是否超过确定出的传输阈值的步骤。

示例的,所述神经网络模型,用于根据所述m个传输时长,确定出所述传输阈值时,具体用于:选择所述m个传输时长中最短的传输时长对应的备选传输阈值作为所述传输阈值。

示例的,所述m个备选传输阈值均不小于n个总个数中的最小值,所述n个总个数中的一个总个数为所述神经网络模型的n层神经元中的一层神经元对应的权重的总个数。

基于与上述的梯度传输的方法的同一发明构思,如图5所示,本申请实施例还提供了一种分布式训练系统500,所述分布式训练系统包括多个至少一个训练设备,每个训练设备中包括n层神经元,每层神经元对应至少一个权重,其中,n为正整数,训练设备中包括处理器和存储器。示例性地,图5中仅绘制出分布式训练系统500中的三个训练设备。如图5所示,分布式训练系统中包括训练设备50、训练设备51和训练设备52,每个训练设备均包括:处理器和存储器。训练设备50包括处理器501和存储器502,训练设备51包括处理器511和存储器512。训练设备52包括处理器521和存储器522。分布式训练系统500中的训练设备上的存储器用于存储计算机指令,训练设备上的处理器执行存储器中的计算机指令,以实现上述中心化的分布式训练系统200中的设备及模块,或者上述去中心化的分布式训练系统200中的设备即模块。具体地,处理器501和处理器511用于实现如图1b中的分布式训练系统200中的神经网络模型211和传输模块212,且神经网络模型211中的梯度缓存区由存储器502和存储器512实现;如图1b中的分布式训练系统200中的梯度收集模块230由处理器521实现,此时,分布式训练系统500是中心化的。在去中心化的分布式训练系统500中,处理器501、处理器511和处理器521均用于实现如图1c中的分布式训练系统200中的神经网络模型211、传输模块212和梯度收集模块2301,且神经网络模型211中的梯度缓存区由存储器502、存储器512和存储器522实现。

分布式训练系统500中的计算设备还可以包括通信接口。例如,计算设备50包括通信接口503,计算设备51包括通信接口513。计算设备通过其上通信接口实现通信。

处理器可以是中央处理器(centralprocessingunit,cpu),网络处理器(networkprocessor,np)、或者图像处理器(graphicprocessingunit,gpu),或者三者的任意组合。

处理器还可以进一步包括硬件芯片或其他通用处理器。上述硬件芯片可以是专用集成电路(application-specificintegratedcircuit,asic),可编程逻辑器件(programmablelogicdevice,pld)或其组合。上述pld可以是复杂可编程逻辑器件(complexprogrammablelogicdevice,cpld),现场可编程逻辑门阵列(field-programmablegatearray,fpga),通用阵列逻辑(genericarraylogic,gal)及其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等或其任意组合。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

还应理解,本申请实施例中提及的存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-onlymemory,rom)、可编程只读存储器(programmablerom,prom)、可擦除可编程只读存储器(erasableprom,eprom)、电可擦除可编程只读存储器(electricallyeprom,eeprom)或闪存。易失性存储器可以是随机存取存储器(randomaccessmemory,ram),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的ram可用,例如静态随机存取存储器(staticram,sram)、动态随机存取存储器(dynamicram,dram)、同步动态随机存取存储器(synchronousdram,sdram)、双倍数据速率同步动态随机存取存储器(doubledataratesdram,ddrsdram)、增强型同步动态随机存取存储器(enhancedsdram,esdram)、同步连接动态随机存取存储器(synchlinkdram,sldram)和直接内存总线随机存取存储器(directrambusram,drram)。应注意,本申请描述的存储器旨在包括但不限于这些和任意其它适合类型的存储器。

本申请中的“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。

本申请中所涉及的多个,是指两个或两个以上。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包括有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。

显然,本领域的技术人员可以对本申请实施例进行各种改动和变型而不脱离本申请实施例的精神和范围。这样,倘若本申请实施例的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包括这些改动和变型在内。

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