CN113646776A - 在机器学习模型训练中使用滞后梯度 - Google Patents
在机器学习模型训练中使用滞后梯度 Download PDFInfo
- Publication number
- CN113646776A CN113646776A CN201980094690.2A CN201980094690A CN113646776A CN 113646776 A CN113646776 A CN 113646776A CN 201980094690 A CN201980094690 A CN 201980094690A CN 113646776 A CN113646776 A CN 113646776A
- Authority
- CN
- China
- Prior art keywords
- gradient
- gradients
- compute node
- neural network
- sets
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/044—Recurrent networks, e.g. Hopfield networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/048—Activation functions
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Evolutionary Computation (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Neurology (AREA)
- General Factory Administration (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Image Analysis (AREA)
Abstract
一种用于对神经网络模型进行分布式同步训练的计算机实现方法包括:检测来自对应的多个计算节点机器的多个梯度集合,其中每个所述计算节点机器在训练数据集的当前迭代中生成所述多个梯度集合中的对应的梯度集合,且所述多个梯度集合中的每个梯度集合包括多个梯度;检测来自另一计算节点机器的滞后梯度集合,其中所述滞后梯度集合由所述另一计算节点机器在所述训练数据集的先前迭代中生成;基于所述多个梯度集合和所述滞后梯度集合生成聚合梯度;以及基于所述聚合梯度更新所述神经网络模型。
Description
技术领域
本发明涉及机器学习模型训练。更具体地,本发明涉及在机器学习模型训练中使用滞后梯度,包括在分布式同步训练架构中使用滞后梯度。
背景技术
随着深度神经网络(deep neural network,DNN)的成功应用,对网络规模和数据量的要求快速增长。因此,对这些网络的有效训练,特别是在分布式训练环境中的训练,尤为重要。
在DNN的分布式同步训练环境中,神经网络模型训练过程中的梯度聚合在慢速计算节点机器上遭遇瓶颈。在更新所述模型之前,参数服务器必须等待,直到接收到来自所有计算节点的梯度。添加备份计算节点可以避免等待每次迭代中来自慢速计算节点的梯度,并且可以加快对更新的梯度的计算。但是,来自备份计算节点的滞后梯度会被丢弃,这可能会浪费在其他地方可以利用的计算资源。
发明内容
本文描述了各种示例,以简化的形式介绍概念的选择,下文在具体实施方式中会进一步描述这些概念。发明内容并非旨在识别所要求保护的标的物的关键或实质特征,也非旨在限制所要求保护的标的物的范围。
根据本发明的第一方面,提供了一种用于对神经网络模型进行分布式同步训练的计算机实现方法。所述方法包括:检测来自对应的多个计算节点机器的多个梯度集合,其中每个所述计算节点机器在训练数据集的当前迭代中生成所述多个梯度集合中的梯度集合,且所述多个梯度集合中的每个梯度集合包括多个梯度;检测来自另一计算节点机器的滞后梯度集合,其中所述滞后梯度集合由所述至少另一计算节点机器在所述训练数据集的先前迭代中生成;通过基于所述多个梯度集合和所述滞后梯度集合进行梯度聚合,生成聚合梯度;以及基于所述聚合梯度更新所述神经网络模型。
在根据所述第一方面所述的方法的第一种实现方式中,对所述聚合梯度进行平均,以生成平均梯度集合,且利用所述平均梯度集合更新所述神经网络模型的多个权重。
在根据所述第一方面或所述第一方面的上述实现方式所述的方法的第二种实现方式中,确定所述滞后梯度集合的权重,且基于所述权重利用所述多个梯度集合和所述滞后梯度集合的加权版本进行所述梯度聚合。
在根据所述第一方面或所述第一方面的上述实现方式中任一项所述的方法的第三种实现方式中,基于所述当前迭代的索引和所述先前迭代的索引确定所述权重。
在根据所述第一方面或所述第一方面的上述实现方式中任一项所述的方法的第四种实现方式中,所述权重为1/(1+Δ),其中Δ是所述当前迭代的所述索引和所述先前迭代的所述索引之间的差值。
在根据所述第一方面或所述第一方面的上述实现方式中任一项所述的方法的第五种实现方式中,所述权重为1/aΔ,其中Δ是所述当前迭代的所述索引和所述先前迭代的所述索引之间的差值,a是大于1的整数。
在根据所述第一方面或所述第一方面的上述实现方式中任一项所述的方法的第六种实现方式中,当从中接收到所述多个梯度集合中的梯度集合的所述多个计算节点机器中的计算节点机器的数量达到阈值数量时,进行所述梯度聚合。
在根据所述第一方面或所述第一方面的上述实现方式中任一项所述的方法的第七种实现方式中,所述更新所述神经网络模型包括:基于所述聚合梯度更新所述神经网络模型内的多个权重和偏置。
在根据所述第一方面或所述第一方面的上述实现方式中任一项所述的方法的第八种实现方式中,在所述多个计算节点机器中的每个计算节点机器在所述当前迭代期间完成前向计算和后向计算操作之后,通过推送操作接收来自所述对应的多个计算节点机器的所述多个梯度集合。
根据本发明的第二方面,提供一种用于训练神经网络模型的分布式同步训练系统,包括:存储有指令的存储器,以及一个或多个与所述存储器进行通信的处理器。所述一个或多个处理器执行所述指令,以执行以下步骤:检测来自对应的多个计算节点机器的多个梯度集合,其中每个所述计算节点机器在训练数据集的当前迭代中生成所述多个梯度集合中的梯度集合,且所述多个梯度集合中的每个梯度集合包括多个梯度;检测来自另一计算节点机器的滞后梯度集合,其中所述滞后梯度集合由所述另一计算节点机器在所述训练数据集的先前迭代中生成;通过基于所述多个梯度集合和所述滞后梯度集合进行梯度聚合,生成聚合梯度;以及基于所述聚合梯度更新所述神经网络模型。
在根据所述第二方面所述的分布式同步训练系统的第一种实现方式中,对所述聚合梯度进行平均,以生成平均梯度集合,且利用所述平均梯度集合更新所述神经网络模型的多个权重。
在根据所述第二方面或所述第二方面的上述实现方式所述的分布式同步训练系统的第二种实现方式中,确定所述滞后梯度的权重,且基于所述权重利用所述多个梯度集合和所述滞后梯度集合的加权版本进行所述梯度聚合。
在根据所述第二方面或所述第二方面的上述实现方式中任一项所述的分布式同步训练系统的第三种实现方式中,基于所述当前迭代的索引和所述先前迭代的索引确定所述权重。
在根据所述第二方面或所述第二方面的上述实现方式中任一项所述的分布式同步训练系统的第四种实现方式中,所述权重为1/(1+Δ),其中Δ是所述当前迭代的所述索引和所述先前迭代的所述索引之间的差值。
在根据所述第二方面或所述第二方面的上述实现方式中任一项所述的分布式同步训练系统的第五种实现方式中,所述权重为1/aΔ,其中Δ是所述当前迭代的所述索引和所述先前迭代的所述索引之间的差值,a是大于1的整数。
在根据所述第二方面或所述第二方面的上述实现方式中任一项所述的分布式同步训练系统的第六种实现方式中,当所述检测到的多个梯度集合的数量达到阈值数量时,进行所述梯度聚合。
在根据所述第二方面或所述第二方面的上述实现方式中任一项所述的分布式同步训练系统的第七种实现方式中,为了更新所述神经网络模型,所述一个或多个处理器执行所述指令,以执行以下步骤:基于所述聚合梯度更新所述神经网络模型内的多个权重和偏置。
根据本发明的第三方面,提供一种存储有用于训练神经网络模型的指令的非瞬时性计算机可读介质,其中,在由一个或多个处理器执行时,所述指令使所述一个或多个处理器执行以下操作。所述操作包括:检测来自对应的多个计算节点机器的多个梯度集合,其中每个所述计算节点机器在训练数据集的当前迭代中生成所述多个梯度集合中的梯度集合,且所述多个梯度集合中的每个梯度集合包括多个梯度;检测来自另一计算节点机器的滞后梯度集合,其中所述滞后梯度集合由所述另一计算节点机器在所述训练数据集的先前迭代中生成;通过基于所述多个梯度集合和所述滞后梯度集合进行梯度聚合,生成聚合梯度;以及基于所述聚合梯度更新所述神经网络模型。
在根据所述第三方面所述的非瞬时性计算机可读介质的第一种实现方式中,对所述聚合梯度进行平均,以生成平均梯度集合,且利用所述平均梯度集合更新所述神经网络模型的多个权重。
在根据所述第三方面或所述第三方面的上述实现方式所述的非瞬时性计算机可读介质的第二种实现方式中,确定所述滞后梯度的权重,且基于所述权重利用所述多个梯度集合和所述滞后梯度集合的加权版本进行所述梯度聚合。
上述示例中的任一个可以与上述其他示例中的一个或多个结合,以在本发明的范围内构造新的实施例。
附图说明
在所述附图中,其中所述附图不一定按照比例绘制,相同的编号可以表示不同图中相似部件。所述附图通常通过示例而非限制性地描述了本发明的各种实施例。
图1为根据某些示例实施例的利用深度学习训练架构(deep learning trainingarchitecture,DLTA)训练深度学习(deep learning,DL)程序的框图;
图2为根据某些示例实施例的利用在DLTA内训练的神经网络模型生成训练过的DL程序的图;
图3为根据某些示例实施例的利用多个及时向参数服务器上报梯度的计算节点对神经网络模型进行分布式同步训练的DLTA的图;
图4为根据某些示例实施例的能由图3所示的DLTA内的计算节点和参数服务器执行的示例处理流程的图;
图5为根据某些示例实施例的利用通过滞后梯度进行梯度聚合的参数服务器对神经网络模型进行分布式同步训练的DLTA的图;
图6为根据某些示例实施例的能由图5所示的DLTA内的参数服务器执行的方法的流程图;
图7为根据某些示例实施例的能由图5所示的DLTA内的计算节点执行的方法的流程图;
图8为与在考虑或者不考虑滞后梯度的情况下进行梯度聚合的DLTA相关联的训练损耗的图;
图9为与在考虑或者不考虑滞后梯度的情况下进行梯度聚合的DLTA相关联的验证准确度的图;
图10为根据某些示例实施例的适于在DLTA内对神经网络模型进行分布式同步训练的方法的流程图;
图11为根据某些示例实施例的可以与本文描述的各种设备硬件结合使用的代表性的软件架构的框图;以及
图12为根据某些示例实施例的用于实现算法并执行方法的设备的电路的框图。
具体实施方式
首先,应当理解的是,尽管以下描述了一个或多个实施例的说明性的实现方式,参照图1至图12描述的所公开的系统和/或方法可以使用任意数量的目前已知或者尚不存在的技术实现。本发明决不应限于下文所说明的说明性实施方案、附图和技术,包括本文所说明并描述的示例性设计和实施方案,而是可在所附权利要求书的范围以及其等效物的完整范围内修改。
以下结合附图进行详细描述,所述附图是描述的一部分,并通过图解说明的方式示出可以实施本发明的具体实施例。对这些实施例进行了足够详细的描述,以使本领域技术人员能够实现所述发明标的物。可以理解的是,可以使用其他实施例,且可以在不脱离本发明范围的情况下做出结构、逻辑以及电性变化。因此,以下描述的示例实施例并不当作限定,本发明的范围由所附权利要求书界定。
本文使用的术语“计算节点”是指作为DLTA的一部分的计算节点机器以及其他计算节点,其中所有计算节点均与DLTA的参数服务器耦合。
与机器学习网络和架构结合使用的术语“参数”和“权重”可以互换,是指机器学习模型中的变量,其中在每次迭代过程中,由某个优化算法利用通过后向计算计算出的梯度(也称为梯度集合)对所述变量的值进行更新。机器学习网络中的每个参数/权重均与梯度相关联。
本文使用的术语“梯度”表示关于参数/权重的损耗函数的衍生,其中每个计算节点机器在后向计算结束时生成多个梯度(或梯度集合)。可以在所述计算节点机器之间交换梯度,或者可以向能进行梯度聚合、平均及梯度更新(例如,梯度同步)的参数服务器转发梯度。本文使用的术语“计算节点”和“计算节点机器”是可以互换的。
本文使用的术语“前向计算”和“后向计算”指与神经网络模型(或者其他类型的模型)的训练相关的计算。在前向及后向计算时,当前迭代进行的计算基于先前迭代的结果(例如,基于计算节点机器在先前后向计算结束时生成的梯度)修改权重。在此方面,后向计算时,模型可以输出梯度(即,梯度集合),所述梯度可以用于在后续前向及后向计算时更新权重。
已知的用于配置DLTA的技术未使用滞后梯度,且该梯度被丢弃。所述术语“滞后梯度”是指计算节点在当前迭代中上报的但是是在先前迭代结束时已经被确定的梯度。在此方面,滞后梯度中的潜在信息丢失,且不能被用于在训练数据集的当前迭代期间更新神经网络模型参数或提高神经网络模型的性能。
本文公开的技术高效地使用了滞后梯度,以加速所述训练过程并提高神经网络训练性能。更具体地,当在DLTA内聚合当前迭代中的梯度时,添加来自备份计算节点的先前迭代的梯度可以有助于为更新神经网络模型参数提供更好的方向。由于所述滞后梯度包含在先前迭代期间来自慢速计算节点的关于特定优化格局的信息,DLTA的参数服务器在后续迭代中使用滞后梯度可以有助于更高效地直接对神经网络模型进行参数更新。
本发明涉及机器学习模型训练。一些方面涉及利用备份计算节点在分布式同步设置中提高训练DNN的性能。其他方面涉及在DLTA等分布式同步训练架构中使用滞后梯度。通过本文公开的技术,所述参数服务器在当前迭代中接收并使用来自慢速计算节点(即,数据处理滞后且无法在当前迭代中提供梯度的计算节点)的滞后梯度。在某些方面,在计算梯度聚合和梯度平均值时,为滞后梯度添加权重,以反映它们在当前迭代期间进行梯度聚合时的重要性。在此方面,可以通过用于加权这些梯度的权重来调整所述滞后梯度的使用粒度。通过从使用滞后梯度获得的额外信息,DLTA内的神经网络模型训练过程收敛得更快。此外,在相同的模型训练时间内,测试准确度高于现有技术的丢弃滞后梯度的方法。
图1为根据某些示例实施例的利用DLTA训练和使用DL程序110的框图100。在某些示例实施例中,利用包括DL程序的机器学习程序(machine-learning program,MLP)来执行与关联数据或其他基于人工智能(artificial intelligence,AI)的功能相关联的操作,其中所述MLP也统称为机器学习算法或工具。
如图1所述,可以在DLTA106内基于训练数据102(可以包括特征)执行DL程序训练108。在所述DL程序训练108期间,可以评估所述训练数据102中的特征,以进一步训练所述DL程序。所述DL程序训练108生成训练过的DL程序110,所述训练过的DL程序110可以包括可用于基于新数据114来提供评估116的一个或多个分类器112。
深度学习是机器学习的一部分,机器学习是使计算机能够在没有被明确编程的情况下进行学习的研究领域。机器学习探索算法的研究和构造,所述算法在这里也称为工具,这些算法可以从现有数据中学习、关联数据并对新数据进行预测。通过利用示例训练数据(例如,所述训练数据102)构造模型以运行此类机器学习工具,从而进行数据驱动的预测或决策,表示为输出或评估116。尽管结合一些机器学习工具(例如,DLTA)展示了示例实施例,但本文所提出的原则可以应用于其它机器学习工具。
在某些示例实施例中,可以使用不同的机器学习工具。例如,可在程序训练过程108(例如,为了关联所述训练数据102)中使用逻辑回归(logistic regression,LR)、朴素贝叶斯(Naive-Bayes)、随机森林(random forest,RF)、神经网络(neural network,NN)、矩阵分解和支持向量机(support vector machine,SVM)工具。
机器学习中常见的两类问题为分类问题和回归问题。分类问题,旨在将一些项划分为若干类别值中的一个(例如,这个物体是苹果还是桔子?)。回归算法旨在量化一些项(例如,提供一个实数值)。在某些实施例中,所述DLTA106可用于使用机器学习算法,所述机器学习算法利用所述训练数据102发现所识别出的影响结果的特征之间的相关性。
所述机器学习算法利用所述训练数据102中的特征来分析所述新数据114以生成所述评估116。所述特征包括正在被观察的用于训练所述ML程序的现象的可测量的个体属性。特征的概念与线性回归等统计技术中使用的解释变量的概念有关。模式识别、分类和回归中,选择信息性、区分性和独立性特征对于MLP在模式识别、分类及回归中的有效运行具有重要意义。特征可以是不同类型的,例如数值特征、字符串和图形。在某些方面,训练数据可以是不同类型的,其特征是数字的,以供计算设备使用。
在某些方面中,在DL程序训练108期间使用的所述训练数据102中的特征可以包括以下中的一个或多个:来自多个传感器(例如,音频传感器、运动传感器、图像传感器)的数据;来自多个执行器(例如,无线开关或其它执行器)的执行器事件数据;来自多个外部源的外部信息源;与传感器状态数据(例如,获取时间传感器数据)、所述执行器事件数据或所述外部信息源数据相关联的计时器数据;用户通信信息;用户数据;及用户行为数据等。
所述机器学习算法利用所述训练数据102来发现所识别的影响所述评估116的结果的特征之间的相关性。在某些示例实施例中,所述训练数据102包括标签数据,所述标签数据对于一个或多个已识别的特征和一个或多个结果而言是已知数据。通过所述训练数据102(可以包括所述识别的特征),在所述DLTA106内的操作108中对所述DL程序进行训练。训练的产物是所述训练过的DL程序110。当所述DL程序110用于执行评估时,将所述新数据114作为所述训练过的DL程序110的输入,且所述DL程序110生成所述评估116作为输出。
图2为根据某些示例实施例的使用在所述DLTA106内训练的神经网络模型204生成训练过的DL程序206的图200。参照图2,可以由所述神经网络模型204(或其它类型的机器学习算法或技术)分析源数据202以生成所述训练过的DL程序206(可以与所述训练过的DL程序110相同)。所述源数据202可以包括训练数据102等数据的训练集,所述数据包括由一个或多个特征标识的数据。
利用机器学习技术来训练模型,以便准确地预测输入所述模型的数据(例如,用户在给定的话语中说了什么;某个名词是否是人、地点或事物;明天的天气会怎样)。在学习阶段,根据输入的训练数据集开发模型,以优化模型,从而正确预测针对给定输入的输出。通常,所述学习阶段可以是受监督的、半监督的或无监督的,指示对应于训练输入而提供的输出的“正确性”呈递减趋势。在受监督的学习阶段,所有输出都提供给模型,指导所述模型开发一个将输入映射到输出的通用规则或算法。相反,在无监督的学习阶段,没有为输入提供所需输出使所述模型可以开发自己的规则来发现训练数据集内的关系。在半监督的学习阶段,提供不完全标记的训练集,其中,对所述训练数据集而言,一部分输出是已知的,一部分输出是未知的。
模型可以针对训练数据集运行若干个时间段,其中所述训练数据集被重复地输入所述模型,以改进其结果(即,在某个时间段内处理整个数据集)。在迭代过程中,所述模型(例如,神经网络模型或其他类型的机器学习模型)是针对整个数据集的小批量(或一部分)运行的。在受监督的学习阶段,开发一个模型来预测针对给定输入集(例如,所述源数据202))的输出,并在若干个时间段中对所述模型进行评估,以更可靠地为所述训练数据集中最多的输入提供对应于给定输入的输出。在另一个示例中,对于无监督的学习阶段,开发一个模型来将数据集分成n组,并在若干个时间段中对所述模型进行以下方面的评估:将给定的输入放入给定的组中的一致性,及其在每个时间段生成n个想要的集群的可靠性。
一旦开始运行一个时间段,评估所述模型,并调整其变量(例如,权重、偏置或其他参数)的值,以尝试以迭代的方式更好地改进所述模型。在各种方面中,所述评价偏向于漏报、偏向于误报或者甚至偏向于所述模型的整体准确性。根据所使用的机器学习技术,可以以几种方式调整所述值。例如,在遗传或演进的算法中,使用在预测想要的输出方面最成功的的模型的值来为开发后续时间段使用的模型的值,其中可能包括随机变化/突变以提供额外的数据点。
每个模型通过改变影响输入的一个或多个变量的值来在若干个时间段开发规则或算法,以更接近地映射到想要的结果。但是,由于所述训练数据集可以变化,并且优选地,所述训练数据集非常大,可能无法实现完全准确或精确。因此,构成学习阶段的若干个时间段可以设置为给定数量的试验或固定的时间/计算预算,或当给定模型的准确度足够高或足够低,或已达到准确度稳定阶段时,可以在达到该数量/预算之前终止构成学习阶段的若干个时间段。例如,如果所述训练阶段被设计为运行n个时间段,并生成一个准确率至少为95%的模型,而该模型是在第n个时间段之前生成的,所述学习阶段可以提前结束,并使用生成的满足最终目标准确度阈值的模型。类似地,如果给定的模型不够准确到满足随机概率阈值(例如,该模型在确定针对给定输入的真/假输出时准确度仅为55%),尽管在所述学习阶段可能继续训练其他模型,该模型的所述学习阶段可能提前结束。类似地,当给定模型在多个时间段继续提供相似的准确度的或不稳定的结果,即,达到性能稳定状态,时,所述给定模型的所述学习阶段可能在达到所述数量的时间段/计算预算之前终止。
一旦所述学习阶段结束,所述模型就最终确定了。在某些示例实施例中,根据测试标准评估最终确定的模型。在第一个示例中,将包括针对其输入的已知输出的测试数据集输入到所述最终确定的模型中,以确定所述模型在处理未训练过的数据时的准确度。在第二个示例中,在最终确定之后,可以使用误报率或漏报率来评估所述模型。在第三个示例中,利用每个模型中的数据集群之间的定界来选择模型,该模型为其数据集群生成最清晰的边界。
在某些示例实施例中,所述DL程序206由神经网络204(例如,深度学习、深度卷积或者递归神经网络等)进行训练,其中所述神经网络包括一系列布置在网络中的神经元,例如,长短期记忆(long short term memory,LSTM)节点。神经元是用于数据处理和人工智能,特别是机器学习,的包括记忆的架构元素,其中所述记忆可以基于提供给给定神经元的输入的权重确定记忆中保存的何时“记住”以及何时“忘记”的值。本文使用的每个神经元用于接收来自网络中的其它神经元的预定义数量的输入,以提供针对正在被分析的结构的内容的关联和子关联输出。各个神经元可以链接在一起和/或组织成神经网络的各种配置中的树结构,以针对话语中每个结构是如何彼此相关的进行交互和关系学习建模。
例如,作为神经元的LSTM包括若干个门,以处理输入向量(例如,话语中的音素)、记忆单元及输出矢量(例如,上下文表示)。输入门和输出门分别控制流入和流出所述记忆单元的信息,而遗忘门可选地根据来自先前在神经网络中的链接的单元的输入从所述记忆单元中移除信息。在训练阶段的过程中对各个门的权重和偏置向量进行调整,一旦训练阶段结束,这些权重和偏置就最终确定下来,以便正常操作。本领域的技术人员将认识到,可以通过编程的方式(例如,通过软件指令)或通过将每个神经元连接成神经网络的的专用硬件来构造神经元和神经网络。
神经网络利用用于分析数据的特征来生成评估(例如,识别语句的单元)。特征是正在被观察的现象的可测量的个体属性。所述特征的概念与线性回归等统计技术中使用的解释变量的概念有关。此外,深度特征表示DNN的隐藏层中的节点的输出。
神经网络(例如,所述神经网络204),有时被称为人工神经网络或神经网络模型,是基于动物大脑的生物神经网络的计算系统。此类系统逐步改进性能,称为学习,以在通常没有进行针对特定任务的编程的情况下执行任务。例如,在图像识别中,可以通过分析已经为对象标记名称的示例图像来教神经网络识别包含所述对象的图像,并且在学习了所述对象和名称之后,可以使用分析结果识别在未标记图像中的所述对象。神经网络基于互相连接的被称为神经元的单元的集合,其中神经元之间的每个称为神经节的连接可以传输单向信号,其激活强度随连接的强度而变化。通常,基于组合的来自潜在的许多传输神经元的传入信号的强度,接收神经元可以激活信号并将其传播到与其连接的下游神经元,其中强度是参数。
DNN是一个多层的堆叠式神经网络。这些层由节点组成,所述节点是计算发生的位置,大致模仿人脑的神经元,当它遇到足够的刺激时就会激发。节点将输入的数据与一组系数或权重相结合,这些系数或权重放大或减弱所述输入,从而赋予针对所述算法试图学习的任务的输入意义。对这些输入和权重的乘积进行求和,然后所述总和经过节点激活函数进行处理,以确定信号是否进一步通过网络影响最终结果以及在多大程度上进一步通过网络影响最终结果。DNN使用多层非线性处理单元级联,以进行特征提取和变换。每个连续层使用前一个层的输出作为输入。高级别的特性是从低级别特性衍生而来,形成一个层次表示。输入层之后可以是卷积层,其生成特征映射,这些特征映射是所述输入的过滤结果且被下一个卷积层使用。
在DNN架构的训练中,回归在结构上是用于估计变量之间关系的一组统计过程,可以包括成本函数的最小化。成本函数可以实现为用于返回表示神经网络在将训练示例映射到正确输出方面性能如何良好的数字的函数。在训练时,如果所述成本函数的值不在预定范围内,则基于已知的训练图像采用后向传播,后向传播是与随机梯度下降(stochasticgradient descent,SGD)等优化方法一起使用的用于训练人工神经网络的常用方法。
使用后向传播(或后向计算)可以包括传播和权重更新。在将输入呈现给神经网络时,所述输入通过神经网络逐层向前传播,直到到达输出层。然后,使用成本函数将神经网络的输出与期望输出进行比较,并计算输出层中每个节点的误差值。所述误差值从输出开始向后传播,直到每个节点都有一个相关的误差值,该值大致表示其对原始输出的贡献。后向传播可以利用这些误差值来计算所述成本函数关于神经网络的权重的梯度。将计算出的梯度(或梯度集合)输入到所选择的优化方法以更新权重,从而尝试最小化所述成本函数。
尽管所述训练架构106被称为使用神经网络模型的DLTA(被训练的程序称为训练过的DL程序,例如所述训练过的DL程序110或206),本发明在此方面不限于此,且使用本文所公开的技术,其它类型的机器学习训练架构也可以用于模型训练。
图3为根据某些示例实施例的用于通过使用多个及时向参数服务器上报梯度的计算节点对神经网络模型进行分布式同步训练的示例性DLTA106的图。参照图3,所述DLTA106包括参数服务器302和计算节点304、306和308。所述DLTA106可以使用数据并行性,其中训练数据310被分成相应的部分312、314和316,分别供所述计算节点304、306和308使用。
在操作中,在其对应的数据部分的每次迭代之后,每个计算节点可以向参数服务器302上报更新的梯度。例如,所述计算节点304、306和308分别对所述数据部分312、314和316执行第一次迭代,以在所述数据的第一迭代结束时生成梯度(也称为梯度集合)318、320和322。所述梯度318、320和322分别由所述计算节点304、306和308(例如,通过推送通信)传送到所述参数服务器302。然后,在所述第一次迭代结束时,所述参数服务器302利用所接收到的梯度318、320和322进行梯度聚合和平均310,以获得平均梯度集合。通过所述梯度聚合和平均310,所述参数服务器302使用所述平均梯度集合更新所述神经网络模型324的参数。然后,将所述更新的神经网络模型324(或所述更新的参数)传送给所述计算节点304、306和308中的每个节点,或者当每个计算节点需要此类信息时,由所述参数服务器302提供给所述计算节点。尽管所述DLTA106被描述为仅包括三个计算节点,但本发明在此方面不限于此,可以在所述DLTA内使用不同数量的计算节点。
图4为根据某些示例实施例的可以由图3所示的所述DLTA106内的计算节点和参数服务器执行的示例性处理流程的图400。参照图4,每个所示的处理器(例如,图形处理单元(graphics processing unit,GPU))402、404、406和408代表所述DLTA106内的对应的计算节点。例如,所述GPU404、406和408可以分别对应于所述计算节点304、306和308。
在操作中,在操作410中,计算节点使用其相应的数据部分进行前向传递和后向传递。在操作412中,每个所述计算节点将其梯度传送给所述参数服务器。在操作414中,在每个计算节点传送完其梯度之后,所述参数服务器对梯度进行平均以生成平均梯度集合,使用所述平均梯度集合更新所述模型,并将更新的模型传送给所述计算节点(或使更新的模型可用,以便所述计算节点可以从参数服务器请求所述更新的模型)。
图5为根据某些示例实施例的利用通过滞后梯度进行梯度聚合的参数服务器对神经网络模型进行分布式同步训练的DLTA的图。参照图5,所述DLTA106包括参数服务器502和计算节点504、506和508。所述DLTA106可以使用数据并行性,其中训练数据510被分成相应的部分512、514和516,分别供所述计算节点504、506和508使用。
在操作中,在其对应的数据部分的每次迭代之后,每个所述计算节点可以向所述参数服务器502上报更新的梯度。例如,所述计算节点504和506分别对所述训练数据部分512和514执行迭代#t(即,索引为t的迭代),以在所述训练数据部分512和514的当前迭代#t结束时生成梯度集合G_W1(t)518和G_W2(t)520。如图5所述,所述计算节点508为无法在当前迭代#t期间生成梯度集合的慢速计算节点。然而,在所述计算节点504和506完成当前迭代#t时,所述计算节点508能够完成索引为(t–1)的先前迭代,生成梯度集合G_W3(t–1)522。
所述梯度集合518和520(来自所述当前迭代#t)和所述梯度集合522(来自所述先前迭代#(t–1))分别由所述计算节点504、506和508(例如,通过推送通信)传送给所述参数服务器502。然后,所述参数服务器502利用来自所述当前迭代(t)的所述梯度集合518和520以及来自所述先前迭代(t–1)的所述梯度集合522进行梯度聚合并平均530。通过所述梯度聚合和平均530,所述参数服务器502生成平均梯度集合,并利用所述平均梯度集合更新神经网络模型524的参数。所述更新的神经网络模型524(或所述更新的参数)被传送给所述计算节点504、506和508中的每一个计算节点,或者所述参数服务器502使所述更新的神经网络模型524(或所述更新的参数)可用于由每个计算节点发起的拉取通信。
在某些方面,所述DLTA106还可以包括DLTA功能管理模块526和梯度管理模块528。所述DLTA功能管理模块526可以包括合适的电路、逻辑、接口和/或代码,且用于执行与训练所述神经网络模型524以及管理所述参数服务器502和所述计算节点504、506和508之间的通信相关联的功能。例如,所述DLTA功能管理模块526用于选择机器学习模型,例如所述神经网络模型524,以便在所述DLTA106中进行训练。此外,所述DLTA功能管理模块526用于管理所述参数服务器和所述计算节点之间的通信,包括将所述更新的神经网络模型(或更新的神经网络模型参数)传送给所述计算节点或者通知所述计算节点此类更新的参数或更新的模型可用于通过拉取操作进行通信。
在某些方面,所述DLTA功能管理模块526还配置阈值数量的计算节点(例如,结合图6所用的K个计算节点),用于确定是否继续确定当前迭代的平均梯度集合。更具体地,所述参数服务器可以用于等待,直到在继续进行梯度聚合和平均以更新所述模型参数之前,在当前迭代内接收到K个计算节点的梯度。可替代地,所述DLTA功能管理模块526可以配置计时器,所述计时器可以在将先前更新的模型传送给(或已经将先前更新的模型传送给)所述计算节点之后启动,并且可以在预定时间到期,其中所述预定时间可被视为从可用计算节点接收梯度的截止时间。例如,如果在所述计时器到期时,所述参数服务器已经接收到当前迭代的所述梯度集合518以及先前迭代的所述梯度集合522,但尚未接收到所述梯度集合520,则所述参数服务器在梯度聚合和平均530期间仅可以使用所述梯度集合518和522。
所述梯度管理模块528可以包括合适的电路、逻辑、接口和/或代码,且用于执行所述梯度聚合和平均530。在某些方面中,所述梯度管理模块528配置可以应用于所述梯度集合522等任何滞后梯度集合的权重。如本文所使用的所述术语“滞后梯度”是指计算节点在当前迭代期间上报的但是是在先前迭代的结束时已经被确定的梯度。例如,如图5所述,所述梯度管理模块528可以分配权重r(t–1),所述权重可以在所述梯度聚合和平均操作530期间应用于所述梯度集合522。更具体地,所述梯度集合518、520和522的梯度聚合可以由所述参数服务器502执行:G_W1(t)+G_W2+r(t–1)*G_W3(t–1),其中r(t–1)为分配的权重。在梯度聚合后,可以基于所述聚合梯度进行梯度平均(例如,将所述聚合梯度中的每个梯度除以计算节点的总数,以获得用于更新模型的平均梯度集,或使用其他进行平均的技术)。
在某些方面,所述梯度管理模块528可以使用不同的技术来通过权重对所述滞后梯度进行打折。一方面,等待对滞后梯度集合进行打折可以计算为r=1/(1+Δ),其中“/”表示除法,Δ为当前迭代的索引与所述滞后梯度集合(例如,t–(t–1))的迭代索引之间的差值。在此方面,所述滞后梯度可以成反比衰减。在另一方面,所述梯度管理模块528可以确定权重r=1/aΔ,其中“/”表示除法,a为大于1的整数(例如,a=2),且Δ为当前迭代索引与滞后梯度集合(例如,t–(t–1))的迭代索引之间的差值。在此方面,所述滞后梯度集合可以呈指数衰减。
图6为根据某些示例实施例的能由图5所示的所述DLTA内的参数服务器执行的方法600的流程图。所述方法600包括操作602、604、606、608、610、612、614和616。作为示例而非限定,所述方法600被描述为由图5中的所述参数服务器502执行。
在操作602中,所述参数服务器502接收来自计算节点i的梯度集合。在操作604中,所述参数服务器502确定所述计算节点i是否滞后于当前迭代。如果所述计算节点滞后于所述当前迭代(即,只有为先前迭代生成的滞后梯度可用),则在操作608中,所述参数服务器502存储所述计算节点i的加权的滞后梯度集合。如果所述计算节点没有滞后于所述当前迭代,则在操作606中,所述参数服务器502存储所述计算节点i的所述当前迭代的所述梯度集合。在操作610中,所述参数服务器502可以确定当前迭代中从计算节点接收的梯度的总数是否至少为阈值数量K。如果尚未满足计算节点的阈值数量K,则可以继续操作602中的处理,其中所述参数服务器等待来自不同计算节点的梯度集合。如果满足计算节点的阈值数量K,则当所述参数服务器502利用如上所述已接收到的任何加权滞后梯度集合执行梯度聚合和平均以生成所述当前迭代的平均梯度集合时,继续操作612中的处理。在操作614中,所述参数服务器502利用所述平均梯度集合更新所述模型参数。在操作616中,所述参数服务器使所述更新的参数或所述更新的模型可用,从而所述计算节点通过拉取操作获取所述更新的参数或所述更新的模型,或者所述参数服务器可以将所述更新的模型的此类更新的参数传送给所述计算节点。
图7为根据某些示例实施例的能由图5所示的所述DLTA内的计算节点执行的方法700的流程图。所述方法700包括操作702、704、706和708。作为示例而非限定,所述方法700被描述为由图5所示的所述计算节点中的一个计算节点(例如,所述计算节点504)执行。
在操作702中,所述计算节点504可以从所述参数服务器502拉取权重等更新的参数,用于迭代#M。在操作704中,所述计算节点504进行前向计算。在操作706中,所述计算节点504使用从所述参数服务器502接收的所述权重进行后向计算。在完成前向和后向计算之后,在操作708中,所述计算节点504将当前梯度集合推送到所述参数服务器502以进行聚合和平均。
图8为与在考虑或者不考虑滞后梯度的情况下进行梯度聚合的DLTA相关联的训练损耗的图800。
训练损耗是衡量训练过程中网络输出与训练标签地面真值之间的差异的函数。在训练DNN进行分类时,可以利用“交叉熵”作为以下损失函数:
其中,M是种类(例如,狗、猫、鱼等)的数量;“log”表示自然对数;如果种类标签c是观察结果o的正确分类,则y是二进制指示符(0或1);p是所述观察结果o属于种类c的预测概率。当M=2(二元分类)时,所述损失函数可以简化为:-(y log(p)+(1–y)log(1–p))。
如图8所示,当所述梯度聚合和平均考虑了滞后梯度时,所述训练损耗较低。
图9为与在考虑或者不考虑滞后梯度的情况下进行梯度聚合的DLTA相关联的验证准确度的图900。
在训练DNN时,可以使用两个单独的数据集,例如训练集和验证集。在使用训练数据集训练网络时,使用所述验证集测试训练过程的性能(因为所述网络在训练集上可能性能更好,但是训练过的模型必须在例如验证集中的数据等“看不见的数据”上有良好的性能)。验证准确度是评价训练性能的指标之一。如图9所示,当所述梯度聚合和平均考虑了滞后梯度时,所述验证准确度较高。
图10为根据某些示例实施例的适于在DLTA内对神经网络模型进行分布式同步训练的方法1000的流程图。所述方法1000包括操作1002、1004、1006和1008。作为示例而非限定,所述方法1000被描述为由所述DLTA106中的所述参数服务器(例如,502)或其他模块执行。
在操作1002中,检测来自对应的多个计算节点的多个梯度集合,其中每个计算节点在训练数据集的当前迭代中生成多个梯度集合中的的对应的梯度集合。例如,所述参数服务器502可以检测(或通过推送操作从所述计算节点接收)所述计算节点504和506在当前迭代#t期间生成的梯度(或梯度集合)518和520。
在操作1004中,检测来自另一计算节点的滞后梯度集合,其中,所述滞后梯度集合由所述计算节点在所述训练数据集的先前迭代中生成。例如,所述参数服务器502可以检测(或通过推送操作从所述计算节点接收)所述计算节点508在当前迭代#t期间生成的滞后梯度(或滞后梯度集合)522。
在操作1006中,所述参数服务器基于所述多个梯度集合以及所述滞后梯度集合进行梯度聚合以生成聚合梯度。在操作1008中,基于所述聚合梯度更新所述DLTA106内正在训练的神经网络模型。
在某些方面,本文所公开的技术可用于比传统(例如,串行)梯度同步技术更快的梯度同步。在此方面,本文所公开的技术可用于在时间敏感应用中对机器学习模型的进行具有时效性的训练,例如,自动驾驶应用或使用机器学习模型且需要以时间敏感方式训练或重新训练模型的其他类型的应用。
图11为根据某些示例实施例的可以与本文描述的各种设备硬件结合使用的代表性的软件架构1100的框图。图11仅仅是软件架构1102的非限制性示例,应理解,可以实施许多其它架构以有助于本文描述的功能。所述软件架构1102可以在图12的设备1200等硬件上执行,除了别的之外,所述设备包括处理器1205、内存1210、存储器1215和1220以及输入/输出(input/output,I/O)组件1225和1230。示出了具有代表性的硬件层1104,其可以表示例如图12所示的所述设备1200。所述具有代表性的硬件层1104包括具有相关联的可执行指令1108的一个或多个处理单元1106。所述可执行指令1108表示所述软件架构1102的所述可执行指令,包括图1至图10的方法、模块等的实现。所述硬件层1104还包括内存和/或存储模块1110,其也具有可执行指令1108。所述硬件层1104还可以包括其它硬件1112,其表示所示硬件层1104的其它任何硬件,例如作为所述设备1200的一部分描述的其它硬件。
在图11的示例架构中,所述软件架构1102可概念化为层堆栈,其中每层提供特定的功能。例如,所述软件架构1102可以包括操作系统1114、库1116、框架/中间件1118、应用1120和展现层1144等层。操作上,所述层内的所述应用1120和/或其它组件可以通过所述软件堆栈调用应用编程接口(application programming interface,API)呼叫1124,并接收响应所述API呼叫1124的消息1126,例如,响应、返回值等。图11中描述的层在本质上具有代表性,且并非所有的软件架构1102都具有所有层。例如,一些移动或专用操作系统可能不提供框架/中间件1118,而其它操作系统可能提供该层。其他软件架构可以包括附加层或不同的层。
所述操作系统1114可以管理硬件资源并提供公共服务。所述操作系统1114例如可以包括内核1128、服务1130和驱动器1132。所述内核1128可充当硬件和其他软件层之间的抽象层。例如,所述内核1128可以负责内存管理、处理器管理(例如,调度)、组件管理、组网、安全设置等。所述服务1130可为其它软件层提供其它公共服务。所述驱动器1132可以负责控制底层硬件或与底层硬件连接。例如,根据硬件配置,所述驱动器1132可以包括显示驱动器、相机驱动器、蓝牙驱动器、闪存驱动器、串行通信驱动器(例如,通用串行总线(universal serial bus,USB)驱动)、Wi-Fi驱动器、音频驱动器、电源管理驱动器等。
所述库1116可提供可由所述应用1120和/或其它组件和/或层使用的公共基础设施。所述库1116通常提供允许其他软件模块以比直接与底层操作系统1114功能连接更容易的方式执行任务的功能(例如,所述内核1128、所述服务1130和/或所述驱动器1132)。所述库1116可包括可以提供诸如内存分配函数、字符串操作函数、数学函数等函数的系统库1134(例如,C标准库)。此外,所述库1116可以包括媒体库等API库1136(例如,支持对MPEG4、H.264、MP3、AAC、AMR、JPG、PNG等各种媒体格式进行表示和操作的库)、图形库(例如,可用于在显示器上的图形内容中呈现2D和3D的OpenGL框架)、数据库库(例如,可以提供各种关系数据库功能的SQLite)、网络库(例如,可以提供网页浏览功能的WebKit)等。所述库1116还可以包括各种其它库1138,以向所述应用1120和其它软件组件/模块提供许多其它API。
所述框架/中间件1118(有时也称为中间件)可提供可以由所述应用1120和/或其它软件组件/模块使用的更高级别的公共基础设施。例如,所述框架/中间件1118可提供各种图形用户界面(graphical user interface,GUI)功能、高级资源管理、高级位置服务等。所述框架/中间件1118可提供可以由所述应用1120和/或其它软件组件/模块使用的其它各种API,其中有些API可以是针对特定操作系统1114或平台的。
所述应用1120包括内置应用1140、第三方应用1142、DLTA功能管理模块1160和梯度管理模块1165。具有代表性的内置应用1140的示例可包括但不限于联系人应用、浏览器应用、阅读器应用、位置应用、媒体应用、消息应用和/或游戏应用。所述第三方应用1142可以包括任何所述内置应用1140以及各种其他应用。在一个具体示例中,所述第三方应用1142(例如,由特定平台供应商之外的实体利用Android或iOS软件开发包(softwaredevelopment kit,SDK)开发的应用)可以在移动操作系统上运行,例如iOS、Android、Windows Phone或其他移动操作系统。在本示例中,所述第三方应用1142可以调用操作系统1114等所述移动操作系统提供的所述API呼叫1124,以有助于本文描述的功能。
在某些方面,所述DLTA功能管理模块1160和所述梯度管理模块1165可以包括合适的电路、逻辑、接口和/或代码,且可以用于执行结合图5的模块526和528所论述的功能中的一个或多个功能。
所述应用1120可以利用内置操作系统功能(例如,内核1128、服务1130和/或驱动器1132)、库(例如,系统库1134、API库1136以及其他库1138)以及所述框架/中间件1118来创建用户界面以与系统的用户进行交互。可替代地,或者此外,在某些系统中,与用户的交互可以通过展现层进行,例如,所述展现层1144。在这些系统中,所述应用/模块“逻辑”可以与跟用户交互的应用/模块的各个方面分离。
某些软件架构使用虚拟机。在图11的示例中,用虚拟机1148来进行说明。虚拟机创建软件环境,其中应用/模块可以像在硬件机器(例如,图12所示的所述设备1200)上一样在所述软件环境中运行。所述虚拟机1148由主机操作系统(例如,操作系统1114)托管,且通常(尽管并非总是)具有虚拟机监视器1146,其中所述虚拟机监视器管理所述虚拟机1148的操作以及与主机操作系统(即,操作系统1114)的连接。操作系统1150、库1152、框架/中间件1154、应用1156和/或展现层1158等软件架构1102在虚拟机1148内运行。在虚拟机1148内运行的这些软件架构层可以与先前描述的相应层相同,也可以不同。
图12为根据某些示例实施例的用于实现算法并执行方法的设备的电路的框图。不需要在各种实施例中使用所有组件。例如,客户端、服务器和基于云的网络设备可以各自使用不同的组件集,或者对于服务器而言,例如,使用较大的存储设备。
计算机1200形式的一个示例计算设备(也称为计算设备1200、计算机系统1200或计算机1200)可包括处理器1205、内存1210、可移动存储器1215、不可移动存储器1220、输入接口1225、输出接口1230和通信接口1235,全部通过总线1240连接。尽管所述示例计算设备被描述为所述计算机1200,但是在不同实施例中,所述计算设备可以具有不同的形式。
所述内存1210可以包括易失性存储器1245和非易失性存储器1250,并存储程序1255。所述计算机1200可以包括各种计算机可读介质,或可以访问包括各种计算机可读介质的计算环境,其中所述计算机可读介质例如为所述易失性存储器1245,所述非易失性存储器1250,所述可移动存储器1215,以及所述不可移动存储器1220。计算机存储器包括随机访问存储器(random access memory,RAM),只读存储器(read-only memory,ROM),可擦除可编程只读存储器(erasable programmable read-only memory,EPROM)和电可擦除可编程只读存储器(electrically erasable programmable read-only memory,EEPROM),闪存或其他内存技术,只读光盘(compact disc read-only memory,CD ROM),数字多功能光盘(digital versatile disk,DVD)或其他光盘存储器,磁带盒,磁带,磁盘存储器或其他磁存储设备,或任何其他可以存储计算机可读指令的介质。
可以由所述计算机1200的所述处理器1205执行存储在计算机可读介质上的计算机可读指令(例如,存储在所述内存1210上的所述程序1255)。硬盘、CD-ROM以及RAM是包括存储设备等非瞬时性计算机可读介质的物品的一些示例。所述术语“计算机可读介质”和“存储设备”不包括载波,在某种程度上,所述载波被认为过于瞬时。“计算机可读非瞬时性介质”包括所有类型的计算机可读介质,包括磁存储介质、光存储介质、闪存介质和固态存储介质。应当理解的是,软件可以安装在计算机中并随计算机一起销售。可替代地,可以获取软件并将其加载到计算机中,包括:通过物理介质或分布式系统获取软件,例如,包括从软件创建者拥有的服务器或从软件创建者不拥有但被所述软件创建者使用的服务器获取软件。例如,可以将软件存储在服务器上,以便通过因特网分发。本文使用的术语“计算机可读介质”和“机器可读介质”是可互换的。
所述程序1255可以利用本文讨论的模块来使用客户偏好的结构,例如DLTA功能管理模块1260和梯度管理模块1265,这些模块可以与结合图5讨论的模块526和528相同。
本文描述的模块中的任何一个或多个模块均可以使用硬件(例如,机器的处理器、专用集成电路(application-specific integrated circuit,ASIC)、现场可编程门阵列(field-programmable gate array,FPGA)或其任何合适的组合)实现。此外,这些模块中的任意两个或多个可以组合成单个模块,且本文描述的单个模块的功能可以细分到多个模块。此外,根据各种示例实施例,本文中描述为在单个机器、数据库或设备中实现的模块可以分布在多个机器、数据库或设备中。
在某些方面,模块1260和1265以及作为所述程序1255的一部分的一个或多个其它模块可以集成为单个模块,执行集成的模块的相应功能。
尽管上文详细描述了几个实施例,但可以进行其它修改。例如,在附图中描述的逻辑流程不需要所示特定顺序或连续顺序来达到期望的结果。可以提供其他步骤,或可以删除所描述的流程中的步骤,并且可以向所描述的系统添加或移除其它组件。其它实施例可以在下文权利要求书的范围内。
还应理解,可以在本发明的一个或多个计算设备中安装包括参照本发明任何一个或多个步骤描述的有助于处理和操作的一个或多个计算机可执行指令的软件且所述软件可以与所述计算设备一起销售。可替代地,可以获取所述软件并将其加载到一个或多个计算设备中,包括:通过物理介质或分布式系统获取软件,例如,包括从软件创建者拥有的服务器或从软件创建者不拥有但由所述软件创建者使用的服务器获取软件。例如,可以将软件存储在服务器上,以便通过因特网分发。
此外,本领域技术人员将理解,本发明在其应用中不限于所描述的或附图中阐述的构造细节和组件布置。本文的实施例可以是其他实现方式,且能够以各种方式实践或执行。此外,应理解的是,本文使用的词语和术语是为了描述目的,不应视为限制性的。本文使用“包括”、“包含”、或“具有”及其变体意在包含其后列出的项及其等效项以及附加项。除非另有限定,否则本文的术语“连接”、“耦合”、“安装”及其变体被广泛使用,并且包括直接和间接连接、耦合以及安装。此外,术语“连接的”和“耦合的”及其变体不限于物理或机械连接或耦合。此外,术语,如上,下,底部和顶部是相对的,并用于,但不限于,辅助说明。
根据所说明的实施例采用的说明性设备的组件、系统和方法可以至少部分地在数字电子电路、模拟电子电路中实现,或者以计算机硬件、固件、软件或其组合中实现。例如,这些组件可以实现为计算机程序产品,例如,有形地体现于信息载体中的计算机程序、程序代码或计算机指令,或这些组件可以在机器可读存储设备中实现,由其执行,或控制可编程处理器、计算机或多台计算机等数据处理装置的操作。
计算机程序可以用任何形式的编程语言编写,包括编译语言或解释语言,并且可以以任何形式部署,包括作为独立程序或作为模块、组件、子例程或适合在计算环境中使用的其他单元。计算机程序可以部署在一个地方的一台或多台计算机或多个地方通过通信网络连接的多台计算机上执行。此外,本文描述的技术所属领域的程序员很容易理解用于实现本文描述的技术的功能程序、代码和代码段属于权利要求范围内。与说明性实施例相关联的方法步骤可以由一个或多个可编程处理器通过执行计算机程序、代码或指令来执行,以执行功能(例如,通过对输入数据进行操作和/或生成输出)。方法步骤也可以由FPGA或ASIC等专用逻辑电路执行,以及执行所述方法的装置可以实现为FPGA或ASIC等专用逻辑电路。
结合本文中所公开的实施例描述的各种说明性逻辑块、模块和电路可以使用为执行本文描述的功能而设计的通用处理器、数字信号处理器(digital signal processor,DSP)、ASIC、FPGA或其它可编程逻辑器件、分立门或晶体管逻辑、离散硬件组件或其任何组合实施或执行。通用处理器可以为微处理器,可选地,该通用处理器也可以为任何传统的处理器、控制器、微控制器或状态机。处理器也可以通过计算装置的组合来实现,例如数字信号处理器和微处理器,多个微处理器,一个或多个微处理器联合一个数字信号处理器核,或任何其它类似的配置来实现。
适合执行计算机程序的处理器示例性地包括通用和专用微处理器,以及任何种类的数字计算机的任何一个或多个处理器。通常,处理器将从ROM或RAM或两者中接收指令和数据。计算机的必备元件为用于执行指令的处理器和用于存储指令和数据的一个或多个内存设备。通常,计算机还将包括一个或多个存储数据的海量存储设备或可操作地耦合至一个或多个存储数据的海量存储设备以从其接收数据和/或向其传输数据,所述一个或多个海量存储设备例如为磁盘、磁光盘或光盘。适于承载计算机程序指令和数据的信息载体包括各种形式的非易失性存储器,示例性地包括半导体内存设备,例如,EEPROM、闪存设备、数据存储磁盘(例如:磁盘、内置硬盘、可移动磁盘、磁光盘、CD-ROM、DVD-ROM等)等。所述处理器和所述内存可以由专用逻辑电路来补充或合并到专用逻辑电路。
本领域技术人员应当理解,信息和信号可以使用多种不同的技术和方法中的任意一种来表示。例如以上描述提到的数据、指令、命令、信息、信号、比特、符号和芯片可由电压、电流、电磁波、磁场或粒子、光场或粒子、或者任何组合表示。
如本文所使用的,“机器可读介质”(或“计算机可读介质”)指能够暂时或永久存储指令和数据的设备,可以包括但不限于:RAM、ROM、缓冲存储器、闪存、光学介质、磁性介质、高速缓存存储器、其它类型的存储器(例如,EEPROM)和/或其任何合适的组合。所述术语“机器可读介质”应理解为包括能够存储处理器指令的单个介质或多个介质(例如,集中式或分布式数据库,或关联的缓存和服务器)。所述术语“机器可读介质”还应包括能够存储供一个或多个处理器1205执行的指令的任何介质或多种介质的组合,使得所述指令在由一个或多个处理器1205执行时,使所述一个或多个处理器1205执行本文描述的方法中的任何一个或多个方法。相应地,“机器可读介质”是指单个存储装置或设备,以及包括多个存储装置或设备的基于“云”的存储系统或存储网络。本文使用的术语“机器可读介质”不包括信号本身。
此外,在不脱离本发明的范围的情况下,各种实施例中描述和说明为离散或单独的技术、系统、子系统和方法可以与其它系统、模块、技术或方法进行组合或集成。展示或论述为彼此耦合或直接耦合或通信的其它项也可以采用电方式、机械方式或其它方式经由某一接口、设备或中间组件间接地耦合或通信。变更、替换和更改的其它示例可由本领域技术人员确定,并且可以在不脱离本文公开的范围的情况下进行。
尽管已经参考本发明的特定特征和实施例描述了本发明,但是明显在不脱离本发明的情况下可以制定本发明的各种修改和组合。例如,可以在所述系统中增加或移除其他组件。说明书和附图仅被视为所附权利要求书所定义的本发明的说明并且考虑落于本发明的范围内的任何和所有修改、变体、组合或均等物。其它方面可在所附权利要求书的范围内。
Claims (20)
1.一种用于对神经网络模型进行分布式同步训练的计算机实现方法,其特征在于,所述方法包括:
检测来自对应的多个计算节点机器的多个梯度集合,其中每个所述计算节点机器在训练数据集的当前迭代中生成所述多个梯度集合中的梯度集合,且所述多个梯度集合中的每个梯度集合包括多个梯度;
检测来自另一计算节点机器的滞后梯度集合,其中所述滞后梯度集合由所述至少另一计算节点机器在所述训练数据集的先前迭代中生成;
通过基于所述多个梯度集合和所述滞后梯度集合进行梯度聚合,生成聚合梯度;以及
基于所述聚合梯度更新所述神经网络模型。
2.根据权利要求1所述的计算机实现方法,其特征在于,还包括:
对所述聚合梯度进行平均,生成平均梯度集合;以及
利用所述平均梯度集合更新所述神经网络模型的多个权重。
3.根据权利要求1或2所述的计算机实现方法,其特征在于,还包括:
确定所述滞后梯度集合的权重;以及
基于所述权重利用所述多个梯度集合和所述滞后梯度集合的加权版本进行所述梯度聚合。
4.根据权利要求3所述的计算机实现方法,其特征在于,所述权重是基于所述当前迭代的索引和所述先前迭代的索引确定的。
5.根据权利要求4所述的计算机实现方法,其特征在于,所述权重为1/(1+Δ),其中Δ是所述当前迭代的所述索引和所述先前迭代的所述索引之间的差值。
6.根据权利要求4所述的计算机实现方法,其特征在于,所述权重为1/aΔ,其中Δ是所述当前迭代的所述索引和所述先前迭代的所述索引之间的差值,a是大于1的整数。
7.根据权利要求1至6中任一项所述的计算机实现方法,其特征在于,还包括:
当从中接收到所述多个梯度集合中的梯度集合的所述多个计算节点机器中的计算节点机器的数量达到阈值数量时,进行所述梯度聚合。
8.根据权利要求1至7中任一项所述的计算机实现方法,其特征在于,所述更新所述神经网络模型包括:
基于所述聚合梯度更新所述神经网络模型内的多个权重和偏置。
9.根据权利要求1至8中任一项所述的计算机实现方法,其特征在于,还包括:
在所述多个计算节点机器中的每个计算节点机器在所述当前迭代期间完成前向计算和后向计算操作之后,通过相应的推送操作接收来自所述对应的多个计算节点机器的所述多个梯度集合。
10.一种用于训练神经网络模型的分布式同步训练系统,其特征在于,所述系统包括:
存储有指令的存储器;以及
与所述存储器通信的一个或多个处理器,其中所述一个或多个处理器执行所述指令以执行以下操作:
检测来自对应的多个计算节点机器的多个梯度集合,其中每个所述计算节点机器在训练数据集的当前迭代中生成所述多个梯度集合中的梯度集合,且所述多个梯度集合中的每个梯度集合包括多个梯度;
检测来自另一计算节点机器的滞后梯度集合,其中所述滞后梯度集合由所述另一计算节点机器在所述训练数据集的先前迭代中生成;
通过基于所述多个梯度集合和所述滞后梯度集合进行梯度聚合,生成聚合梯度;以及
基于所述聚合梯度更新所述神经网络模型。
11.根据权利要求10所述的系统,其特征在于,所述一个或多个处理器执行所述指令以执行以下操作:
对所述聚合梯度进行平均,生成平均梯度集合;以及
利用所述平均梯度集合更新所述神经网络模型的多个权重。
12.根据权利要求10或11所述的系统,其特征在于,所述一个或多个处理器执行所述指令以执行以下操作:
确定所述滞后梯度集合的权重;以及
基于所述权重利用所述多个梯度集合和所述滞后梯度集合的加权版本进行所述梯度聚合。
13.根据权利要求12所述的系统,其特征在于,所述权重是基于所述当前迭代的索引和所述先前迭代的索引确定的。
14.根据权利要求13所述的系统,其特征在于,所述权重为1/(1+Δ),其中Δ是所述当前迭代的所述索引和所述先前迭代的所述索引之间的差值。
15.根据权利要求13所述的系统,其特征在于,所述权重为1/aΔ,其中Δ是所述当前迭代的所述索引和所述先前迭代的所述索引之间的差值,a是大于1的整数。
16.根据权利要求10至15中任一项所述的系统,其特征在于,所述一个或多个处理器执行所述指令以执行以下操作:
当所述检测到的多个梯度集合的数量达到阈值数量时,进行所述梯度聚合。
17.根据权利要求10至16中任一项所述的系统,其特征在于,为了更新所述神经网络模型,所述一个或多个处理器执行所述指令以执行以下操作:
基于所述聚合梯度更新所述神经网络模型内的多个权重和偏置。
18.一种存储有用于训练神经网络模型的计算机指令的非瞬时性计算机可读介质,其特征在于,在由一个或多个处理器执行时,所述指令使所述一个或多个处理器执行以下步骤:
检测来自对应的多个计算节点机器的多个梯度集合,其中每个所述计算节点机器在训练数据集的当前迭代中生成所述多个梯度集合中的梯度集合,且所述多个梯度集合中的每个梯度集合包括多个梯度;
检测来自另一计算节点机器的滞后梯度集合,其中所述滞后梯度集合由所述另一计算节点机器在所述训练数据集的先前迭代中生成;
通过基于所述多个梯度集合和所述滞后梯度集合进行梯度聚合,生成聚合梯度;以及
基于所述聚合梯度更新所述神经网络模型。
19.根据权利要求18所述的非瞬时性计算机可读介质,其特征在于,所述指令还使所述一个或多个处理器执行以下步骤:
对所述聚合梯度进行平均,生成平均梯度集合;以及
利用所述平均梯度集合更新所述神经网络模型的多个权重。
20.根据权利要求18或19所述的非瞬时性计算机可读介质,其特征在于,所述指令还使所述一个或多个处理器执行以下步骤:
确定所述滞后梯度集合的权重;以及
基于所述权重利用所述多个梯度集合和所述滞后梯度集合的加权版本进行所述梯度聚合。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2019/027008 WO2020209860A1 (en) | 2019-04-11 | 2019-04-11 | Leveraging lagging gradients in machine-learning model training |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113646776A true CN113646776A (zh) | 2021-11-12 |
Family
ID=66429554
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980094690.2A Pending CN113646776A (zh) | 2019-04-11 | 2019-04-11 | 在机器学习模型训练中使用滞后梯度 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20210374544A1 (zh) |
CN (1) | CN113646776A (zh) |
WO (1) | WO2020209860A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116702885A (zh) * | 2023-08-02 | 2023-09-05 | 浪潮电子信息产业股份有限公司 | 同步数据并行训练控制方法、系统、装置、设备及介质 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11468325B2 (en) * | 2020-03-30 | 2022-10-11 | Amazon Technologies, Inc. | Multi-model training pipeline in distributed systems |
JP2022088844A (ja) * | 2020-12-03 | 2022-06-15 | 富士通株式会社 | 演算処理装置、演算処理方法および演算処理プログラム |
CN117151184A (zh) * | 2022-05-19 | 2023-12-01 | 华为技术有限公司 | 稀疏参数的更新方法、训练节点、设备和存储介质 |
-
2019
- 2019-04-11 WO PCT/US2019/027008 patent/WO2020209860A1/en active Application Filing
- 2019-04-11 CN CN201980094690.2A patent/CN113646776A/zh active Pending
-
2021
- 2021-08-16 US US17/445,139 patent/US20210374544A1/en active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116702885A (zh) * | 2023-08-02 | 2023-09-05 | 浪潮电子信息产业股份有限公司 | 同步数据并行训练控制方法、系统、装置、设备及介质 |
CN116702885B (zh) * | 2023-08-02 | 2023-11-07 | 浪潮电子信息产业股份有限公司 | 同步数据并行训练控制方法、系统、装置、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2020209860A1 (en) | 2020-10-15 |
US20210374544A1 (en) | 2021-12-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11620568B2 (en) | Using hyperparameter predictors to improve accuracy of automatic machine learning model selection | |
US11544630B2 (en) | Automatic feature subset selection using feature ranking and scalable automatic search | |
US20200097810A1 (en) | Automated window based feature generation for time-series forecasting and anomaly detection | |
CN110366734B (zh) | 优化神经网络架构 | |
US20220027738A1 (en) | Distributed synchronous training architecture using stale weights | |
US10325218B1 (en) | Constructing quantum process for quantum processors | |
CN113646776A (zh) | 在机器学习模型训练中使用滞后梯度 | |
EP3857377A1 (en) | Disk drive failure prediction with neural networks | |
US11615265B2 (en) | Automatic feature subset selection based on meta-learning | |
CN116011510A (zh) | 用于优化机器学习架构的框架 | |
US20210012862A1 (en) | Shortlist selection model for active learning | |
US11902043B2 (en) | Self-learning home system and framework for autonomous home operation | |
US20220027777A1 (en) | Generalized expectation maximization | |
WO2020092020A1 (en) | Learning property graph representations edge-by-edge | |
JP2019145057A (ja) | 健康年齢の予測方法 | |
US20210027864A1 (en) | Active learning model validation | |
US20200257982A1 (en) | Categorical feature encoding for property graphs by vertex proximity | |
US20220366297A1 (en) | Local permutation importance: a stable, linear-time local machine learning feature attributor | |
US20220335255A1 (en) | Dataset-free, approximate marginal perturbation-based feature attributions | |
Bharadi | QLattice environment and Feyn QGraph models—a new perspective toward deep learning | |
US20220198277A1 (en) | Post-hoc explanation of machine learning models using generative adversarial networks | |
US20220318684A1 (en) | Sparse ensembling of unsupervised models | |
Michaelides et al. | Statistical abstraction for multi-scale spatio-temporal systems | |
US11615309B2 (en) | Forming an artificial neural network by generating and forming of tunnels | |
WO2024063807A1 (en) | Machine learning classifiers using data augmentation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |