具有多个嵌入的环的联网计算机

文档序号:1821544 发布日期:2021-11-09 浏览:25次 >En<

阅读说明:本技术 具有多个嵌入的环的联网计算机 (Networked computer with multiple embedded rings ) 是由 S.诺尔斯 于 2020-03-26 设计创作,主要内容包括:提供了一种计算机,其包括布置在多个堆叠层中的多个互连的处理节点,该多个堆叠层形成多面棱柱。棱柱的每个面包括节点的多个堆叠对。所述节点通过至少两个层内链路连接。每个节点通过层间链路连接到相邻对中的对应节点。对应节点通过相应的层间链路连接以形成相应的边。每个对形成层的部分,每个层包括多个节点,每个节点通过至少一个层内链路连接到其在该层中的相邻节点以形成环。数据围绕由节点和链路的相应集合形成的路径而被传输,每个路径具有在第一最末端层与第二最末端层之间的第一部分,以及在第二最末端层与第一最末端层之间提供并且包括其中一个边的第二部分。(A computer is provided that includes a plurality of interconnected processing nodes arranged in a plurality of stacked layers that form a faceted prism. Each facet of the prism includes a plurality of stacked pairs of nodes. The nodes are connected by at least two intra-layer links. Each node is connected to a corresponding node in an adjacent pair by an inter-layer link. The corresponding nodes are connected by respective inter-layer links to form respective edges. Each pair forms part of a layer, each layer comprising a plurality of nodes, each node being connected to its adjacent node in that layer by at least one intra-layer link to form a ring. Data is transmitted around paths formed by respective sets of nodes and links, each path having a first portion between a first endmost layer and a second endmost layer, and a second portion provided between the second endmost layer and the first endmost layer and including one of the edges.)

具有多个嵌入的环的联网计算机

技术领域

本公开涉及在计算机中连接的处理节点之间的数据交换,具体地但不排他地用于优化机器学习/人工智能应用中的数据交换。

背景技术

集合体(collective)是在计算机中处理数据时常用的例程。它们是使得数据能够跨多个不同进程(process)而被共享和处理的例程,这些进程可能在同一处理节点或不同处理节点上运行。例如,如果一个进程从数据存储中读取数据,它可以使用“广播”进程来与其他进程共享该数据。另一个示例是当特定函数的结果被多个进程需要时。“归约(reduction)”是这样一种结果,其已要求对来自多个进程中的每一个进程的数据值应用计算函数。“聚集(Gather)”和“散射(Scatter)”集合体处理多于一个的数据项。某些集合体在处理机器学习应用中已变得越来越重要。

MPI(Message Passing Interface,消息传递接口)是一种消息传递标准,其可应用于多种并行计算架构。MPI定义了许多适用于机器学习的集合体。一个这样的集合体被称为“全归约(Allreduce)”。全归约操作使得作用于来自不同源进程的多个数据值的计算函数的结果能够在接收进程处被提供。注意,接收进程可以是源进程之一,也可以有多个接收进程。全归约集合体对来自多个源进程的数据值进行归约,并将结果分布到所有源进程(它们担任归约结果的接收进程)。根据MPI标准,全归约集合体是通过以下方式而实现的:在归约集合体中(例如,在多个进程之一处)对来自所有源进程的数据值进行归约,然后将结果广播到每个源进程。

图1是用于训练神经网络的分布式架构的示意框图。提供了训练数据源100。这可以是数据库或能够保留适用于正被训练的神经网络模型的训练数据的任何其他类型的数据存储。跨多个处理单元110a、110b、110c等而分布根据神经网络模型的处理本身。图1中仅示出了三个单元,但容易理解的是,可以使用任意数量的处理单元。每个处理单元110a、b、c从训练数据源100接收成批量的训练数据。每个处理单元110a、b、c保留定义该模型的一组参数112a、112b、112c。在计算函数114中用当前的一组参数来处理传入的一批训练数据,并且计算函数的结果被用于生成所谓的增量(delta),其表示原始参数与新参数之间的差异,作为对该批训练数据和当前的一组参数处理应用该计算函数的结果。在许多神经网络中,这些参数被称为“权重”,因此增量值被称为“增量权重”。在图1中,权重被标记为112a、b、c,而增量权重被标记为116a、b、c。应当理解,在实践中,权重和增量权重被存储在处理单元可访问的合适的存储器中。如果权重和增量权重可以被保留在本地存储器中,则这会使训练过程更加高效。

图1的架构并不旨在训练三个独立的模型,而是在于以分布式的方式训练单个模型。因此,目的是让模型参数(或权重)收敛到每个处理单元中的单个公共集。很明显,从任何特定的一组权重开始,并且假设每个处理单元处接收到的一批训练数据是不相同的,那么由每个处理单元中每个计算函数所产生的增量权重都会有所不同。因此,需要一种在批量训练数据的每次迭代之后,跨处理单元而分布增量权重的方法。这在图1中被示意性地示出,其中组合函数118从每个处理单元接收增量权重,并执行对增量权重进行归约的数学函数(诸如平均函数)。组合函数118的输出然后被分别反馈到每个处理单元内的组合电路120a、120b和120c。因此产生一组新权重,其作为原始权重与来自组合函数118的经组合输出二者的组合,并且新权重118a、118b、118c被存储回本地存储器。然后,将下一批训练数据提供给每个处理单元,并且重复多次该过程。很明显,如果处理单元的起始权重相同,那么在每次迭代后,它们将再次被重置为相同的新值。很容易看出,上文是全归约函数特别有用的一个示例。增量权重被提供给组合函数118a,这些增量权重在那里被归约,然后这些增量权重以其归约后的形式被提供回每个处理单元,在那里它们可以与原始权重进行组合。

图1A是一个示意图,用于图示如何在五个处理节点N0...N5的行(line)连接拓扑中实现全归约集合体。这些处理节点可以对应于图1的处理单元,而组合函数分布于这些处理单元中。处理节点被示为以行配置连接,其中每个处理节点通过“前向”链路LF和“后向”链路LB连接到其邻居。如图所示,并且正如方向词所暗示的那样,前向链路将处理节点在图1A中从左到右连接,后向链路将处理节点在图1A中从右到左连接。每个处理节点具有被标示为200的处理能力和被标示为202的存储能力。处理能力和存储能力可以以非常多种方式中的任一种来实现。在一种特定的表现形式中,处理节点可以包括多个瓦片(tile),每个单独的瓦片具有其自己的处理能力和相关联的存储器能力。每个处理节点还具有一个或多个链路接口,以使其能够经由链路LF/LB连接到其相邻节点。

