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

分布式处理架构的制作方法

2022-08-13 15:54:17 来源:中国专利 TAG:

分布式处理架构


背景技术:

1.本公开涉及分布式计算,并且具体地涉及可用于处理人工神经网络的分布式处理架构。
2.概括而言,人工神经网络(下文中称为神经网络)在人工智能应用和现代计算中变得越来越重要。图1中示出了示例神经网络。神经网络100接收对应于要识别的特征的输入值。输入值乘以权重(由边101表示)并且在节点102中相加(例如,求和)。激活函数被应用于节点102中的结果以生成输出值。值跨多个节点和节点层被组合以产生对应于结果的网络输出值。
3.这种系统通过考虑示例来“学习”执行任务,通常不使用任务专用规则来编程。最初,权重可以是未被训练的。在训练阶段期间,网络处理对应已知结果的输入值,并且将网络输出值之间的差(或误差)与已知值进行比较。可以使用称为反向传播(backpropagation)的过程基于误差来调整权重,其中计算在相反方向上流动(例如,从输出到输入)。训练可以涉及跨许多输入样本和相应的已知网络输出值连续地调整权重。这通常被称为训练阶段。一旦被训练,系统可以接收输入并产生有意义的结果(例如,分类或识别)。这通常被称为推理阶段。
4.针对非常大的神经网络的训练和/或推理可能涉及大量的计算。因此,针对大网络的计算可以跨许多处理器被分区。然而,由于网络中的大量连接,经分区的网络计算可能涉及处理器之间的大量潜在数据通信(部分结果)。这种连接性可能需要例如通过潜在的多个网络交换机耦合在一起的多个处理器。为任意通信模式提供全带宽随着规模增大和高带宽可能变得过于昂贵。例如,组件的成本以及覆盖数据中心中的较长距离所需的电交换机和光收发器的能量消耗可能是不利的。


技术实现要素:

