一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

具有退化节点的网络上的交叉副本归约的制作方法

2022-03-23 10:20:30 来源:中国专利 TAG:

具有退化节点的网络上的交叉副本归约
1.相关申请的交叉引用
2.本技术要求于2019年8月16日提交的美国专利申请no.16/543,410的优先权,其全部内容通过引用并入本文。
技术领域
3.本说明书涉及并行处理非标量数据的大数据集。


背景技术:

4.机器学习模型接收输入并基于所接收的输入和模型参数的值生成输出。这些模型通常需要使用从非常大的数据集接收的输入来训练。
5.可以在分布式网络上训练机器学习模型,该分布式网络被配置为在不同批次的训练数据上训练机器学习模型的多个副本。分布式网络可以定义各种拓扑,诸如网格或环面拓扑,并且可以具有任意维度。分布式网络可以单独地和并行地训练每个副本,并且基于训练的结果来更新机器学习模型的模型参数值。


技术实现要素:

6.本说明书总体上描述了涉及并行处理大数据集的技术,并且具体地涉及在具有一个或多个退化节点的机器学习模型副本网络上并行处理大数据集。机器学习副本网络(“副本网络”)可以具有多个节点,其中,每个节点具有被配置为在一批训练数据上训练机器学习模型的相应副本的相应处理单元。用于副本网络的训练系统可以训练机器学习模型,而不管副本网络的一个或多个退化节点,其可能例如由于硬件故障或通信故障而退化。
7.可以实现本说明书中描述的主题的特定实施方式,以便实现一个或多个下述优点。即使当机器学习模型的节点训练副本的副本网络中的一个或多个节点退化时,训练系统也可以训练机器学习模型。训练系统可以路由和分布计算,使得在训练期间有效地使用非退化节点的计算资源。实现本说明书中描述的技术的训练系统可以避免当数据业务在退化节点周围朴素地重新路由时由副本网络的区域处的过热引起的进一步退化或性能受损,如可以在常规方法下执行的。训练系统可以在不对副本网络进行物理修改的情况下训练副本网络。训练系统可以训练网格或环面拓扑和任意维度的副本网络。
8.本发明的一个或多个实施方式的细节在仅以图示的方式给出的附图和下文的描述中阐述。本发明的其他特征、方面和优点从说明书、附图和权利要求书将变得显而易见。
附图说明
9.图1图示了示例性训练系统。
10.图2a图示了具有二维网格拓扑的副本网络。
11.图2b图示了具有二维环面拓扑的副本网络。
12.图3a图示了具有三维网格拓扑的副本网络。
13.图3b图示了副本网络的子网络,其具有在第一归约之后存储部分最终梯度向量的代表性节点的二维网格拓扑。
14.图3c图示了副本网络的子网络,其具有在第二归约之后存储更新的部分最终梯度向量的代表性节点的一维网格拓扑。
15.图4图示了具有退化节点的示例性副本网络。
16.图5a图示了具有部分退化节点的示例性副本网络。
17.图5b图示了在副本网络的一角中具有退化节点的示例性副本网络。
18.图5c图示了具有多个非连续退化节点的示例性副本网络。
19.图6图示了具有连续退化节点的示例性副本网络。
20.图7图示了具有环面拓扑和退化节点的示例性副本网络。
21.图8是用于计算具有退化节点的副本网络的最终梯度向量的示例性过程的流程图。
22.图9是用于对非退化节点的子网络执行内部归约的示例性过程的流程图。
23.各个附图中相同的附图标记和名称指示相同的元件。
具体实施方式
24.图1图示了示例性训练系统100。训练系统100可以接收训练数据105并输出指定机器学习模型110的数据。训练系统100可以包括分区引擎115和机器学习副本网络120。
25.训练系统100可以以任何适当的方式接收训练数据。例如,训练系统100可以例如使用由系统100提供的应用编程接口(“api”),通过数据通信网络从系统的远程用户接收训练数据作为上传。在一些实施方式中,训练系统可以维护训练数据的存储库,并且系统100可以从用户接收指定将存储库中的哪些数据用作训练数据105的输入。
26.指定经训练的机器学习模型110的数据可以指定机器学习模型的架构和模型110的学习参数值。例如,经训练的机器学习模型110可以是具有包括输入层和输出层的多个神经网络层的神经网络。每个神经网络层可以包括一个或多个操作节点,其被配置为根据被称为权重的一个或多个学习参数值接收输入并执行操作以生成输出激活。输出激活可以是后续神经网络层中的操作节点的输入,或者可以是神经网络的输出的一部分,例如,因为操作节点处于神经网络的输出层处。应当注意到,神经网络和神经网络的操作节点——其是机器学习模型及其组成部分的示例——不应当与机器学习副本网络及其相关联的节点——其可以是计算机网络的示例——混淆。
27.指定经训练的机器学习模型110的数据可以包括用于机器学习模型的学习参数值。在机器学习模型是神经网络的一些实施方式中,定义训练模型的数据可以为每个神经网络层指定训练权重。模型参数值通常被组织为非标量数据,例如,作为向量、二维矩阵或张量、三维矩阵或张量、或更高阶的矩阵或张量。
28.指定经训练的机器学习模型110的数据可以被用在处理新的输入数据中。可替代地,或除了生成定义经训练的机器学习模型110的数据之外,训练系统100可以实例化具有与机器学习模型110相同的架构和学习参数值的经训练的机器学习模型的实例。可以执行经训练的机器学习模型的实例以生成新的输出来执行机器学习任务。
29.分区引擎115可以被配置为接收训练数据105并生成批量数据130。批量数据130中
的每批训练数据可以相对于由分区引擎115生成的每个其他批次是唯一的。换句话说,在一些实施方式中,没有两批训练数据是相同的。训练数据的批次可以是不相交的,即,批次中使用的训练数据都不存在于任何其他批次中。可替代地,一些批次中的训练数据之间可能存在一些重叠。分区引擎可以向机器学习副本网络120的每个节点125a-n发送相应批次的训练数据以通过相应的机器学习模型副本进行处理。
30.机器学习副本网络120(“副本网络”)可以包括多个节点125a-n。每个节点125a-n可以包括处理单元,该处理单元被配置为接收一批训练数据并通过机器学习模型的相应副本处理该批训练数据。处理单元可以在一个或多个计算设备的一个或多个集成电路(“芯片”)上实现。
31.每个节点125a-n可以被配置为通过任何适当的机器学习训练技术——例如,通过任何适当的监督学习技术——来训练相应的副本。在本说明书中,术语训练被用来描述训练系统100更新副本网络120中的模型副本的参数值的过程。例如,如果机器学习模型是神经网络,则每个节点125a-n可以通过相应模型副本的每个神经网络层的前向传递来处理输入批次的训练示例,然后更新每个神经网络层处的权重,例如,通过使用批次梯度下降的反向传播来计算损失函数的梯度。
32.机器学习副本网络120还可以包括多个节点125a-n之间的一个或多个通信链路。通信链路可以是高速通信链路。在多个芯片上实现节点的一些实现中,跨芯片边界的链路是芯片间网络链路。在节点125a-n的处理单元在同一芯片上的一些实施方式中,每个节点可以通过芯片内接口链路与其他节点通信。
33.一个或多个链路可以是一次只有一个处理单元可以传输数据的半双工链路。一个或多个链路可以是可以同时在两个方向上传输数据的全双工链路。在一些实施方式中,机器学习副本网络120包括将具有同一芯片上的处理单元的多个节点以及具有跨多个芯片实现的处理单元的一个或多个其他节点连接在一起的一个或多个半双工链路和一个或多个全双工链路。
34.机器学习副本网络120可以定义网络拓扑。网络拓扑是指副本网络中的节点和链路的配置。网络还可以具有一个或多个维度。节点之间的每个链路属于网络拓扑的相应维度。每个维度可以具有沿着维度的一组或多组节点。
35.图2a图示了具有二维网格拓扑200a的副本网络。二维网格由k1*k0个节点组成,其中,ki表示沿着网格的一个维度的节点的数量。例如,副本网络200a的维度为4*4,总共16个节点。通常,n维网格将具有k
n-1
*k
n-2
*...k0个节点,其中,ki表示沿着网格的第i个维度的节点的数量。在图2a中,由实线指示的链路属于副本网络的一个维度,即“行”维度,而由虚线指示的链路属于副本网络的另一维度,即“列”维度。
36.同样在图2a中,副本网络拓扑定义了沿着行维度的四组节点,即节点a1-a4;b1-b4;c1-c4;以及d1-d4,以及沿着列维度的四组节点,即,节点a1-d1;a2-d2;a3-d3;和a4-d4。对于具有二维拓扑的副本网络,行维度中的每组节点将被称为行,而列维度中的每组节点将被称为列。
37.图2b示出了具有二维环面拓扑200b的副本网络。二维环面由k1*k0个节点组成,其中,ki表示沿环面的一维的节点数量。二维环面由n2个链路组成,其中,n是环面的节点数量。除了将节点连接到副本网络200b中的每个相邻节点之外,环面还连接环面的相对侧上的节
点。通常,具有n个节点的m维环面将具有nm个链路。在图2b中,由实线指示的链路属于副本网络的一个维度,即“行”维度,而由虚线指示的链路属于副本网络的另一维度,即“列”维度。
38.同样在图2b中并且类似于图2a,网络拓扑定义了四行节点,即,节点a1-a4;b1-b4;c1-c4;以及d1-d4以及沿着列维度的四列节点,即,节点a1-d1;a2-d2;a3-d3;和a4-d4。
39.返回参考图1,训练系统100可以在由分区引擎115分区的唯一一批训练数据上训练每个模型副本125a-n。当节点已经完成通过相应的模型副本处理一批训练数据时,节点可以对模型参数的值生成各个梯度向量。因为在不同批次的训练示例上训练副本,所以训练系统100可以组合由所有副本125a-n生成的所有各个梯度向量并生成最终梯度向量。例如,训练系统100可以计算各个梯度向量中的每个元素的平均值,以生成表示平均梯度向量的最终梯度向量。训练系统100可以使用如下所述的“归约(reduction)”算法来由多个各个梯度向量生成单个梯度向量。可以迭代该过程,直到获得最终梯度向量。
40.训练系统100可以使用最终梯度向量来更新机器学习模型的参数值。例如,可以使用梯度下降算法来确定参数更新,目标是最小化损失函数。可以被用来确定对机器学习模型的参数值的更新的优化例程的其他示例将是本领域技术人员所熟悉的。然后,训练系统100可以将新参数值广播到每个节点125a-n。如果训练系统100继续训练机器学习副本网络120,则每个节点125a-n将使用更新的参数值,通过用于该节点的相应模型副本来处理后续训练示例。
41.训练系统100可以通过任何适当的归约算法来归约(reduce)由用于每个相应副本125a-n的节点生成的各个梯度向量,以生成最终梯度向量,该归约算法当在处理单元125a-n上执行时使训练系统100:
42.1.对每个各个梯度向量求和;
43.2.由从各个梯度向量的总和计算的最终梯度向量来计算更新的模型参数值;以及
44.3.向副本网络120中的每个节点广播用于机器学习模型的更新的模型参数值。
45.这些操作可以被共同概括为对副本网络中的每个节点处的各个梯度向量执行归约。训练系统可以执行副本网络120中的节点的归约。在本说明书中,训练系统沿着维度中的节点执行归约的时段被称为该维度的“临界阶段”。
46.节点的归约是指对该组节点执行一个或多个运算,这些运算将该组中的每个节点的相应各个梯度向量接收为输入,并将单个梯度向量生成为输出,从而将多个各个梯度向量“归约”为单个向量。例如,训练系统可以对一组节点执行归约以获得用于该组的部分最终梯度向量。如下所述,训练系统可迭代地归约部分最终梯度向量,直到归约到最终梯度向量。
47.如下文更详细地讨论的,当训练系统100用具有一个或多个退化节点的副本网络训练机器学习模型时,训练系统100可以针对沿着每个维度的每组节点在“关键阶段”以及“转发阶段”两者中执行运算。
48.用于归约各个梯度向量的归约算法的一个示例性类别是循环归约算法。在一些实施方式中,训练系统100可以被配置为在机器学习副本网络120上执行循环归约算法。在2017年9月18日提交的、名为“parallel processing of reduction and broadcast operations on large datasets of non-scalar data(对非标量数据的大型数据集进行
并行处理和广播操作)”的美国专利no.10,055,692中提供了循环算法的详细讨论,该专利通过引用整体并入本文。
49.图3a-c图示了具有三维网格拓扑的副本网络的示例性归约。在一些实施方式中,示例性归约是根据循环归约算法的循环归约。通常,对于n维副本网络,训练系统可以执行n个归约以生成最终梯度向量。
50.在每个维度处并且对于维度中的每个节点组,训练系统可以通过执行归约来生成相应的部分最终梯度向量。
51.可以选择代表性节点来存储用于该组的部分最终梯度向量,并且用于每个组的代表性节点成为沿着下一维度归约的子网络的一部分。具体地,训练系统可以通过重复归约过程来归约代表性节点的子网络,以获得更新的部分最终梯度向量和更新的代表性节点的较小子网络。训练系统可以重复地归约副本网络,直到仅剩余一组代表性节点。然后,训练系统可以归约最后一组代表性节点并获得用于副本网络的最终梯度向量。下面是一个示例。
52.图3a图示了具有三维网格拓扑的副本网络300a。副本网络中的平面305a-d可以由具有二维网格拓扑的副本子网络表示。类似地,平面305a-d的每行或每列可以由具有一维网格拓扑的副本子网络表示。
53.训练系统——例如,训练系统100——可以对沿着x维度的每个节点组执行第一归约,如向量315a所示。训练系统可以并行地对每个平面305a-d中的每个组执行第一归约。在每个第一归约之后,副本网络300a中的每个组将具有代表性节点,该代表性节点具有用于该组的部分最终梯度向量,由图3a中具有对角阴影图案的节点——例如,节点310a——所示。
54.图3b图示了副本网络300a的子网络300b,其具有在第一归约之后存储部分最终梯度向量的代表性节点的二维网格拓扑。训练系统可以对子网络300b中的每个组执行第二归约,以从该组中的每个代表性节点的部分最终梯度向量获得更新的部分最终梯度向量。训练系统可以并行地对子网络300b中的每个组执行第二归约。在每个第二归约之后,子网络300b中的每个组可以具有存储用于该组的更新的部分最终梯度向量的代表性节点,由阴影节点——例如节点305b——所示。
55.图3c图示了副本网络300a的子网络300c,其具有在第二归约之后存储更新的部分最终梯度向量的代表性节点的一维网格拓扑。训练系统可以通过归约由子网络300c中的每个代表性节点存储的相应更新的部分梯度向量来对子网络300c中的组执行第三和最终归约以获得最终梯度向量。在第三归约之后,代表性节点可以存储用于副本网络300a的最终梯度向量。例如,节点305c可以存储最终梯度向量并更新由副本网络300a训练的机器学习模型的模型参数。然后,节点305c可以将更新的模型参数广播到副本网络300a中的每个节点。
56.尽管根据存储代表性节点所属的节点组的部分最终梯度向量的代表性节点来描述图3a-c,但是在一些实施方式中,利用部分最终梯度向量更新节点组中的每个节点。
57.返回参考图1,节点125a-n中的一些节点可以被退化。退化节点是在归约期间不能生成各个梯度向量或将各个梯度向量传送到训练系统100的节点。节点可能由于硬件问题——例如,相应处理单元的物理损坏、硬件已经从节点移除以进行替换或维护——而退
化。节点也可能因为节点与其他节点之间的链路被损坏而退化。节点也可能由于安装在节点处的存储器中的软件的问题——例如,软件故障、当前正在进行的软件更新或节点处的软件维护——而退化。
58.如果节点处的链路被损坏,则节点被称为完全退化或部分退化。如果到该节点的所有链路都被损坏,使得数据不能传送到该节点或从该节点传送,则该节点被认为是完全退化。如果到节点的一些而不是全部链路被损坏,则该节点被称为部分退化。当节点部分退化时,该节点不能沿着受损链路所属的维度传送数据。部分退化的节点仅被认为沿着具有受损链路的维度退化。因此,部分退化的节点可以被分类为沿着一个维度而不是沿着另一维度退化。
59.训练系统100还可以被配置为当节点仅与沿着副本网络的每个维度的退化节点相邻时,将节点分类为退化。在这些情况下,即使节点能够为一批训练数据生成各个梯度向量,该节点也被认为是退化的。
60.图4图示了具有退化节点的示例性机器学习副本网络400。副本网络400具有二维网格拓扑。节点b3是退化节点,由图4中的茅草标记指示。节点c3、c4和d3也退化,因为连接到节点的链路中的至少一个被损坏,由受损链路408和410指示。具体地,节点c4部分退化:节点c4沿着副本网络400的行维度退化,因为行维度具有受损链路408,但是节点c4不被认为沿着列维度退化。
61.另一方面,节点c3被认为是完全退化的节点:节点c3由于受损链路408而沿着行维度退化,并且还由于连接到节点c4的受损链路410而沿着列维度退化。
62.退化节点可以是连续的或非连续的。连续退化节点是沿着维度的组中的一个或多个其他退化节点的邻居。训练系统100可以被配置为当节点仅具有退化节点作为邻居时,将该节点识别为退化,使得可以仅使用退化节点的链路绘制从任何一个退化节点到另一退化节点的连续路径。另一方面,如果副本网络具有仅使用来自退化节点的链路不能从副本网络中的任何其他退化节点到达连续路径的任何退化节点,则该副本网络被认为具有非连续退化节点。
63.例如并且参考图4的副本网络400,节点b3、c3、c4和d3是连续的,因为可以绘制从任何一个退化节点到另一退化节点的路径,同时仅访问其他退化节点。然而,为了示例,如果节点c1也被退化,则退化节点将被认为是非连续的,因为在不访问非退化节点的情况下无法绘制到c1的路径。如下文详细讨论的,训练系统100如何训练具有一个或多个退化节点的副本网络可以取决于退化节点是否连续。
64.通常,训练系统100可以训练具有一个或多个退化节点的副本网络。训练系统100可以将退化节点与非退化节点进行分类。然后,训练系统100可以对每个维度中的每个节点组执行一系列“转发阶段”操作和“关键阶段”操作。如上所述,关键阶段操作包括归约操作。例如,关于图3a-c讨论的第一、第二和第三归约中的每一个沿着每个维度形成相应关键阶段的一部分。
65.另一方面,转发阶段操作包括当由节点执行时使节点将相应各个梯度向量转发到非退化节点的操作。接收节点可以被配置为接收和计算反映由转发节点转发的各个梯度向量的新的各个梯度向量,在本说明书中被称为中间梯度向量。如下所述,训练系统在关键阶段和转发阶段期间执行的顺序和具体操作因实施方式而改变。
66.为了确定哪些节点组应该执行“关键阶段”操作以及哪些节点组应该执行“转发阶段”操作,训练系统可以被配置为将沿着维度的每个节点组指定为“转发组”或“关键组”。“转发组”是不参与沿着维度的归约的关键阶段的节点组。
67.相反,在一些实施方式中,转发组中的每个非退化节点将其相应各个梯度向量转发到关键组中的非退化节点,即,被指定为沿着维度参与关键阶段的节点组。在一些实施方式中并且如下所述,训练系统可以形成转发组中的非退化节点的“子网络”,并且在将内部梯度向量转发到关键组中的非退化节点之前,计算用于每个子网络的最终梯度向量(称为“内部”梯度向量)。
68.因为部分退化的节点在逐个维度的基础上被定义为退化的或非退化的,所以部分退化的节点可以例如是沿着一个维度的转发组的一部分,但是也是沿着另一维度的关键组的一部分。
69.在一些实施方式中,为了将节点所在的组指定为“转发组”或“关键组”,系统可以将部分退化的节点识别为完全退化。这意味着,无论部分退化的节点是否沿着相应维度退化,系统都可以始终将节点识别为完全退化的节点。因为部分退化的节点可能易于进一步退化,所以系统可以被配置为将节点识别为完全退化,作为防止包括节点以执行关键操作的预防措施。通过在退化节点周围进行路由,训练系统可以利用不同退化水平提高副本网络的处理。训练系统可以分布在转发阶段和关键阶段两者中执行操作,以利用副本网络的分布式性质。另外,通过跨副本网络中的节点分布梯度向量和后续处理,训练系统可以减轻由计算任务的不均匀分布引起的副本网络的物理组件上的“热点”导致的进一步退化。如下所述,训练系统可以被配置为对任意维度的副本网络执行归约。
70.训练系统100可以通过以任何适当的方式测试每个节点和链路的组件的质量来将节点分类为退化的。例如,每个节点可以被配置为接收和响应由训练系统100发送的状态请求。如果训练系统100在预定时间段内没有接收到对状态请求的响应,则训练系统100可以将该节点分类为退化的。
71.作为另一示例,训练系统可以沿着连接沿着维度的相应相邻节点的每个链路发送状态请求。类似地,如果训练系统没有接收到对沿着特定链路发送到节点的状态请求的响应,则训练系统100可以将节点分类为沿着具有该特定链路的维度退化。在该示例中,训练系统可以针对沿着连接节点的一些链路而不是其他链路发送的请求,接收对节点的状态请求的响应。因此,训练系统100将节点分类为沿着具有受损或无响应链路的维度部分退化。
72.接下来,训练系统可以将每个节点组指定为转发组或关键节点组。如上所述,每个组的指定可以根据实施方式而变化。
73.在一些实施方式的转发阶段,训练系统将沿着维度并且具有退化节点的每个节点组指定为转发节点组。在转发节点组确实包括退化节点的实施方式中,训练系统将所有其他组指定为关键节点组。
74.转发组中的每个非退化节点计算用于一批训练数据的相应各个梯度向量,并将相应各个梯度向量转发到关键节点组中的非退化节点。然后,接收转发的各个梯度向量的非退化节点由接收节点的各个梯度向量和转发的各个梯度向量计算中间梯度向量。接收节点将其各个梯度向量更新为中间梯度向量。然后,训练系统可以沿着用于该维度的每个关键节点组计算归约,如上参考图3a-c所讨论的。
75.因为转发组中的非退化节点已经转发了它们相应的各个梯度向量,所以对仅具有非退化节点的组执行沿着维度的归约。如上参考图3a-c所讨论的,每个关键组可以具有存储用于关键组的部分最终梯度向量的代表性节点。训练系统100可以被配置为将用于每个关键组的相应部分最终梯度向量广播到该组中的每个节点。然后,训练系统100可以通过重复用于沿着后续维度的组的转发和关键阶段的操作来执行后续归约。
76.在沿着每个维度执行转发和关键阶段操作之后,训练系统可以由最终梯度向量计算更新的模型参数值,并将更新的模型参数值广播到副本网络中的每个非退化节点,包括用于每个维度的每个转发组的节点。
77.图5a-c图示了具有二维网格拓扑并且具有退化节点的训练副本网络500a-c。在一些实施方式中,当该组包括一个或多个退化节点时,训练系统通过将沿着维度的每个节点组指定为转发组来训练具有退化节点的副本网络500a-c。
78.图5a图示了具有部分退化节点的示例性副本网络500a。例如,在图5a中,由于退化节点b2、b3、c2和c3,行“b”和“c”是转发组。因此,非退化节点b1、c1、b4和c4可以计算相应的各个梯度向量,并将各个梯度向量转发到关键组中的接收节点。在副本网络500a中,行“a”和“d”被认为是关键组。c1将其相应的各个梯度向量转发到d1;b1将其相应的各个梯度向量转发到a1;b4将其相应的各个梯度向量转发到a4;以及c4将其相应的各个梯度向量转发到d4。在一些情况下,转发节点将必须在到达关键组中的节点之前,通过多于一个节点转发各个梯度向量。在其他情况下,多个节点可以将它们相应的各个梯度向量转发到相同的接收节点。最后,在一些情况下,转发节点可能无法将其各个梯度向量转发到任何接收节点。
79.一旦每个转发节点已经将其相应各个梯度向量转发到接收节点,每个接收节点就可以计算中间梯度向量。
80.注意,在图5a中,退化节点沿着行维度仅部分退化。为了避开退化的链路510和515,训练系统可以被配置为首先执行列维度的归约。在一些实施方式中,训练系统可以被配置为从多个维度中确定哪个维度具有最少的退化节点。然后,训练系统可以沿着该维度执行归约。
81.图5b图示了在网络的一角中具有退化节点的示例性副本网络500b。图5b图示了退化节点a1、a2、b1和b2,并且还图示了训练系统沿着由水平箭头510指示的副本网络500b的行维度计算归约。在转发阶段期间,节点a3和b3将它们相应的各个梯度向量转发到节点c3,而节点a4和b4将它们相应的梯度向量转发到节点c4。如上所述,节点a3、b3、a4和b4是转发节点,因为这些节点是非退化的并且属于具有退化节点的相应节点组。
82.然后,副本网络500b的节点c3和c4可以计算相应的中间梯度向量。具体地,节点c3计算其自己的各个梯度向量以及a3和b3的转发梯度向量之间的中间梯度向量。类似地,节点c4可以由其自己的各个梯度向量以及a4和b4的转发梯度向量计算中间梯度向量。然后,训练系统可以对关键组“c”和“d”执行关键阶段中的操作,并获得用于每一行的相应的部分最终梯度向量。
83.训练系统还可以训练具有非连续的多个退化节点的副本网络。
84.图5c图示了具有多个非连续退化节点的示例性副本网络500c。图5c图示了退化节点a1、b2和d4,并且还图示了训练系统沿着副本网络500c的行维度计算归约,由水平箭头515指示。首先,训练系统100可以确定副本网络500c是否包括非连续退化节点。
85.如果副本网络500c确实包括非连续退化节点,则训练系统100可以识别是否存在沿着行维度、不具有任何退化节点的组。在副本网络500c中,行“c”是没有任何退化节点的组。在一些实施方式中,训练系统可以基于仅具有非退化节点的组的存在来确定首先沿着哪个维度归约。例如,如果训练系统100没有识别沿着一个维度的一组非退化节点,则训练系统100可以分析沿着副本网络的其他维度的组,直到找到一组非退化节点。
86.在转发阶段期间,副本网络500c的节点b1和d1将它们相应的各个梯度向量转发到节点c1;节点a3、b3和d3将它们相应的各个梯度向量转发到节点c3;以及节点a4和b4将它们相应的各个梯度向量转发到节点c4。然后,节点c1、c3和c4计算相应的中间梯度向量,如上参考图5a-b所讨论的。然后,训练系统100可以对行“c”执行关键阶段以生成用于副本网络500c的最终梯度向量。
87.如上所述,训练系统100可以被配置为计算转发组中非退化节点的子网络的内部归约。每个子网络的节点可以将相应的内部梯度向量转发到关键组中的相应接收非退化节点。每个接收节点可以使用其自己的各个梯度向量和所接收的子网络的内部梯度向量来生成中间梯度向量。然后,每个接收节点可以利用所计算的中间梯度向量更新其相应各个梯度向量,并且训练系统100可以沿着用于每个关键节点组的维度执行归约。
88.图6图示了具有连续退化节点的示例性副本网络600。图6图示了退化节点b2、a3和b3,并且还图示了训练系统沿着副本网络500c的列维度执行归约,由垂直箭头515指示。首先,训练系统可以将沿着列维度的每个组分类为具有退化节点或不具有退化节点。在副本网络600a中,“2”列和“3”列包括退化节点,因此被指定为转发组。
89.接下来,训练系统100可以执行每个转发组中的连续非退化节点的子网络的内部归约。为此,训练系统100可以识别节点的子网络。每个节点子网络仅包含跨一个或多个转发组的非退化节点。
90.例如,在图6中,训练系统100可以形成子网络610,其包括连续节点c2、c3、d2和d3。子网络610中的每个节点是转发组——即列“2”和列“3”——中的非退化节点。因为节点c2、c3、d2和d3是连续的,所以训练系统100可以由所有四个节点形成子网络。在一些实施方式中,训练系统100被配置为生成不同大小的子网络。例如,对于四个节点c2、c3、d2和d3,训练系统可以形成大小为1的四个子网络、大小为2的两个子网络,或者大小为1的一个子网络和大小为3的一个子网络。
91.同样在图6中,训练系统100可以由节点a2形成第二子网络615。训练系统形成仅包括节点a2的子网络615,因为a2不与转发组中的任何非退化节点连续。训练系统100可以重复形成子网络的该过程,直到每个转发组中的每个非退化节点都是相应子网络的一部分。
92.在形成子网络之后,训练系统100可以使节点计算用于每个子网络的内部梯度向量。内部梯度向量是用于子网络的最终梯度向量。训练系统100可以使用为归约副本网络所述的任何技术来生成内部梯度向量,如上参考图3a-c所讨论的。在副本网络600a中,训练系统100可以计算用于子网络610和615的内部梯度向量。
93.在计算用于每个子网络的内部梯度向量之后,训练系统可以使每个子网络的节点将相应的内部梯度向量转发到关键组中的非退化节点。在副本网络600a中,子网络610的节点将子网络610的内部梯度向量转发到节点c1、d1、c4和d4。类似地,节点a2将用于子网络615的内部梯度向量转发到节点a1。
94.在转发内部梯度向量之后,接收内部梯度向量的节点从相应各个梯度向量和接收到的内部梯度向量生成节点的中间梯度向量。然后,每个接收节点利用所生成的中间梯度向量更新相应各个梯度向量。在副本网络600a中,节点a1、c1、d1、c4和d4利用计算出的中间梯度向量更新相应各个梯度向量。
95.最后,训练系统可以计算沿着维度的每个关键组的部分最终梯度向量。在副本网络600a中,训练系统100计算用于列“1”和列“4”的归约。可以利用该组的相应部分最终梯度向量来更新单个代表性节点,并且训练系统100可以沿着下一维度重复该归约过程。
96.尽管图5a-c和6中的示例性副本网络已经是定义二维网格拓扑的副本网络,但是训练系统100还可以被配置为对具有环面拓扑的副本网络执行归约。当副本网络定义环面拓扑时,训练系统在确定连续的退化或非退化节点时另外考虑副本网络的相对端上的节点之间的环绕链路。
97.图7图示了具有环面拓扑和退化节点的示例性副本网络700。图7图示了退化节点a1、a2、b1和b2,并且还图示了训练系统计算沿着副本网络700的列维度的归约,由垂直箭头705所示。训练系统100可以通过首先将列“1”和“2”指定为转发组来计算最终梯度向量。然后,转发组的非退化节点,即节点c1、c2、d1和d2,可以转发具有退化节点的组中的非退化节点的各个梯度向量,并在接收节点c3和d3处计算中间梯度向量。
98.在一些实施方式中,并且如上参考图6所讨论的,训练系统可以识别副本网络700中的节点的子网络,并且首先计算该子网络的内部梯度向量。在副本网络700中,子网络710可以包括四个非退化节点c1、c2、d1和d2。训练系统可以计算用于子网络710的内部梯度向量,并且节点c2和d2可以将内部梯度向量转发到相邻节点c3和d3。
99.图8是用于计算具有退化节点的副本网络的最终梯度向量的示例性过程800的流程图。为方便起见,示例性过程将被描述为由位于一个或多个位置并且根据本说明书适当地编程的一个或多个计算机的系统执行。例如,适当编程的训练系统——例如,图1的训练系统100——可以执行图8的示例性过程。描述了示例性过程800沿着维度的一次迭代。如上所述,训练系统可以对副本网络的每个维度生成部分最终梯度向量,直到计算最终梯度向量。
100.训练系统基于沿着维度的每个节点组是否包括任何退化节点,将该节点组指定为转发组或关键组(810)。训练系统可以根据组中退化节点的存在或不存在,将组指定为转发组或关键组。如上参考图6所讨论的,在一些实施方式中,训练系统指定跨一个或多个转发组的非退化节点的一个或多个子网络。
101.训练系统对于沿着维度的转发节点组中的每个非退化节点,转发用于沿着维度的节点的各个梯度向量,直到将相应各个梯度向量转发到沿着维度的相应关键节点组中的相应接收节点(820)。如上参考图5a-c所讨论的,转发组中的非退化节点可以将它们相应的各个梯度向量转发到不在转发组中的非退化节点。
102.训练系统于每个接收节点,利用中间梯度向量更新相应各个梯度向量,其中,中间梯度向量是从相应各个梯度和一个或多个所接收的各个梯度向量来计算的(830)。接收各个梯度向量的非退化节点可以生成中间梯度向量,并且训练系统可以在没有转发组中的节点的情况下沿着维度计算归约。如上参考图5a-c和6所讨论的,在一些实施方式中,训练系统可以在非退化节点将用于子网络的相应内部梯度向量转发到接收节点之前,计算用于非
退化节点的子网络的内部归约。
103.训练系统对沿着维度的每个关键节点组执行归约,以生成相应部分最终梯度向量(840)。如果训练系统正在对仅具有一个维度的副本网络执行归约,则部分最终梯度向量是用于副本网络的最终梯度向量。
104.训练系统对于每个关键节点组,利用相应的部分最终梯度向量更新用于代表性节点的各个梯度向量(850)。如上参考图3所讨论的,表示具有相应的部分最终梯度向量的所有节点的子网络具有比计算部分最终梯度向量的副本网络小1的维度。例如,如果副本网络定义三维网格拓扑,则部分最终梯度向量由定义二维网格拓扑的节点表示。
105.训练系统对仅包括代表性节点的子网络上的下一维度重复该操作,直到生成最终梯度向量(860)。使用最终梯度向量,训练系统可以在将更新的模型参数值广播到每个非退化节点之前,利用最终梯度向量更新机器学习模型的模型参数值。
106.图9是用于对非退化节点的子网络执行内部归约的示例性过程的流程图。为方便起见,示例性过程将被描述为由位于一个或多个位置并且根据本说明书适当地编程的一个或多个计算机的系统执行。例如,适当编程的训练系统——例如,图1的训练系统100——可以执行图9的示例性过程。
107.训练系统确定该节点组包括一个或多个退化节点,并且作为响应,将该节点组指定为一个或多个节点子网络的一部分,其中,一个或多个节点子网络不包括一个或多个退化节点(步骤910)。如上参考图6所讨论的,子网络包括一个或多个转发组的连续非退化节点。
108.训练系统对于沿着维度的每个节点子网络,对副本网络中沿着维度的节点的子网络执行归约,以生成相应内部梯度向量(步骤920)。如上参考图6所讨论的,内部梯度向量是用于节点子网络的最终梯度向量。
109.训练系统使得每个子网络中的节点转发用于节点子网络的相应内部梯度向量,直到将相应内部梯度向量转发到沿着维度的关键节点组中的节点,其中,该节点不在节点子网络中(步骤930)。接收节点可以利用相应的中间梯度向量更新它们相应各个梯度向量。
110.本说明书中描述的进程和逻辑流程可以由一个或多个可编程计算机执行,所述一个或多个可编程计算机执行一个或多个计算机程序以通过对实例数据进行操作并生成输出来执行功能。尽管本说明书具体涉及处理梯度向量的处理单元,但是处理单元可以对任何非标量实例数据——即张量、矩阵、数组、或可以保持可以并行分割和处理的数据的任何其它数据结构——执行归约处理。进程和逻辑流程还可以由专用逻辑电路——例如fpga或asic——执行,或者由专用逻辑电路和一个或多个编程计算机的组合执行。
111.本说明书中描述的主题和动作及操作的实施例可以用数字电子电路、用有形地具体实现的计算机软件或固件、用包括本说明书中公开的结构及其结构等同物的计算机硬件或者用它们中的一个或多个的组合来实现。本说明书中描述的主题的实施例可以被实现为编码在计算机程序载体上的一个或多个计算机程序,例如,计算机程序指令的一个或多个模块,用于由数据处理装置执行,或控制数据处理装置的操作。载体可以是有形非暂时性计算机存储介质。可替代地或附加地,载体可以是人工生成的传播信号,例如机器生成的电、光或电磁信号,其被生成来对信息进行编码以用于传输到适合的接收器装置以由数据处理装置执行。计算机存储介质可以是计算机可读存储介质、机器可读存储基板、随机或串行存
取存储器设备、或它们中的一个或多个的组合或者是它们的一部分。计算机存储介质不是传播信号。
112.术语“数据处理装置”涵盖用于处理数据的所有种类的装置、设备和机器,作为示例包括可编程处理器、计算机或多个处理器或计算机。数据处理装置可以包括专用逻辑电路,例如,fpga(现场可编程门阵列)、asic(专用集成电路)或gpu(图形处理单元)。装置除了包括硬件之外还可以包括为计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统或它们中的一个或多个的组合的代码。
113.也可以被称为或者描述为程序、软件、软件应用、app、模块、软件模块、引擎、脚本或代码的计算机程序可以用包括编译或解释语言或声明或过程语言的任何形式的编程语言编写;并且它可以以任何形式部署,包括作为独立程序或者作为模块、组件、引擎、子例程或适合于在计算环境中执行的其它单元,该环境可以包括由一个或多个位置中的数据通信网络互连的一个或多个计算机。
114.计算机程序可以但是不必对应于文件系统中的文件。程序可以被存储在保持其它程序或数据的文件的一部分中,例如存储在标记语言文档中的一个或多个脚本;在专用于所述程序的单个文件中或者在多个协调文件中,例如存储代码的一个或多个模块、子程序或部分的文件。
115.本说明书中描述的过程和逻辑流程可以由执行一个或多个计算机程序的一个或多个计算机执行以通过对输入数据进行操作并生成输出来执行操作。过程和逻辑流程还可以由专用逻辑电路——例如fpga、asic或gpu,或由专用逻辑电路和一个或多个编程计算机的组合执行。
116.适合于执行计算机程序的计算机可以基于通用或专用微处理器或两者,或任何其它种类的中央处理单元。通常,中央处理单元将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的必要元件是用于执行指令的中央处理单元和用于存储指令和数据的一个或多个存储器设备。中央处理单元和存储器可以由专用逻辑电路补充或者并入在专用逻辑电路中。
117.通常,计算机还将包括一个或多个大容量存储设备或可操作地耦合以从一个或多个大容量存储设备接收数据或将数据传送到一个或多个大容量存储设备。大容量存储设备可以是例如磁盘、磁光盘、光盘或固态驱动器。然而,计算机不必具有这样的设备。此外,计算机可以被嵌入在另一设备中,所述另一设备例如是移动电话、个人数字助理(pda)、移动音频或视频播放器、游戏控制器、全球定位系统(gps)接收器或便携式存储设备,例如通用串行总线(usb)闪存驱动器,仅举几例。
118.为了提供与用户的交互,本说明书中描述的主题的实施例可以在计算机上实现或者被配置为与计算机通信,所述计算机具有用于向用户显示信息的显示设备——例如,lcd(液晶显示器)监视器——以及用户可用来向该计算机提供输入的输入设备——例如键盘和定点设备,例如鼠标、轨迹球和触控板。其它种类的设备也可以被用来提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感觉反馈,例如视觉反馈、听觉反馈或触觉反馈;并且可以以任何形式接收来自用户的输入,包括声、语音或触觉输入。此外,计算机可以通过向由用户使用的设备发送文档并从由用户使用的设备接收文档来与用户交互;例如,通过响应于从web浏览器接收到请求而向用户的设备上的web浏览器发送网页,或者通
过与在用户设备——例如智能电话或电子平板——上运行的app交互。另外,计算机可以通过向个人设备——例如正在运行消息传递应用的智能电话——发送文本消息或其它形式的消息并且作为回复,从用户接收响应消息来与用户交互。
119.本说明书连同系统、装置和计算机程序组件一起使用术语“被配置为”。对于要被配置为执行特定操作或动作的一个或多个计算机的系统意指该系统已在其上安装了在操作中使该系统执行这些操作或动作的软件、固件、硬件或其组合。对于要被配置成执行特定操作或动作的一个或多个计算机程序意指该一个或多个程序包括指令,所述指令当由数据处理装置执行时,使该装置执行操作或动作。对于被配置为执行特定操作或动作的专用逻辑电路意指该电路具有执行操作或动作的电子逻辑。
120.本说明书中描述的主题的实施例可以在计算系统中实现,所述计算系统包括后端组件,例如作为数据服务器;或者包括中间件组件,例如应用服务器;或者包括前端组件,例如具有用户通过其与本说明书中描述的主题的实施方式交互的图形用户界面、web浏览器或app的客户端计算机;或者一个或多个这样的后端、中间件或前端组件的任何组合。系统的组件可通过例如通信网络的任何形式或介质的数字数据通信来互连。通信网络的示例包括局域网(lan)和广域网(wan),例如互联网。
121.计算系统可以包括客户端和服务器。客户端和服务器一般地彼此远离并通常通过通信网络来交互。客户端和服务器的关系借助于在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序而产生。在一些实施例中,服务器向用户设备传输例如html页面的数据例如以用于向与作为客户端的设备交互的用户显示数据并从该用户接收用户输入的目的。可以在服务器处从设备接收在用户设备处生成的数据,例如,用户交互的结果。
122.除了所附权利要求的实施例和上述实施例之外,以下编号的实施例也是创新的:
123.实施例1是一种用于并行处理训练数据的方法,所述方法包括:在以n维网络拓扑组织的多个节点中的每个节点上训练机器学习模型的相应副本,其中,n是大于或等于1的整数,其中,在相应批次的训练数据上并行地训练所述多个节点中的多个节点,其中,所述多个节点中的一个或多个节点已经被分类为退化,以及其中,每个非退化节点存储由在所述相应批次的训练数据上训练用于所述节点的相应副本得到的相应各个梯度向量;以及通过对所述网络拓扑中的n个维度中的维度执行包括以下操作的操作来组合所述节点中的所述相应各个梯度向量以生成最终梯度向量,所述操作包括:基于沿着所述维度的每个节点组是否包括任何退化节点,将所述节点组指定为转发组或关键组,对于沿着所述维度的转发节点组中的每个非退化节点,转发用于沿着所述维度的节点的相应各个梯度向量,直到将所述相应各个梯度向量转发到沿着所述维度的相应关键节点组中的相应接收节点为止,对于每个接收节点,利用中间梯度向量更新相应各个梯度向量,其中,从所述相应各个梯度向量和一个或多个所接收的各个梯度向量来计算所述中间梯度向量,对沿着所述维度的每个关键节点组执行归约以生成用于所述关键组的相应部分最终梯度向量,以及对于每个关键节点组,利用所述相应部分最终梯度向量更新用于代表性节点的各个梯度向量。
124.实施例2是根据实施例1所述的方法,其中,所述维度是第一维度,其中,组合所述节点中的所述相应各个梯度向量以生成所述最终梯度向量包括对包括所述第一维度的、所述n维网络拓扑的每个维度执行操作,以及其中,所述方法进一步包括对仅包括所述代表性节点的子网络上的下一维度重复所述操作,直到生成所述最终梯度向量。
125.实施例3是根据实施例1至2中的任何一个所述的方法,进一步包括:利用所述最终梯度向量来更新所述机器学习模型的模型参数值;以及将所更新的模型参数值广播到每个非退化节点。
126.实施例4是根据实施例1至3中的任何一个所述的方法,其中,基于所述节点组中的一个或多个退化节点的存在,将每个维度中的多个节点组中的每个节点组指定为转发节点组或关键节点组包括:确定所述节点组包括一个或多个退化节点,以及作为响应,将所述节点组指定为转发节点组。
127.实施例5是根据实施例1至4中的任何一个所述的方法,其中,基于所述节点组中的一个或多个退化节点的存在,将每个维度中的多个节点组中的每个节点组指定为转发节点组或关键节点组包括:确定所述节点组包括一个或多个退化节点,以及作为响应,将所述节点组指定为一个或多个节点子网络的一部分,其中,所述一个或多个节点子网络不包括所述一个或多个退化节点。
128.实施例6是根据实施例1至5中的任何一项所述的方法,其中,所述归约是第一归约,以及所述方法进一步包括,对于每个节点子网络:对于沿着所述维度的每个节点子网络,对所述节点子网络执行第二归约,以生成相应内部梯度向量;以及转发用于每个节点子网络的所述相应内部梯度向量,直到将所述内部梯度向量转发到沿着所述维度的关键节点组中的节点。
129.实施例7是根据实施例1至6中的任何一项所述的方法,其中,所述网络拓扑是网状拓扑。
130.实施例8是根据实施例1至6中的任何一项所述的方法,其中,所述网络拓扑是环面拓扑。
131.实施例9是根据实施例1至8中的任何一项所述的方法,进一步包括:确定特定节点未退化,并且所述特定节点的每个相邻节点沿着特定维度退化;以及作为响应,指示所述特定节点沿着所述特定维度退化。
132.实施例10是根据实施例1至9中的任何一项所述的方法,其中,对沿着所述维度的每个关键节点组执行归约以生成相应的部分最终梯度向量包括对每个关键节点组执行循环归约。
133.实施例11是一种系统,包括:一个或多个计算机和存储指令的一个或多个存储设备,所述指令在由所述一个或多个计算机执行时可操作以使所述一个或多个计算机执行根据实施例1至10中的任何一项所述的方法。
134.实施例12是一种编码有计算机程序的计算机存储介质,所述程序包括指令,所述指令在由数据处理装置执行时可操作以使所述数据处理装置执行根据实施例1至10中的任何一项所述的方法。
135.虽然本说明书包含许多具体实施方式细节,但是这些不应该被解释为对任何发明的或可能要求保护的范围的限制,而是相反地被解释为对可能特定于特定发明的特定实施例的特征的描述。也可以在单个实施例中组合地实现在本说明书中在单独的实施例的上下文中描述的某些特征。相反地,也可单独地或者以任何适合的子组合在多个实施例中实现在单个实施例的上下文中描述的各种特征。此外,尽管特征可能在上文被描述以某些组合起作用并且甚至最初被如此要求保护,但是来自要求保护的组合的一个或多个特征可以在
一些情况下被从该组合中除去,并且权利要求可以针对子组合或子组合的变型。
136.类似地,虽然按照特定次序在附图中描绘并在权利要求书中记载操作,但是这不应该被理解为要求以所示的特定次序或者以先后次序执行这样的操作,或者要求执行所有图示的操作以实现所预期的结果。在一些情况下,多任务处理和并行处理可能是有利的。此外,上述实施例中的各种系统模块和组件的分离不应该被理解为在所有实施例中要求这样的分离,并且应该理解到,所描述的程序组件和系统一般地可被一起集成在单个软件产品中或者包装到多个软件产品中。
137.已经描述了主题的特定实施例。其它实施例在所附权利要求的范围内。例如,权利要求中记载的动作可以以不同的次序执行并且仍然实现所预期的结果。作为一个示例,附图中描绘的过程不一定要求所示的特定次序或顺序次序以实现所预期的结果。在一些情况下,多任务处理和并行处理可能是有利的。
138.要求保护的是:
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献