使用作业服务器在大规模分布式系统上训练机器学习模型的制作方法

文档序号:19159051发布日期:2019-11-16 01:08阅读:266来源:国知局
使用作业服务器在大规模分布式系统上训练机器学习模型的制作方法

本发明总体涉及机器学习,更具体地,涉及用于训练机器学习模型的分布式架构。



背景技术:

基于大规模数据集训练得到的现代深度学习架构可以在包括语音和图像识别、图像分割、图像/视频理解和分析、自然语言处理以及诸如欺诈检测、医疗系统和推荐系统等各种应用在内的广泛领域获得令人印象深刻的性能。然而,训练这些机器学习模型对计算有很高的要求。在单台机器上进行训练是不切实际的,所要花费的时间过长。

因此,可以分配由包括多台机器的分布式系统来执行训练机器学习模型的任务。然而,这种做法引入了其本身的问题。训练涉及大量数据。训练集典型地包含大量训练样本。诸如图像、视频、文本或音频等每个训练样本都可能非常大。机器学习模型本身也可能非常大,需要训练的有诸如权重、偏差等大量的参数以及大量的层。当前的训练方法中,典型地分配单台机器(参数服务器)来保存机器学习模型的各参数的主版本,并针对整个训练任务对这些参数进行同步以及更新。因此,大量的数据在参数服务器和其它机器之间交换。当在大规模分布式系统上训练大规模的模型时,需要巨大的通信带宽。

如果希望高效并有效地同时在大规模分布式系统中的多个机器上训练一个模型或者训练多个机器学习模型,则所需的通信带宽更多,且参数服务器很快成为训练的瓶颈。因此,需要对通信带宽进行巨大的投资,否则在通信带宽有限的情况下,整体训练容量也将受到限制。

因此,需要改进在大规模分布式系统上训练机器学习模型的方法。



技术实现要素:

本公开通过使用包括作业服务器和多个计算节点的大规模分布式计算机系统克服了现有技术的限制。作业服务器将用于将训练机器学习模型的作业分配给由一个或多于一个计算节点组成的组。这些训练组执行训练作业。但是,模型的参数的值的更新和更新值的交换优选地在训练组的计算节点内(而不是在训练组和作业服务器之间)完成。这样就减少了对作业服务器的通信要求。

在一个实施方式中,作业服务器接收用于训练不同的机器学习模型的多个作业。作业服务器基于训练作业的当前要求和计算节点的当前状态,将训练作业分配给由一个或多于一个计算节点组成的训练组。训练要求的示例包括对计算力、数据存储、通信带宽和/或专用能力的要求。节点状态通常包括节点能力和节点可用性。训练组执行分配给所述训练组的训练作业。随着训练的进行,该执行典型地包括更新模型的诸如权重、偏差等参数的值。训练组优选包括两个或多于两个计算节点。该更新以及更新值的交换是在训练组内的计算节点中完成的,从而减少了与组外的通信。

每个训练组内的架构可以因组而异,所说明的方法可以是层级式的。例如,计算节点之一可以充当训练组的本地作业服务器和/或参数服务器,其余的计算节点被组织成子组。随着训练的进行、随着训练作业的排定或完成以及随着计算节点变得可用或不可用,训练作业在训练组间的分配和训练组的组成也可能动态地变化。

工作量减少后,作业服务器(和其它服务器)可以用于执行诸如机器学习模型及其训练的可视化或报告系统中计算节点的状态等附加的任务。

其它方面包括组成部分、装置、系统、改进、方法、过程、应用、计算机可读介质以及与以上相关的任何其它技术。

附图说明

结合以下附图,由以下具体实施方式和权利要求书,将更容易了解本公开的实施例所具有的其它有益效果和特点。

图1是根据本发明的包括作业(job)服务器的大规模分布式计算机系统的框图。

图2a至图2c是根据本发明的具有不同架构的训练组的框图。

图3例示了根据本发明的作业服务器的操作。

图4是根据本发明的包括作业服务器的另一计算机系统的框图。

图5是根据本发明的作业服务器的框图。

图6是根据本发明的计算节点的框图。

附图仅出于例示的目的说明了各种实施例。从下面的讨论中,本领域技术人员将容易识别出,在不违背本文说明的原理的情况下,可以采用替代实施例替代本文例示的结构和方法。

具体实施方式

附图和以下说明仅通过例示的方式涉及优选实施例。应当注意,从下面的讨论中,将容易识别本文公开的结构和方法的替代实施例,作为可以在不违背所要求保护的原理的情况下采用的可行的替代方案。

图1是根据本发明的包括作业服务器110的大规模分布式计算机系统100的框图。计算机系统100还包括计算节点130和连接不同组成部分的网络120。典型的大规模分布式计算机系统优选地具有分布在作业服务器110和计算节点130之间的1000个或更多个处理器单元(例如cpu和gpu),不过实际数量将视情况和所使用的技术而有所不同。如下面将更具体地说明的,通过将训练作业分配给不同组140的计算节点,计算机系统100能够同时训练多个机器学习模型。图1示出计算节点130被组织成四个训练组140a-d。训练组140a包括计算节点130a1-130an。训练组140b、140c和140d使用类似的编号。注意组140d仅包括单个计算节点130d1。下面将对把计算节点130分配成训练组140进行更具体地说明。未使用的计算节点130p形成可用的计算节点的池142。

计算机系统100用于训练机器学习模型。机器学习模型的示例包括卷积神经网络(convolutionalneuralnetworks,cnn)、递归神经网络(recurrentneuralnetworks,rnn)、神经网络和支持向量机。

在典型的训练作业中,机器学习模型架构为具有一定数量的层和节点,节点之间加权连接。训练机器学习模型典型地包括基于训练样本的集合来确定模型的参数(例如,权重和偏差)的值。在监督学习中,训练样本是成对的输入和已知为良好的输出(也就是基本事实)。将输入呈现给机器学习模型,则机器学习模型产生输出,例如输入是否呈现目标属性,或者输入呈现目标属性的置信水平。机器学习模型的输出和已知为良好的输出之间的差异用于调节模型中的值。对许多不同的训练样本重复这一过程,直到机器学习模型的性能令人满意。将确定机器学习模型是否被充分训练的过程称为验证。一旦训练完毕,当呈现新的输入时,机器学习模型可以令人满意地预测正确的输出。即使是正被用于活跃操作时,机器学习模型也可以持续训练。其它类型的机器学习方法包括半监督学习、无监督学习和强化学习。

在整个系统中,作业服务器110更多地扮演管理和监视将训练作业分配给计算节点130角色,计算节点130更多地扮演执行训练任务的角色。这些组成部分110、130包括(可能是共享的)数据存储和某种处理力,不过实际的实施方式可以有很大的不同。例如,处理力可以由传统的中央处理单元(cpu)、图形处理单元(gpu)、专用处理器、定制asic、多处理器配置以及设计用于训练和推断的芯片来提供。这些组成部分也可以实施为诸如刀片服务器等实际的物理组成部分,或通过虚拟化来实施。组成部分110、130也不要求完全相同。例如,不同的计算节点130可以具有不同的能力,或者可以专门用于某些任务。

网络120提供不同组成部分之间的连接。术语“网络”应被广义地解释。它可以包括具有诸如以太网、无限带宽(infiniband)等标准限定协议的正式网络。它也包括组成部分之间的其它类型的连接,例如服务器机架上的背板连接、远程直接存储器访问(remotedirectmemoryaccess,rdma)和高性能计算结构框架。网络120也可以组合不同类型的连接。它可以包括使用有线和/或无线链路的局域网和/或广域网的组合。组成部分110、130之间交换的数据可以使用任何合适的格式来表示。在一些实施例中,全部或部分数据和通信可以是加密的。

因此,整个计算机系统110可以以不同的方式实施。例如,它可以完全实施为私有系统。或者,它可以建筑在第三方服务或云供品上。

图1中的虚线箭头例示了计算机系统100的操作。在该示例中,计算机系统100具有主从(master-worker)架构,其中作业服务器110作为每个训练组140的主机来操作,每个训练组作为作业服务器的从机来操作。作业服务器110接收作业115来训练机器学习模型。它将作业分配125a-d给计算节点130的组,这些组被称为训练组140a-d。训练作业125a被分配给训练组140a中的计算节点130ax,训练作业125b被分配给训练组140b中的计算节点130bx,依此类推。优选地,作业服务器110还确定训练组140所包括的计算节点130。

作业服务器110基于训练作业的当前要求和计算节点130的当前状态来分配训练作业。在一个实施例中,一旦将作业分配给训练组,作业服务器110还将模型的初始参数集(和/或训练作业的其它方面)发送给训练组。或者,作业服务器110可以不以物理的方式将参数发送给训练组,而是可以提供指向参数的指针或者以其它方式向训练组交换初始值。当训练完成时,参数的最终值可以发送到作业服务器110,也可以不发送到作业服务器。参数的过渡值优选不被发送到作业服务器110。作业服务器110优选不实行训练计算。但是,作业服务器110典型地将监视每个训练组的进度,并且可以出于显示或监视的目的访问参数的过渡值。

在该示例中,每个训练任务是训练不同的机器学习模型,包括对模型的参数进行适配。因此,训练组140a训练机器学习模型a,训练组140b训练另一机器学习模型b,依此类推。训练作业115可以被排定在不同的时间。因此,可以随时分配125a-d训练作业。

每个训练组140中的计算节点130共同工作来执行143分配给所述训练组的训练作业。这包括计算143模型的参数的更新值,并在它们之间交换147这些更新的参数。以训练组140a为例。训练组中的计算节点130a1-n执行训练作业以训练机器学习模型a。作为该作业的一部分,训练集的不同部分可以被分配给不同的计算节点130ax,其中的每个计算节点使用其训练样本来进行训练143。计算节点130ax基于它们的训练产生143参数的更新值。将这些值在计算节点之间交换147,以汇集来自所有计算节点130ax的训练。参数的过渡值和最终值优选地由训练组中的计算节点130来计算。一个或多于一个计算节点130还可以对训练组对训练作业的执进行行本地控制和监视。

作业服务器110基于训练作业的当前要求和计算节点130的当前状态,将训练作业分配125给一个或多于一个计算节点130的训练组。训练要求的示例包括对计算力、数据存储、通信带宽和/或专用能力的要求。训练作业的大小常取决于诸如训练样本的数量和训练样本的大小、机器学习模型的大小和模型中参数的数量以及训练算法的有效性等因素。

计算节点的状态可以包括节点的能力和节点的可用性。这些也可以是计算力、数据存储、通信带宽和/或专用能力的度量。计算力的指标包括处理器核心或处理器的数量、处理器的类型和处理力、诸如浮点运算率(flopsrate,即每秒浮点运算数)等处理吞吐率、时钟速度。数据存储的指标包括数据存储的类型和数量、读/写带宽、访问时间、预加载容量、低存储器警告的数量以及自上次低存储器警告以来经过的时间。诸如总线接口pciexpress的其它连接的带宽以及诸如numa和smp的母板拓扑等因素也会影响数据转移。通信带宽的指标包括网络连接的类型和数量、诸如最近数据转移速率的平均值等数据转移速率、诸如基于最近连接的网络连接可用性的概率等网络连接可靠性以及数据转移潜伏。

在一个实施例中,作业服务器110基于计算节点130的能力将它们分类成不同的分类。例如,与其它计算节点130相比,有些计算节点130可以具有更多的处理力或更大的存储器或专用能力。这些可以被分类为“专用”计算节点,而其余的被分类为“常规”计算节点。每个分类可能有进一步的规定。例如,“常规”计算节点可包括指示处理力和存储器容量的数字。

在一些实施例中,计算节点130的可用性被分类为“可用”、“部分可用”和“不可用”。例如,不执行任何训练作业的计算节点是可用的,执行训练作业但不以100%容量执行的计算节点是部分可用的,而使用其全部容量执行训练作业的计算节点是不可用的。在另一种方法中,可用性由诸如在从0到1或者从0到100范围内的数字指示。作业服务器110可以使用不同的分类来确定为每个训练作业所分配的计算节点的数量以及所分配的具体的计算节点。

图1示出了分配给不同训练组140的不同计算节点130,但是没有示出每个训练组的内部架构。不同的训练组140可以使用不同的架构。其不必都使用相同的架构。作业服务器110可以规定训练组的架构,或者训练组可以已经根据架构被组织,或者一旦训练组接收到训练作业,架构就可以被选择。图2a-2c是分别具有主-作业者架构、点对点架构和客户机-服务器架构的训练组的框图。

