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

利用多维硬件加速器处理对大型数据集的归约和广播操作的制作方法

2022-04-16 13:26:50 来源:中国专利 TAG:

利用多维硬件加速器处理对大型数据集的归约和广播操作
1.相关申请的交叉引用
2.本技术要求于2019年9月6日提交的美国临时专利申请no.62/897,239的优先权。在先申请的公开内容被视为本技术的公开内容的部分,并且通过引用并入本文。


背景技术:

3.本说明书涉及训练机器学习模型。
4.机器学习模型接收输入,并且基于接收到的输入和模型参数的值生成输出。这些模型通常需要使用接收到的输入来进行训练,这些输入是非常大的数据集。


技术实现要素:

5.本说明书一般描述了与大型数据集的并行处理相关的技术,具体涉及在各种节点拓扑中并行处理大型数据集,以便对多个拓扑节点进行更快的归约、映射和广播操作。节点被联网在一起,并且可以通过硬件加速器在硬件中被执行。硬件加速器可以包括并行运行的多个联网处理器(例如,在网格阵列、环面配置等中)。更具体地,交叉复制和(crs)操作被配置为在此类网络的数据并行随机梯度下降法(sgd)中,对多个副本的梯度贡献进行求和。为了多个副本上sgd训练的可扩展执行,在给定的批大小下,将梯度贡献合并(例如,求和)。然而,这种过程通常可以是机器学习模型(例如,神经网络模型)的执行瓶颈,因为crs操作的归约-分散和聚集阶段是在网络中的一系列一维(1d)循环中进行的。例如,圆算法(circle algorithm),诸如旋转钳形算法(rotated pincer algorithm),在拓扑节点的1d配置上执行全局求和操作。这种配置是是次优的,因为它没有利用拓扑节点之间的所有路由器链路。更确切地说,随着1d算法在第二维中执行,1d算法在第一维中串行执行,并且在此期间,一些路由器链路处于休眠状态。
6.为了克服这个问题,本公开描述了一种用于使用多维圆算法在拓扑的多维中执行crs操作的过程。多维算法被配置为利用求和操作管道化(pipeline)直接存储器存取(dma)传输,以增加crs操作的吞吐量。这是通过在多维中同时执行圆算法来实现的,以便和的梯度贡献可以在拓扑的多维中同时被复制。因为与在多维拓扑的各个维度上串行执行1d算法相比,拓扑节点之间的路由器链路得到了更充分的利用,所以可以大大降低crs操作的延迟,并且在某些情况下,可以降低200%以上。减少crs操作的延迟,消除了训练机器学习模型的主要瓶颈。
7.在一个方面中,描述了一种用于处理训练数据的方法。可以在包括节点的行和列的多维拓扑中所组织的多个节点中的每个节点上训练机器学习模型的相应副本。每个节点都可以在相应的一批训练数据上被并行地训练。在训练之后,每个节点都可以保存训练所得到的相应梯度向量。节点中的相应梯度向量可以通过执行操作加以组合以生成最终梯度向量,这些操作包括:通过在节点上执行的代码,并行地为多维拓扑中的每一行执行圆算法的第一阶段,以在行的每个节点上为梯度向量的部分生成不同的组合数据;通过在节点上执行的代码,并行地对多维拓扑中的每一列执行圆算法的第一阶段的第二部分,以在列的
每个节点中生成不同的列结果,该列结果包括来自每一行的组合数据的部分;通过在节点上执行的代码,并行地对多维拓扑的每一列执行圆算法的第二阶段的第一部分,以在每一列中生成最终梯度向量的部分,该部分包括每个列结果;以及通过在节点上执行的代码,并行地对多维拓扑的每一行执行圆算法的第二阶段的第二部分,以在每一行中生成最终梯度向量,该向量包括来自每一列的最终梯度向量的每个部分。
8.在一些变化中,以下一项或多项可以单独或以任何可行的组合附加地实施。方法可以进一步包括:确定多个节点的多维拓扑的类型;基于类型,将第一阶段的第一部分映射到第一节点集和第一节点集之间的第一链路集;以及将第一阶段的第二部分映射到第二节点集和节点之间的第二链路集,第一链路集与第二链路集不同。
9.方法可以进一步包括:确定多个节点的多维拓扑包括环绕链路;以及使用环绕链路对多维拓扑的每行和每列进行配置以执行圆算法。
10.多维拓扑的每个节点都可以包括至少两个子节点。多维拓扑可以包括环面拓扑,其中,对于每一行和每一列,每个节点的子节点都被配置为圆算法的相邻节点。多维拓扑可以包括网格拓扑,其中,对于每一行和每一列,网格的边缘节点的子节点都被配置为圆算法的相邻节点。
11.除了行和列之外,多维拓扑可以在第三维中包括节点集,其中,方法进一步包括:通过在第三维的节点集上执行的代码,并行地执行圆算法的第一阶段的第三部分,以在列的每个节点中生成不同的第三维结果,该结果包括来自每一列的列结果的部分;以及通过在第三维的节点集上执行的代码,并行地执行圆算法的第一阶段的第三部分,以在第三维的节点集的每个节点中从每一列生成最终梯度向量。
12.方法可以进一步包括在执行圆算法的第一阶段和执行圆算法的第二阶段期间,利用每个节点上的代码的执行,管道化每个节点之间的数据传输。圆算法可以包括旋转钳形算法,其中,第一阶段包括旋转钳形算法的归约-分散阶段,并且第二阶段包括旋转钳形算法的全局聚集阶段。梯度向量的部分的组合数据包括来自行的两个或两个以上的节点的总和数据。来自每一行的组合数据的部分包括总和数据,该总和数据包括来自列的两个或两个以上的节点的组合数据。
13.过程和系统的一个或多个实施例的细节在附图中进行描述,附图仅以图示的方式给出,并且在下面的描述中进行说明。本发明的其他特征、方面和优点通过说明书、附图和权利要求书将变得显而易见。相同的参考数字和标记在各个图中都指示相同的元件。
附图说明
14.图1图示了机器学习模型副本的示例系统。
15.图2图示了在示例模块上的1d环面拓扑中连接的处理单元的示例,示出了圆算法的归约分散阶段的执行。
16.图3图示了在圆形拓扑中连接的处理单元的示例,示出了圆算法的归约分散阶段的执行。
17.图4是包括二维(2d)环面的示例多维拓扑的示意图,示出了圆算法的归约分散阶段的执行。
18.图5图示了在图3的圆形拓扑中连接的处理单元的示例,示出了圆算法的全局聚集
阶段的执行。
19.图6是图4的多维拓扑的示意图,示出了圆算法的全局聚集阶段的执行。
20.图7是包括二维(2d)网格拓扑的多维拓扑的示意图,示出了圆算法的归约分散阶段的执行。
21.图8是包括2d网格拓扑的多维拓扑的示意图,示出了圆算法的全局聚集阶段的执行。
22.图9是包括2d环面拓扑的多维拓扑的示意图,该2d环面拓扑包括每个节点的多个处理器。
23.图10是包括2d网格拓扑的多维拓扑的示意图,该2d网格拓扑包括每个节点的多个处理器。
24.图11是示出了用于在多维中执行crs操作的操作的流程图。
25.图12是示出了用于组合多维拓扑的每个节点的相应梯度向量的示例过程的流程图。
26.相同的参考数字和标记在各个图中指示相同的元件。
具体实施方式
27.用于训练机器学习模型的常见策略是在多个处理单元上并行处理成批的训练数据。图1图示了机器学习模型副本a至d的示例系统,这些机器学习模型副本分别在对应的处理单元上被训练。为了方便起见,副本以及其被发现的处理单元在图中均可以用相同的标记来指代。
28.当被训练时,机器学习模型由模型参数的值定义。模型参数一般组织为非标量数据,例如,向量、二维(2d)矩阵、三维(3d)矩阵或较高阶的矩阵,其元素一般为标量值,例如,整数或浮点数。
29.在系统中,在模型训练过程的每次迭代中,模型的每个副本(也称为节点)都是在唯一的一批训练数据(例如,来自训练数据集)上训练的。在图1中,副本a至d分别是在批1至4上训练的。当节点已经完成处理其一批训练数据时,节点具有针对模型参数的值的梯度集。在图1的示例中,当节点a至d已经分别完成处理批1至4时,节点a、b、c和d分别具有梯度值[a1、a2]、[b1、b2]、[c1、c2]和[d1、d2]。每个节点中梯度值的结构相同,并且一般与参数值的结构对应。为了方便起见,这些被称为向量。
[0030]
在本公开中,节点一般是指执行crs操作的逻辑和其他逻辑操作的系统的部分。虽然节点不一定与硬件处理器对应,但是指定节点正在执行逻辑操作(例如,求和)的描述意味着执行节点的硬件正在执行处理操作,以执行逻辑操作。
[0031]
因为副本是在不同数据上训练的,所以节点的梯度向量被组合以生成最终梯度向量,该最终梯度向量用于更新模型的参数值(例如,参数向量)。组合梯度向量的一种方法是生成逐元素平均值。更新后的参数值被传递给所有机器学习模型节点,一般预期另一个迭代,以处理一批训练数据,并且将每个副本的梯度向量组合(例如,归约)为最终梯度向量(例如,归约梯度向量),并且更新模型的参数值。传递给模型的每个节点的梯度向量的部分可以被称为梯度向量的碎片。
[0032]
一些机器学习系统具有中心参数计算子系统,该子系统接收来自每个副本的梯度
向量,并且在中心位置组合它们。本说明书描述了可以在机器学习系统中使用的技术,这些系统没有中心参数计算子系统,而是在节点中以分布式方式归约梯度向量和更新参数值。完成此的操作被称为交叉复制和(crs)操作,该操作通常包括两个阶段:全局求和操作(也称为归约分散阶段)和全局聚集操作(也称为聚集阶段)。crs操作在网络的所有节点上复制(例如,聚集)最终梯度向量。在一些实现方式中,逐元素平均发生在归约分散阶段期间,因为来自每个节点的贡献是组合的。
[0033]
图2图示了高速连接的拓扑,该拓扑连接在圆形拓扑200中连接的处理单元a-h(202a至202h)的示例组合。在一些实现方式中,所有处理单元都在单个模块上。图2所示的处理单元之间的线(诸如线204)表示高速数据通信链路。处理单元一般是在多个集成电路(“芯片”)上制造的。在一些实现方式中,每个芯片都可以包括多个处理单元(例如,两个处理单元)。跨芯片边界的链路被称为芯片间网络链路,而同一芯片上的处理单元通过芯片内接口链路进行通信。链路可以包括半双工链路或全双工链路,在该半双工链路上,一次只有一个处理单元可以传输数据,在该全双工链路上,数据可以在两个方向上同时传输。如果链路被配置为在两个方向上为特定的操作传输数据,则全双工链路可以表示为节点之间的两个箭头。然而,对于本说明书中所引用的任何图,由单个箭头表示的链路不一定是指半双工链路,而是表示图中所示的特定操作的数据流方向。
[0034]
现在参考节点(例如,处理单元)a-h 202a-h描述执行该拓扑的归约的方法。归约具有求和阶段和聚集阶段,这些阶段可以包括广播阶段。这些被称为圆算法。
[0035]
单路径算法具有节点之一,例如,节点a,将数据发送给一个邻居,例如,节点b。b被配置为将来自a的数据组合(例如,添加)到其自己的数据,并且将总和发送给c,c重复此操作并且发送给d,等等。数据的处理、发送和接收可以以串流方式执行。例如,b被配置为在b接收到来自a的所有数据之前开始添加。在该示例中,最终组合发生在节点h中。然后,将最终梯度向量从h传递给其他节点a-g。这可以通过将串流数据路径从h反转回a来实现。如果广播功能对一个或多个节点可用,使得节点能够向多个节点广播,则最终梯度向量的传递可以使用广播功能来完成,以完成crs操作的全局聚集阶段。单路径圆算法包括归约阶段和聚集阶段中的每个阶段的n个步骤,其中,n与节点数对应。
[0036]
为了实现比单路径算法更低的延迟,钳形算法在拓扑200的节点202a-h上跨相反方向上的两条路径发送数据。图3示出了图2的圆拓扑的示例,该圆拓扑被配置为执行钳形算法,如箭头(诸如箭头302、304等所示)。在图3的示例中,节点a和b在大致相同的时间分别将数据发送给节点h和c(步骤1)。节点h和c分别将组合数据发送给节点g和d(步骤2)。节点g和d分别将组合数据发送给节点f和e(步骤3)。节点f和e分别包括跨路径a-h-g-f和b-c-d-e的总和。如果节点数是偶数,则数据必须被从f传输到e(步骤4),反之亦然,并且在那里被组合,然后被广播给所有节点。
[0037]
旋转钳形算法甚至可以进一步减少归约和聚集阶段的延迟。对于旋转钳形算法,从每对相邻的节点开始,同时执行钳形算法的独立实例化。例如,当钳形算法从节点a和b开始运行时,相同的算法从节点b和c,从节点c和d开始运行,等等。梯度向量被划分为大小相等(如果可能的话)或本质上大小相等的不相交子集,并且算法的每次实例化都处理这些子集中的一个。这可能会改变串流工作的方式,因为现在,例如,b将一个数据子集发送给c,而c将另一个数据子集发送给d。在该示例中,c将不会转发来自b的数据,直到它完成发送其自
己的数据。为此,从b传输给c的数据暂时存储在c上。可替代地,可以交叉进行从b和d到达c的数据的处理。
[0038]
如果节点数是偶数,则下面描述的改进的旋转钳形算法进一步减少延迟。对于改进的旋转钳形算法,节点a首先将其一半数据发送给节点h(如箭头304所示),并且将另一半发送给节点b(然后,节点c,如箭头302所示)。钳形算法随后如前所述继续。因此,数据路径在从a的两个方向中的每个方向上都是对称的。如果节点被配置为向每个其他节点广播,则节点在相反的方向上发送数据。例如,节点e在相反的方向上发送数据,并且作为最终步骤,节点b和h将不相交的数据的一半发送给a,以便a仍然接收梯度向量的所有数据碎片。在图4中,箭头被配置为显示crs操作的归约分散阶段。
[0039]
过程可以使用控制消息来配置。例如,控制消息可以配置每个归约实例化,梯度向量的哪一个子集将通过过程来处理,在归约中它是开始单元、最终单元还是中间单元,并且数据或组合数据和广播应该在哪一个方向上发送,如上所述。控制消息是基于节点的特定拓扑加以配置的。如后面所述,控制消息可以被配置为利用附加链路,这些链路被设置在多维拓扑(诸如2d网格和2d环面拓扑)中。
[0040]
由每个中间处理单元执行的过程如下所述。每个中间处理单元(例如,节点)都将其梯度向量或其梯度向量的部分与它在从前一个处理单元(例如,上游处理单元)接收到输入梯度向量的部分时接收到的输入梯度向量组合。由每个处理单元执行的组合操作可以是组合梯度向量的简单求和或一些其他计算。然后,中间处理单元将组合的梯度向量传输给方向上的下一个处理单元(例如,下游处理单元)。
[0041]
最终处理单元(例如,节点)将其梯度向量与它在从数据路径的方向上的前一个处理单元(例如,上游处理单元)接收到输入梯度向量时接收到的输入梯度向量组合,并且生成最终的归约梯度向量。最终处理单元一般将归约梯度向量与机器学习模型参数的值组合,以产生更新后的参数值集。假设参数x的向量和梯度dx,简单的更新具有形式:x =-learning_rate*dx,其中,learning_rate是标量项。更新规则可以是任意复杂的,例如,它们可以取决于前面的梯度。在计算更新后的参数之后,最终处理单元发起广播操作,该广播操作通过使数据流反向,向所有其他处理单元提供更新后的参数值,以通过处理单元在一路返回到根处理单元(例如,节点)的方向上发送最终输出。结果,每个节点都将有更新的参数,用于处理下一批机器学习训练数据。
[0042]
图4是包括二维(2d)环面400的示例多维拓扑的示意图,示出了圆算法的归约分散阶段的执行。环面拓扑400包括(在该示例中)9个副本和处理节点a1至c3(它们中的每一个都是由三个节点组成的圆的部分)、水平节点(标记为x)和垂直节点(标记为y),并且它们中的每一个都有到4个其他节点的直接链路。在一些示例中,2d拓扑400中的三个节点的水平圆和2d拓扑400中的三个节点的垂直圆分别与2d拓扑400的行和2d拓扑400的列对应。虽然为了解释示出了3
×
3拓扑,拓扑的大小可以从拓扑400增加或减少。例如,用于处理大型机器学习模型(例如,具有1000、2500或5000万个参数值的模型)的拓扑,处理节点的适当数量会更大,例如,每个圆有16个节点,总共256个节点。更大或更小的数字将适合于更大或更小的模型。
[0043]
环面上的迭代归约算法将环面上的归约简化为一系列圆上的归约。第一步骤是沿着2d拓扑400的每一行进行圆归约。首先,在2d拓扑400的每一行中执行上面描述的任何圆
归约算法,导致行中的每个节点都有针对最初在行的节点中的每个梯度向量的和向量。接下来,沿着2d拓扑400的每一列执行圆归约,在圆归约结束时,每个节点中都有相同的最终梯度向量。
[0044]
如前所述,归约具有求和步骤、计算步骤和广播步骤。初始行圆归约不应执行完整的计算步骤,因为即使圆上的计算已经完成,梯度实际上还没有完成环面上的求和。
[0045]
为了减少前面描述的迭代归约算法所引入的延迟,拓扑400可以被配置为在多个维度上执行旋转钳形算法。例如,在2d拓扑400的两个阶段中执行旋转钳形算法中关于图3所描述的归约分散操作。在第一阶段(在图4中表示为阶段0),沿着第一维度(例如,水平维度或x方向)执行归约分散操作。例如,每个圆,诸如包括a1、b1和c1的圆200a、包括a2、b2和c2的200b以及包括a3、b3和c3的200c,执行关于图3所描述的归约分散。第一归约分散操作之后是第二维度(例如,垂直维度或y维度)的第二归约分散操作。例如,每个圆,诸如包括a1、a2和a3的圆200d、包括b1、b2和b3的圆200e以及包括c1、c2和c3的圆200f,并行地执行图3中所示的归约分散操作。在两个部分中进行归约分散操作,因为拓扑400具有两个维度。对拓扑400的附加维度执行归约分散操作的附加部分。
[0046]
转向图5,示出了在圆形拓扑200中连接的处理单元的示例的图示,示出了圆算法的全局聚集阶段的执行。包括节点a-d和f-h中的每个节点的和的节点e将其数据发送给节点d和f(步骤1)。节点f和d保存该数据,并且还分别将总和数据发送给节点g和c(步骤2)。随后,节点g和c分别重复该过程,从而分别保存总梯度向量数据和将数据发送给节点h和b(步骤3)。h和b分别将数据发送给节点a(步骤4)。可替代地,在步骤1中,节点e可以将总和数据发送给节点f。然后,在步骤2中,节点f和e可以同时分别将数据发送给节点g和d,等等,以分别通过节点h和c传播数据并且在节点a和b处结束。
[0047]
转向图6,示出了图4的多维拓扑400的示意图,示出了前述圆算法的全局聚集阶段的执行。针对多维拓扑的每个维度的关于图4所描述的归约分散操作之后是网络的每个维度的全局聚集阶段(图6中所示的阶段1)。拓扑400的聚集阶段包括两个部分,每个维度有一个部分。两个聚集部分按相对于为关于图4所描述的归约分散操作描述的顺序的维度相反的顺序加以执行。例如,在包括a1、a2和a3的循环(或圆)200d、包括b1、b2和b3的循环200e以及包括c1、c2和c3的循环200f中,第一聚集部分沿着y维度发生。沿着水平(x)维度执行聚集阶段的第二部分,包括:包括a1、b1和c1的循环200a、包括a2、b2和c2的循环200b以及包括a3、b3和c3的循环200c。
[0048]
垂直(y)维度中的数据有效载荷是按水平(x)维度的大小按比例缩小的总求和有效载荷。换言之,x维度中的数据碎片是y维度中的整个归约跨度。在2d旋转钳形算法中,短的交叉复制和调用的时间开销是o(2*(size(x) size(y)))。在大型2d网格或环面上,在1d算法中,时间开销比o(size(x)*size(y))小。
[0049]
2d圆算法被配置为利用2d拓扑的更多的路由器链路。返回图4和图6,2d圆算法可以沿着x和y维度并行执行。这两个并行步骤(每个步骤都包括沿着多个维度中的一个维度执行2d圆)中的每一个步骤都被称为颜色。多色全归约在归约分散阶段(图4中所示的阶段0)期间,沿着多维拓扑的不同维度分阶段并行执行。对于全局聚集阶段(图6中所示的阶段1),改变维度的顺序,以便拓扑的每个节点都以最终梯度向量结束。对于2d拓扑,如图4和图6中所示,x和y维度的顺序从阶段0翻转到阶段1。例如,双色全归约可以被配置为沿着颜色1
的y维度后面的x维度执行,而它沿着颜色2的x维度后面的y维度执行。这种双色方案可以扩展到n维网格或环面上的n种颜色。当在crs操作的归约分散阶段和聚集阶段中的每个阶段期间都同时利用更多的链路时,多种颜色能够实现更高的吞吐量。
[0050]
本说明书中所描述的算法可以在其他拓扑上执行。转向图7至图8,示出了2d网格700拓扑。网格700以类似于环面拓扑400的方式加以配置,用于执行归约分散阶段(图7的阶段0)和聚集阶段(图8的阶段1)中的每个阶段。对于网格700,全双工链路可以用于创建循环200a至200f,而不是拓扑400中的环绕链路。类似于拓扑400,多色全归约在归约分散阶段(图7中所示的阶段0)期间,沿着多维拓扑的不同维度分阶段并行执行。对于全局聚集阶段(图8中所示的阶段1),改变维度的顺序,以便拓扑的每个节点都以最终梯度向量结束。对于2d拓扑,如图7至图8中所示,x和y维度的顺序从阶段0翻转到阶段1。例如,双色全归约可以被配置为沿着颜色1的y维度后面的x维度执行,而它沿着颜色2的x维度后面的y维度执行。这种双色方案可以扩展到n维网格或环面上的n种颜色。当在crs操作的归约分散阶段和聚集阶段中的每个阶段期间都同时利用更多的链路时,多种颜色能够实现更高的吞吐量。
[0051]
在一些实现方式中,为了创建网格700中的循环200a-f,如后面所描述的,节点a1至c3中的每个节点都可以包括多个核心,这些核心使得每个节点能够使用不同的核心来处理接收到的数据。例如,节点a1至c3中的每个节点都可以包括两个或两个以上的核心,每个核心都以相似的方式作用于具有单个核心的节点。核心可以从内部连接到节点,以便在网格700中形成循环200a至200f,如关于图10所描述的。
[0052]
其他拓扑也是可能的。例如,16
×
4拓扑可以执行crs操作。该拓扑可以包括在具有16个节点的维度中,而不是在具有4个节点的另一个维度中的环绕链路。算法将被修改为在具有环绕链路的维度中使用圆归约,并且在没有环绕链路的维度中使用一些形式的线归约,例如,前面描述的单路径算法。每种算法都可以通过在处理单元上运行的进程或线程以分布式方式实施。
[0053]
转向图9,示出了包括环面的多维拓扑910,其中,每个节点都包括多个处理核心。循环900a至900f由节点间链路和节点内链路形成,并且与图4和图6的循环200a至200f类似。例如,节点902包括处理核心a1和a2,每个处理核心都充当节点,如前所述。因此,循环900a包括6个核心a1至a6,循环900b包括6个核心b1至b6,循环900c包括核心c1至c6,循环900d包括核心a1至a2、b1至b2和c1至c2,循环900e包括核心a3至a4、核心b3至b4和节点c3至c4,并且循环900f包括核心a5至a6、b5至b6和c5至c6。当将该拓扑映射到物理计算系统时,每个节点(诸如节点902)都表示芯片,并且核心,诸如节点902的核心a1至a2,表示芯片的处理核心。虽然每个芯片都显示两个核心,可以包括物理上位于芯片上的任何数量的核心,作为循环900a至900f中的核心。
[0054]
现在描述将循环映射到芯片的物理链路。将循环900a至900f的循环邻居映射到物理环面链路。另外,对芯片(例如,芯片902)上的处理核心之间的局部贡献进行求和。这种求和操作是利用跨ici网络上的对等芯片的求和操作进行管道化的。
[0055]
如前所述,在旋转钳形算法中,使用带有全双工链路的双向环来减少阶段(例如,归约分散阶段和聚集阶段)的延迟。相对于单向循环,双向循环减少了同步和缓冲开销,因为循环邻居彼此的距离不超过一步。因此,1位加法器可以用于指定下游邻居上用于发送碎片的目标缓冲区的地址。相反,对于单向环,当接收器上的缓冲区可以用于接收分组时,接
收器必须将显式的流控制分组发送回到发送器。
[0056]
在环面网络(诸如拓扑910中所表示的环面网络)上,双向环直接映射到环面的物理链路。如图9中所示,每个芯片的核心随后都可以被链接,以形成两个维度的循环900a至900f。这种方案利用环面网络中的环面链路。在这里,循环900a至900f是在环面网络的维度中沿着节点(例如,芯片)构建的。在每个芯片内,数据碎片到达一个核心(例如,芯片902的a1)。分组被求和,然后在下游被发送给同一芯片上的对等张量核心(例如,芯片902的a2)。在下一个步骤中,将数据碎片(例如,数据分组)从芯片节点上的第二核心发送给下游芯片的第一核心。锯齿形传输确保来自任何张量核心的通信有一半在芯片内。
[0057]
由于任何核心的一个对等点(例如,邻居)在同一芯片内,与网格方案相比,这种方案将来自网络分组的芯片间环面链路上的通信负载减少了两倍。
[0058]
虽然环面链路直接映射到硬件链路,但是对于网格拓扑,双向环上的一些传输将与其他对等点的传输共享链路。转向图10,示出了带有循环1000a至1000f的2d网格拓扑1010。在这种方案中,在两个方向上使用单个网格维度的链路,以构建循环1000a至1000f。在网格的拐角(诸如拐角1002)处,在拐角芯片的两个核心(例如,核心a5、a6)之间路由数据碎片。在这种方法中,双向旋转钳形算法中的邻居是网格网络上的物理邻居或拐角处的同一芯片上的对等点。因此,如图10中所示,循环1000a包括节点a1、a2、b2、c1、c2和b1;循环1000b包括节点a3、a4、b4、c4、c3和b3,等等。类似于网格700,不同的颜色1和颜色2可以在拓扑910上并行执行。颜色1和颜色2两者所共享的链路被示出为粗体和虚线。可以使用额外的缓冲区来确保颜色可以在这个方案中并行执行。
[0059]
图9和图10的拓扑910和1010的每个芯片的核心之间的连接分别是基于环面链路是否可用来确定的。在一些实现方式中,如果环面链路可用,则根据拓扑910配置硬件,因为与上述网格循环1000a至1000f相比,环面循环900a至900f需要更少的芯片间链路。然而,当环面环绕链路不可用时,系统可以使用网格拓扑1010来配置循环,并且仍然形成用于在每个维度中执行圆算法的循环。
[0060]
当在2d网格和环面两者上并行执行两种颜色时,实际上,第一通信是沿着第一颜色的行执行的,然后沿着第一颜色的列执行,并且首先沿着第二颜色的列执行,然后沿着第二颜色的行执行。当每个芯片有两个核心时,这被证明是最优的,并且导致在每个归约分散和聚集阶段都使用所有网络链路。旋转钳形算法执行一般由第一阶段决定。在第二阶段,所传递的数据量按第一维度的大小按比例缩小。因此,第二阶段不会给多维旋转钳形算法添加显著的开销,因为网络上所传输的有效载荷明显小于第一阶段。
[0061]
为了实现环面链路上的高利用率(例如,高度并行的dma传输),可以沿着所有四个方向将单个描述符注入到两种颜色中的每种颜色的顺时针和逆时针邻居。这可以针对旋转钳形算法的每个碎片步骤来完成。以这种方式传播描述符防止了头端阻塞,其中,沿着某个方向的描述符可以阻塞沿着其他方向的描述符。注入周期的数量由碎片有效载荷大小决定,该碎片有效载荷大小取决于交叉复制和大小和环面维度的大小。
[0062]
交叉复制和的浮点求和操作可以由在向量存储器中具有有效载荷的向量操作执行。为了在向量存储器(vmem)中具有有效载荷,它必须通过dma操作从高带宽存储器(hbm)被传输到vmem。求和后的输出在循环中被发送到下游。vmem中碎片的大小可以确定在环面链路上实现的吞吐量。如果碎片的大小很小,则传输的执行将由环面链路的延迟决定。颜色
的每次传输(顺时针或逆时针)可以需要5个大小为碎片大小的缓冲区,当交叉复制和在芯片核心上执行时,这些缓冲区随时都可以被并行使用。这些碎片大小的缓冲区用于将数据从hbm传输给vmem,并且接收来自上游副本的碎片。1位计数器可以用于同步发送器和接收器。碎片大小的缓冲区可以用于将网络贡献与vmem中的相应局部贡献相加。碎片大小的缓冲区可以用于将求和后的结果传输给下游副本(例如,节点)。
[0063]
图11至图12是示出了用于在多维中执行crs操作的操作的流程图。在图11中,过程1100包括在多个节点中的每个节点上训练(1102)机器学习模型的相应副本,这些节点是在包括节点的行和列的多维拓扑中组织的。每个节点都是在相应的一批训练数据上并行地训练的。在训练之后,每个节点都可以保存训练所得到的相应梯度向量。过程1100包括组合(1104)节点中的相应梯度向量以生成最终梯度向量。在图12的过程1200中描述了组合相应梯度向量。
[0064]
图12是示出了用于组合多维拓扑的每个节点的相应梯度向量的示例过程1200的流程图。过程1200包括通过在节点上执行的代码,并行地对多维拓扑的每一行执行(1202)圆算法的第一阶段的第一部分,以在每一行中为该行的梯度向量的每个相应字段生成组合数据。过程1200包括通过在节点上执行的代码,并行地对多维拓扑的每一列执行(1204)圆算法的第一阶段的第二部分,以在每一列中生成列结果,该列结果包括一行或多行的梯度向量的每个相应字段的组合数据的部分。在一些实现方式中,第一部分和第二部分(可以被称为颜色)可以彼此并行执行,以充分利用多维拓扑的dma传输。在一些实现方式中,第一阶段被称为归约分散阶段。
[0065]
过程1200包括通过在节点上执行的代码,并行地对多维拓扑的每一列执行(1206)圆算法的第二阶段的第一部分,以在每一列中生成包括每个列结果的最终梯度向量的部分。过程1200包括通过在节点上执行的代码,并行地对多维拓扑的每一行执行(1208)圆算法的第二阶段的第二部分,以在每一行中生成最终梯度向量,该最终梯度向量包括来自每一列的最终梯度向量的每个部分。在一些实现方式中,第二阶段的第一部分和第二部分可以并行执行,以充分利用多维拓扑的dma传输。第二阶段可以被称为聚集阶段。
[0066]
对于过程1100和1200中的每个过程,多维拓扑的每个节点都可以包括至少两个子节点(或甚至更多的子节点)。过程1200可以进一步包括在执行圆算法的第一阶段和执行圆算法的第二阶段期间,利用在每个节点上执行代码,管道化每个节点之间的数据传输,以便对一个或多个节点并行执行求和和传输操作。
[0067]
在一些实现方式中,圆算法包括前述旋转钳形算法。多维拓扑可以包括环面拓扑或网格拓扑,如前所述。对于环面拓扑,每个节点的子节点(可以表示环面网络中的芯片)随后都可以在节点中被链接。在一些实现方式中,当多维拓扑包括网格拓扑时以及当网格的每个节点都包括至少两个子节点时,每个节点都可以通过双向链路(例如,全双工链路)被链接。
[0068]
过程1100、1200可以包括通过确定多个节点的多维拓扑的类型,将节点的拓扑映射到物理计算架构,并且基于类型,将第一阶段的第一部分映射到第一节点集以及第一节点集之间的第一链路集。另外,过程包括将第一阶段的第二部分映射到第二节点集以及节点之间的第二链路集,第一链路集与第二链路集不同。
[0069]
在一些实现方式中,除了行和列,多维拓扑包括第三维的节点集,以形成三维拓
扑。在这里,圆算法的第一阶段包括相应的第三部分,由第三维的节点集执行(例如,可以添加第三种颜色)。附加地,圆算法的第二阶段包括相应的第三部分,以便由第三维的节点集执行(以完成第三种颜色的执行)。
[0070]
在一些实现方式中,每一行的梯度向量的每个相应字段的组合数据都包括该行的梯度向量的每个相应字段的总和数据。每一列的梯度向量的每个相应字段的组合数据都包括该列的梯度向量的每个相应字段的总和数据。
[0071]
本说明书使用与系统和计算机程序组件有关的术语“配置”。对于要被配置为执行特定操作或动作的一个或多个计算机的系统,意味着系统具有安装在其上在运行时使系统执行操作或动作的软件、固件、硬件或它们的组合。对于要被配置为执行特定操作或动作的一个或多个计算机程序,意味着一个或多个程序包括指令,这些指令在由数据处理装置执行时使该装置执行操作或动作。
[0072]
本说明书中所描述的主题和功能操作的实施例可以实施在数字电子电路系统中、在有形地体现的计算机软件或固件中、在包括本说明书中所公开的结构及其结构等同物的计算机硬件中或在它们中的一个或多个的组合中。本说明书中所描述的主题的实施例可以实施为一个或多个计算机程序,即,在有形的非暂时性存储介质上编码以由数据处理装置执行或控制数据处理装置的操作的计算机程序指令的一个或多个模块。计算机存储介质可以是机器可读存储设备、机器可读存储基板、随机或串行存取存储器设备或它们中的一个或多个的组合。可替代地或附加地,程序指令可以在人工生成的传播信号(例如,机器生成的电气、光学或电磁信号)上进行编码,生成这种信号是为了对信息进行编码,以传输给合适的接收器装置以供数据处理装置执行。
[0073]
术语“数据处理装置”指数据处理硬件,并且涵盖用于处理数据的所有种类的装置、设备和机器,例如,包括可编程处理器、计算机或多个处理器或计算机。装置还可以是或进一步包括专用逻辑电路系统,例如,fpga(现场可编程门阵列)或asic(专用集成电路)。除了硬件外,装置还可以可选地包括为计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统或它们中的一个或多个的组合的代码。
[0074]
用于实施机器学习模型的数据处理装置还可以包括例如专用硬件加速器单元,用于处理机器学习训练或生产即,推论、工作负载的通用和计算密集型部分。
[0075]
机器学习模型可以使用机器学习框架来实施和部署,例如,tensorflow框架、microsoft cognitive toolkit框架、apache singa框架或apache mxnet框架。
[0076]
本说明书中所描述的主题的实施例可以实施在计算系统中,该计算系统包括后台组件(例如,作为数据服务器),或者包括中间件组件(例如,应用服务器),或者包括前台组件,例如,客户端计算机,该客户端计算机具有图形用户界面、网络浏览器或应用,用户可以通过该图形用户界面、该网络浏览器或该应用与本说明书中所描述的主题的实现方式进行交互,或者一个或多个这样的后台组件、中间件组件或前台组件的任意组合。系统的组件可以通过任何形式或介质的数字数据通信(例如,通信网络)相互连接。通信网络的示例包括局域网(lan)和广域网(wan),例如,互联网。
[0077]
计算系统可以包括客户端和服务器。客户端和服务器通常彼此远离,并且通常通过通信网络进行交互。客户端和服务器的关系借助于在对应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序而产生。在一些实施例中,服务器将数据(例如,html页
面)传输给用户设备(例如,为了向与设备(该设备充当客户端)交互的用户显示数据并且接收来自该用户的用户输入)。在用户设备处生成的数据(例如,用户交互的结果)可以是在服务器处从设备接收的。
[0078]
虽然本说明书包含许多具体实现方式细节,但是不应将这些细节视为对任何发明的范围或可能被要求的内容的范围的限制,而是作为可以特定于特定发明的特定实施例的特征的描述。在本说明书中,术语“向量”、“向量数据”和“向量元素”广泛用于指任何非标量数据。除了向量,非标量数据的示例是字符串、数组、结构、矩阵和张量。
[0079]
本说明书中所描述的归约和更新功能仅仅是示例,并且完全独立于本发明本身。附加地,本发明被描述为用于机器学习,但是可以用于任何涉及归约分布在网络上的数据的目的。
[0080]
本说明书中在单独的实施例的背景下所描述的某些特征还可以在单个实施例中组合实施。相反,在单个实施例的背景下所描述的各种特征也可以在多个实施例中单独地或按照任何合适的子组合实施。此外,虽然特征在上面可以被描述为在某些实施例中起作用,甚至最初就被这样要求,但是来自所要求的组合的一个或多个特征在一些情况下可以从组合中删除,并且所要求的组合可以涉及子组合或子组合的变形。
[0081]
类似地,虽然操作在图中是按照特定顺序描绘的,但是这不应被理解为需要按照所示的特定顺序或按照相继顺序来进行这类操作,或进行了所有所示的操作以实现期望结果。在某些情况下,多任务处理和并行处理可能是有利的。此外,上述实施例中的各种系统模块和组件的分离不应被理解为在所有实施例中都需要这种分离,并且应当理解,所描述的程序组件和系统通常可以一起集成在单个软件产品中或被封装到多个软件产品中。
[0082]
主题的特定实施例已经进行了描述。其他实施例在以下权利要求书的范围内。例如,权利要求书中所引用的动作可以按照不同的顺序执行并且仍然实现期望结果。作为一个示例,附图中所描绘的过程不一定需要以所示的特定顺序或相继顺序来完成期望结果。在一些情况下,多任务处理和并行处理可以是有利的。
再多了解一些

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

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

相关文献