一种用于在集群环境下进行机器学习的训练方法和系统与流程

文档序号:15981137发布日期:2018-11-17 00:20阅读:302来源:国知局

本发明涉及在集群环境下进行机器学习的训练,尤其涉及利用负载不均衡的集群环境进行机器学习的训练方法和系统。

背景技术

随着机器学习以及人工智能技术的发展,完成应用场景的任务所需的计算量急剧增长,为了提高运算速度,需要以大量的硬件设备以并行的方式对数据进行处理。在实际使用硬件设备来实现机器学习的训练过程时,通常会在集群环境下,利用集群所包含的大量的计算节点并行地执行计算,通过反复地迭代计算以获得趋近于训练目标时所对应的机器模型的参数或者计算结果。

许多使用者往往会根据需要执行的任务的计算量、以及硬件设备的计算能力,来购置硬件产品。由于硬件产品的更新速度非常快,所以使用者在相对较长的一段时间内分为多次采购了具有不同计算能力的不同批次的cpu、gpu的情况非常普遍。而在本领域中,通常认为不宜将具有不同计算能力的不同批次的硬件作为同属于一个集群的计算节点来并行地完成同一个计算任务。这是由于一方面,在并行处理过程中,计算的耗时取决于处理速度最慢的计算节点,若是将具有不同计算能力的硬件作为计算节点混合使用,则无法享受具有更高计算能力的硬件所带来的计算优势。另一方面,在一个集群中采用不同硬件也不便于统一的管理。基于这两方面因素的考虑,使得本领域中一般仅采用具有相同或相近处理能力的硬件来作为一个集群以由集群中的各个节点并行的进行机器学习的迭代计算。

然而,对于分为多次采购了具有不同计算能力的硬件设备的使用者而言,不能利用不同批次的硬件进行计算,这从使用成本上考虑是非常不经济的。在需要提高整体的计算能力时,需要重新购置具有更强计算能力的硬件或者需要寻找与已购置的硬件具有相同或相似计算能力的新的硬件。



技术实现要素:

因此,本发明的目的在于克服上述现有技术的缺陷,提供一种用于在集群环境下进行机器学习的训练方法,包括:

1)根据集群环境中计算节点的数量,将训练集中的数据分割为用于供各个计算节点并行地执行训练操作的多个部分;

2)利用集群环境中的各个计算节点对所分配的数据集的部分进行训练,使得各个计算节点并行地训练一个机器学习模型;

3)对各个计算节点的处理结果进行加权平均,所述计算节点中的每一个的权重被设置为,使得对于所述集群环境中的各个节点的方差和/或均值的衰减程度的一致或彼此接近。

优选地,根据所述方法,其中所述计算节点中的每一个的权重被设置为,取决于所述计算节点在单位时间内所能处理的数据量与所述集群环境中计算速度最快的计算节点在单位时间内能够处理的数据量之间的差值的指数。

优选地,根据所述方法,其中,若进行机器学习的训练所使用的损失函数属于非强凸函数,则将计算节点i的权重设置为:

其中,λ是正则系数,η是步长,各个计算节点的编号范围为1...k,ti是计算节点i在单位时间内所能处理的数据量与所述集群环境中计算速度最快的计算节点在单位时间内能够处理的数据量之间的差值。

优选地,根据所述方法,其中对于所述损失函数为非强凸函数,计算节点的数量k、正则系数λ、步长η、以及计算节点i在单位时间内所能处理的数据量与所述集群环境中计算速度最快的计算节点在单位时间内能够处理的数据量之间的差值ti,被选择为满足表达式:

优选地,根据所述方法,其中,若进行机器学习的训练所使用的损失函数属于强凸函数,则将所述计算节点i的权重设置为:

其中,r为sgd算法在给定训练数据集和训练函数的情况下的收敛速度,各个计算节点的编号范围为1...k,ti是计算节点i在单位时间内所能处理的数据量与所述集群环境中计算速度最快的计算节点在单位时间内能够处理的数据量之间的差值。