为了理解全归约集合体的实现,假设第一节点N0已经生成了一个标记为Δ0的局部(partial)向量。“局部”可以是一种数据结构,其包括增量权重的阵列(诸如向量或张量)。局部向量是多个局部的阵列。每个“局部”对应于处理节点上的计算。每个“局部”可以是一组增量权重。这被存储在准备在全归约集合体中要交换的存储能力202中。在一个简单的“流式传输(streaming)”行全归约算法中,前向链路被用于“归约”,且后向链路被用于“广播”。该算法开始于一端处的处理节点(图1A中的左侧节点)将其局部Δ0发送到其相邻节点N。在此节点处,对传入的局部(在此情况中为Δ0)与已由处理节点N1处的计算能力200生成的对应局部(Δ1)进行归约。然后将此归约(在图1A中被示为ADD函数)后的结果从处理节点N发送到下一个连接的节点N。如本文进一步提到的,可以将ADD函数替换为任何可用于对局部进行归约的组合函数。该过程发生在每个处理节点处,直到在最终的处理节点(在图1A中表示为N4)处,完成了对局部的归约。此时,经由后向链路LB,将归约(总和Δ)发送回每个处理节点。其在每个节点处被接收,并在该节点处被存储在存储器能力中,然后还被传输到下一个节点。以此方式,每个处理节点最终都以归约后的结果结束。

图1B示出了归约和广播阶段的时序图。注意,处理节点在其收到来自前一节点的传入数据之前,并不会将归约后的结果发送到下一节点。因此,对于前向链路上的每个传出传输,存在标记为Δ的固有延迟。

此外,在完全归约后的结果已在端(end)节点处被获得之前,并不使用后向链路进行广播。然而,如果局部向量很大,由于管线效应,则在起始节点已经完成发送其局部的数据项之前,结果的前导(lead)数据项就将返回到该起始节点,因此在所有的前向和后向链路上的活动可能存在实质上的重叠。

在此算法的修改(其代表一个小改进)中,行中的每一端处的处理节点可以开始向中央节点传输它们的局部,其中归约是在中央节点处完成的。在这种情况下,结果被广播回到端节点。注意,在此场景下,移动方向将会存在反转,例如在前向和后向链路两者上在节点N2与N3之间以及节点N3与N4之间。如果一行闭合成一个环(通过在后向和前向链路两者上将最后一个节点N5连接到第一个节点N0),管线(pipeline)算法可以将同一方向上的归约和广播串行化(serialize),从而由双向链路形成的两个逻辑环各自可以对一半的数据进行独立操作。也即,每个局部向量被分成两半,并且第一半ΔA在前向链路上被归约(如图1A所示),并在N5与N0之间的连接分支(leg)上被广播。另一半向量ΔB在后向链路上被归约,然后在后向链路的连接环上被广播。

图1D示出了前向和后向链路的对应时序图。

A.图1A和图1C中所示的一维环的原理可以扩展到二维环,诸如在环面或环形连接的计算机中。