图2a是具有主从架构的训练组210的框图。训练组210具有四个计算节点210m和210w1-3。计算节点210m充当主机,计算节点210w1-3充当从机。主机210m典型地控制从机210w的工作流程。在该示例中,主机210m接收训练作业,将训练作业划分为要由每个从机210w完成的较小的任务,并更新机器学习模型的参数的值。主机210m可以存储参数的初始值,然后在从从机210w收到过渡训练结果时更新这些值。在一种方法中,主机210m将参数存储在其本地存储器中,并根据需要将这些值发送给从机210w。或者,参数可以存储在由计算节点210m和210w共享的存储器中。

在一个实施例中,训练作业包括训练样本的集合。主机210m通过将训练样本子集分配给不同的从机210w而将训练作业划分成较小的任务。例如,如果训练作业包括300,000个训练样本,主机210m可以为每个从机210w分配100,000个训练样本。主机210m可能不会为每个从机分配相同数量的训练样本。主机可以根据从机的状态将训练样本分配给从机210w。例如,主机可能会将训练作业划分为10个区块,每个区块包含30,000个训练样本。然后,主机可以将各含30,000个训练样本的前三个区块分配给从机210w1-3,在从机210w变得可用时再分配其余的区块。主机210m本身也可以执行一些训练。

在替代的划分中,机器学习模型可以被细分成不同的组成部分。主机210m通过将不同的模型组成部分分配给不同的从机210w来划分训练作业。例如,如果模型是可分离的,一些从机210w可训练模型中的较早的层,另一些从机可训练模型中的较晚的层。或者,一些模型组成部分可以被设计成检测某些特点,而这些可以被单独训练。

图2b是具有以点对点架构布置的四个计算节点220p1-4的训练组220的框图。训练组220使用分布式算法将训练作业划分成由对等点(peers)220p执行的较小任务。对等点220p彼此协调以执行任务并更新机器学习模型的参数。例如,如果训练作业被划分成10个任务,每个对等点220p可以在完成其当前任务之后更新共享的参数主集,然后可以进入共通队列获取下一个可用任务。

也可以使用混合方法。例如,一个计算节点220p1可以充当与作业服务器110联系的单个联系点。该计算节点220p1从作业服务器接收训练作业,并将训练作业初步划分成较小的任务。该计算节点还可以将初始任务分配给其它计算节点220p。而后,计算节点220p充当对等点执行任务并更新机器学习模型的参数。主计算节点220p1可以维护参数主集以及待决任务的队列。

图2c是具有客户机-服务器架构的训练组230的框图。计算节点230s充当服务器,计算节点230c1-3充当客户机。服务器230s提供训练样本。客户机230c从服务器230s获取训练样本并执行它们的训练任务。服务器230s还可以用于向客户机230c提供参数的值,并基于来自客户机230c的训练结果更新参数的值。

如前所述,作业服务器110将训练作业分配给计算节点组。为了方便起见,这些组被称为训练组。作业服务器110优选地确定哪些计算节点被包括在哪些训练组中。在一些实施例中,这种包含关系可以响应于训练作业的当前要求和/或计算节点的当前状态的变化而随时变化。

图3例示了作业服务器向计算节点分配训练作业的示例。在该示例中,有多达15个计算节点,包括12个常规计算节点130r1-r12和3个专用计算节点130s1-s3。作业服务器110接收待由计算节点执行的四个训练作业a-d。表300示出了每个训练作业的要求。训练作业a要求1个常规计算节点130r以及1个专用计算节点130s,依此类推。在该示例中,这些是最低要求。可以使用多于此数量的计算节点,但不能使用少于此数量的计算节点。作业要求也可以按照诸如范围、最小值和最大值、推荐值、容限等其它方式进行规定。

训练作业是在不同的时间排定的。当作业服务器110收到训练作业时,作业服务器110基于训练作业的当前要求和计算节点130的当前状态将训练作业分配给计算节点130。表350是示出将训练作业分配给计算节点的时间日志。在表350中,分配给作业的计算节点130用作业字母标记,在线且可用的计算节点标记为空白单元格,离线的计算节点用斜纹图案标记。在该示例中,假设计算机系统能够进行某种程度的动态重新分配。也就是说,可以在训练作业执行时改变分配给训练作业的计算节点。但是,作业服务器的使用也可以应用于静态情况,即训练组是固定的,并且从作业开始到结束必须保持相同。在这种情况下,将基于该附加约束来修改分配策略。