优选地,根据所述方法,其中对于所述损失函数为强凸函数,计算节点的数量k、sgd算法在给定训练数据集和训练函数的情况下的收敛速度r、以及计算节点i在单位时间内所能处理的数据量与所述集群环境中计算速度最快的计算节点在单位时间内能够处理的数据量之间的差值ti,被选择为满足表达式:

优选地,根据所述方法,其中所述计算节点中的每一个的权重被设置为,若进行机器学习的训练所使用的损失函数属于强凸函数,则将所述计算节点的权重设置为:

根据训练过程中多次迭代的收敛情况,利用指数函数对所述计算节点在单位时间内所能处理的数据量与所述集群环境中计算速度最快的计算节点在单位时间内能够处理的数据量之间的差值进行拟合而确定。

优选地,根据所述方法,其中所述计算节点为cpu、或gpu、或mic或者它们的组合;并且所述集群环境中包含计算能力相同和/或不同的计算节点。

以及,一种计算机可读存储介质,其中存储有计算机程序,所述计算机程序在被执行时用于实现上述任意一项所述的方法。

以及,一种用于在集群环境下进行机器学习的训练系统,包括:

存储装置和处理器;

其中,所述存储装置用于存储计算机程序,所述计算机程序在被所述处理器执行时用于实现上述任意一项所述的方法。

与现有技术相比,本发明的优点在于:

根据本发明的方法,尤其适合于在负载不均衡的集群环境下执行机器学习的训练,具体地,在负载不均衡的环境下迭代相同次数时,其可以达到与在负载均衡环境下实施simulparallelsgd算法相近的效果。基于这样的方案,使用者可以将分为多次采购了具有不同计算能力的硬件设备一同用作并行执行机器学习的计算集群,无需重新购置具有更强计算能力的硬件或者需要寻找与已购置的硬件具有相同或相似计算能力的新的硬件,大大节约了硬件成本,尤其是对于需要使用大量的硬件设备以并行的方式对数据进行处理的应用而言尤为适用。

附图说明

以下参照附图对本发明实施例作进一步说明,其中:

图1是传统的筒式sgd算法的示意图。

图2是根据本发明的一个实施例改进后的筒式sgd算法的示意图。

图3是根据本发明的一个实施例在集群中将工人节点与参数服务器混合使用的方案。

图4是根据本发明的一个实施例在集群环境下进行机器学习的训练方法的流程图。

具体实施方式

下面结合附图和具体实施方式对本发明作详细说明。

如背景技术中所介绍地,在集群环境下以并行计算的方式执行机器学习的训练时,需要通过反复地迭代计算以获得期望的结果。例如,将训练目标定义为获得使得以待确定的参数而表示的损失函数(又被称作为目标函数)取值最小时所述参数的取值。因而在执行机器学习的训练时,为了尽可能快地通过迭代计算使得损失函数的取值收敛到一个非常小的范围,最常使用的求解模型为随机梯度下降法(stochasticgradientdescent,sgd)。

同时考虑到机器学习的训练过程需要对大量的训练集的数据进行多次迭代计算,其计算量非常巨大,因而常采用许多计算机并行地采用相同的损失函数训练同一个机器模型,并汇总全部计算机的计算结果以作为最终输出的机器模型,从而加快训练过程。这样包含许多计算机的环境被称作为集群环境,每个并行使用的计算机被称作为一个计算节点。

传统的并行sgd算法可以分类两大类,延迟式sgd和筒式sgd。其中,延迟式sgd算法是指由当前模型使用过去模型的梯度来更新自己(即使用延迟梯度),其中过去的模型和当前的模型迭代的迭代次数差不能超过特定的数值。有理论分析表明,延迟式sgd算法的收敛速度会随着延迟的增大而下降,并且收敛速度的下降会比并行度带来的加速收益更快。而为了保证延迟不会变大,通讯开销不可避免,因而对于一个延迟式sgd算法系统来说,需要在并行度(即集群中计算节点的数量)、延迟和系统效率之间作出权衡。