5.本公开的实施例包括用于处理神经网络的技术。可以使用组合处理器序列的拓扑来实现各种形式的并行性。在一个实施例中,本公开包括计算机系统,该计算机系统包括多个处理器组,处理器组中的每个处理器组包括多个处理器。多个网络交换机耦合到多个处理器组的子集。处理器组中的处理器子集能够配置为形成序列,并且网络交换机能够配置为形成跨多个处理器组中的一个或多个处理器组的至少一个序列,以执行神经网络计算。公开了用于创建哈密顿循环的各种替代配置,以支持数据并行性、流水线并行性、层并行性或其组合。
附图说明
6.图1示出了示例神经网络。
7.图2示出了根据实施例分区的神经网络。
8.图3示出了跨三个轴的神经网络通信。
9.图4示出了根据实施例的沿三个维度分区的图2的神经网络。
10.图5示出了根据实施例的可配置为形成序列的多个处理器的示例。
11.图6示出了根据实施例的耦合到多个处理器组的示例网络交换机。
12.图7示出了根据实施例的处理器组和网络交换机的另一示例拓扑。
13.图8示出了根据实施例的处理器组和网络交换机的又一示例拓扑。
14.图9示出了根据实施例分区的另一示例神经网络。
15.图10示出了分区的三维表示,以示出根据实施例的处理器的最近邻居通信。
16.图11示出根据实施例的处理器组中的处理器的另一配置。
17.图12示出了根据实施例的多维处理器组的集群的配置。
18.图13示出了根据另一实施例的示例处理器组。
19.图14示出了根据另一实施例的示例网络交换机和处理组。
20.图15示出了根据实施例的网络交换机的2层布置。
21.图16示出了根据实施例的沿第一集群维度的处理组的集群的示例拓扑。
22.图17示出了根据实施例的沿第二集群维度的处理组的集群的示例拓扑。
23.图18示出了根据实施例的示例二维集群拓扑。
24.图19示出了根据实施例的另一示例二维集群拓扑。
具体实施方式
25.在以下描述中,出于解释的目的,阐述了许多实例和细节以便提供对各种实施例的理解。然而,对于本领域的技术人员来说显而易见的是,可以在没有这些细节中的一些细节的情况下实践某些实施例,或者可以利用其修改或等同物来实践某些实施例。
26.图2示出了根据实施例分区的人工神经网络200。本公开的特征和优点利用神经网络中的通信模式来产生用于神经网络的分布式计算的更有效的拓扑。例如,神经网络200包括7个层201-207,包括输入层201和输出层202。在推理期间,可在输入层201上接收输入值,并且在输出层207上产生结果。在每个层,数据值乘以权重、求和,并且由每个节点使用激活函数来处理。在训练期间,数据沿相反方向流动,其中在输出处确定网络结果与期望结果之间的误差,并且从层207流到层201逐层地更新权重。
27.在各种实施例中,可能希望分区神经网络,以便在不同处理器上执行网络的不同分区的计算。示例神经网络200是示出分区之间的通信的简化网络。在此示例中,网络可以沿流水线(表示为pi)或沿流水线的层(表示为li)来分区。在此示例中,网络200被分区为4个流水线级p1-p4和2个层l1-l2。分区l1、p1中的节点和边可在一个处理器上处理,而其他分区中的节点和边可各自在其他处理器上处理。然而,为了执行它们的计算,每个处理器必须接收某些数据输入并且向其他处理器发送数据输出。例如,分区l1、p1中的节点1可以接收输入,将输入乘以权重、应用激活函数、并将输出发送到分区l2、p1中的节点2。类似地,l2、p1中的节点3向分区l1、p1中的节点4发送输出数据。因此,当层201跨多个处理器被分区时,存在例如在处理器之间发生的层内通信。类似地,流水线通信可如下所示。分区l1、p1中的节点4的输出被发送到分配给分区l1、p2的处理器作为节点5的输入,分区l2、p1中的节点2的输出被发送到分配给分区l2、p2的处理器作为节点6的输入。同样,分区l1、p1中的节点4的输出被发送到分配给分区l2、p2的处理器作为节点6的输入,并且分区l2、p1中的节点2的输出被发送到分配给分区l1、p2的处理器作为节点5的输入。因此,可以看出,例如,流水线
级p1与流水线级p2通信,流水线级p2与流水线级p3通信,但是流水线级p3可以不需要与流水线级p1通信。
28.图3示出了跨三个轴的神经网络通信。在此示例中,神经网络模型针对层并行性、流水线并行性和数据并行性被分区。上文在图2中描述了层并行性和流水线并行性。数据并行性可以在不同处理器上执行的模型的多个实例之间交换数据。例如,可以通过在不同处理器上执行模型的不同实例以及周期性地同步各层中的权重,来并行地训练相同的模型。
29.在此示例中,模型的m(整数)个实例接收层(0,0)-(m-1,0)上的输入,并在推理期间在层(0,n-1)-(m-1,n-1)上产生输出。对于训练,数据沿相反方向流动。因此,流水线通信如箭头350所示垂直流动(例如,激活/错误)。例如,层311和321可以被分区为在如上描述的不同处理器上运行。这里,j(整数)个处理器之间的层内通信由箭头351示出,其中层311和321被分区为例如j个分区。类似地,在训练期间,每个模型中的权重可以如上所述周期性地同步。如果神经网络模型的实例运行在不同处理器上(或分布在不同处理器的多个集合上),则此类处理器可以执行通信以更新权重(例如,使用全约简(all-reduce)算法,诸如一维环、多环、基于树的算法或层算法)。流水线可在训练期间独立地操作,但可能需要跨模型的不同实例的执行而周期性地同步其权重。例如,在全约简期间,可以在实例之间逐层地平均权重。因此,在一些应用中,流水线的每个层可与模型的其他实例一起周期性地执行全约简,如图3中箭头353所示出。并行运行的模型的实例可以被配置在环中,例如,其中模型之间的权重更新可以围绕环在两个方向上流动。
30.从图2和图3中,存在三种形式的并行性:数据并行性(例如,求和、平均、全约简)、流水线并行性以及层内(或只是“层”)并行性。这些潜在并行性的形式允许开发这样的架构,该架构在执行神经网络计算时利用一个或多个可用并行性。本公开的各种实施例利用了这样的理解,即,除了某些例外,所有三维(层内、流水线、数据)中的通信依赖性可以被映射(例如,不存在拥塞)到遵循耦合的一维环结构的通信模式。因此,如果将通信模式映射到网络拓扑,则可以将其建模为连接每个维度的哈密顿循环的集合。在一些示例实施例中,处理器序列可以逻辑地布置在三维笛卡尔空间中。因此,如下面更详细描述的,哈密顿循环可以指例如通过至少一个网络交换机跨一个或多个处理器组串联地配置多个处理器,以用于层内并行性、流水线并行性、数据并行性或其各种组合。
31.例如,图4示出了沿三个维度分区的图2的神经网络:层(l)、流水线级(p)和数据。在此示例中,使用实例a,b和c(数据并行性)并行地处理模型200三次。模型200的分区可以被映射到图4所示的处理序列。例如,网络分区l1、p1和l1、p2的计算可以在序列中配置的不同处理器上执行以形成哈密顿循环401。类似地,针对流水线级p1-p2-p3-p4的计算可以在被配置为序列的多个处理器上执行,以形成哈密顿循环402。最后,例如,沿着数据轴a-b-c的计算(例如,全约简)可以在形成哈密顿循环403的多个处理器的序列上执行。应当理解,在各种示例实施例中,神经网络可以沿数据轴、流水线轴、层轴或其组合被分区。例如,处理器可以被配置为形成序列,并且处理器可以被配置为处理经分区的神经网络的多个局部层、经分区的神经网络的一个或多个流水线、神经网络的模型之间的数据并行性(例如,全约简)、和/或其组合。
32.图5示出了根据实施例的可配置为形成序列的多个处理器的示例。在此示例中,四(4)个处理器pr1 501、pr2 502、pr3 503和pr4 504被串行配置以形成一维(1d)阵列。例如,
处理器501-504可以形成处理器组550,并且处理器501-504可以被配置为作为序列来处理经分区的神经网络。本公开的各种实施例可以使用各种处理器类型,包括但不限于例如x86架构处理器、arm架构处理器、图形处理器(例如gpu)或为执行神经网络计算而优化的专用人工智能(ai)处理器。
33.这里,处理器组550包括具有边缘端口510和511的边缘处理器501和504。在此示例中,边缘(或边界)处理器501处于阵列中的第一位置并且被耦合到端口510和处理器502,处理器502被耦合到相邻处理器501和相邻处理器503,处理器503被耦合到相邻处理器502和相邻处理器504,而处于最后位置的边缘(或边界)处理器504被耦合到相邻处理器503和边缘端口511。边缘端口510和511可以例如被耦合到网络交换机,使得多个处理器组550可以耦合在一起以形成更长序列,以便处理神经网络的更多分区。
34.图6示出了根据实施例的被耦合到多个处理器组的示例网络交换机610。网络交换机可被配置为跨处理器组中的一个或多个处理器组形成序列以执行神经网络计算。在此简单示出性示例中,四(4)个处理器组620、630、640和650各自包括配置为一维阵列的四(4)个处理器。每个组包括被耦合到网络交换机610的端口的边缘端口,使得不同组可以被耦合在一起以形成更长序列。例如,如果网络沿三个轴(例如,层、流水线、数据)中的任一个被分区,则分区可被加载到按顺序的处理器中,诸如处理器组620中的处理器621-624。在一些实施例中,序列可以形成闭环,例如使得处理器624与621通信。如果分区使得需要较长的处理器序列,则可通过交换机610来配置较长的处理器序列。例如,如果需要5到8个按顺序的处理器,则来自处理器624的端口626(其耦合到网络交换机610的端口6)可以被耦合到来自处理器组630的端口635(其被耦合到处理器631的网络交换机610的端口7)。因此,可以使用图6所示的拓扑将多达16个处理器的序列串接在一起。
35.图7示出了根据实施例的处理器组和网络交换机的另一示例拓扑。在此示例中,三个(3)处理器组711-713被耦合到网络交换机701,三个(3)处理器组721-723被耦合到网络交换机702,三个(3)处理器组731-733被耦合到网络交换机703,并且三个(3)处理器组741-743被耦合到网络交换机704。处理器组711-713、721-723、731-733和741-743中的每个处理器组可以包括例如图5所示的可配置为序列的多个处理器。在此示例中,可以通过直接耦合在一起的网络交换机701-704获得更多数量的处理器序列。例如,如果每个处理器组包括五(5)个处理器,则可以通过将组711-713与组721耦合来获得二十(20)个处理器的序列。在此情况下,交换机701被配置为连接端口7和1、端口2和3、端口4和5以及端口6和9,并且交换机702被配置为连接端口1和4以及端口5和2。交换机702的端口5/2可以经由交换机703被路由回到交换机701上的端口1/7,交换机703例如可以连接端口7和8,以闭合用于专用无拥塞的最近邻处理器通信环路的环路。使用图7所示的拓扑,例如,可以在序列中配置多达六十(60)个处理器,以沿着上述三个轴之一执行神经网络计算。
36.图8示出了根据实施例的处理器组和网络交换机的另一示例拓扑。在此示例中,网络交换机801-804通过中间(又称核或层1)网络交换机805来耦合在一起。因此,一个或多个处理器组811-813可以被配置为例如通过直接连接的(又称层0)交换机801-804以及通过中间网络交换机805,与任何一个或多个其他处理器组821-823,831-833和/或841-843形成序列。
37.图9示出了根据实施例分区的另一示例神经网络900。神经网络900包括九(9)层的
流水线,每层包括九(9)个节点。为了清楚起见,省略了大多数边,但是应当理解,边将节点耦合在一起。在此示出示例中,网络900在层轴(例如,l1、l2、l3)和流水线轴(例如,p1、p2、p3)上被分区,其中在不同处理器(例如,pr11-pr33)上执行针对每个分区的计算。
38.图10示出了分区的三维表示,以示出处理器的顺序通信。在此示例中,每个分区的计算可以在形成3
×
3阵列的处理器pr11-pr33(见图9和11)上执行。另外,每个模型可以被执行四(4)次(例如,数据并行性a、b、c、d)以形成3维的3
×3×
4阵列。本发明的实施例可将神经网络分区映射到处理器阵列以供执行,其中处理器被配置为(例如)执行哈密顿循环。在此示例中,沿着层轴,哈密顿循环可在执行流水线的第一层p1的计算中捕获l1、l2和l3之间的通信,如在1001处所示出。沿着流水线轴,在p1期间计算的l1层可与在p2期间计算的l1层通信,且随后与在p3期间的l1层通信以形成另一哈密顿循环,如在1002处所示出。沿着数据轴,哈密顿循环可以捕获跨多个模型a-d的执行的层之间的通信(例如,执行全约简操作以调整每个模型的权重),如在1003处所示。
39.图11示出了根据实施例的处理器组1100中的处理器的另一配置。在此示例中,处理器1140-1148被配置为行和列以形成二维处理器阵列。这里,2维处理器阵列(例如,pr11-pr33)被配置为3
×
3矩阵以形成处理器组1100,其中处理器1140-1148被耦合到n维处理器阵列中的最近邻处理器,以支持形成处理器的序列以执行例如哈密顿循环。处理器组1100包括边缘处理器1140-1147,每个边缘处理器1140-1147具有一个或多个边缘端口。端口1101-1106被耦合到处理器组1100中的处理器行,而端口1110-1115被耦合到处理器组1100中的处理器列。因此,图9的神经网络900的每个分区可以被加载到不同处理器中,用于对网络900的层和流水线执行神经网络计算,其中可以首先计算每个流水线级的层,然后计算每个连续流水线级。用于计算每个层的层内数据可以垂直地跨处理器列(例如,pr11-pr21-pr31)流动。当每个经分区的流水线级p1、p2、p3中的层完成时,结果水平地跨处理器行(例如,pr11-pr12-pr13)流动。
40.图12示出了根据实施例的处理器组的多维集群阵列1200的配置。在此示例中,处理器组1201、1202、1210和1211的二维集群1200可用于支持更大的神经网络、更多的分区、或上述分区、以及例如可经由全约简来组合的处理器组对模型900的其他多个执行。例如,较大的网络可能需要更多的处理器序列来实现沿每个轴的哈密顿循环。例如,图12所示的架构允许不同处理器组中的行或列被配置为更大序列。具体地,在执行神经网络计算期间,第一处理器子集(例如,处理器组1201中的行)和第二处理器子集(例如,处理器组1210中的行)可以耦合在一起以形成包括处理器串(例如,a11、a12、a13、b11、b12、b13)的序列,其中每个处理器与处理器串中的相邻处理器通信。如上所述,在各种实施例中序列可以形成闭环,例如,使得a11与b13通信。
41.网络交换机的拓扑被配置为在处理器组之间耦合处理器的行和/或列,以产生用于执行神经网络计算的处理器串。在这里公开的各种实施例中,沿集群阵列的特定维度的处理器组具有耦合到对应的相同维度网络交换机的边缘处理器端口。在此示例中,沿每个维度处于第一位置和最后位置的处理器被耦合到行或列网络交换机。例如,处理器组1201包括一行处理器a11、a12、a13,其中a11和a13的边缘处理器端口被耦合到行网络交换机1221。另外,处理器组1210包括一行处理器b11、b12、b13,其中b11和b13的边缘处理器端口被耦合到行网络交换机1221。类似地,处理器组1201包括一行处理器a21、a22、a23,其中a21
和a23的边缘处理器端口被耦合到行网络交换机1222,并且处理器组1210包括一行处理器b21、b22、b23,其中b21和b23的边缘处理器端口被耦合到行网络交换机1222。例如,组1201和1210中的第三行处理器同样被耦合到行网络交换机1223。因此,例如,行交换机1221-1223形成对应于每个处理器组中的处理器行的交换机层,其可用于将特定处理器行连接到多个交换机组。
42.每个处理器组1201和1202中的处理器列可以类似地跨集群1200的第一列来被耦合在一起。如以上示例中针对行所描述的,处理器组1201和1202上的处理器a11、a21、a31和c11、c21、c31的列的相对侧上的边缘处理器端口可以被耦合到列网络交换机1231。其他列的处理器ax2/cx2和ax3/cx3(x=1..3)例如可以分别从边缘处理器端口被耦合到列网络交换机1232和1233。因此,列交换机1231-1233形成对应于每个处理器组中的处理器列的交换机层,其可用于跨多个交换机组连接特定的处理器列。
43.同样,如上文针对集群的第一行所述,包括处理器组1202和1211的集群1200的第二行可以被耦合到多行网络交换机1225。最后,如上文针对集群的第一列所述,包括处理器组1210和1211的集群1200的第二列可以被耦合到多个列网络交换机1235。如下面更详细地描述的,例如,多个中间交换机可用于链接行交换机和列交换机,以允许更多的处理器以串的形式配置从而计算更长的哈密顿循环。
44.虽然图9-12中所示的上述示例示出了被分区为适合于处理器组的示例神经网络,但是可以以各种方式分区不同的网络以在根据本公开的网络拓扑上运行。虽然各种分区可以更有效地使用给定拓扑中的可用资源,但是在可以被用于例如一个处理器组中的给定数量的处理器或集群中的给定数量的组的网络分区之间没有严格的关系。例如,每个处理器可以对神经网络模型的一层、多层或部层执行计算。类似地,每个处理器可对一个流水线级、多个流水线级或流水线级的一部分执行计算。最后,例如,每个处理器可以对全神经网络模型(所有层和所有流水线)执行计算,并使处理器上的权重同步、或者对分区的神经网络执行操作的多组处理器可以同步权重。
45.图13示出了根据另一实施例的示例处理器组1300。在此示例中,4
×
4处理器阵列pr11
……
pr44被布置为形成处理器组1300。这里,每个处理器具有12个输入/输出(i/o)通信端口,其可以是例如并行配置以扩展连接带宽的以太网端口(例如,50gbps以太网)。三个(3)i/o端口被耦合到相邻(例如,最近邻)处理器或网络交换机,如下文更详细描述的。处理器组1300包括具有边缘处理器端口1301-1308和1310-1317的边缘处理器1320-1331,边缘处理器端口1301-1308和1310-1317将每个边缘处理器耦合到例如特定的网络交换机。
46.图14示出了根据另一实施例的示例网络交换机和处理组。在此示例中,n个处理组1401-1402被耦合到配置在12个交换机平面中的多个交换机1410-1412,其中n是整数。例如,n可以是24组图13的4
×
4处理器阵列。如上所述,每个处理器组可以具有行和列。每行可以具有3个边缘处理器端口,例如,对于全部24个行处理器端口(4行(
×
4)中的每个行的每侧(
×
2)有3个端口;3
×4×
2=24)。在此示例中,跨第一多个处理器组的一行处理器的相对侧上的边缘处理器端口被耦合到行网络交换机。例如,处理器组1401-1402中第一行处理器的相对侧上的边缘处理器端口被耦合到网络交换机1410。类似地,处理器组1401-1402中的第二行处理器的相对侧上的边缘处理器端口被耦合到网络交换机1411,而处理器组1401-1402中的最后一行处理器的相对侧上的边缘处理器端口被耦合到网络交换机1412。在本图
中,为了示出目的仅示出了3个端口,但是应当理解,如图13所示的示例中所示,每行和每列都有3个端口。因此,在此示例中,有12个交换机平面连接24个处理器组上的4行交换机。同样,对于24个处理器组中的每个处理器组中的4列,例如,跨第二多个处理器组的处理器列的相对侧上的边缘处理器端口被耦合到列网络交换机。因此,例如,存在12个网络交换机用于以与图14所示的行基本相同的方式耦合24个处理器组中的每个组中的处理器列。
47.图15示出了根据实施例的网络交换机的2层布置。本公开的特征和优点包括允许处理器组的子集跨不同的网络交换机耦合在一起(例如,以形成哈密顿循环)的拓扑。在此示例中,分层0网络交换机1501被耦合到处理器组1510a-c,层0网络交换机1502被耦合到处理器组1510d-f。交换机1501和1502进一步被耦合到分层1中间网络交换机1503。层0和层1交换机之间的每个连接可以包括两个链路(例如,两个端口)例如,一个用于非拥塞的数据上行链路,另一个用于非拥塞的数据下行链路。例如,图15所示的拓扑可以应用于图14的一个交换机平面。例如,类似的拓扑可以用于其他交换机平面。在一些配置中,处理器组的子集通过层0交换机耦合在一起。在其他配置中,中间层1交换机1503可用于将多个层0交换机耦合在一起,以形成比任何特定层0交换机可支持的处理器序列更长的处理器序列。例如,如果需要150个处理器的序列,则可以组合来自两个交换机的处理器组(例如,24组
×
4个处理器/组
×
2》150)。通过将层0交换机和相关联的处理器组串联耦合在一起,可以产生更长的序列,例如,这可以形成跨多个层0交换机和层1交换机的非拥塞环路。
48.交换机1501和1502可以是例如64端口交换机。因此,在此示例中,48个端口用于处理器组连接,留下16个端口来支持用于24个组的交换机间传输。由于更多的交换机端口用于本地连接并且仅有16个可用于交换机间传输,因此在该示例拓扑中的层0交换机被称为过度订阅(over-subscribed)的(例如,所有处理器组不能同时访问层1交换机)。一些示例实现的另一优点在于,网络交换机可以被过度订阅而不影响性能,因为在需要多个交换机之前处理器组可以被本地配置为序列。例如,处理器组1510a的一个端口可以耦合到处理器组1510b的一个端口,处理器组1510b的另一个端口可以通过附加端口和处理器被耦合到处理器组1510c的一个端口,并且处理器组1510c的第二端口可以被耦合回到处理器组1510a的另一个端口(例如,以形成闭环),或者通过到交换机1503的链路被耦合到其他层0交换机和处理组。因为处理器组通常可以被配置为形成本地序列,所以在过度订阅的交换机中通常仍然存在足够的端口来建立与其他交换机中的其他处理器组的通信以执行期望的计算。
49.图16示出了根据实施例的沿第一集群维度的处理组的集群的示例拓扑。在此示例中,集群包括通过2层交换拓扑耦合在一起的处理器组的n
×
m的二维阵列(例如,24
×
24)。图16示出了一个交换机平面(例如,用于每个处理器组中一行的一个边缘端口的交换拓扑)。用于其他行中的其他边缘端口的其他平面可以具有基本上类似的实现。在该拓扑中,集群中的处理器组的行具有耦合到对应的相同行网络交换机的边缘处理器端口。例如,处理器组1610-1612(例如,集群的第一行中的处理器组)具有被耦合到同一行网络交换机(例如,集群行1的网络交换机1601)的边缘处理器端口(例如,每组2个)。类似地,例如,集群的第二行中的处理器组1613-1615被耦合到行网络交换机1602,而集群的最后一行中的处理器组1616-1618被耦合到行网络交换机1603。
50.集群的行网络交换机1601-1603可以通过一个或多个中间层1行网络交换机1620-1621耦合在一起。在此示例中,每个行网络交换机1601-1603包括到多个中间行网络交换机
的多个连接。例如,行网络交换机1601-1603可以全部包括到两个中间行交换机1620-1621的连接。因此,例如,处理器组的每个行可以通过中间行交换机1620或中间行交换机1621建立到处理器组的一个或多个其他行的通道,以创建跨多行的一个或多个行的哈密顿循环。在此示例中,层0和层1之间的链路可以是用于上行和下行业务而不存在拥塞的单个全双工以太网链路。例如,通过使用剩余的40个端口将附加集群连接到层1交换机1620和/或1621,可以获得甚至更长的哈密顿循环。在一些实施例中,中间行网络交换机可以耦合到中间列网络交换机,如下所述。
51.图17示出了根据实施例的沿第二集群维度的处理组的集群的示例拓扑。在此拓扑中,集群中的处理器组的列具有耦合到对应的相同列网络交换机的边缘处理器端口。例如,处理器组1610、1613和1616(例如,集群的第一列中的处理器组)具有被耦合到相同列网络交换机(例如,集群列1的网络交换机1701)的边缘处理器端口。类似地,例如,集群的第二列中的处理器组1611、1614和1617被耦合到列网络交换机1702,而集群的最后一列中的处理器组1612、1615和1618被耦合到列网络交换机1703。例如,列交换机1701-1703可以被耦合到基本上如图16所示的中间层1列交换机1920。
52.图18示出了根据实施例的另一示例多维集群阵列。图16和17的拓扑可以组合以形成如图18所示的二维集群交换拓扑。对于所有交换机平面,12个行网络交换机可用于每行(例如,12个交换机/行
×
24行=288个行网络交换机),12个列网络交换机可用于每列(例如,12个交换机/列
×
24列=288个列网络交换机)。在1890示出层1中间行网络交换机,并且在1891示出层1中间列交换机。在某些实施例中,各种列和行中的处理器组可通过例如1892处所示的中间行网络交换机和列网络交换机间接地交叉耦合在一起。在图18所示的实施例中,每个交换机平面包括用于列和行的2个层1交换机,并且有12个交换机平面(12个边缘行端口和12个边缘列端口),因此总体存在12个平面
×
2个层1交换机/平面
×
2(列和行)=48个层1交换机。对于图18所示的示例配置,存在24
×
24组(9216个处理器)和24个平面(例如,12行和12列)。对于每个平面,存在24个层0交换机,每个具有16个上行链路。每个上行链路连接到层1交换机。在一个示例实施例中,可以使用64端口交换机。因此,可以使用8个层1交换机(例如,然后可以不使用每个层1交换机的16个端口),这导致例如总共24个平面*8个层1交换机=192个交换机。
53.虽然在图13-18中示出了示例拓扑,但是应当理解,这些图仅仅是示出性的。各种不同数量的处理器可用于不同的处理器组,各种不同的组子集可耦合到网络交换机,并且各种不同的集群大小和配置可用于本公开的各种实施例中。此外,对于任何特定的硬件拓扑(例如,处理器组中的处理器数量,去往交换机的处理器组的数量,和/或集群中的处理器组的数量),可以使用任何特定的拓扑(例如图13-18所示的拓扑)来计算各种神经网络大小和分区。例如,对于给定的硬件配置,可以计算更小或更大的神经网络,其可以以不同的方式适合拓扑。例如,特定的硬件拓扑可以处理具有不同层数、不同层分区、不同流水线级数量,不同流水线级分区和不同数据量并行性的神经网络。在各种实施例中,例如,可以使用这里描述的技术将不同大小的网络模型映射到一个或多个维度中的各种不同的处理器和处理器序列。
54.图19示出了根据实施例的另一示例二维集群拓扑。在一些实施例中,集群中的中间(例如,层1)行网络交换机和中间列网络交换机可以耦合在一起。在此示例中,处理器组
1901-1916被配置在类似于图12和18的多维(例如,二维)集群阵列中,例如,其中沿着集群阵列的特定维度的处理器组1901-1916具有耦合到对应的相同维度网络交换机的边缘处理器端口。在此示例中,集群阵列中的处理器组1901-1916的行具有耦合到对应的相同行网络交换机1920-1923的边缘处理器端口,而集群阵列中的处理器组的列具有耦合到对应的相同列网络交换机1930-1933的边缘处理器端口。在图12和18中示出这种连接的示例,但在此省略。在各种实施例中,一个或多个行网络交换机1920-1923可以耦合到一个或多个列网络交换机1930-1933。在此示例中,行网络交换机1920耦合到列网络交换机1930和1931,行网络交换机1921耦合到列网络交换机1931和1932,行网络交换机1922耦合到列网络交换机1932和1933,并且行网络交换机1923耦合到列网络交换机1930和1933。这有利地改善了容错性或者可以支持跨维度的哈密顿循环的映射(例如,当将大于单个维度的处理器序列映射在一起时)。如上所述,可以在如上所述的中间(层1)行网络交换机和列网络交换机之间连接间接交叉维连接。
55.调度和故障
56.本公开的某些实施例可以基于作业大小(例如,在小作业和大作业之间)进行区分。例如,小作业可以被定义为适合于处理器组的作业。例如,这样的作业可以仅被调度到容纳其他小作业的处理器组。大作业可跨多个处理器组分布。在这种情况下,分配的最小增量可以是例如单个处理器组。例如,如果作业所需的节点的数量或几何形状不完全适合处理器组中的多个节点,则节点可能未被使用并且仅仅转发流量。
57.各种实施例可以路由哈密顿循环的许多配置,并且当故障发生时透明地替换处理器组。例如,在一维配置中,系统可以交换相同交换机中的任意处理器组和任意两个处理器组,例如,如果可以保留足够的上行链路用于维持跨其他交换机的序列。在较高维的配置中,如果存在足够的链路可用,则系统可以将行和列(或连续的块)交换在一起。例如,这可以简化在出现故障的情况下或者当在操作一段时间之后处理分段分配时找到新的处理器组。
58.路由
59.一旦执行了将网络的逻辑部分分配给处理器组和处理器,就可以路由哈密顿循环。环可以具有恒定的带宽保证,其保留至少部分链路用于处理器之间的通信。例如,以上针对一维、二维或更多维描述的各种实施例可以包括具有跨一个或多个处理器组和交换机的专用非拥塞的最近相邻处理器通信环路的处理器闭环。可以有利地优化网络,以便将100%的链路带宽传递到在哈密顿循环中使用的处理器序列。带宽预留和路由的实现将取决于网络技术。基于策略的简单路由方案或基于ecmp路由的更复杂的方案可用于建立路由,而qos缓冲器和带宽预留可用于保证某一速率。
60.为了利用网络的全局视图来路由哈密顿循环,网络管理器可以将可用链路分配给循环,然后将它们标记为已使用。然后可以将路由编程为仅使用那些环。如果需要全局业务并且链路不可用,则qos方案可占用每个哈密顿循环的某一百分比来实施此业务。例如,如果本地拓扑在任何维度上长于两个处理器,则一些处理器可以将全局业务转发到内部处理器。这可以使用简化机制来完成,因为本地拓扑中的跳数可以由其大小来控制。
61.以上描述示出了本公开的各种实施例以及如何实现这些实施例的各方面的示例。上述各种实施例可以有利地包括能够实现过度订阅因子(例如3:1,具有48个客户端链路和
16个上行链路)的网络拓扑,这意味着显著的成本/功率节省,同时仍然能够维持全哈密顿循环带宽。在一些实施例中,这里描述的网络拓扑可以包括利用局部性的软件分配/重新分配方法(例如,将相邻处理器组分配给相同的层0交换机)。上述示例和实施例不应被认为是仅有的实施例,而是用于示出由所附权利要求限定的本公开的灵活性和优点。例如,虽然已经关于特定处理流程和步骤描述了某些实施例,但是对于本领域的技术人员显而易见的是,本公开的范围不必严格限于所描述的流程和步骤。串联描述的步骤可以并行执行,步骤的顺序可以改变,并且可以被修改、组合、添加或省略步骤。作为另一示例,尽管使用硬件和软件的特定组合描述了某些实施例,但是应当认识到,硬件和软件的其他组合也是可能的,并且也可以以硬件实现描述为以软件实现的特定操作,反之亦然。
62.本公开的实施例可以进一步包括以下示例实施例中的一个或多个。
63.在一个示例实施例中,本公开包括计算机系统,该计算机系统包括:多个处理器组,处理器组包括多个处理器;以及耦合到多个处理器组的子集的多个网络交换机,其中处理器组中的至少一个处理器子集可配置为形成序列,并且其中网络交换机可配置为形成跨多个处理器组中的一个或多个处理器组的至少一个序列以执行神经网络计算。
64.在一个示例实施例中,在执行神经网络计算期间,第一处理器组中的至少第一处理器子集和至少第二处理器组中的至少第二处理器子集耦合在一起以形成包括处理器串的序列,其中每个处理器与处理器串中的相邻处理器通信。
65.在一个示例实施例中,一个或多个处理器组包括被串联配置以形成一维处理器阵列的处理器。
66.在一个示例实施例中,一个或多个处理器组包括被配置为行和列以形成二维处理器阵列的处理器。
67.在一个示例实施例中,处理器组中的多个处理器被配置在n维处理器阵列中。
68.在一个示例实施例中,在处理器组的边缘位置中的处理器耦合到多个网络交换机。
69.在一个示例实施例中,跨第一多个处理器组的一行处理器的相对侧上的边缘处理器端口被耦合到第一网络交换机;以及跨第二多个处理器组的处理器列的相对侧上的边缘处理器端口被耦合到第二网络交换机。
70.在一个示例实施例中,处理器组被耦合到跨多个交换机平面的与每个处理器组中的处理器的行和列相对应的多个行网络交换机和多个列网络交换机。
71.在一个示例实施例中,一个或多个行网络交换机被耦合到一个或多个列网络交换机。
72.在一个示例实施例中,处理器组被配置在多维集群阵列中。
73.在一个示例实施例中,集群阵列的特定维度的处理器组具有耦合到对应的相同维度网络交换机的边缘处理器端口。
74.在一个示例实施例中,沿特定维度的多个网络交换机通过多个中间网络交换机被耦合在一起。
75.在一个示例实施例中,集群阵列中的处理器组的行具有耦合到对应的相同行网络交换机的边缘处理器端口,并且集群阵列中的处理器组的列具有耦合到对应的相同列网络交换机的边缘处理器端口。
76.在一个示例实施例中,行网络交换机通过一个或多个中间行网络交换机被耦合在一起,并且列网络交换机通过一个或多个中间列网络交换机被耦合在一起。
77.在一个示例实施例中,一个或多个中间行网络交换机被耦合到一个或多个中间列网络交换机。
78.在一个示例实施例中,多个网络交换机直接被耦合在一起。
79.在一个示例实施例中,多个网络交换机被耦合到一个或多个中间网络交换机。
80.在一个示例实施例中,多个网络交换机和一个或多个中间网络交换机形成两层交换网络。
81.在一个示例实施例中,多个网络交换机中的每个网络交换机都被耦合到多个中间网络交换机,以便串联地被耦合多个处理器组的子集中的处理器。
82.在一个示例实施例中,沿多个处理器组的第一维度的处理器被耦合到多个网络交换机。
83.在一个示例实施例中,第一维度是处理器行。
84.在一个示例实施例中,第一维度是处理器列。
85.在一个示例实施例中,神经网络计算是用于训练神经网络的计算。
86.在一个示例实施例中,配置为形成序列的多个处理器被配置为处理经分区的神经网络。
87.在一个示例实施例中,配置为形成序列的处理器被配置为处理分区神经网络的多个局部层。
88.在一个示例实施例中,配置为形成序列的处理器被配置为处理经分区的神经网络的一个或多个流水线级。
89.在一个示例实施例中,配置为形成序列的处理器被配置为跨神经网络的多个实例调整权重。
90.在另一个示例实施例中,本公开包括一种计算机系统,该计算机系统包括:多个处理器组,处理器组包括多个处理器;多个网络交换机,其中多个网络交换机被耦合到多个处理器组的子集;以及耦合到多个网络交换机的子集的多个中间网络交换机,其中处理器组中的至少一个处理器子集、多个网络交换机中的一个或多个网络交换机以及中间网络交换机中的一个或多个中间网络交换机被配置为执行用于以下一项或多项的哈密顿循环:数据并行神经网络计算、流水线并行神经网络计算和层并行神经网络计算。
91.在另一个示例实施例中,本公开包括一种用于处理神经网络的方法,该方法包括:配置布置在多个处理器组中的多个处理器以执行神经网络计算,其中处理器组中的至少一个处理器子集被配置为形成处理器序列;多个网络交换机被配置为将多个处理器组的子集耦合在一起,以跨多个处理器组的一个或多个子集形成至少一个处理器序列;以及由多个处理器组中的至少一个处理器序列执行神经网络计算。
92.在另一示例实施例中,本公开包括其上存储有可由计算机系统执行以用于处理神经网络的程序代码的非瞬态计算机可读存储介质,该程序代码使得计算机系统:配置布置在多个处理器组中的多个处理器以执行神经网络计算,其中处理器组中的处理器的至少一个子集被配置为形成处理器序列;多个网络交换机被配置为将多个处理器组的子集耦合在一起,以跨多个处理器组的一个或多个子集来形成至少一个处理器序列;以及由多个处理
器组中的至少一个处理器序列执行神经网络计算。
93.因此,说明书和附图被认为是示出性的而不是限制性的。其他布置、实施例、实现方式和等同物对于本领域技术人员而言是显而易见的,并且可以在不脱离所附权利要求中阐述的本公开的精神和范围的情况下使用。
再多了解一些

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

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

相关文献