用于分布式并行深度学习的高效片间互连拓扑结构的制作方法

文档序号:26139226发布日期:2021-08-03 14:22阅读:87来源:国知局
用于分布式并行深度学习的高效片间互连拓扑结构的制作方法



背景技术:

目前的神经网络分布式训练方法包括,在多个分布式计算节点上应用同步大-小批量随机梯度下降(“sdg”)方法来尝试数据并行加速。在这种方法中,计算节点间的通信模式是所谓的“allreduce”算法。用于实现所述allreduce算法的传统硬件互连结构是基于圆环拓扑结构,所述圆环拓扑结构存在许多重要问题,包括长连接线的延迟和无法分割计算节点来分配多个计算任务。



技术实现要素:

本公开的实施例提供了一种系统,包括第一组计算节点和第二组计算节点,其中,所述第一组计算节点和第二组计算节点是相邻设备,并且所述第一组计算节点和所述第二组计算节点分别包括:一组计算节点a-d,和一组组组内互连结构;所述组内互连结构将所述计算节点a与所述计算节点b和所述计算节点c通讯耦合,所述计算节点d与所述计算节点b和c通讯耦合;所述系统还包括一组组间互连结构,所述组间互连结构将所述第一组计算节点的计算节点a与所述第二组计算节点的计算节点a通讯耦合,将所述第一组计算节点的计算节点b与所述第二组计算节点的计算节点b通讯耦合,将所述第一组计算节点的计算节点c与所述第二组计算节点的计算节点c通讯耦合,并将所述第一组计算节点的计算节点d与所述第二组计算节点的计算节点d通讯耦合。

本发明的实施例还提供了一种在多组计算节点之间分配计算任务的方法,多组计算节点中的每一组包括一组计算节点a-d和一组组内互连结构,所述组内互连结构将计算节点a与计算节点b和c通讯耦合,以及将计算节点d与计算节点b和c通讯耦合,所述方法包括:获取所述计算任务;确定所述计算任务的硬件负荷;以及根据所述硬件负荷,将所述计算任务分配给多组计算节点中的第一组计算节点和第二组计算节点,其中,执行所述计算任务生成的数据包通过所述第一组计算节点和所述第二组计算节点之间的一组组间互连结构转发。

本发明的实施例还提供了一种非临时性计算机可读介质,其存储一组指令集,该指令集可由设备的一个或多个处理器执行,以使所述设备启动在多组计算节点之间分配某个计算任务的方法,每组计算节点包括一组计算节点a-d和一组组内互连结构,所述组内互连结构将计算节点a与计算节点b和计算节点c通讯耦合,将计算节点d与计算节点b和计算节点c通讯耦合,所述方法包括:获取所述计算任务;确定所述计算任务的硬件负荷;以及根据所述硬件负荷将所述计算任务分配给多组计算节点中的第一组计算节点和第二组计算节点,其中,执行所述计算任务生成的数据包通过所述第一组计算节点和所述第二组计算节点之间的一组组间互连结构转发。

附图说明

所示附图,包含在本说明书中并构成本说明书一部分,示出与本发明一致的实施例,并与实施方式一起,阐释本发明的原理。

图1示出了一种基于环的allreduce操作的示例性实现。

图2示出了一种示例性4x4二维圆环互连结构。

图3a根据本公开的一些实施例,示出了一种分布式系统的示例性服务器的原理图。

图3b根据本公开的一些实施例,示出了一种包括服务器的示例性计算集群的原理图。

图4根据本公开的一些实施例,示出了某个计算节点与在所述计算节点的周围超正方拓扑结构中的计算节点的示例性连接。

图5根据本公开的一些实施例,示出了一种示例性超正方互连拓扑结构。

图6a-c根据本公开的一些实施例,示出了来自超正方互连拓扑结构的一行六个计算节点的示例性环形连接。

图7a-c根据本公开的一些实施例,示出了来自超正方互连拓扑结构的一行四个计算节点的示例性环形连接。

图8根据本公开的一些实施例,示出了在某个计算集群中,使用超正方互连拓扑结构的示例性板卡。

图9根据本公开的一些实施例,示出了包括计算节点板卡的示例性计算集群。

图10根据本公开的一些实施例,示出了划分为子部分的示例性超正方互连拓扑结构。

图11根据本公开的一些实施例,示出了一种用于在超正方互连拓扑结构中分配计算节点的示例性方法的流程图。

具体实施方式

现在请详细参考示例性实施例,其示例在附图中示出。以下说明请参考附图,除非另有说明,否则不同附图中的相同编号表示相同或相似的元件。在以下示例性实施例的描述中所阐述的实现并不代表与本发明一致的所有实现。相反,它们仅仅是与所附权利要求中所述的与本发明有关的方面一致的装置和方法的示例。

分布式计算是研究分布式系统的计算机科学领域。分布式系统是一个组件位于不同联网计算机上的系统,这些计算机通过相互传递消息来通信和协调它们的动作。

分布式深度学习是深度学习算法的一种实现方式。由于深度学习算法需要大量的计算能力,因此对于大型计算任务来说,特别是在深度学习算法的训练阶段,将此类算法的工作负荷分配到多台计算机或芯片,以并行方式加速计算变得很有必要。