在时间t0,五个常规节点r1-r5和三个专用节点s1-s3在线并可用,但是还没有接收到训练作业。节点r6-r12是离线的,如斜纹图案所示。在时间t1,训练作业a被排定并开始。作业a需要一个常规节点r和一个专用节点s,但是作业服务器110将该训练作业分配给两个常规节点r1-2和两个专用节点s1-2。其余的计算节点r3-5和s3可用于将来的作业,并且另外两个计算节点r6-7已经上线。

分配给训练作业a的计算节点130比该训练作业要求的多,是因为在时间t1有大量可用的计算资源。因此,完成训练作业所花的时间更少。同时,并非所有可用的计算资源都分配给训练作业a,因为预计在不久的将来会有其它训练作业。例如,可以提前调度作业,或者可以基于过去的历史来预测未来作业的需求。在另一种方法中,可以将作业a分配给所最少要求的计算节点。如果在作业当中很难切换计算节点,或者如果在当前作业完成之前预期会有大量作业,则适宜采取这种做法。在相反的方法中,可以将作业a分配给所有可用的计算节点,并随着新作业的排定而进行动态重新分配。

在时间t2,当仍在执行作业a时,训练作业b开始。作业服务器110将训练作业b分配给所最少要求的五个常规节点r3-7和一个专用节点s3。这样,训练组的计算资源与作业要求相同。同时,常规节点r1-2和专用节点s1-2继续执行训练任务a。在时间t2,没有空闲的计算节点。

在时间t3,附加的节点r8-12上线。并不将这些节点分配给现存的继续照旧执行的作业a或者b。在时间t4,排定训练作业c。然而,训练作业c要求六个常规节点130r和一个专用节点130s,但是只有五个常规节点r8-12并且没有可用的专用节点。当前可用的计算节点不足以满足作业c的要求。作业服务器110动态地将节点r2和s2从作业a重新分配给作业c,如时间t3和t4的行之间的箭头所示。这仍然满足作业a的最低要求,同时释放资源以满足作业c的最低要求。训练作业b仍然由相同的计算节点执行,因为训练作业b的训练组没有多余的计算节点。现在,可用的池已没有计算节点。

在时间t5,训练任务d被排定。但是,没有可用的计算节点,因此作业d不开始执行。它必须等待其它作业之一完成。在时间t6,作业b完成,释放节点r3-r7和s3。作业服务器将作业d分配给节点r3-r5。这基本上是先到先服务的方法。

在替代实施例中,当计算机系统超负荷(oversubscribed)时,作业服务器110可以基于优先级为训练作业分配资源。如果作业d的优先级高于作业c,则在时间t5,作业服务器将动态地将计算节点从作业c重新分配到作业d。训练作业的优先级可以由各种因素确定,包括训练作业的紧迫性、训练作业的重要性、执行训练作业所要求的时段。在另一种方法中,可以按比例进行分配。

在时间t7,计算节点r8-9意外离线。因此,作业c不再具有所要求数量的计算节点。但是,计算节点r6-7是可用的,因此可以被分配给作业c。在该示例中,作业c被重新分配给节点r3-7,作业d被移动到节点r10-12。例如,如果节点r3-7在一个数据中心,而节点r8-12在另一数据中心,则可以这样做。这样,分配给作业的所有常规节点都在同一个数据中心。

在上述示例中,作业服务器110主要负责管理训练作业的执行,而计算节点130主要负责训练作业中所要求的计算,以及更新和交换机器学习模型的参数。在一些实施例中,作业服务器110还完成其它功能。例如,作业服务器可以监视训练组对分配给所述训练组的训练作业的执行和/或计算节点130的状态。作业服务器110还可以可视地显示训练作业的参数和/或计算节点130的状态。

在一个实施方式中,作业服务器110提供可视的显示,其中可用计算节点用绿色图标标记,不可用计算节点用红色图标标记,部分可用计算节点用黄色图标标记。可视显示还可以显示训练组的内部架构和/或活跃水平。计算机系统100的用户可以使用可视显示来控制训练作业的进度,并确定是否向作业服务器110发送新的训练作业。