在实际工业生产中,延迟式sgd算法的工程实现是“参数服务器”。参数服务器的计算节点分为一个服务器节点和多个工人节点,工人节点的主要工作是从服务器节点将当前模型拉取下来,计算这个模型对应的随机梯度,并将梯度交给服务器节点。服务器收到延迟后的梯度后,使用延迟梯度更新模型。

另一种筒式sgd是使用方差上的收益来加速sgd算法,其将不同节点的训练模型进行平均,从而产生出最终的模型。图1示出了上述筒式sgd算法的示意图。在如图1所示出的模型中,每个节点并行地利用训练集的数据来训练同一个机器模型,各个节点处理数据的能力相当,在经过一段时间的训练之后,各个节点执行了相等的计算量,此时对各个节点的输出进行平均以得到最终的训练结果。这种算法几乎没有通讯开销,然而筒式sgd算法的高性能并不总是有效的,其并行性能有效性依赖于训练数据集的方差大小。

上述两类sgd算法各有利弊,然而它们并不是专门针对负载不均衡的集群环境进行机器学习而设计的,并不适合用于解决背景技术中所介绍的不能将使用者分为多次采购了具有不同计算能力的硬件设备一并使用的问题。对于延迟式sgd算法系统来说,负载不均衡的集群环境会使得延迟增大,而其收敛上限从理论上看会随着延迟的增大而出现二次增加,进而导致系统的整体效率低下。相比之下,对于传统的筒式sgd而言,当集群负载不均时,最慢节点会成为性能的瓶颈,即所有节点需要完成等量任务后才能继续下一阶段任务,这意味着处理速度快的节点需要等待处理速度慢的节点完成相同的任务量,这将显著降低了训练过程中的计算效率。而正如背景技术中所陈述地,在实际使用过程中,使用者可能会多次采购具有不同计算能力的硬件设备,若是期望将这些计算能力存在差异的硬件共同用于机器学习,则由这样的硬件所构成的集群属于负载不均衡的集群环境。面对这样的环境,需要对sgd算法进行一定的改进。

对此,本发明改进了传统的筒式sgd算法,采用加权并行的方式使得在不改变收敛速度的情况下,显著地减少并行sgd算法在负载不均衡集群环境下对机器模型的训练时间。图2示出了经本发明改进后的筒式sgd算法的示意图。如图2所示,其中节点1、2、3彼此的计算能力存在差异,当为该三个节点分配无论是相等数量还是不相等数量的数据集,在经过一段时间的处理到达了某个时间点时,节点1、2、3彼此所实际执行的计算量之间是存在差异的,此时可以根据这种差异为各个节点的结果分配相应的权重以进行加权平均并输出计算结果。

发明人对如何设置这样的权重进行了探索。在通过对于基于sgd的算法的收敛特性进行研究后,发明人发现基于sgd的算法的收敛情况主要依赖于以下三个方面:逐步收敛到不动点模型的方差,逐步收敛到不动点模型的均值,不动点模型和最优模型之间的差距。其中,不动点模型和最优模型之间的差距是由迭代步长决定的,是迭代步固有性质,进行计算前已经确定了这部分的差距,因而这部分不会被负载不均衡所影响。相比之下,方差和均值都是依照指数进行缩减的,在并行随机梯度下降算法中,相关的系数应该是以指数的形式进行变化。因此,发明人认为可以根据训练所采用的目标函数的方差和均值的缩减情况来确定针对集群的各个节点所设置的权重。

经过推理证明,发明人发现,机器学习模型当前迭代次数下的均值和最终收敛模型均值的差距和方差随着迭代依照指数进行缩减时,每次迭代的衰减上限为1-λη,表示为:

其中,λ是正则系数,η是步长,g是损失函数在训练集上的最大lipschitz范数,μ是均值,σ是方差,t是迭代次数,是在步长为η的情况下,第t步迭代后,机器学习模型的概率密度分布,是在步长为η的情况下,机器学习模型收敛后的概率密度分布。

因此,发明人考虑可以直接对收敛的距离进行修正(即加权平均),对还没有衰减到最终值的节点的权重进行调整。