目前神经网络分布式训练的方法包括,在多个分布式计算节点上应用sdg方法来尝试数据并行加速。在这种方法中,计算节点间的通信模式是所谓的“allreduce”算法。在这种方法中,所述allreduce操作是计算节点间通信的主要模式之一。在一个allreduce操作中,首先从所有分布式节点收集或整合同一变量的所有版本的值,然后计算平均值并将其广播到所有分布式节点。换句话说,allreduce操作是涉及整合步骤和广播步骤的两阶段的通信操作。allreduce操作可以同时应用于许多变量。

虽然在取平均值之前,整合步骤可以通过添加不同版本的值来实现,但是整合步骤也可能包括其他操作,例如乘法运算,“或”运算、“异或”运算,等等。可以理解的是,所有的操作通常都满足关联性和交换性。例如,在对其他版本执行其他整合步骤之前,可以首先对某个值的某些版本执行整合步骤。最终结果可以与一次对所有版本执行单个整合步骤相同。

还有许多方法可以实现所述allreduce操作,尽管allreduce的简单拓扑结构的实现是基于树结构的,但由于其更高的带宽利用率和效率,基于环结构的allreduce操作是行业中的主要解决方案。图1示出了一种基于环的allreduce操作的示例性实现。

如图1所示,有三个计算节点,分别命名为工作节点a、工作节点b和工作节点c,并且每个计算节点包括三组变量。例如,最初,工作节点a包含具有值(5,13)、(8,19)和(42,1)的三组变量。在allreduce操作中,首先对所有计算节点上的变量求和,然后计算每个变量的平均值并将其广播到每个计算节点。例如,allreduce操作可以分解为图1所示的五个步骤。在步骤1中,所有变量都已准备好启动allreduce操作。在步骤2中,将工作节点a和工作节点b中的第一变量的值相加并存储到工作节点b中,将工作节点b和工作节点c中的第二变量的值求和并存储到工作节点c中,以及将工作节点c和工作节点a中第三变量的值相加并存储到工作节点a中。在步骤3中,将工作节点a和工作节点b中的第三变量的值相加并存储在工作节点b中,将工作节点b和工作节点c中的第一变量的值求和并存储到工作节点c中,以及将工作节点c和工作节点a中第二变量的值求和并存储到工作节点a中。

在这个阶段,所有变量的值都已求和并存储在工作节点a、工作节点b或工作节点c中;下一阶段是将这些求和值从其计算节点广播到其他计算节点;在步骤4中,将工作节点a的第二变量的值发送到工作节点b替换工作节点b的第二变量,将工作节点b的第三个变量的值发送到工作节点c替换工作节点c的第三变量,以及将工作节点c的第一变量的值发送到工作节点a替换工作节点a的第一变量;在步骤5中,将工作节点a的第一变量的值发送到工作节点b替换工作节点b的第一变量,将工作节点b的第二变量的值发送到工作节点c替换工作节点c的第二变量,以及将工作节点c的第三变量的值发送到工作节点a,以替换工作节点a的第三变量。

为了通过硬件方式有效地在多个芯片或处理器上实现allreduce操作,可以使用多种硬件互连拓扑结构。例如,二维(“2d”)圆环网络、三维圆环网络或超立方体网络是可以作为实现allreduce操作的硬件互连拓扑结构解决方案。图2示出了一种示例性4x4二维圆环互连结构;根据图2所示的2d圆环互连结构,计算节点(例如,芯片)的每一行或每一列形成一个环。例如,第一行包括计算节点11、计算节点12、计算节点13和计算节点14,环的组成为11-12-13-14-11。由于每一行或每一列都可以形成一个环,因此图1中描述的allreduce操作可以在图2示出的2d圆环互连结构中实现。

围绕常规的互连拓扑结构,如图2的圆环拓扑结构中的重要问题之一是圆环拓扑结构不能有效地扩展。在许多实现中,多个计算任务很可能同时在互连结构上运行;结果,互连结构可能需要被分成多个部分,每个部分处理特定的计算任务。例如,计算节点11、12和13可以分配给一个计算任务,而计算节点14可以分配给另一个计算任务;问题是计算节点11、12和13之间不再有环形连接,为了形成环,来自计算节点13的数据需要通过计算节点12跳转到计算节点11,这种跳转造成通信效率低下,并阻滞了计算节点12周边的其他潜在的通信流量。

围绕常规互连拓扑结构的另一个重要问题是圆环拓扑结构需要长连接线来连接每个环末端的计算节点。例如,连接计算节点11和计算节点14的连接线比连接计算节点11和计算节点12的连接线长。当硬件系统扩容时,一个环中的计算节点的数量会增加,从而导致计算节点之间的距离更远;结果,需要更长的连接线来连接环末端的计算节点,这可能开始导致通信中的显著延迟。例如,1米以内的铜缆可以维持56-gbps传输速率;如果铜缆的长度增加,可维持的传输速率将小于56-gbps。同时,为了维持更高的传输速率——例如112-gbps传输速率,铜缆的长度需要明显短于1米。

