具有嵌入的环的联网计算机领域

文档序号:1866276 发布日期:2021-11-19 浏览:24次 >En<

阅读说明:本技术 具有嵌入的环的联网计算机领域 (Networked computer domain with embedded ring ) 是由 S.诺尔斯 O.托鲁德巴肯 S.费利克斯 L.P.休斯 于 2020-03-26 设计创作,主要内容包括:本发明的一个方面提供了一种计算机,其包括布置在梯状配置中的多个互连的处理节点,该梯状配置包括多个相向的处理节点对。每个对的处理节点通过两个链路彼此连接。每个对中的处理节点通过至少一个链路连接到相邻对中的对应处理节点。处理节点被编程为操作梯状配置以围绕由处理节点和链路的相应集合形成的两个嵌入的一维环来传输数据,每个环仅使用梯状中的所有处理节点一次。(One aspect of the invention provides a computer comprising a plurality of interconnected processing nodes arranged in a ladder configuration comprising a plurality of facing pairs of processing nodes. The processing nodes of each pair are connected to each other by two links. The processing nodes in each pair are connected to corresponding processing nodes in adjacent pairs by at least one link. The processing nodes are programmed to operate a ladder configuration to transmit data around two embedded one-dimensional rings formed by respective sets of processing nodes and links, each ring using all of the processing nodes in the ladder only once.)

具有嵌入的环的联网计算机领域

技术领域

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

背景技术