并且,如前文中所述,发明人认为可以根据集群中各个节点彼此所实际执行的计算量之间的差异为各个节点的结果分配相应的权重以进行加权平均。因此,本发明提出可以以执行速度最快的节点,即在单位时间内能够处理最多数据量的节点,这里将其称作为“最快节点”,作为参考。根据一个节点i在单位时间内所能处理的数据量与该集群中最快节点在单位时间内能够处理的数据量之间的差值ti,来为节点i设置权重。而在训练过程中,经过迭代后模型的方差和均值都是依照指数的规模进行缩减的,因而发明人提出节点i的权重应当是符合ti的指数的函数。

调整各个节点的权重的过程可以被看作是,针对集群环境中的各个节点的方差和/或均值的衰减程度的一致或彼此接近。以通过这样的方式,充分地利用各个节点在方差上的收益。尽管本发明给出的具体实施例中采用ti作为节点i的权重的参数,然而应当理解,只要所设置的权重可以满足能够充分地利用各个节点在方差上的收益,也可以采用其他参数来确定节点的相应的权重,本领域技术人员可以根据这一教导利用现有技术寻找满足上述条件的权重。

上述衰减率的上限1-λη针对的是一般意义上的凸函数。尽管损失函数均属于凸函数,然而对于强凸函数而言,其衰减率会严重地变小,因此根据本发明的一个实施例,对于强凸函数而言,可以根据其衰减率另行计算需要针对各个节点而设置的相应权重。

因此,在本发明的一些实施例中,可以根据目标函数的强凸性的分类以针对各个计算节点提供近似的权重。发明人分别针对目标函数属于强凸函数和非强凸函数时分别的衰减特性进行了研究,以确定当目标函数为强凸函数时应当如何针对各个计算节点提供近似的权重、以及当目标函数为非强凸函数时应当如何针对各个计算节点提供近似的权重,具体如下。

本发明所述强凸函数和非强凸函数,这里将它们定义为:

在凸函数中,若存在正数σ使得函数f满足f(x+y)≥f(x)+ytf'(x)+σ||y||2/2,则称f为σ-强凸函数,否则为非强凸函数;经过试验证明,当σ非常小时(例如小于10-3),也可以按照非强凸函数处理。

非强凸函数

若目标函数属于非强凸函数(例如训练支持向量机使用的铰链损失函数),则在集群环境负载不均衡的情况下,可以针对相应的模型按照指数衰减的权重进行加权平均,使用如下的权重对不同负载节点产出的模型进行组合。

其中,weight1-λη,i为第i号节点所配的权重,λ是正则系数,η是步长,节点编号范围为1...k,ti是第i号节点训练数据量与最快节点之间训练数据量之差。这里的正则系数λ和步长η是训练前已经确定好的值,其大小训练过程中不会发生变化,ti的取值可以在单个节点训练完成后获得。

该非强凸函数理论上的收敛上限为:

其中,c是目标函数,w是模型参数,d是模型收敛后的概率分布情况,||f||lip是f的lipschitz范数,v为系统输出结果,g是损失函数在训练集上的最大lipschitz范数,t是迭代次数。

上述理论结果表明,随着迭代的进行,当满足以下表达式时,采用如图2所示出的加权求和的方式而产生的最终结果优于最快节点产生的结果,即最终结果对应的目标损失函数值小于最快节点产生的结果对应的目标损失函数值。

换句话说,若是希望以负载不均衡的集群来进行机器学习的训练,并且希望平均输出的结果好于最高计算性能的节点输出的结果,可以通过选择集群中计算节点的数量k、正则系数λ、步长η、以及第i号节点训练数据量与最快节点之间训练数据量之差ti,使其满足表达式(3)来实现上述目的。

强凸函数

对于强凸函数(例如逻辑回归模型使用的逻辑损失函数等)而言,其具有比非强凸函数更快的收敛速度,在此种情况下,方差和均值向不动点,即收敛点,的移动速度加快,并且随着训练过程中数据样例和当前训练模型的并行垂直关系不同,每次迭代的收敛速度不尽相同。因此需要克服上述问题,对此本发明提出了以下方式:

第一步,可以在实际计算中根据实际的计算效果使用指数函数对真实的收敛率进行拟合。在真实情况下,每次迭代都是一个收敛的过程,针对每次迭代都每隔一段时间采样模型,并计算当前迭代进度下机器学习模型的损失函数值,并使用指数函数,y=rx+b,进行拟合真实的收敛率。

第二步,可以根据真实的收敛率,使用表达式(4)为各个计算节点分配权重。理论上强凸函数越凸,则对于负载能力较弱的节点的容纳能力就越差。通过将不同的节点方差上的收益进行组合,让收敛到不同程度上的方差都贡献了自己的收益,进而可以得到较好的结果。在符合表达式(6)的要求的情况时,整个系统的输出比最快节点的输出要好、并且表达式(6)也说明,集群能够容纳足够多的慢节点。

为具有不同(或相同)负载的各个节点产出的模型而设置的权重为:

其中weightr,i为第i号节点所配的权重,r为sgd算法在给定训练数据集和训练函数的情况下的收敛速度,b为常数。

强凸函数在理论上的收敛上限为:

上式表明当满足以下表达式(6)时,采用图2所示出的加权求和的方式而产生的最终结果是优于最快节点产生的结果,即针对一个节点的所输出的计算结果对应的目标损失函数值小于计算速度最快的节点产生的结果所对应的目标损失函数值,而损失函数值越小,则模型效果越好,相同时刻下损失函数值越小,可以看做收敛速度越快。

类似地,若是希望以负载不均衡的集群来进行机器学习的训练,并且希望平均输出的结果好于最高计算性能的节点输出的结果,可以通过选择集群中计算节点的数量k、sgd算法在给定训练数据集和训练函数的情况下的收敛速度r、以及第i号节点训练数据量与最快节点之间训练数据量之差ti,使其满足表达式(6)来实现上述目的。

机器学习的训练

结合上述针对非强凸函数和强凸函数的分析,发明人将本发明的方案总结为以下伪代码。

其中,第1行伪代码表示根据集群中节点的数量将训练集中的数据随机地分割为多个部分,以供各个节点并行地执行训练操作;

第2-11行伪代码表示利用集群中的每个节点对其所分配的数据部分进行训练,使得各个节点并行地训练一个机器学习模型;

第12-13行伪代码表示根据当前节点i消耗的数据量和最快的节点消耗数据量(即用于训练模型使用的数据量,也就是当前时刻训练模型使用的数据量)之差ti,按照以下方式分配权重:若目标函数为非强凸函数,且在迭代过程中大量样例与模型垂直时,使用(1)式示出的方式分配各个节点的权重,若目标函数为强凸函数,使用(4)式示出的方式分配各个节点的权重;

第14行伪代码表示根据各个节点的权重采用加权平均的方式得到目标的机器学习模型。通过这样的方式,保证了在负载不均衡(即每个节点训练数据量不同)的集群环境下,依旧能产生出接近负载均衡的simulparallelsgd算法的产出的机器学习模型。

在上述实施例中,分别针对损失函数属于强凸函数和非强凸函数的情况给出了针对它们分别的衰减率的具体表达式以进一步地确定针对各个节点而设置的权重,因此在本发明的另一些实施例中,需要通过实验测定损失函数的衰减率。在具体地测定损失函数的衰减率时,可以在训练每个节点模型的过程中,每间隔一定的迭代次数(例如每间隔10000次)计算一次模型的损失函数值,在训练结束后,通过所获得的损失函数值来拟合出该损失函数的衰减率。然后,根据计算式来确定针对节点i的权重,其中r为拟合出该损失函数的衰减率。

下面将通过一个具体的实施例介绍根据本发明的用于在集群环境下进行机器学习的训练方法。参考图4结合图2所示出的集群,根据本发明的一个实施例,所述方法包括:

步骤1.针对集群环境下的每一个计算节点,分配其需要处理的数据量。

在本发明中,并不限制为各个计算节点所分配的数据量是否需要彼此相等。与前述伪代码中的第1行相对应地,训练集的数据的分隔可以是随机的,例如针对各个计算节点所分配的数据量可以是彼此不同的。这是由于,节点所处理的数据量和迭代次数决定了该节点所执行的计算量,而各个计算节点在进行加权平均的时刻所执行的计算量是否相等并不会对本发明造成影响,因而本发明为各个计算节点所分配的数据量不必彼此相等。