为了解决这些问题,本公开的实施例提出了一种超正方互连拓扑结构和先进的基于环的allreduce操作。根据本公开的一些实施例,图3a示出了一种分布式系统的典型服务器的原理图。根据图3a,分布式系统100的服务器110包括用于传递信息的总线112或其他通信机制,一个或多个为了处理信息通过总线112通讯耦合的处理器116,以及一个或多个为了处理信息通过总线112通讯耦合的主处理器117。处理器116,例如,可以是一个或多个微处理器。在一些实施例中,一个或多个处理器116包括处理器165和处理器166,且处理器165和处理器166通过互连拓扑结构的片间互连结构连接。主处理器117,例如,可以是中央处理单元(“cpus”)。

服务器110可以通过网络122向另一个服务器130传输数据或与之通信;网络122可以是局域网、互联网服务提供商、互联网或以上任何组合;服务器110的通信接口118连接到网络122;此外,服务器110的一个或多个处理器116可以通过互连拓扑结构的片间互连结构连接到服务器130的一个或多个处理器170(以粗体显示)。在一些实施例中,服务器130的一个或多个处理器170包括处理器171和172,处理器165、处理器166、处理器171、以及处理器172通过所述互连拓扑结构的片间互连结构连接。此外,服务器110可以通过总线112耦合外围设备140,其中包括显示器(例如,阴极射线管(crt)、液晶显示器(lcd)、触摸屏,等等)和输入设备(例如,键盘、鼠标、软键盘,等等)。

服务器110可使用定制的硬连线逻辑、一个或多个asics或fpgas、固件、或与所述服务器结合、使服务器110成为专用机器的程序逻辑来实现。

服务器110还包括存储设备114,存储设备114可以包括内存161和物理存储164(例如,硬盘驱动器、固态驱动器,等等)。存储器161可以包括随机存取存储器(ram)162和只读存储器(rom)163。存储设备114通过总线112与处理器116和主处理器117通讯耦合。存储设备114可包括主存储器,该主存储器可用于存储处理器116和主处理器117执行指令中的临时变量或其他中间信息。此类指令存储在处理器116和主处理器117可访问的非临时性存储介质之后,使服务器110成为定制执行指令中的指定操作的专用机器。在此使用的术语“非临时性介质”是指用于存储使机器以特定方式操作的数据或指令的任何非临时性介质。这种非临时性介质可以包括非易失性介质或易失性介质。非临时性介质包括,例如,光盘或磁盘、动态存储器、软盘、软磁盘、硬盘、固态驱动器、磁带、或任何其他磁性数据存储介质、光盘、任何其他光学数据存储介质、任何带有孔图案的物理介质,ram、prom和eprom、flash-eprom、nvram、闪存、寄存器、缓存、任何其他内存芯片或盒式磁带以及相同的联网版本。

将一个或多个指令的一个或多个序列在处理器116或主处理器117上执行时,可能涉及各种形式的介质。例如,所述指令最初可以在远程计算机的磁盘或固态驱动器上执行,所述远程计算机能够将指令加载到其动态存储器中,并使用调制解调器通过电话线发送指令。服务器110的本地调制解调器可以接收电话线上的数据,并使用红外发射器将数据转换为红外信号。红外探测器能够接收红外信号中携带的数据,并且适当的电路能够将数据放置在总线112上。总线112将数据带到存储设备114中的主存储器,处理器116或主处理器117从中检索并执行所述指令。

在一些实施例中,服务器(例如,图3a中的服务器110)可以被安排在一起以形成计算集群。根据本申请公开的一些实施例,图3b示出了一种包括服务器的典型计算集群的原理图。如图3b所示,计算集群180包括许多服务器,包括服务器110和130;所述服务器能够被布置为每个服务器在任何方向上都有相邻者,例如上、下、左、右、前和后。尽管服务器能够通过总线(例如服务器110的总线112和服务器130的总线173)和通信接口(例如,如图3a所示的通信接口118)彼此通信,服务器内部的处理器还能够通过互连拓扑结构的片间互连结构彼此通信。例如,如图3b所示,服务器110的处理器165和166可以通过互连拓扑结构的片间互连结构与服务器130的处理器171和172连接(以粗体显示)。服务器110的处理器165和166以及服务器130的处理器171和172也能够通过互连拓扑结构的片间互连结构相互连接。

为了创建新颖的超正方互连拓扑结构,重新设计了每个计算节点的连接。根据本申请的一些实施例,图4示出了某个计算节点与周围计算节点在超正方拓扑结构中的示例性连接。根据图4所示,互连拓扑结构包括计算节点a、b、c、d、a-up、a-left、a-right和a-down。在一些实施例中,计算节点a、b、c和d可以形成一组计算节点,计算节点a-up、a-left、a-right、和a-down属于不同的计算节点组。在一些实施例中,所有所述计算节点都可以是处理器(例如,图3a中分布式系统100的处理器165、166、171和172)。在一些实施例中,所述计算节点可以是人工智能(“ai”)训练芯片,或ai训练处理器。在一些实施例中,所述计算节点可以是加速器,例如神经处理单元(“npus”)或图形处理单元(“gpus”)。

如图4,四个计算节点a、b、c和d各自位于一个矩形的四个角处,并且四个计算节点以矩形连接。换句话说,计算节点a通过连接i-head连接到计算节点b;计算节点a通过连接i-tail连接到计算节点d;计算节点b通过连接i-vertical连接到计算节点c。计算节点d通过连接i-horizontal连接到计算节点c;在一些实施例中,矩形连接是正方形连接。