图4是根据本发明的另一计算机系统400的框图。除了图1所示的组成部分,计算机系统400还包括显示节点440和缓冲节点450。如上所述,作业服务器可以提供诸如监视训练作业进度、例示训练中的参数、示出整个计算机系统的容量等各种可视显示。在图4中,这些功能由显示节点440完成。

缓冲节点450缓冲计算节点130执行的下一个训练作业中要使用的数据。例如,作业服务器410将诸如训练样本、模型的参数的初始值等数据预加载到缓冲节点450。计算节点130随后从缓冲节点450访问数据。缓冲节点450为整个系统提供一种缓存功能,从而提高整体系统性能。

图5和图6分别是作业服务器和计算节点的示例的框图。所示组成部分是指用于提供规定的功能的计算机程序指令和其它逻辑。这些组成部分可以用硬件、固件和/或软件来实施。在一个实施例中,它们被实施为存储在存储装置上、加载到存储器中并由处理器执行的可执行计算机程序指令。

在图5中,作业服务器500包括界面模块510、系统监视器520、分配引擎530、计算节点管理器540、作业监视器550和显示模块560。作业服务器还可以包括数据存储,用于存储(包括机器学习模型的参数和训练样本的)与计算机系统和训练作业相关的信息。

界面模块510便于与其它装置和/或用户通信。通过界面模块510接收训练作业,通过界面模块510分派用于计算节点的指令。也通过界面模块510转移数据。界面模块510可以包括用户界面。

系统监视器520监视计算节点的状态(能力和/或可用性)。系统监视器520可以自动发现诸如计算力、存储和通信等计算节点能力。系统监视器520还确定哪些计算节点在线,并确定在线的计算节点是可用、部分可用还是不可用。

分配引擎530确定训练作业的要求,并基于训练作业的要求和计算节点的状态将训练作业分配给计算节点。在一个实施例中,分配引擎530确定每个训练作业要求多少计算节点,并且还查看有多少计算节点可用或部分可用。分配引擎相应地将训练作业分配给计算节点。训练作业的分配,包括重新分配,可以动态地完成。

计算节点管理器540提供用于控制和指令计算节点的逻辑。计算节点管理器生成用于计算节点执行训练作业的指令。该指令可以描述训练作业的机器学习模型(例如,id、目的、数学算法和参数的初始值)、训练作业的训练样本的位置以及与训练组中其它计算节点相关的信息。

根据作业服务器对计算节点的控制量,计算节点管理器540还可以管理其它方面。例如,指令可以附加地限定训练组的架构,例如辨认出训练组中的主机计算节点和从机计算节点。此外,指令可以规定训练作业在训练组中的计算节点之间的划分。在一些实施例中,指令规定在计算节点之间交换参数的更新值。例如,指令可以规定具体的计算节点要从训练组中的其它计算节点接收更新值,该计算节点将调和训练结果并产生更新的参数集合,并随后将更新值发送回其它计算节点用于进一步训练。

作业监视器550监视各种训练作业的进度。作业监视器可以查询进度报告,或者训练组可以主动报告自身进度。

显示模块560显示与训练作业的执行和/或计算机系统的状态相关的信息。在一个实施例中,显示模块560显示计算节点的状态。用户可以基于显示的状态来确定是向计算机系统还是向具体的节点发送更多的训练作业。在另一个实施例中,显示模块560显示机器学习模型的参数的值。例如,显示模块560可以显示机器学习模型的参数的初始值和最终值。显示模块560还可以随着训练的进行而显示参数的更新值。

在图6中,计算节点600包括界面模块610、控制模块620、训练模块630和参数一致性模块640。计算节点还可以包括数据存储,例如用于存储模型的参数、训练集的统计参数、模型训练的进度和其它信息。界面模块610便于与其它装置和/或用户通信。例如,通过界面模块610接收来自作业服务器的训练作业和指令。同样通过界面模块与其它计算节点的通信,包括交换训练中使用的参数。

控制模块620提供用于控制计算节点的逻辑,包括与作业服务器和其它计算节点的交互。控制模块部分地对应于作业服务器中的计算节点管理器540。