步骤2.由所述集群环境下的各个计算节点并行地对所分配的数据量进行处理。

在此步骤中,各个计算节点根据其损失函数和所分配到的数据(例如训练集的数据)进行相应的计算。这里具体的计算过程取决于具体需要训练的应用,由各个节点并行地对其所分配到的数据进行处理。

步骤3.对通过所述各个计算节点所获得的结果进行加权平均的处理。其中,针对每个计算节点的权重通过以下方式获得:根据损失函数为非强凸函数或者强凸函数,以及每个计算节点消耗的数据量和最快计算节点消耗的数据量之差,确定针对所述计算节点的权重:

若损失函数为非强凸函数,则采用为第i号节点分配权重,其中λ是正则系数,η是步长,节点编号范围为1...k,ti是第i号节点训练数据量与最快节点之间训练数据量之差;

优选地,使得所选择的集群中计算节点的数量k、正则系数λ、步长η、以及第i号节点训练数据量与最快节点之间训练数据量之差ti满足

若损失函数为强凸函数,则采用为第i号节点分配权重,其中weightr,i为第i号节点所配的权重,r为sgd算法在给定训练数据集和训练函数的情况下的收敛速度;

优选地,使得所选择的集群中计算节点的数量k、sgd算法在给定训练数据集和训练函数的情况下的收敛速度r、以及第i号节点训练数据量与最快节点之间训练数据量之差ti满足

步骤4.输出针对各个计算节点所获得的结果进行加权平均的处理结果。

在各个节点通过迭代处理获得了他们各自的计算结果之后,对各个节点所获得的结果进行加权平均的处理,以获得加权平均的结果,即:

其中,wi,t是节点i通过t迭代处理后获得的计算结果,weighti是针对节点i而设置的权重。

通过上述步骤1-4可以实现在负载不均衡的集群环境下高效地进行机器学习的训练。

与延迟式sgd算法混合使用

本发明还可以将前述实施例中的改进的筒式sgd的方案与延迟式sgd算法混合使用。延迟式sgd算法是实现在参数服务器上的随机梯度下降法,其与筒式sgd算法是两种完全不同的算法,下面将具体地介绍如何将根据本发明的改进的筒式sgd算法与该算法混合使用。具体地如图3所示,在同一个服务器下所连接的多个工人节点,这些工人节点彼此具有接近的性能,当然在一个服务器下也可以仅连接一个工人节点,各个工人节点以单独的延迟式sgd方法进行训练。当服务器完成了对数据集的训练后,将各个服务器输出结果进行加权平均,其加权平均所使用的权重为测量收敛率r后,使用表达式(4)所给出的权重,进而得到最终的结果。根据延迟式sgd的理论,只有效率相近的工人节点服务于一个服务器收敛率才能达到最大,因此在本发明中优选地使得属于同一个服务器下的各个工人节点之间具有相同或相近的性能。

针对有参数服务器参与的方案,在负载不均衡情况下,其目标函数的收敛上限与前文中强凸函数的收敛上限一致。因此,针对图3中的不同的服务器所输出的结果可以使用与强凸函数一致的权重以进行加权平均的计算。

效果测试

如前文中所述,本发明希望能够将计算能力不同的计算机一并利用起来,提供一种可以在负载不均衡的集群环境下高效地进行机器模型的训练的方案,使得在负载不均衡的集群环境下并行地进行训练时,处理速度快的节点无需等待处理速度慢的节点完成与其所处理的相等的计算量。为了验证本发明可否实现上述目的,发明人进行了对本发明的方案以下效果测试,并且与在负载不均衡的集群环境下采用传统的wp-sgd算法以及在负载均衡的集群环境下采用传统的simulparallelsgd算法的效果进行了比较。具体测试如下。

实验环境:使用由10个节点组成的集群,每个节点搭载xeon(r)cpue5-2660v2@2.20ghz。并且,每个节点上搭载一个处理器。