在计算节点a、b、c和d的矩形连接之外,每个计算节点还能够连接到计算节点的所述相邻矩形连接中的相应计算节点;例如,计算节点a通过连接o-up向上连接到相应的计算节点a-up;计算节点a通过连接o-left向左连接到相应的计算节点a-left;计算节点a通过连接o-down向下连接到相应的计算节点a-down;计算节点a通过连接o-right向右连接到相应的计算节点a-right。因此,计算节点a、b、c和d的每个计算节点可以有六个连接。在一些实施例中,连接i-head、i-tail、i-horizontal、i-vertica、o-left、o-up、o-right、o-down可以是双向的。在一些实施例中,所述连接可以是作为互连拓扑结构的一部分的片间互连结构。在一些实施例中,所述连接可以使用铜电缆形成。

图4所示的计算节点的连接可以按比例放大以形成超正方互连拓扑结构。根据本申请公开的一些实施例,图5示出了一种示例性的超正方互连拓扑结构。根据图5,其中有多个计算节点,包括计算节点11-16、21-26、31-36、41-46、51-56和61-66;每个计算节点具有类似于图4所示的计算节点的所述连接。例如,类似于图4的计算节点a,计算节点33可以与计算节点34、43和44形成矩形连接,并且计算节点33可以具有六个连接。更具体地说,类似于图4的计算节点b和c,计算节点33作为所述矩形连接的一部分连接到计算节点34和43;类似于图4中计算节点a-up,a-left,a-down,和a-right,计算节点33连接到相应的计算节点23、31、35和53。可以理解的是,图5中没有类似于图2中所示的长连接线的连接。因此,由于图5的所述拓扑结构消除了与长连接线相关的延迟,图5的拓扑结构是对传统互连拓扑结构的改进。

使用图5的所述拓扑结构,可以在计算节点的每一行或每一列中形成环形连接。根据本公开的一些实施例,图6a-c示出了来自超正方互连拓扑结构的一行六个计算节点的示例性环形连接。如图6a所示,有六个计算节点在一行中水平对齐,即计算节点11、12、13、14、15和16。此外,上述计算节点之间有七个连接,即连接11-12、11-13、12-14、13-14、13-15、14-16、和15-16。可以理解,在图6a-c中的计算节点11-16相当于在图5中的计算节点11-16,或代表图5中计算节点的任何其他行或列。

根据如图6a示出的所述连接,11-12-14-16-15-13-11可以形成为一个环形连接。换句话说,所述环形连接可以通过顺序遍历连接11-12、12-14、14-16、16-15、15-13和13-11来形成;如图6a中所示,遍历所述连接的所述顺序在所述连接上标识。所述环形连接上的每个计算节点可以沿着所述环形连接转发数据包。

在一些实施例中,连接是双向的。因此,每个环形连接既可以向前方也可以向后方遍历。例如,如图6b所示,所述环形连接11-12-14-16-15-13-11可以通过连接11-13、13-15、15-16、16-14、14-12和12-11的顺序遍历。可以理解的是,所述环形连接也可以通过在列中垂直对齐的计算节点来形成。

可以理解,可以从任何所述计算节点开始形成环形连接;例如,如图6c所示,环形连接可以在计算节点14上开始,并且可以形成为14-16-15-13-11-12-14;换句话说,环形连接可以通过顺序遍历连接14-16、16-15、15-13、13-11、11-12和12-14来形成。如图6c所示,遍历所述连接的所述顺序在所述连接上标识。

根据本公开的一些实施例,图7a-c示出了来自超正方互连拓扑结构的一行四个计算节点的示例性环形连接。如图7a所示,在一行中有四个计算节点,即计算节点11、12、13和14;此外,还有四个连接,即连接11-12、11-13、12-14和13-14。在一些实施例中,图7a-c中的计算节点11-14可以是图6a-c的计算节点11-14。

根据图7a所示的连接,环形连接可以形成为11-12-14-13-11;换句话说,环形连接可以通过图7a所示的顺序遍历连接11-12、12-14、14-13和13-11来形成。环形连接上的每个计算节点都可以沿着环形连接转发数据包。

在一些实施例中,连接是双向的;因此,每个环形连接既可以向前也可以向后遍历;例如,如图7b所示,环形连接11-12-14-13-11可以按顺序遍历连接11-13、13-14、14-12和12-11形成。如图7b所示,所述连接被遍历的顺序在所述连接上标识;可以理解的是,环形连接也可以通过在一列中垂直对齐的计算节点形成。

可以理解的,可以从任何计算节点开始形成一个环形连接;例如,如图7c所示,环形连接可以从计算节点13开始,并且可以形成为13-14-12-11-13;换句话说,环形连接可以通过按顺序遍历连接13-14、14-12、12-11和11-13来形成;如图7c所示,所述连接被遍历的顺序在所述连接上标识。

在一些实施例中,超正方互连拓扑结构可以被应用于形成包括一个或多个计算节点板卡的计算集群。根据本公开的一些实施例,图8示出了在计算集群中的使用超正方互连拓扑结构的示例板卡。如图8所示,计算节点a-d形成一组计算节点。所述板卡包括计算节点a-d、一个或多个主处理器以及硬件桥。