使用二维环,替代的方法是使用全聚集(Allgather)集合体、后接归约-散射(Reduce-Scatter)集合体,来实现全归约。Jain和Sabharwal撰写的题为“Optimal BucketAlgorithms for large MPI collectives on torus interconnects”的论文(ICS'10,6月2日-4日,筑波)提出了假设在环面(torus)互连处理器中的处理节点之间双向链路的、用于全聚集、归约-散射和全归约集合体的基于桶(bucket)的算法。该方法在每个步骤中有多个数据值(片段)要被处理的基础上进行操作。在归约-散射集合体中,每个进程都从一个初始局部向量开始。假设这里对进程的引用是指在处理节点上执行的进程。一个局部向量可以被划分为多个元素或片段。将所有进程的对应元素进行归约,然后跨这些进程分布这些归约后的元素。在全聚集集合体中,每个进程接收来自所有其他进程的所有元素。归约-散射集合体对所有局部进行归约,并将每个归约存储在相应的节点上——参见图2。全归约集合体操作可以通过执行归约-散射集合体、后接全聚集集合体操作来实现。

正如Jain的论文中所讨论的,环面互连对于分布式存储器超级计算机而言是有吸引力的互连架构。在上文的讨论中,已经在进程之间的通信的上下文中对集合体进行了解释。在分布式超级计算机中,处理节点是互连的,并且每个处理节点可能负责一个或多个进程(在集合体的上下文中)。环面互连是一种网状(mesh)互连的类型,其中处理节点布置在N维的阵列中,每个节点连接到其最近的邻居,并且该阵列中的相对边(edge)上的对应节点也是相连接的。经互连的处理节点之间存在双向通信链路。

在上述由Jain和Sabharwal撰写的论文中讨论的用于实现集合体的算法被应用于环面连接架构。这允许集合体同时在不同维度的环中处理向量的不同片段,从而使处理带宽是高效的。的确,Jain和Sabthawal将他们的技术呈现为非对称环面的最佳选择,并且已在本领域中认可了确实如此。

本公开的一个目的是提出一种改进的拓扑结构和方法以用于实现全归约函数,具体但不排他地用于机器学习中的处理函数。

虽然本文描述的拓扑和配置对于全归约的高效实现而言是特别有效的,但它们也可以有利地用于其他机器学习集合体和其他类型的并行程序。

发明内容

根据本发明的一个方面,提供了一种计算机,其包括布置在具有多个堆叠层的配置中的多个互连的处理节点,每个层包括通过处理节点之间的相应链路连接的三个处理节点,其中:

在堆叠的末端层,三个处理节点通过两个适于同时操作的链路互连;

在堆叠的中央层,三个处理节点通过单个链路互连;以及

每个层的处理节点通过两个适于同时操作的链路连接到每个相邻层中相应的对应节点。

该配置中的处理节点可以被编程为沿着三个嵌入的一维逻辑环传输数据,每个逻辑环以三个嵌入的一维逻辑环同时操作的方式而使用该配置中的一组处理节点。

该配置可用于以本文所述的方式实现全归约集合体。

根据本发明的另一方面,提供了一种计算机,其包括布置在具有多个堆叠层的配置中的多个互连的处理节点,每个层包括通过处理节点之间的相应链路连接的四个处理节点,其中:

在堆叠的末端层,四个处理节点通过节点之间的两个链路以环形方式互连,这两个链路适于同时操作;

多个堆叠层中的处理节点提供四个面,每个面包括多个层,每个层包括一对处理节点;

其中,处理节点被编程为操作配置以沿着嵌入的一维环传输数据,每个环由两个相对(opposing)面中的处理节点形成。

概括地说,本发明的方面提供互连的处理节点的配置,其中配置的面(face)由节点对的堆叠层形成并且使得一维环能够被嵌入该些面中。在梯状配置中存在单个面,在三角形配置中存在三个面,在箱管结构中存在四个面。

每个处理节点可以包括存储器,该存储器被配置为存储准备要在归约-散射阶段中交换的数据项的阵列,其中每个数据项分别位于该阵列中,其中对应数据项分别位于其他处理节点的阵列中的对应位置处。阵列可以是“局部”(局部结果的向量)或“结果”(完全归约后局部的向量)。

每个处理节点都可以被编程为在归约-散射阶段中,在前向方向上将数据项传输到其在每个环中的相邻处理节点。可以在每个步骤中传输的数据项被称为“片段”。片段是向量的一片——如本文所述,向量被划分为片段以利用在嵌入的环中形成的逻辑环。

每个阵列可以表示局部增量的向量的至少一部分,每个局部增量表示对存储在每个处理节点处的值的调整。每个处理节点可以被编程为在计算步骤中生成局部增量的向量。每个处理节点可被编程为将其向量划分为两个子阵列以分别利用两个嵌入的环。

本发明的另一方面提供了一种计算机,其包括多个互连的处理节点,这些处理节点布置在处理节点的多个堆叠层的配置中,该多个堆叠层形成多面棱柱;

其中,棱柱的每个面包括处理节点的多个堆叠对,其中,每个对的处理节点通过至少两个层内链路连接,并且每个对的处理节点通过至少一个层间链路连接到相邻对中的对应处理节点,其中,对应处理节点通过相应的层间链路连接以形成该配置的相应边(edge);以及

其中,每对处理节点形成该配置的其中一层的部分,每个层包括多个处理节点,每个处理节点通过至少一个层内链路连接到其在该层中的相邻处理节点以形成环;

其中,多个堆叠层包括第一最末端层和第二最末端层,以及至少一个中间层,

其中,处理节点被编程为操作该配置以沿着由处理节点和链路的相应集合形成的多个一维路径中的每个一维路径传输数据,每个一维路径具有在第一最末端层与第二最末端层之间的第一部分以及在第二最末端层与第一最末端层之间提供的第二部分,该第一部分仅使用该配置的其中一个面中的所有处理节点一次,并且该第二部分包括该配置的其中一个边。

在一个实施例中,多面棱柱在每个层中具有三个处理节点,从而为相应的一维路径的第一部分提供三个相应的面。

在一些实施例中,在至少一个中间层中,每个处理节点通过两个层间链路连接到其相邻处理节点。

在第一最末端层和第二最末端层中,每个处理节点可以通过三个层间链路连接到其相邻处理节点,以使得能够在该配置中的三个一维路径上同时传输数据。

该计算机可以根据包括一组堆叠层的多面棱柱进行配置,每个堆叠层的处理节点具有到相邻堆叠层中的对应处理节点的层间链路和在该层中相邻处理节点之间的层间链路,通过断开指定堆叠层中的每个层间链路并将其连接到指定堆叠层中的相邻处理节点来提供层内链路,由此指定堆叠层形成第一最末端层和第二最末端层之一。

每个处理节点可以被编程为识别它们用于传输数据的层间链路和层内链路之一,以便为该数据确定一维路径。这可以通过包含用于定义数据传输阶段的适当指令的本地节点级程序来实现。

每个处理节点可以被编程为去激活其在数据传输步骤中任何未使用的层间链路和层内链路。

每个处理节点可以被编程为将该节点相应的局部向量划分为片段并且围绕每个一维路径以连续片段的形式传输数据。

该计算机可以被编程为将每个路径作为一组逻辑环来操作,其中在同时传输步骤中沿着每个逻辑环传输连续片段。

每个处理节点可以被配置为在两个链路的每个链路上同时输出相应的片段。

每个处理节点可以被配置为对多个(例如两个)传入片段与多个(例如两个)相应的本地存储的对应片段进行归约。

每个处理节点可以被配置为在全归约集合体的全聚集阶段中,在两个链路中的每个链路上同时传输完全归约后的片段。

在一些实施例中,链路中的一些或所有是双向的,即它们可以通过链路在两个方向上(可选地,同时)传输数据。

本发明的另一方面提供了一种生成要在计算机上并行执行的一组程序的方法,该计算机包括多个处理节点,这些处理节点在包括多面棱柱的配置中连接;

其中,棱柱的每个面包括处理节点的多个堆叠对,其中,每个对的处理节点通过至少两个层间链路彼此连接,并且每个对的处理节点通过至少一个层间链路连接到相邻对中的对应处理节点,其中,对应处理节点通过相应的层间链路连接以形成该配置的相应边;以及

其中,每对处理节点形成该配置的其中一层的部分,每个层包括多个处理节点,每个处理节点通过至少一个层内链路连接到其在该层中的相邻处理节点以形成环;

其中,多个堆叠层包括第一最末端层和第二最末端层,以及至少一个中间层,该方法包括:

为每个程序生成至少一个数据传输指令以定义数据传输阶段,在该数据传输阶段从执行该程序的处理节点传输数据,其中,该数据传输指令包括链路标识符,该链路标识符定义在该数据传输阶段中要在其上传输数据的传出链路;以及

确定该链路标识符,以便沿着由处理节点和链路的相应集合形成的多个一维路径中的每个一维路径传输数据,每个一维路径具有在第一最末端层与第二最末端层之间的第一部分以及在第二最末端层与第一最末端层之间提供的第二部分,该第一部分仅使用该配置的其中一个面中的所有处理节点一次,并且该第二部分包括该配置的其中一个边。

在一些实施例中,每个程序包括一个或多个指令以去激活在数据传输步骤中任何未使用的层间链路和层内链路。

在一些实施例中,每个程序包括一个或多个指令以将在其上执行该程序的处理节点相应的局部向量划分为片段并且通过分别定义的链路以连续片段的形式传输数据。

在一些实施例中,每个程序包括一个或多个指令以在两个链路的每个链路上同时输出相应的片段。

在一些实施例中,每个程序包括一个或多个指令以对多个(例如两个)传入片段与多个(例如两个)相应的本地存储的对应片段进行归约。

在一些实施例中,每个程序包括一个或多个指令以在全归约集合体的全聚集阶段中,在两个链路中的每个链路上同时传输完全归约后的片段。

本发明的另一方面提供了一种在计算机上并行执行一组程序的方法,该计算机包括多个处理节点,这些处理节点在包括多面棱柱的配置中连接;

其中,棱柱的每个面包括处理节点的多个堆叠对,其中,每个对的处理节点通过至少两个层内链路彼此连接,并且每个对的处理节点通过至少一个层间链路连接到相邻对中的对应处理节点,其中,对应处理节点通过相应的层间链路连接以形成该配置的相应边;以及

其中,每对处理节点形成该配置的其中一层的部分,每个层包括多个处理节点,每个处理节点通过至少一个层内链路连接到其在该层中的相邻处理节点以形成环;

其中,多个堆叠层包括第一最末端层和第二最末端层,以及至少一个中间层,该方法包括:

在每个程序中执行至少一个数据传输指令以定义数据传输阶段,在该数据传输阶段从执行该程序的处理节点传输数据,其中,该数据传输指令包括链路标识符,该链路标识符定义在该数据传输阶段中要在其上传输数据的传出链路;

该链路标识符已经被确定,以便沿着由处理节点和链路的相应集合形成的多个一维路径中的每个一维路径传输数据,每个一维路径具有在第一最末端层与第二最末端层之间的第一部分以及在第二最末端层与第一最末端层之间提供的第二部分,该第一部分仅使用该配置的其中一个面中的所有处理节点一次,并且该第二部分包括该配置的其中一个边。

在一些实施例中,执行程序以将每个路径作为一组逻辑环来操作,其中,在同时传输步骤中围绕每个逻辑环传输在每个处理节点处提供的局部向量的连续片段。

附图说明

为了更好地理解本发明以示出如何实施本发明,现在将通过示例的方式参考附图。

图1是图示神经网络中分布式训练的示意图。

图1A是示出用于实现简单的“流式传输”行全归约算法的一行处理节点的示意图。

图1B是“流式传输”行全归约算法的时序图。

图1C是端节点被连接成环的线的示意图。

图1D是环形全归约算法的时序图。

图2是图示通过归约-散射、后接全聚集步骤来实现全归约函数的示意图。

图3A和图3B图示了基于桶的全归约算法。

图4A和图4B是其中嵌入两个环的处理节点配置的示意图。

图5A和图5B是其中嵌入三个环的处理节点的替代(“三角形”)配置的示意图。

图6是图示图5的结构中嵌入的环的示意图。

图7是其中嵌入四个环的另一替代(“箱管”)配置的示意图。

图8A图示了一个3×8三角形棱柱,具有1:2带宽不对称性。

图8B示出了三个同构的嵌入的环,这些环可以在图上并发地循环,每个环每个链路使用B/6。

图8C是示出三个嵌入的环之一的3D视图。

具体实施方式

已经在多瓦片(tile)处理器的上下文中开发了本发明的各方面,这种处理器被设计为担任机器学习工作负载的加速器。加速器包括多个互连的处理节点。每个处理节点可以是单个的多瓦片芯片、多个芯片的封装或多个封装的机架。本文的目的是设计一种在确定性(可重复)计算方面高效的机器。处理节点以能够高效地实现集合体(尤其是广播和全归约)的方式进行互连。

一个特定的应用是在使用分布式处理来训练神经网络时更新模型。在此上下文中,分布式处理利用位于不同物理实体(诸如芯片或封装或机架)中的多个处理节点。也即,处理节点之间的数据传输需要通过物理链路来交换消息。

在开发专用于机器学习的拓扑中的挑战不同于高性能计算(HPC)网络的一般领域。HPC网络通常强调按需异步全对全(All-to-All)个性化通信,因此动态路由和带宽过度供应(provision)是正常的。可以在HPC网络中供应过量的带宽,目的是减少延迟而不是提供带宽。活动通信链路的过度供应会浪费可能有助于计算性能的功率。当今计算中使用的最常见的链路类型在其活动时消耗功率,而无论其是否正被用于传输数据。

本发明人开发了一种特别适于MI工作负载的机器拓扑结构,并且解决了MI工作负载的以下属性。

在MI工作负载中,芯片间通信当前由广播和全归约集合体主导。广播集合体可以由散射集合体后接全聚集集合体来实现,并且全归约集合体可以由归约-散射集合体后接全聚集集合体来实现。在此上下文中,术语“芯片间”表示经由外部通信链路连接的处理节点之间的任何通信。如前所述,这些处理节点可以是芯片、封装或机架。

注意,通信链路可以在一个印刷电路板上的芯片之间,也可以在不同印刷电路板上的芯片之间。

可以对工作负载进行编译,使得在单独智能处理单元(IPU)机器内,全对全通信主要是芯片间的。

全归约集合体已在上文进行了描述并被图示在图2中。图2示出了处于开始状态S1的四个节点中的每个节点上的一组局部值或“局部”向量P0、P1、P2、P3。在此上下文中,节点是处理节点网络中的处理节点。注意,每个节点N0、N1、N2、N3都有四个“对应的”局部,它们被相应地标记(菱形大网格、斜向下宽条纹、方形大网格、斜向上宽条纹)。也即,每个局部在其局部向量中都有一个位置,使得P0(n)在节点n上在其向量中的位置与P0(n+1)在节点n+1上在其向量中的位置相同。使用后缀(n)来表示局部所在的节点——因此,P0(0)是节点N0上的局部P0。在归约-散射传递(pass)中,对应局部被归约,并且归约被提供给节点之一。例如,局部P0(0)、P0(1)、P0(2)、P0(3)被归约(归约到r0)并置于节点N0上。类似地,局部P1(0)、P1(1)、P1(2)和P1(3)被归约(归约到r1)并置于节点N上。依此类推,使得:在中间状态S2下,每个节点都有归约r0、r1、r2和r3之一。正如所解释的,归约可以通过任何组合函数进行,该函数可以包括独立运算符(例如max)或关联运算符=P1(0)*P1(1)*P1(2)*P1(3)。然后,在全聚集传递中,每个归约被提供给所有节点以激活状态S3,其中每个节点现在保留所有四个归约。注意,在S1中,“对应的”局部(例如P0(0)、P0(1)、P0(2)和P0(3))可能都有所不同,而在状态S3中,每个归约(例如r0)在所有节点处都相同,其中ri=f{(Pi(0),Pi(1),Pi(2),Pi(3))}。在机器学习中,一组局部P0、P1、P2、P3是一个向量。在训练期间模型的每次传递都会产生一个局部向量(例如,更新的权重)。在状态S3下,每个节点的菱形网格、斜向下条纹、方形网格、斜向上条纹上的归约r0、r1、r2、r3是完全归约向量,即,“结果”或完全归约后局部的向量。在机器学习的上下文中,每个局部都可以是模型中参数的更新增量。替代地(在本文中并未进一步描述的布置中),它可以是更新后的参数。

图3A和图3B图示了用于归约-散射/全聚集的基于桶的算法,该算法假设了六个“虚拟”环。这些环在本文中也称为“逻辑”环。图3A是图示在多个虚拟环中对局部进行归约的示意图。每个局部被分成六个片段(fragment)。在图3A中,大写字母R、Y、G、B、P、L各自表示存储在每个节点处的局部的不同片段,由阴影菱形网格、斜向上条纹、方形网格、水平条纹、斜向下条纹、垂直条纹表示。字母表示要一起被彼此归约的对应片段,并为这些片段定义了“虚拟”环或“逻辑”环。参见图3A,每个局部P0、P1、P2、P3和P4中的“R”片段被归约成结果向量中的单个片段对于Y、G、B、P和L片段,也是类似的。

图3B示出了一个时序图,其中横轴上的时间表示全归约过程的每个步骤中的数据交换和计算。在图3A和3B中,通过归约-散射阶段、后接全聚集阶段,来完成全归约过程。在图3B中,每个片段由以下不同的阴影表示:R-菱形网格、Y-斜向上条纹、G-方形网格、B-水平条纹、P-斜向下条纹、L-垂直条纹。

图3A和图3B中的表示如下。每个局部分别表示为P0、P1、P2、P3、P4、P5。在过程开始时,每个局部存储在相应的节点N0、N1、N2、N3、N4、N5上。每个片段根据它的片段序号和它在虚拟环中的位置而被标记,该片段被认为是要在该虚拟环中被归约的。例如,RA0表示局部P0中的R片段,因为这是由节点N0-N1-N2-N3-N4-N0形成的虚拟环中的第一个片段。RA1表示节点N1处的R片段,它位于其虚拟环中的第二个位置。YA0表示节点N1处的Y片段。“0”后缀表示它是其虚拟环中的第一个片段,Y环为N1-N2-N3-N4-N0-N1。特别注意,A的后缀反映的是虚拟环,而不对应于物理节点(或局部)。注意,图3A仅示出了前向链路上的虚拟环。图3B示出了在后向链路上发生等效过程,其中片段表示为B。

在步骤一中,每个虚拟环中的第一个片段(A0)从其节点传输到下一个相邻节点,在该相邻节点处对该第一个片段与该相邻节点处的对应片段进行归约。也即,RA0从N0移动到N1,其中RA0在N1被归约为R(A0+A1)。同样,这里使用“+”号作为任何组合函数的简写。注意,在相同步骤中,每个虚拟环的A0片段将被同时传输。即,N1与N2之间的链路用于传输YA0,N2与N3之间的链路用于传输GA0,诸如此类。在下一个步骤中,对应归约后的片段通过前向链路传输到它们的下一个相邻节点。例如,R(A0+A1)从N1传输到N2,Y(A0+A1)从N2传输到N3。注意,为清楚起见,图3A中并未对所有片段进行编号,也未对所有传输进行编号。完整的片段和编号的集合如图3B所示。这个过程分五个步骤进行。经过五个步骤后,对每个节点上的所有片段都进行了归约。在第五步骤结束时,该归约是在针对该片段的每个对应环的最后一个节点上。例如,R归约是在节点N5上。

全聚集阶段的起点是开始于每个虚拟环中的最后一个节点到第一个节点的传输。因此,R片段的最终归约结束于节点N5上,从而为全聚集阶段的第一个步骤做好准备。Y片段的最终归约对应地在节点N0上结束。在全聚集阶段的下一个步骤中,归约后的片段再次传输到它们的下一个相邻节点。因此,完全归约后的R片段现在也在N2处,完全归约后的Y片段现在也在N3处,依此类推。通过这种方式,在全聚集阶段结束时,每个节点结束时具有局部向量的所有完全归约后的片段R、Y、G、B、P、L。

如果归约所需的计算可以被隐藏在管线延迟之后,则该算法的实现是最佳的。注意,为了实现全归约而在计算机中形成合适的环时,环的巡回(tour)必须对环中的每个节点仅访问一次。因此,由具有双向链路的行(图1A)形成的自然环并非是最高效的环。

现在将描述用于处理节点的互连网络的改进拓扑,其允许在处理节点之间对局部和结果进行高效交换,以实现全归约集合体。

图4A是示出了多个处理节点的连接拓扑的示意图。在图4A中,梯状(ladder)构造中有八个处理节点,但是应当理解,该原理可以扩展到以梯状布置的任何数量的处理节点对。每个处理节点都被示为一个圆圈并标有数字以便于参考。在以下描述中,当指代节点时将插入前缀N。例如,N0表示图4A中代表节点N0的圆圈。处理节点以将要描述的方式由链路连接。每个链路可以是双向的,即其可以通过该链路在两个方向上传输数据。注意,存在物理互连性和逻辑连接性。逻辑连接性用于形成两个嵌入的连续环,每个环具有两个方向。首先,将描述物理连接性。Y方向上的每个处理节点都通过单个双向链路连接到它们的相邻节点。相向的(facing)处理节点由两个双向链路连接。例如,(见图4A中左侧的垂直线),N0通过单个双向链路连接到N2(在图4中被示为两个相反朝向的箭头)。类似地,N2连接到N4、N4连接到N6、N6连接回N0。在水平方向上,节点N0通过两个双向链路连接到N1(其中一个双向链路被示为黑色和小虚线的相反箭头,另一个双向链路被示为灰色和大虚线的相反箭头)。类似地,N2连接到N3、N4连接到N5、N6连接到N7。这种物理连接允许将两个逻辑嵌入的环(每个环都是双向的)嵌入到结构中。第一个环(被示为灰色和大虚线)从N0延伸到N1、N1到N3、N3到N2、N2到N4、N4到N5、N5到N7、N7到N6,然后返回到N0。第二个逻辑环(被示为黑色和小虚线)从N0延伸到N2、N2到N3、N3到N5、N5到N4、N4到N6、N6到N7、N7到N1,然后从N1延伸回N0。每个环包括所有八个处理节点。还要注意,两个环可以同时使用,因为在任何单个的路径上都不存在冲突。

考虑图4A和图4B中的节点N0。该节点N0具有两个将其连接到节点N1的链路,该节点N1称为其相向对节点。这些链路被标记为L011和L012。标号L01表示连接节点0和1的链路。标号1表示它是节点0与1之间的第一链路,且标号2表示它是节点N0与N1之间的第二链路。注意,在该实施例中,每个链路都是双向的。节点N0还具有标记为L02的第三双向链路。该链路L02连接到梯状配置中下一相邻对中的对应节点N2。因此,链路L02被称为梯状连接链路。节点N0具有标记为L06的第四链路。该链路连接梯状配置的端对(end pair)中的对应节点N0和N6。在图4A和图4B中,第一端对是相向的节点对N0和N1,且第二端对是相向的节点N6和N7。注意,相向对中的处理节点N6、N7类似地由两个双向链路L671、L672连接。

在端对的对应节点(N0和N6)之间延伸的链路L06、以及对应地在节点N1与N7之间延伸的链路L17被称为梯状返回(return)链路。这些链路使梯状配置中的每个嵌入的环成为完整的一维环。

图4的实施例中的梯状配置包括两个中间相向对,N2/N3和N4/N5。每个对中的相向节点通过对应链路L231、L232;L451、L452连接。

相向对中的对应节点通过梯状连接链路连接。例如,第一端对中的节点N1通过链路L13连接到节点N3及其相邻的中间对。在图4A和图4B中,每个链路由两个双向箭头表示。然而,这些链路可以容纳在单个物理链路结构中,并表示该物理链路结构上的双向通信路径。在替代实施例中,链路结构的每个方向可以是单独的物理表现。

在图4A和图4B的实施例中,总共八个节点的四对相向对形成梯状配置。很容易理解,梯状配置可以被简单地扩展到包括更多的相向对。这可以通过改变端对中的节点上链路的连接性来完成。例如,为了向梯状配置添加另一个相向对,链路L06从节点N0断开连接并连接到另一个节点N8(以虚线显示)。这个节点N8有其自己的物理链路,然后该物理链路作为梯状返回链路连接到节点N0。类似地,从节点N7延伸到节点N1的链路L17从节点N1断开并连接到新节点N9(以虚线示出)。然后将来自N9的物理链路作为梯状返回链路连接到节点N1。节点N8和N9通过物理链路N891和N892连接在一起。

可以根据需要将更多的节点对添加到梯状配置中,以扩展计算机的处理能力。注意,当添加新节点时,除了端对之外,无需中断梯状配置中其他节点对的现有连接。这极大地简化了对梯状配置的扩展,以根据需要包括额外的处理节点。

如图4B所示,由于梯状配置中的嵌入的环的外观,该梯状配置中的嵌入的环可被视为“麦状编织(barley twist)”环,并被标记为VR1、VR2。需要强调的是,图4B中所示的环是嵌入在梯状配置中的虚拟数据传输环。这些环可以同时操作,因为没有链路在不同的冲突环中被使用两次。

为了使用这种结构,要传输的局部(或片段)在每个节点处被分成两部分,并且使用上文参考图3A和图3B描述的一维环算法,围绕其中一个环对每个部分进行完全归约。

每个节点输出的片段的尺寸其中N是节点数量,且V是在特定阶段中正被归约-散射或被全聚集的数据结构的尺寸。在开始处,V是局部向量的尺寸。片段数量等于在围绕环的每个步骤之前的该环中的节点数量。注意,相比于Jain论文中所描述的结构,环经过了所有节点,并且所有链路始终都被使用。本文假设每个处理节点可以在两个链路上同时输出其数据,并且可以同时接收和处理数据。每个环都是一维的——该环是一个无支路的处理节点链。

根据嵌入的一维环的另一种配置,提供具有多个堆叠(stack)层的配置。图5A和图5B作为三维视图示出了一种配置,且图6是示出连接性的展开图。存在物理连接性和逻辑连接性,将在下文描述这两者。根据物理连接性(图6),该配置包括多个堆叠层——图中从左到右(而不是在垂直方向上)所示的堆叠。堆叠的方向无关紧要,但应注意的是,在处理单元可布置在服务器机架中的实际配置中,以对应于服务器机架的垂直配置进行堆叠可以是有用的。

每个层包括三个处理节点,它们在图6中最左侧的层中被示为N61、N62和N63。这些处理节点连接在一个环中,其中每个处理节点通过两个链路L1、L2连接到其相邻处理节点。这些链路每个都可以是双向的。堆叠最右端的层也通过节点之间的两个链路连接在一起。然而,堆叠的中央层仅通过单个链路而连接。藉由链路而实现的连接性在此意味着,链路是活动的并且能够传输数据。处理节点之间可以存在其他不活动的连接,这些不活动的连接不构成该配置的操作的部分。

该配置被操作以提供可以操作或同时操作的三个嵌入的一维环。图5B示意性地示出了该配置,其中环被标记为R1、R2和R3。R1以实线示出,R2以点虚线示出,并且R3以短划线示出。将该配置视为三角形横截面的柱体,柱体的每个平面都包含一个一维嵌入的环。例如,环R1由以下形成:节点N51、N52(在最末层中)、N52与N55之间的链路(在层之间)、N55与N54之间的链路(在下一层内)、N54与N57之间的链路(在层之间)、N57与N58之间的链路(在下一层内)、N58与N511之间的链路(在层之间)、N511与N510之间的链路(在右手最末端的层中)、N510与N512之间的链路,以及N52与N53之间的返回链路,然后返回到N51。

在其他两阶段中的每个中都可以找到对应的嵌入环。因此,每个环由每个层内的链路连接到层之间的链路、并依此类推而形成,直到该环完成。参考图5A在下文更详细地描述环(或路径)。

在第一嵌入的路径中,节点N51通过节点N51与N53之间的链路、沿着第一最末端层的一个侧边连接到节点N53。这是沿第一最末端层的一个侧边的层内(intralayer)链路。该路径沿着第一最末端层的下一个侧边继续到节点N52。然后,该路径经由层间链路(interlayer),从节点N52前进到节点N56。然后,该路径经由该配置的与节点N52和N56相同的面上的另一层内链路,从节点N56继续到N55。该路径沿着该面从节点N55延伸到节点N58,然后沿着层内链路跨过该面到达节点N57。该路径沿着层间链路从节点N59前进到节点N511并且然后沿着层内链路从节点N61前进到节点N512,并从此沿着层内链路从N512前进到第二最末端层的节点N510。节点N511、N512与N510之间的层内链路是第二最末端层的边。该路径然后沿着返回部分,从节点N510前进到第一最末端层的节点N51。该路径以图5A中的小虚线示出。

还可以示出以黑色实线示出的,开始于节点N51的第二嵌入的路径。该路径具有沿图5A所示配置的“底”面的第一部分,其从节点N51延伸到节点N53,从节点N53延伸到节点N55,从节点N55延伸到节点N57,从节点N54延伸到N57,从节点N57延伸到N58,从节点N58延伸到N512,从节点N512延伸,直到节点N511。该路径的第二返回部分由第二最末端层的节点N511与第一最末端层的N52之间的互连链路提供。

可以示出开始于节点N53并沿着层内链路延伸到节点N52的第三嵌入的路径;第三嵌入的路径以大点划线示出。该路径然后沿着图5A所示配置的背面,从节点N52前进到N51、从N51前进到N54、从N54前进到N56、从节点N56前进到N59、从节点N59前进到N57、从节点N57前进到N510、从节点N510前进到节点N511,以及从节点N511前进到N512。该路径具有从节点N512到N53的返回部分。

注意,每个路径都具有对该配置中的一个面中的每个节点仅使用了一次的第一部分,以及每个最末端层的两个“分支(leg)”。每个路径还具有返回部分,该返回部分使用该返回部分中的所有处理节点,沿着该配置的相对边直接在最末端层之间通过。

三个嵌入的环可以同时操作。如果所有链路都能够同时进行双向操作,则可以有六个嵌入的环同时操作。

可以通过添加新的处理节点层,来扩展计算机的容量。为了做到这一点,对处理节点的互连性予以改变。例如,考虑在第二最末端层(图5A中的右侧层)上添加一个额外的层。来自节点N511的链路之一被断开并被连接到附加层中的对应处理节点,所示的处理节点标记为EPN1(附加处理节点1)。类似地,来自节点N512和节点N511中的每一个节点的链路之一与其当前连接的节点断开并且分别被连接到标记为EPN2和EPN3的对应附加处理节点。然后,节点EPN1、EPN2和EPN3本身与配置中的其他层中相应的链路结构连接在一个环中。注意,该配置中的其余部分的连接性保持不变。可以通过这种方式将层添加到配置堆叠的任一端。

注意,围绕三角形柱体配置中的每个层(三个节点的集合)所采用的路径使得:三个处理节点的层的延伸的三棱柱可以被分区为不同长度,从而使得每个分区(partition)可以以自包含的方式来操作。这可以通过去激活单独分区的层之间的链路来完成。这将在下文更详细地讨论。注意,尽管在图5B中,返回部分显示为回环(loop back),但这只是示意性的。在一种实现中,沿着边的各个处理节点之间的每个已有的链路均被用作返回部分的部分,其中数据值经过每个处理节点而无需进一步处理,直到它到达最末端的处理节点。

在一些实施例中,对“作为环进行操作”的引用是指如上所述的对一维算法的实现,以实现全归约集合体。在图5A、图5B和图6的结构中,所有三个环可以同时操作,从而能够将每个节点处的局部向量划分为三个部分,以便在结构中的三个环上同时进行处理。

图8A图示了其中在具有1:2带宽对称性的3×8三角形棱柱中布置了24个处理节点实施例。带宽利用被注明在链路上。图8A示出了图中的连通性,该图示出了总节点带宽B到每个链路的分配。注意,层内链路的带宽为B/6,层间链路的带宽为B/3。

图8B图示了三个同构的嵌入的环,这些环可以在结构上并发地循环。每个环具有每链路B/6的带宽利用。

图8C是示出三个嵌入的环之一的三维视图。在图8C中示出环R1。注意,其他两个环R2、R3绕长轴同样旋转了120度。

根据另一种配置,可以提供如图7所示的“箱管(box tube)”结构。回到图4A和图4B的“梯状”配置,在垂直于梯状的对(或运行)的方向上提供每个路径的返回部分。在图7所示的箱管配置中,每个路径的返回部分可以通过在矩形棱柱后面上的梯状配置来实现。也即,在箱管配置中,前面(front face)可以作为图4A和图4B的梯状来操作,而后面(rear face)可以作为图4A和图4B的梯状来操作,从而能够嵌入四个环,如图7中相应的颜色所示。注意,围绕箱结构的每个层(四个节点的集合)所采用的路径使得:2×2处理节点的层的延伸的“管”可以被分区为不同长度,从而使得每个分区可以以自包含的方式来操作。这可以通过去激活单独分区的层之间的链路来完成。

在图7所示的“箱管”配置中可以看到四个虚拟环。它们被标记为BVR1、BVR2、BVR3、BVR4(代表箱管虚拟环)。注意,此术语是为了对来自以下两者中的环进行区分:梯状配置(VR)中的虚拟环;以及三角形配置(R)中的虚拟环。然而,嵌入的环的功能和操作在所有三个结构中都是相同的。

第一个嵌入的环BVR1从图7所示结构左上角的节点N71开始进行操作。它从四个节点的第一最末端层(在图7中所示的箱结构的左端)中的节点N71起传递。虚拟环BVR1围绕该层的三个节点N73、N74和N72延伸。然后它延伸到四个节点的下一个层中的一个节点(节点N76处)。它向下传递到该层的一个侧边到达节点N77,然后延伸到该面上的下一个层中的相邻节点N81。然后,环在该层的一个侧边继续向上到达节点N80,并从那里到达结构中的下一个层(在这种情况下是最后一层)的节点N83处。环BVR1然后通过节点N85、N84和N82围绕经过该最末端层的三个侧边,之后经由节点N79、N82、N78、N75在沿着箱管结构的另一面的返回部分中返回,之后返回到N71。注意,该环已被描述为从节点N71开始,并在特定方向上进行了描述。事实上,该环可以使用能够在两个方向上同时操作的双向链路,在两个方向上同时进行操作。此外,环的“起始节点”可以是环上的任何节点,特别是针对已经描述的数据的不同片段。注意,一般而言,环经过该箱管结构的每个端面的三个侧边,并以交替的方式沿着该箱管结构的每个侧面行进,从而仅对该面上的所有节点进行访问。注意,该箱结构的每个侧面上的虚拟环的配置与梯状结构的配置类似。正如已经提到的,箱管结构可以被认为是一种梯状结构的类型,但是在每种情况下具有通过经过箱结构的端面和箱结构的相对侧面而延伸的返回路径。

在箱管结构中形成另外三个虚环。第二个环BVR2从节点N71传递到N72传递到N74传递到N73(端面的三个侧边)。从那里它经由节点N78、N77、N81、N82和N84以交替的方式沿着箱管结构的“底”面经过。它经由节点N85、N83和N82围绕端面的三个侧边,然后经由N79、N80、N76、N75回到N71以交替的方式沿着箱结构的顶面返回。

通过从节点N73开始更容易地解释第三个环,因为它使用端面的三个侧边通过节点N71、N72和N74,然后经由节点N77、N76、N80、N81、N85和N83以交替的方式传递。从那里它经由N82和N84到达箱管结构的返回面,它经由节点N82、N79、N75、N78以交替的方式传递并返回到N73。

可以认为第四虚拟环BVR4在节点N74处开始,经由节点N73、N71和N72绕端面的三个侧边行进。然后它经由N76、N74、N79、N80、N83和N82以交替方式经过箱管结构的顶面。然后它经由N84和N85经过端面,然后经由节点N81、N82、N78、N77和N74沿着箱管结构的底面返回。

每个节点都能够实现处理或计算功能。每个节点都可以实现为单个处理器。然而,更可能的是,每个节点将被实现为单个芯片或芯片封装,其中每个芯片包括多个处理器。每个单独的节点有许多可能的不同表现形式。在一个示例中,节点可以由英国申请(公开号为GB2569843;GB2569430;GB2569275)中描述的类型的智能处理单元构成;其内容以引用方式并入本文。然而,本文描述的技术可以在构成节点的任何类型的处理器上使用。本文概述的是一种以高效方式来实现特定交换模式的交换数据方法,其在机器学习模型中是有用的。此外,链路可以以任何合适的方式表现。有利的是这些链路是双向的,并且优选地,这些链路可以在两个方向上同时操作,尽管这不是必要要求。一种特定类别的通信链路是SERDES链路,其功率要求与通过链路传输的数据量或传输数据所花费的时间无关。SERDES是Serializer/DeSerializer的首字母缩写,并且此类链路是已知的。为了在这种链路的线路上传输信号,需要向线路施加功率来改变电压以生成信号。SERDES链路具有以下特性:持续地向线路施加功率以将其保持在某个电压水平,使得可以通过该电压水平的变化(而不是通过0与施加的电压水平之间的变化)来传达信号。因此,SERDES链路上的带宽容量都有固定的功率,而无论其是否被使用。SERDES链路在每一端由电路实现,该电路将链路层设备连接到物理链路(诸如铜线)。该电路有时称为PHY(物理层)。PCIe(Peripheral ComponentInterconnect Express,外围组件互连高速)是一种用于连接高速计算机的接口标准。

能够的是,可以动态地对链路进行去激活(deactive),以在不使用时有效地不消耗功率。然而,机器学习应用的激活时间和非确定性特性通常使得程序执行期间的动态激活是有问题的。因此,本发明人已经确定,利用以下事实可能是更好的:对于任何特定配置,芯片到芯片链路的功耗基本上是恒定的,因此最佳优化就是通过尽可能保持与IPU活动并发地进行的芯片到芯片流量(traffic)来最大化物理链路的使用。

SERDES PHY是全双工的(即,16Gbit每秒,PHY在每个方向上同时支持16Gbit每秒),因此全链路带宽利用率意味着平衡的双向流量。此外注意,与诸如经由交换机的间接通信相比,使用直接芯片到芯片通信具有显著的优势。直接芯片到芯片通信比切换的通信更加功率高效。

另一个需要考虑的因素是节点之间的带宽要求。一个目标是有足够的带宽来将节点间通信隐藏在每个节点上处为分布式机器学习而执行的计算之后。

在为机器学习优化机器架构时,全归约集合体可以被用作所需带宽的标准。上文在对用于模型平均的参数更新的处理中,已经给出了全归约集合体的一个示例。其他示例包括梯度平均和计算范数。

作为一个示例,可以考虑残差学习网络的全归约要求。残差学习网络是一类深度卷积神经网络。在深度卷积神经网络中,利用多个层来学习在每个层内相应的特征。在残差学习中,可以学习残差来替代学习特征。称为ResNet的特定残差学习网络实现了网络的不同层之间的直接连接。已经证明,在某些情况下训练这种残差网络可能比传统的深度卷积神经网络更加容易。

ResNet 50是一个50层的残差网络。ResNet 50有25M的权重,因此对单位置浮点格式F16中所有权重梯度的全归约涉及50兆字节(megabyte)的局部。为了举例说明带宽要求,假设每个完整批次需要一个完整的全归约。这很可能是(但不一定是)对梯度的全归约。为了实现这一点,每个节点必须每全归约输出100兆比特(megabit)。ResNet 50对于每个图像需要250个Gigaflops(每秒十亿次的浮点运算)用于训练。如果每个处理节点的子批次尺寸为16个图像,则每个处理器为每个全归约集合体执行400个Gigaflops。如果处理器达到每秒100个Teraflops(每秒一万亿次的浮点运算),则所有链路之间需要大约每秒25千兆比特(gigabit)以便维持计算与全归约通信的并发性(concurrency)。对于每个处理器8个图像的子批次,所需的带宽名义上会增加一倍,其部分地通过降低每秒可实现的Teraflops来处理较小的批次来得以缓解。

在p个处理器之间实现全归约集合体,每个处理器是以尺寸为m兆字节(等于归约尺寸)的局部开始的,该实现要求至少2m.(p-1)兆字节是通过链路来发送的。所以如果每个处理器有l个其可以同时在其上进行发送的链路,则渐近最小归约时间为2m.(p-1)(p-1)除以(p.l)。

上述概念和技术可以在若干种不同的示例中使用。

在一个示例中,提供了用作计算机的固定配置。在该示例中,处理节点如上文讨论的各种实施例中所描述和图示的那样互连。在这样的布置中,在处理节点之间只放置了必要的层内链路和层间链路。在具有端面(例如箱管棱柱和三角形棱柱)的实施例中,在构成端面的最末端层中的相邻处理节点之间的层间链路可以比中间层中的层间链路更多。注意,术语“面(face)”不仅用于定义细长面,还可以指棱柱的端面。然而,如上所述,棱柱的端面在每种情况下都在相应的最末端层中构成处理节点的环。

可以从该配置的精确数量的处理节点构建出固定配置。替代地,可以通过将其从更大的结构中分区出来而提供。也即,可以提供一组处理节点,这些处理节点构成具有一组堆叠层的多面棱柱。每个堆叠层中的处理节点可以具有:到相邻堆叠层中的对应处理节点的层间链路;以及该层中相邻处理节点之间的对内链路。就此而言,该多面棱柱类似于多面结构的图中所描述和图示的配置。

可以通过以下方式来提供期望数量的堆叠层的固定配置:断开原始组的堆叠层中的指定堆叠层中的每个层间链路,并将其连接到指定堆叠层中的相邻处理节点以提供层内链路。以这种方式,可以使原始组的堆叠层中的指定堆叠层形成结构的第一最末端层和第二最末端层之一。注意,原始组的层可以以这种方式分区为多于一个的固定配置结构。

层间链路和层内链路是由上述合适的总线或线路提供的物理链路。在一种表现形式中,每个处理节点都有一组从其延伸出的线路,用于将其连接到另一个处理节点。这可以例如通过每个处理节点的一个或多个接口来完成,该一个或多个接口具有连接到物理线路的一个或多个端口。

在另一种表现形式中,链路可以由板载线路构成。例如,单个板可以支持一组芯片,例如四个芯片。每个芯片都有一个接口,该接口带有的端口可连接到其他芯片。可以根据预定方法,通过将线路焊接到板上来在芯片之间形成连接。注意,此处描述的概念和技术在该上下文中特别有用,因为它们最大限度地利用了已预先焊接在印刷电路板上的芯片之间的链路。

本文描述的概念和技术特别有用,因为它们能够优化使用非可切换链路。可以通过使用节点之间的固定的非可切换链路,将本文描述的处理节点连接起来构建出配置。在某些表现形式中,如果将不使用额外的链路,则无需在处理节点之间提供这些额外的链路。例如,在配置的中间层中,处理节点之间的链路比最末端的层中的少。替代地,可以在处理节点之间提供链路,但在某些配置中可以永久地去激活该链路。

为了使用配置,生成了一组并行程序。该组并行程序包含节点级程序,也即,被指定用于在配置中的特定处理节点上工作的程序。要在特定配置上操作的一组并行程序可以由编译器生成。编译器有责任生成节点级程序,这些程序正确定义要用于某些数据的每个数据传输步骤的链路。这些程序包括一个或多个用于在数据传输阶段实现数据传输效果的指令,该指令使用链路标识符来标识要用于该传输阶段的链路。例如,一个处理节点在任何时候都可能有两个或三个活动链路(如果链路同时是双向的,则增加一倍)。链路标识符使得为该传输阶段的数据项选择正确的链路。注意,每个处理节点可能不知道其相邻节点的动作——交换活动是针对每个交换阶段而预编译的。

还要注意,链路不是必须被切换的——数据项在其被传输之时不需要进行活动路由,也不需要改变链路的连接性。

如上所述,本文描述的计算机网络的配置是为了增强计算中的并行性。在此上下文中,并行性是通过将节点级程序加载到旨在被并行执行的配置的处理节点中来实现的,例如,以如前述的分布式方式来训练人工智能模型。然而,将容易理解的是,这仅是本文描述的配置所实现的并行性的一种应用。实现并行性的一种方案称为“批量同步并行”(BSP)计算。根据BSP协议,每个处理节点执行计算阶段和在计算阶段后的交换阶段。在计算阶段期间,每个处理节点在本地执行其计算任务,但不与其他处理节点交换其计算结果。在交换阶段,每个处理节点都被允许与配置中的其他处理节点交换先前计算阶段的计算结果。在配置的交换阶段完成之前,不会开始新的计算阶段。以BSP协议的这种形式,在从计算阶段过渡到交换阶段,或从交换阶段过渡到计算阶段或两者兼而有之的时刻(juncture),放置屏障(barrier)同步。

在本实施例中,当交换阶段被发起时,每个处理节点使用编译器为该交换阶段确定的链路标识符,来执行用于与其相邻节点交换数据的指令。可以通过使用前述的MPI消息传递标准,来确定交换阶段的性质。例如,可以从库中调用集合体,诸如全归约集合体。以这种方式,编译器具有预编译的节点级程序,该程序控制在其上传输局部向量(或在其上传输局部向量的相应片段)的链路。

很明显可以使用其他同步协议。

虽然已经描述了特定实施例,但是一旦给出了本文的公开内容,所公开技术的其他应用和变体对于本领域技术人员来说可能变得显而易见。本公开的范围不受所描述的实施例的限制,而仅受所附权利要求的限制。

37页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:用于配置漂移检测和修复的系统和方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!