实验配置:

在本实验中,设置正则系数λ=0.01,步长η=0.0001,预估的收敛率r=0.99999。因为最终的迭代结果非常靠近0,为了得到更多的迭代步我们设置机器学习模型每个特征(即模型向量的每个维度)的初值都为4.0。

通过软件模拟来构建负载不均衡环境,具体配置为:10个节点,8个节点有相同的运算速度,被称为普通节点,其余2个节点为慢节点,这2个节点的运算速度是8个普通节点的1/5。基于以上负载不均衡环境,本实验对根据本发明的方案、以及如图1所示出的直接求平均的方案进行了测试。

同时作为对照,本发明还构建了负载均衡环境,具体配置为:10个节点,所有节点的性能与负载不均衡环境下普通节点的性能相同。基于以上负载均衡环境,本实验对传统的simulparallelsgd算法进行了测试。

本实验使用了用于训练支持向量机的铰链损失函数作为目标函数。

数据源:使用kddcup2010(algebra)数据库作为实验数据,该数据库包含8407752个样例,每个样例有20216830个特征,平均每个样例有20-40个非零特征。

评测方法:为了表明铰链损失函数值随着迭代如何变化,本实验中,每个节点使用数据中的一部分单独训练一个模型。在训练过程中,从普通计算的角度看,每训练100000次,全部系统停止训练,将模型存储到磁盘中之后进行评估后,然后继续训练。

结果:表1展示了simulparallelsgd,根据本发明的方法和直接平均法的目标函数随着迭代进行变化的情况。从表1可以看出,在相同的迭代次数下,在负载均衡环境下的simulparallelsgd和在负载不均衡环境下的根据本发明的方法得出的机器学习模型的损失函数值几乎一致。需要说明的是,在负载不均衡的环境下,本发明中计算速度快的节点和计算速度慢的节点在输出经迭代而获得的结果时所分别经历的迭代次数并不相同,计算速度快的节点可能会相对地执行更多次的迭代。为了统一用于与负载均衡环境下的方法的比较标准,在负载不均衡的环境下的迭代次数以计算速度最快的节点所经历的迭代次数为准。考虑到本发明的方法是在负载不均衡环境下实施的,处理速度快的节点不需要等待处理速度慢的节点完成等量任务,在此情况下其已经能与在负载均衡环境下的simulparallelsgd达到近似的效果,若是在负载均衡环境下实施根据本发明的方法则可以达到更好的效果。相比于直接平均法,根据本发明的方法在数学上的收敛速度更快,更接近于负载均衡的simulparallelsgd算法,如500000次的损失函数值simulparallelsgd和根据本发明的方法的损失函数值都大致相同(均在185左右),而直接求均法需要迭代到700000次才有如下这样的目标函数值。

上述现象与理论分析结果一致。

表1:使用不同并行sgd算法,不同最优化方法求解出的模型参数的目标函数值。

由此可以看出,根据本发明的方法,尤其适合于在负载不均衡的集群环境下执行机器学习的训练,具体地,在负载不均衡的环境下迭代相同次数时(对于本发明而言,迭代次数以最快节点所执行的迭代次数为准),其可以达到与在负载均衡环境下实施simulparallelsgd算法相近的效果。基于这样的方案,使用者可以将分为多次采购了具有不同计算能力的硬件设备一同用作并行执行机器学习的计算集群,无需重新购置具有更强计算能力的硬件或者需要寻找与已购置的硬件具有相同或相似计算能力的新的硬件,大大节约了硬件成本,尤其是对于需要使用大量的硬件设备以并行的方式对数据进行处理的应用而言尤为适用。

需要说明的是,上述实施例中介绍的各个步骤并非都是必须的,本领域技术人员可以根据实际需要进行适当的取舍、替换、修改等。

并且,本发明中所述的计算节点对应于一个进程,可以调度诸如cpu、gpu、mic、或者任何相应的计算资源,以及它们的组合。

最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制。尽管上文参照实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,对本发明的技术方案进行修改或者等同替换,都不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。

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