在一些实施例中,计算节点a-d类似于图4所示的计算节点a-d;在一些实施例中,计算节点a-d通过片间互连结构连接,连接计算节点a-d的片间互连结构可以称为板内互连结构。在一些实施例中,每个计算节点a-d通过片间互连结构与相邻板卡的相应计算节点连接,将计算节点a-d与相邻板卡的相应计算节点连接的片间互连结构称为板间互连结构。

在一些实施例中,一个或多个主处理器可以是一个或多个cpus,类似于图3a的主处理器117。在一些实施例中,硬件桥可以是外围组件互连快速(“pcie”)总线,类似于图3a或图3b的总线112。在一些实施例中,pcie可以与网络接口控制器(“nic”)连接,类似于图3a的通信接口118。nic可以连接到以太网或无线宽带(“ib”)网络,类似于图3a的网络122。在一些实施例中,计算集群类似于图3b的计算集群180。在一些实施例中,计算集群是一个人工智能计算集群。

在一些实施例中,图8所示的板卡设置于服务器中,类似于图3a或图3b的服务器110或130。在一些实施例中,服务器可以容置多个板卡。

在一些实施例中,如图8所示,四个计算节点和一个cpu被集成到一个板卡上。在一些实施例中,计算节点a-d可以是ai训练芯片或ai训练处理器。在一些实施例中,计算节点a-d可以是与ai训练芯片或ai训练处理器相关的加速器,例如npu或gpu。每个计算节点a-d可以通过硬件桥连接到一个或多个主处理器。每个计算节点a-d可以有6个端口。每个端口可包含8条通信通道。基于序列化器/反序列化器(“serdes”)架构,每条通信通道可以是112-gbps。

在许多传统的数据中心网络系统中,不同板卡上计算节点之间的通信依赖于pcie总线和传统的以太网或ib网络。可以理解的是,图8所示的板卡不同于传统的数据中心网络系统,因为该板卡可以使用片间互连结构实现不同板卡上计算节点之间的直接通信(例如,图3a中处理器165和166之间的片间互连结构)。与pcie总线和以太网或ib网络相比,所述片间互连结构可以在计算节点之间提供更快、更高效的通信。

在一些实施例中,图8所述的多个板卡可以被被布置为一个计算集群。根据本公开的一些实施例,图9示出了包括计算节点板卡的示例性计算集群。如图9所示,每个板卡包括四个计算节点a-d,一个或多个主处理器和硬件桥。在一些实施例中,计算节点a-d类似于图4所示的计算节点a-d。在一些实施例中,一个或多个主处理器可以是中央处理单元(“cpus”),类似于图3a的主处理器117。在一些实施例中,硬件桥可以是外围组件互连快速(“pcie”)总线,类似于图3a或图3b的总线112。在一些实施例中,计算集群类似于图3b的计算集群180。在一些实施例中,计算集群是人工智能(“ai”)计算集群。在一些实施例中,所述板卡类似于图8中所示的板卡。

在一些实施例中,所述板卡可以垂直堆叠以形成机架。例如,如图9所示,板卡9011-9018可以垂直堆叠以形成机架9010。在每个机架中,板卡中的某个计算节点可以通过片间互连结构连接到上方或下方相邻板卡中的相应计算节点。例如,如图9所示,板卡9012的计算节点a与板卡9011的计算节点a和板卡9013的计算节点a连接(图9中未示出)。在一些实施例中,机架顶部或底部的板卡仅连接到上方或者下方的一个相邻板卡的一个计算节点。例如,板卡9011位于机架9010的顶部。因此,板卡9011的计算节点a仅连接到板卡9011下方的板卡9012的计算节点a,因为板卡9011上方没有板卡。在一些实施例中,机架的一部分或整个机架可以安置在服务器中,类似于图3a或图3b的服务器110和130。可以理解的是,机架也可以通过水平堆叠板卡形成。

在一些实施例中,多个机架可以水平对齐形成计算集群。例如,如图9所示,机架9010-9080水平对齐,机架内每个板卡的计算节点通过片间互连结构连接到左侧或右侧相邻板卡中的相应计算节点。例如,板卡9022的计算节点a连接到板卡9012的计算节点a和板卡9032的计算节点a(图9中未示出)。在一些实施例中,计算集群左侧或右侧的板卡仅被连接到位于左侧或右侧的相邻板卡的一个计算节点。例如,板卡9011位于计算集群的左侧,因此,由于板卡9011的左侧没有板卡,板卡9011的计算节点a仅连接到板卡9011右侧的板卡9021的计算节点a。可以理解的是,计算集群也可以通过垂直堆叠机架形成。

可以理解的是,通过水平和垂直堆叠板卡,如图9所示的计算集群可以不受限制地不断扩大规模。在一些实施例中,安置计算集群的数据中心可以具有顶板,并且所述顶板的高度可能受到限制。因此,机架的高度不会高于顶板的高度。解决此问题的一种方法是在机架的前面或后面添加另一个与机架平行的机架。所述机架顶部板卡中的所述计算节点可以与新添加机架的顶部板卡上的计算节点连接。这些连接可以是片间互连结构的一部分。新添加的机架还可以通过添加另一个机架并连接位于机架底部板卡上的计算节点来进一步扩展。因此,计算集群的可扩展性不受数据中心空间尺寸的影响。可以理解的是,所述垂直扩展也适用于水平扩展。