集合体(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被存储回本地存储器。然后,将下一批训练数据提供给每个处理单元,并且重复多次该过程。很明显,如果处理单元的起始权重相同,那么在每次迭代后,它们将再次被重置为相同的新值。很容易看出,上文是全归约函数特别有用的一个示例。增量权重被提供给组合函数118,这些增量权重在那里被归约,然后这些增量权重以其归约后的形式被提供回每个处理单元,在那里它们可以与原始权重进行组合。

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

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

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

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

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

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

图1C和图1D中所示的一维环的原理可以扩展到二维环,诸如在环形(toroid)连接的计算机中。

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

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

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

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

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

发明内容

本发明的一个方面提供了一种计算机,包括布置在梯状配置中的多个互连的处理节点,该梯状配置包括多个相向的处理节点对,其中每个对的处理节点通过两个链路彼此连接,以及每个对中的处理节点通过至少一个链路连接到相邻对中的对应处理节点,其中处理节点被编程为操作梯状配置以围绕由处理节点和链路的相应集合形成的两个嵌入的一维环来传输数据,每个环仅使用梯状中的所有处理节点一次。

梯状配置可以包括处理节点的第一端对、处理节点的至少一个中间对以及处理节点的第二端对,其中第一端对和第二端对中的对应处理节点通过至少一个相应链路彼此连接。

在一个实施例中,每个处理节点被编程为将该节点的相应局部向量划分为片段,并且围绕每个环传输连续片段。

每个环可以作为一组逻辑环而被操作,其中在同时传输步骤中围绕每个逻辑环传输连续片段。

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

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

在一些实施例中,每个链路都是双向的。这使在计算机中操作环的数量加倍。

为了实现用于ML或其他分布式应用的全归约集合体,每个处理节点可以被配置为在全归约集合体的归约-散射阶段中,在该处理节点处用相应的局部向量的两个相应本地存储的对应片段来对两个传入片段进行归约,并且在两个链路中的每个链路上同时传输归约后的片段。

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

本发明的另一方面提供了一种操作计算机的方法,该计算机包括布置在梯状配置中的多个互连的处理节点,在梯状配置中,相向的处理节点对通过两个链路连接,并且每个对中的处理节点各自连接到相邻对中的对应处理节点,该方法包括操作梯状配置以围绕两个嵌入的一维环来传输数据,每个环仅使用梯状中的所有处理节点一次。

根据一些实施例的方法包括将每个嵌入的一维环作为多个逻辑环来操作,并且在连续传输步骤中围绕每个逻辑环传输连续片段。

另一方面提供了一种以梯状配置构建计算机的方法,包括:

提供第一对处理节点;

通过两个第一链路将第一对处理节点连接在一起;

提供第二对处理节点;

通过两个第二链路将第二对处理节点连接在一起;

通过相应的梯状连接链路,将第一对处理节点中的每一个处理节点连接到第二对处理节点中的每一个对应处理节点;

提供第三对处理节点;

通过两个第三链路将第三对处理节点连接在一起;

通过相应的另外的梯状连接链路,将第二对处理节点中的每一个处理节点连接到第三对处理节点中的每一个对应处理节点;

通过相应的梯状返回链路,将第三对处理节点中的每一个处理节点连接到第一对处理节点中的每一个对应处理节点;以及

该计算机被配置为围绕两个嵌入的一维环来传输数据,每个环仅使用梯状配置中的所有处理节点一次。

可以通过在第一对与第三对(其担任梯状配置的端对)中间引入另外的第二对来扩展梯状配置。另外的第二对具有通过另外的梯状连接链路彼此连接的对应处理节点。在实践中,另外的第二对的引入可以通过以下方式来实施:通过断开梯状返回链路并将它们用来担任梯状连接链路以连接到后续对的处理节点,来改变第三对的状态。然后,该后续对可以担任端对,或者其本身可以连接到将担任端对的另一后续对。以此方式,梯状配置可被扩展以容纳额外的处理节点。

每个处理节点可以具有四个可操作链路——两个可操作链路用于连接到其配对的处理节点;一个可操作链路连接到其在相邻对中的对应节点;一个可操作链路(如果它是中间对)连接到其在另一相邻对中的对应节点,或者(如果它是端对)作为梯状返回链路连接到另一端对。

为了实现全归约集合,该方法可以包括操作梯状配置以实现同时使用两个嵌入的环的归约-散射阶段和同时使用两个嵌入的环的全聚集阶段,其中全聚集阶段在归约-散射阶段之后。

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

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

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

附图说明

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

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

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

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

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

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

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

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

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

图4C示出了作为2×12的环形(或双环)的梯状配置,具有2:1带宽非对称。

图4D是图示连接性图的图,示出了总节点带宽B到链路的分配。

具体实施方式

已经在多瓦片(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)并置于节点N1上。依此类推,使得:在中间状态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图示了用于归约-散射/全聚集的基于桶的算法,该算法假设了六个“虚拟”ID环。这些环在本文中也称为“逻辑”环。图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中,每个片段由上文所述的不同阴影表示。

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

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

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

图4C图示了具有布置在2×12环形结构中的24个处理节点的实施例。图4C指出了链路上对带宽的使用。对内(intrapair)链路的带宽为B/2。对间(interpair)链路的带宽用量为B/4。返回链路的带宽用量为B/4。这在本文中被称为2:1带宽非对称。

图4D以示意图的形式图示了可以在结构上并发地循环的两个嵌入的环。这些环是同构的(即,它们的形状相同,并因此长度相同)。如前文所述,每个环仅对结构中的所有节点访问一次。每个环在该环中使用每链路带宽B/4。其中在处理节点之间有两个链路(对内链路),总体带宽为B/2,如前文所述。

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

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

每个节点都能够实现处理或计算功能。每个节点都可以实现为单个处理器。然而,更可能的是,每个节点将被实现为单个芯片或芯片封装,其中每个芯片包括多个处理器。每个单独的节点有许多可能的不同表现形式。在一个示例中,节点可以由英国申请(公开号为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)。

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

在一个示例中,提供了用作计算机的固定配置。在该示例中,处理节点如上文讨论的各种实施例中所描述和图示的那样互连。

可以从该配置的精确数量的处理节点构建出固定配置。替代地,可以通过将其从更大的结构中分区出来而提供。也即,可以提供一组处理节点,这些处理节点构成具有原始组的堆叠层的“梯状”。每个堆叠层中的处理节点可以具有:到相邻堆叠层中的对应处理节点的层间(interlayer)链路;以及该层中相邻处理节点之间的对内(intrapair)链路。

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

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

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

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

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

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

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

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

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

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

27页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:使用映射归约计算叉积

网友询问留言

已有0条留言

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

精彩留言,会给你点赞!