训练模块630执行训练作业。在该示例中,训练模块630包括适配引擎632和验证引擎634。训练模块630使用训练样本来训练机器学习模型。在一种方法中,训练模块630形成具有所关注的目标属性的训练样本的正训练集和缺少所关注的目标属性的训练样本的负训练集。适配引擎632更新机器学习模型的参数的值,以适合正训练集和负训练集。可以在不同的实施例中使用诸如线性支持向量机(线性svm)、诸如adaboost等对其它算法的增强、神经网络、逻辑回归、朴素贝叶斯(bayes)、基于存储器的学习、随机森林、袋装树、决策树、增强树或增强树桩(boostedstumps)等不同的机器学习技术。

验证引擎634基于附加的样本验证经训练的机器学习模型。验证引擎634将经训练的模型应用于验证样本,以量化经训练的模型的准确度。准确度度量中的共通度量标准包括精确度=tp/(tp+fp)和召回率(recall)=tp/(tp+fn),其中tp是真阳性数,fp是假阳性数,fn是假阴性数。精确度是经训练的模型预测的具有目标属性(tp+fp)的总数中,经训练的模型正确预测的具有目标属性(tp)的结果数。召回率是在确实具有目标属性(tp+fn)的验证样本总数中,经训练的模型正确预测的具有属性(tp)的结果数。f分数(f分数=2*精确度*召回率/(精确度+召回率))将精确度和召回率统一为单个度量。准确度度量中应用的共通度量标准还包括前1名准确度和前5名准确度。在前1名准确度下,当经训练的模型所预测的前1名的预测(即最可能的预测)正确时,该经训练的模型是准确的。在前5名准确度下,当前5名预测(如最可能的五个预测)之一正确时,经训练的模型是准确的。验证引擎634可以使用其它类型的度量标准来量化经训练的模型的准确度。在一个实施例中,训练模块630迭代地重新训练机器学习模型,直到停止条件出现,例如指示模型足够准确的准确度度量指示,或者已经进行了若干轮的训练。

参数一致性模块640汇集来自不同计算节点的训练结果。例如,一个计算节点上的训练可以为参数创建更新值的集合,另一个计算节点上的训练可以创建另一个更新值的集合。参数一致性模块640将这些结果组合成单个更新值的集合。

尽管具体实施方式包含许多具体细节,但这些不应被解释为限制本发明的范围,而仅仅是例示本发明的不同示例和方面。应当认识到本发明的范围包括上面没有具体讨论的其它实施例。例如,对于计算节点的集合可以使用多个作业服务器。可以在不违背如所附权利要求所限定的本发明的精神和范围的情况下,对本文公开的本发明的方法和装置的布置、操作和细节进行对本领域技术人员来说显而易见的各种其它修改、变化和变型。因此,本发明的范围应该由所附权利要求及其法律等价物来确定。

替代实施例被实施为计算机硬件、固件、软件和/或其组合。实施方式可以被实施为计算机程序产品,该计算机程序产品有形地体现在机器可读存储装置中,用于由可编程处理器执行。方法步骤可以由执行指令程序的可编程处理器来完成,以通过操作输入数据并生成输出来完成功能。实施例可以有利地被实施为可在可编程系统上执行的一个或多于一个计算机程序,该可编程系统包括耦合的至少一个可编程处理器,该耦合的至少一个可编程处理器与数据存储系统、至少一个输入装置和至少一个输出装置收发数据和指令。每个计算机程序可以实施为高级过程或面向对象的编程语言,或者如果希望,可以实施为汇编语言或机器语言。在任何情况下,该语言可以是经编译的语言或经解释的语言。举例来说,合适的处理器包括通用和专用微处理器。通常,处理器将从只读存储器和/或随机存取存储器接收指令和数据。通常,计算机将包括用于存储数据文件的一个或多于一个海量存储装置。这种装置包括诸如内部硬盘和可拆卸磁盘等盘、磁光盘和光盘。适于有形地体现计算机程序指令和数据的存储装置包括所有形式的非易失性存储器,包括例如诸如eprom、eeprom、快闪存储器装置等半导体存储器装置、诸如内部硬盘和可拆卸磁盘等磁盘、磁光盘、光盘等。上述任何一种都可以辅以(或集成于)asic(application-specificintegratedcircuits,专用集成电路)以及其它形式的硬件。

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