图4、图5、图8和图9所示的超正方互连拓扑结构和图6a-c和图7a-c所示的环型连接的另一个优点是,每一个超正方互连拓扑结构可以被划分为子部分,每个子部分被分配不同的计算任务。根据本公开的一些实施例,图10示出了划分为子部分的示例性超正方互连拓扑结构。可以理解的是,超正方互连拓扑结构可以类似于图5的超正方互连拓扑结构。

根据图10所示,所述超正方互连拓扑结构示出的计算节点11、12、21、22、13、14、23和24可以分组到一个子部分。环形连接仍然可以由每组水平排列的计算节点形成。例如,可以通过水平排列的计算节点11、12、13和14形成环型连接11-12-14-13-11。在另一示例中,图10所示的超正方互连拓扑结构中的计算节点31、32、41、42、33、34、43、44、51、52、61、62、53、54、63和64可以被分组到一个子部分中,环型连接可以由每组水平或垂直排列的计算节点形成。在另一示例中,图10所示的超正方互连拓扑结构的计算节点15、25、35、45、55和65可以被分组到一个子部分。环形连接可以与图6a-c所示的所述连接相似的方式形成。

在一些实施例中,出于布线的目的,优选正方形分区。例如,包含计算节点31-34、41-44、51-54和61-64的子部分每侧具有四个计算节点,形成正方形。出于布线目的,上述子部分优选于包含计算节点15、25、35、45、55和65的子部分。因此,当系统将计算节点划分为若干子部分以更好地分配计算任务时,该系统可以通过最大化正方形子部分的数量的方式来优化划分计算节点。在一些实施例中,所述系统可以被优化为对每个计算任务首先选择正方形子部分。

可以理解的是,子部分的规格是高度灵活的。例如,每个子部分可以包括8个计算节点或包括超正方互连拓扑结构中的所有计算节点。这种灵活性允许超正方互连拓扑结构根据计算任务的计算需求为每个计算任务分配适当数量的计算节点,从而更有效地利用计算节点。

本公开的实施例进一步提供了一种方法,该方法可以将超正方互连拓扑结构中的计算节点分配给不同的计算任务。根据本公开的一些实施例,图11示出了一种用于在超正方互连拓扑结构中分配计算节点的示例性方法的流程图。可以理解的是,图11中的方法1000是在分布式系统(例如,图3a的分布式系统100)中的主机服务器或其他服务器(例如,图3a或图3b的服务器110或130)中执行;还可以理解的是,图11的方法1000是在类似于图5、图9或图10的超正方互连拓扑结构上执行。

在步骤1010中,获取一个计算任务。在一些实施例中,所述计算任务是从用户输入或系统生成中获取。在一些实施例中,计算任务是从存储设备(例如,图3a的存储设备114)获取的。在一些实施例中,计算任务是ai计算任务。在一些实施例中,可同时获取多个计算任务。

在步骤1020中,确定计算任务的硬件负荷。硬件负荷是指适合计算任务的硬件资源数量。在一些实施例中,硬件负荷是基于超正方形互连拓扑结构中的多个计算节点或多个计算节点板卡的数量。被确定适合计算任务的计算节点的数量不能超过超正方互连拓扑结构中计算节点总数。类似地,被确定适合计算任务的计算节点板卡的数量不能超过超正方互连拓扑结构中的板卡的总数。

在步骤1030中,根据硬件负荷,将计算任务分配给所述超正方互连拓扑结构。在一些实施例中,所述分配包括将所述超正方互连拓扑结构中的所述计算节点或板卡划分为子部分。其中一个子部分包括基于所述计算任务的硬件负荷的足够的计算节点或板卡。例如,所述计算任务可以被分配给与图10所示的计算节点11、12、21、22、13、14、23和24的子部分类似的子部分。在一些实施例中,可能接收到多个计算任务,并且可以将所述多个计算任务中的每个计算任务分配给单独的子部分。

在一些实施例中,至少一个子部分可以使用片间互连结构形成环形连接,类似于图6a-c或图7a-c所示的环形连接。所述环形连接包括在计算节点之间转发数据包的板间互连。数据包可以从执行计算任务的计算节点生成。在一些实施例中,所有子部分都可以使用片间互连结构形成至少一个环形连接。

可以理解的是,上述描述的实施例可以通过硬件、软件(程序代码)或硬件和软件的组合来实现。如果通过软件实现,则可以将其存储在以上描述的计算机可读介质中。当由处理器执行时,该软件可以执行所公开的方法。本公开中描述的计算单元和其他功能单元可以通过硬件或软件或硬件和软件的组合来实现。应理解的是,上述模块/单元中的多个模块/单元可组合为一个模块/单元,并且上述模块/单元中每一个可进一步划分为多个子模块/子单元。

实施例还可以使用以下条款进一步描述:

1、一种系统,其特征在于,包括:

第一组计算节点和第二组计算节点,所述第一组计算节点和所述第二组计算节点是相邻设备,并且所述第一组计算节点和所述第二组计算节点分别包括:

一组计算节点a-d,和

一组组内互连结构,所述组内互连结构将所述计算节点a与所述计算节点b和所述计算节点c通讯耦合,将所述计算节点d与所述计算节点b和所述计算节点c通讯耦合;

所述系统还包括一组组间互连结构,所述组间互连结构将所述第一组计算节点的计算节点a与所述第二组计算节点的计算节点a通讯耦合,将所述第一组计算节点的计算节点b与所述第二组计算节点的计算节点b通讯耦合,将所述第一组计算节点的计算节点c与所述第二组计算节点的计算节点c通讯耦合,并将所述第一组计算节点的计算节点d与所述第二组计算节点的计算节点d通讯耦合。

2.根据条款1的系统,其特征在于,所述组内互连结构与所述组间互连结构包括片间互连结构。

3.根据条款1或2所述的系统,其特征在于,还包括:

第三组计算节点,所述第三组计算节点与所述第二组计算节点相邻接,所述第三组计算节点包括:

一组计算节点a-d,和

一组组内互连结构,所述组内互连结构将所述计算节点a与所述计算节点b和所述计算节点c通讯耦合,将所述计算节点d与所述计算节点b和所述计算节点c通讯耦合;

所述系统还包括第二组组间互连结构,所述第二组组间互连结构将所述第三组计算节点的计算节点a与所述第二组计算节点的计算节点a通讯耦合,将所述计算第三组计算节点的计算节点b与所述第二组计算节点的计算节点b通讯耦合,将所述第三组计算节点的计算节点c与所述第二组计算节点的计算节点c通讯耦合,并将所述第三组计算节点的计算节点d与所述第二组计算节点的计算节点d通讯耦合。

4、根据条款1-3所述的系统,其特征在于,

所述组内互连结构与所述第一组组间互连结构形成一个环形连接,该环形连接将所述第一组计算节点的计算节点a与所述第一组计算节点的计算节点b通讯耦合,将所述第一组计算节点的计算节点节点b与所述第二组计算节点的计算节点b通讯耦合,将所述第二组计算节点的计算节点b与所述第二组计算节点的计算节点a通讯耦合,并将所述第二组计算节点的计算节点a与所述第一组计算节点的计算节点a通讯耦合。

5、根据条款3所述的系统,其特征在于:

所述组内互连结构与所述第一组组间互联结构和所述第二组组间互连结构形成环形连接,所述环形连接将所述第一组计算节点的计算节点a与所述第一组计算节点的计算节点b通讯耦合,将所述第一组计算节点的计算节点b与所述第二组计算节点的计算节点b通讯耦合,将所述第二组计算节点的计算节点b与所述第三组计算节点的计算节点b通讯耦合,将所述第三组计算节点的计算节点b与所述第三组计算节点的计算节点a通讯耦合,将所述第三组计算节点的计算节点a与所述第二组计算节点的计算节点a通讯耦合,以及将所述第二组计算节点的计算节点a与所述第一组计算节点的计算节点a通讯耦合。

6、根据条款1-5任一项所述的系统,还包括:

多组计算节点,包括所述第一组计算节点和所述第二组计算节点,其中

所述多组计算节点被分组成多个子部分,其中至少一个子部分包括环形连接,所述环形连接包括一行或一列计算节点。

7、根据条款1-6任一项所述的系统,所述的计算节点是处理器。

8、根据条款7所述的系统,所述计算节点是人工智能(“ai”)训练处理器、ai训练芯片、神经处理单元(“npu”),或图形处理单元(“gpu”)。

9、根据条款1-8任一项所述的系统,所述组内互连结构或所述组间互连结构的所述片间互连结构是双向的。

10、根据条款9所述的系统,所述片间互连结构是铜电缆。

11、根据条款1-10任一项所述的系统,所述第一组计算节点和所述第二组计算节点各为板卡,每个板卡还包括:

一个主处理器;和

硬件桥,所述硬件桥连接所述板上的计算节点a-d与所述主处理器。

12、根据条款11所述的系统,包括:

所述主处理器是中央处理器。

13、根据条款11和12所述的系统,包括:

所述硬件桥是外围组件互连快速(“pcie”)总线。

14、一种在多组计算节点之间分配计算任务的方法,所述多组计算节点中的每一组计算节点包括一组计算节点a-d和一组组组内互连结构,所述组内互连结构将计算节点a与计算节点b和计算节点c通讯耦合,将计算节点d与计算节点b和计算节点c通讯耦合,所述方法包括:

获取所述计算任务;

确定所述计算任务的硬件负荷;以及

根据所述硬件负荷,将所述计算任务分配给所述多组计算节点中的第一组计算节点和第二组计算节点,其中,执行所述计算任务生成的数据包通过所述第一组计算节点和所述第二组计算节点之间的一组组间互连结构转发。

15、根据条款14所述的方法,其特征在于,所述组间互连结构将所述第一组计算节点的计算节点a与所述第二组计算节点的计算节点a通讯耦合,将所述第一组计算节点的计算节点b与所述第二组计算节点的计算节点b通讯耦合,将所述第一组计算节点的计算节点c与所述第二组计算节点的计算节点c通讯耦合,将所述第一组计算节点的计算节d的与所述第二组计算节点的计算节点d通讯耦合。

16、根据条款15所述的方法,所述组内互连结构和所述组间互连结构包括片间互连结构。

17、根据条款14-16任一项所述的方法,所述根据硬件负荷将所述计算任务分配给所述多组计算节点中的第一组计算节点和第二组计算节点,还包括:

将所述多组计算节点中的计算节点划分为一个或多个子部分,将所述计算任务分配给所述一个或多个子部分中的某个子部分。

18.根据条款14-17任一项所述的方法,还包括:

从所述组内互连结构和所述组间互连结构中创建环形连接,所述环形连接将所述第一组计算节点的计算节点a与所述第一组计算节点的计算节点b通讯耦合,将所述第一组计算节点的计算节点b与所述第二组计算节点的计算节点b通讯耦合,将所述第二组计算节点的计算节点b与所述第二组计算节点的计算节点a通讯耦合,以及将所述第二组计算节点的计算节点a与所述第一组计算节点的计算节点a通讯耦合。

19、根据条款14-18任一项所述的方法,所述计算节点是处理器。

20、根据条款19所述的方法,所述计算节点是人工智能(ai)训练处理器、ai训练芯片、神经处理单元(“npu”),或图形处理单元(“gpu”)。

21、根据条款20所述的方法,所述计算任务是人工智能计算任务。

22、根据条款14-21任一项所述的方法,所述组内互连结构或所述组间互连结构的片间互连结构是双向的。

23、根据条款22所述的方法,所述片间互连结构是铜电缆。

24、一种非临时性计算机可读介质,其存储一组指令集,所述指令集可由设备的一个或多个处理器执行,以使所述设备启动用于在多组计算节点之间分配某个计算任务的方法,每组计算节点包括一组计算节点a-d和一组组内互连结构,所述组内互连结构将计算节点a与计算节点b和计算节点c通讯耦合,将计算节点d与计算节点b和计算节点c通讯耦合,该方法包括:

获取所述计算任务;

确定所述计算任务的硬件负荷;以及

根据所述硬件负荷,将所述计算任务分配给所述多组计算节点中的第一组计算节点和第二组计算节点,其中,执行所述计算任务生成的数据包通过所述第一组计算节点和所述第二组计算节点之间的一组组间互连结构转发。

25、根据权利要求24所述的非临时性计算机可读介质,其特征在于,所述组间互连结构将所述第一组计算节点的计算节点a与所述第二组计算节点的计算节点a通讯耦合,将所述第一组的计算节点b与所述第二组计算节点的计算节点b通讯耦合,将所述第一组计算节点的计算节点c与所述第二组计算节点的计算节点c通讯耦合,将所述第一组计算节点的计算节点d与所述第二组计算节点的计算节点d通讯耦合。

26、根据条款24所述的非临时性计算机可读介质,所述组内互连结构和所述组间互连结构包括片间互连结构。

27、根据权利要求24-26任一条款所述的非临时性计算机可读介质,由所述设备的一个或多个处理器执行的所述指令集,使所述设备进一步执行:

将所述多组计算节点中的计算节点为一个或多个子部分,将所述计算任务分配给所述一个或多个子部分中的某个子部分。

28、根据条款24-27任一项所述的非临时性计算机可读介质,由所述设备的一个或多个处理器执行的所述指令集,使所述设备进一步执行:

从所述组内互连结构和所述组间互连结构中创建环形连接,所述环形连接将第一组计算节点的计算节点a与第一组计算节点的计算节点b通讯耦合,将所述第一组计算节点的计算节点b与所述第二组计算节点的计算节点b通讯耦合,将所述第二组计算节点的计算节点b与所述第二组计算节点的计算节点a通讯耦合,以及将所述第二组计算节点的计算节点a与所述第一组计算节点的计算节点a通讯耦合。

29、根据权利要求24-28任一条款所述的非临时性计算机可读介质,所述计算节点是处理器。

30、根据条款29所述的非临时性计算机可读介质,其中,所述计算节点是人工智能(“ai”)训练处理器、ai训练芯片、神经处理单元(“npu”),或图形处理单元(“gpu”)。

31、根据权利要求30所述的非临时性计算机可读介质,其中,所述计算任务是人工智能计算任务。

32、根据条款24-31任一项所述的非临时性计算机可读介质,其中,所述组内互连结构或所述组间互连结构的片间互连结构是双向的。

33、根据权利要求32所述的非临时性计算机可读介质,所述片间互连结构是铜电缆。

除非另有明确说明,术语“或”包括所有可能的组合,除非不可行。例如,如果声明组件可以包括a或b,则除非另有明确说明或不可行,否则组件可以包括a或b,或a和b。作为第二个示例,如果声明组件可以包括a、b或c,则除非另有明确说明或不可行,否则组件可以包括a,b,或者c,或者a和b,或者a和c,或者b和c,或者a、b和c。

在前述描述中,已经参照许多具体细节描述了实施例,这些细节可以因实施而异;可以对所描述的实施例进行某些改编和修改。从本文公开的本发明的具体实施方式考虑,其他实施例对于本领域技术人员来说是显而易见的。本说明书和示例仅被认为是示例性的,并由权利要求说明本发明的真实范围和精神。附图中所示的步骤序列仅用于说明目的,并不旨在限于任何特定的步骤序列。因此,本领域技术人员可以理解,在实现相同方法的同时,这些步骤可以以不同的顺序执行。在附图和说明书中,已经公开了示例性实施例。然而,可以对这些实施例进行许多变化和修改。因此,尽管使用了特定术语,但它们仅在通用和描述性意义上使用,而不是出于限制目的,实施例的范围由权利要求定义。

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