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

机器学习加速器中的队列分配的制作方法

2022-10-26 22:56:15 来源:中国专利 TAG:

机器学习加速器中的队列分配
1.相关申请的交叉引用
2.本技术要求根据35 u.s.c.
§
119(e)于2020年10月14日提交的美国临时专利申请no.63/091,708的优先权。
技术领域
3.本公开涉及用于机器学习加速器通信网络中的流量排队的共享存储器的分配。


背景技术:

4.电子设备可以由多个不同的计算单元组成,这些计算单元需要在它们之间传送数据以便电子设备操作。计算单元之间的数据通信可以是不确定的。例如,数据通信在一个单元的传输时间到另一个单元的接收时间之间经历可变的时延。也就是说,数据从一个单元传播到另一个单元所花费的时间不是恒定的,而是在传输时间内经历许多不同变化的源。


技术实现要素:

5.总体上,本公开涉及一种用于机器学习加速器通信网络中的存储器分配的方法。总体上,该方法包括访问与专用集成电路(asic)的多个通信端口相关联的元数据。所述元数据针对每个端口标识该特定端口是否在当前配置中被使用以及与该特定端口相关联的通信介质。基于元数据确定用于每个端口的预期时延,并且将共享存储器的部分分配给每个端口。共享存储器通过以下来分配:针对未使用的端口指派零存储器,基于预期时延来确定针对每个端口的存储器分配,以及将共享存储器的起始地址和停止地址指派给每个端口。实现方式可以可选地包括以下特征中的一个或多个。
6.在一些实现方式中,将共享存储器的起始地址和停止地址指派给每个端口包括由与asic不同的设备调用应用编程接口(api)。
7.在一些实现方式中,使用机器学习加速器通信网络和所分配的共享存储器在asic上执行过程。在一些实现方式中,所述过程是训练神经网络。
8.在一些实现方式中,asic是张量处理单元(tpu)。
9.在一些实现方式中,在元数据中标识的通信介质是铜缆介质、光学介质、印刷电路板(pcb)介质或其任何组合。
10.在一些实现方式中,存储器根据以下等式加以分配:
11.在替代实现方式中,一种用于机器学习加速器通信网络中的存储器分配的方法包括确定用于机器学习加速器asic的网络的网络拓扑。访问与网络内的每个asic的多个通信端口相关联的元数据。所述元数据针对多个端口中的每个端口标识特定端口是否在当前配置中被使用以及与该特定端口相关联的通信介质。针对网络拓扑中所使用的每个端口,确定往返时间(rtt)延迟。通过以下操作来将共享存储器的部分分配给多个端口中的每个端
口:确定与rtt延迟成比例的针对每个端口的存储器分配,以及针对所确定的存储器分配将共享存储器的起始地址和停止地址指派给每个端口。在机器学习加速器上执行过程,该过程在预定持续时间内将剖析流量发送到网络中。针对每个端口确定所接收的流量分组的数量,并且通过以下操作来将共享存储器的部分重新分配给多个端口中的每个端口:确定与所接收的流量分组计数成比例的每个端口的存储器分配,以及针对所确定的存储器分配的每个端口重新指派起始地址和停止地址。
12.在一些实现方式中,将共享存储器的起始地址和停止地址指派和重新指派给每个端口包括由与asic不同的设备调用api。
13.在一些实现方式中,与每个端口的所确定的rtt延迟成比例的存储器分配根据下式加以确定:
14.在一些实现方式中,与每个端口的所接收的分组计数成比例的存储器分配根据下式加以确定:
15.在一些实现方式中,rtt延迟在执行之前通过传送和接收一个或多个时序消息以确定时延来计算。
16.在一些实现方式中,剖析流量包括全部到全部流量、最近邻居流量、合成流量简档或其任何合适组合。
17.在替代实现方式中,一种用于为机器学习加速器通信网络分配存储器的方法包括确定针对机器学习加速器专用集成电路(asic)的网络的网络拓扑。访问与网络内的每个asic的多个通信端口相关联的元数据。所述元数据针对多个端口中的每个端口标识特定端口是否在当前架构中被使用以及与该特定端口相关联的通信介质。所述元数据针对多个端口中的每个端口标识特定端口是否在当前配置中被使用以及与该特定端口相关联的通信介质。针对网络拓扑中所使用的每个端口,确定往返时间(rtt)延迟。通过以下操作来将共享存储器的部分分配给多个端口中的每个端口:确定与rtt延迟成比例的针对每个端口的存储器分配,以及针对所确定的存储器分配将共享存储器的起始地址和停止地址指派给每个端口。在asic上执行过程,过程使用具有所分配的共享存储器的机器学习加速器通信网络。在执行过程期间,确定在第一时间段内在多个端口中的每个端口处所接收的消息分组的数量。基于在每个端口处所接收的消息分组的数量来确定针对多个端口中的每个端口的共享存储器的期望部分大小。针对第二时间段暂停过程,并且确定共享存储器已清空(be clear of)未决消息分组。当共享存储器已清空时,根据期望部分大小,重新指派针对每个端口的共享存储器的起始地址和停止地址,并且恢复过程的执行。
18.各种实现方式提供以下优点中的一个或多个。例如,在一些实现方式中,通过更有效地分配消息缓冲器队列,机器学习硬件加速器可以更快地执行并且避免加速器的机载通信网络中的瓶颈。
19.在附图和以下描述中阐述本说明书中所描述的主题的一个或多个实现方式的细节。主题的其它潜在特征、方面和优点将从描述、附图和权利要求变得显而易见。
附图说明
20.图1是图示根据本公开的实现方式的示例机器学习加速器的示意图。
21.图2是图示具有针对端口到端口流量分配的缓冲器队列的示例共享存储器的图。
22.图3是根据本公开的实现方式的用于基于预期时延来分配共享存储器的示例过程的流程图。
23.图4是根据本公开的实现方式的用于基于剖析流量运行来分配共享存储器的示例过程的流程图。
24.图5是根据本公开的实现方式的用于基于执行期间的流量来分配共享存储器的示例过程的流程图。
25.图6是图示可以在图1的多芯片系统中被使用的专用逻辑芯片的示例的示意图。
26.图7图示可以在asic中被使用的示例神经网络(nn)计算瓦片700。
具体实施方式
27.总体上,本公开涉及在高速通信网络(例如包括多个专用集成电路(asic)的机器学习加速器的通信网络)中的不同通信通道或端口之间分配共享存储器。深度学习训练需要分布式的并行处理。该分布可以将大量训练数据划分成不同的副本(复制品)(例如,数据并行性),或者将非常大的模型划分成更小的模块(例如,模型并行性)。将划分的训练数据和模型参数放到不同的处理单元上以同时计算。
28.分布式训练以同步、迭代和增量循环的形式发生。根据数据并行性,每个处理单元在每个步骤处摄取小批量数据,计算局部梯度,然后以全约简方式在整个计算单元网络中交换所有局部梯度以计算最终的全局一致梯度,在步骤结束时利用该梯度来更新模型权重。
29.根据模型并行性,每个处理单元从其局部训练数据或从在其自身之前的隐藏层上操作的另一处理单元的输出取得模型激活输入。然后,处理单元计算激活输出,该激活输出可以是最终模型输出,或者用作另一处理单元的激活输入。在包括最终层的处理单元上计算梯度,并且将其发送回先前层以更新分割的子模型。该过程可以管线化以对连续的小批量进行操作。根据这种方法,在网络周围发送中间激活输出,以及在模型分割边界处的梯度。
30.实际上,数据和模型并行性可以被组合以实现最高性能。例如,针对具有数百亿权重参数的模型,需要大量计算资源和通信将该模型收敛到所需的准确度水平。
31.为了加速训练过程,诸如定制的加速器芯片、张量处理单元(tpu)之类的asic被设计为用作处理单元以便加速深度学习计算。在一些实现方式中,使用芯片类型(例如,fpga、gpgpu或cpu)。同时,还建立了协同设计的加速器间高速通信网络,以加速处理单元间的通信。总之,训练系统可以提供exaflop级别计算性能,相当于现有技术的超级计算机。
32.为了简化,设计tpu加速器的定制的网络以便减少网络处理开销。由于互连网络的基本特征,例如寻址、检错和纠错、路由和流控制的完成,所以在加速器芯片硬件上执行大量网络处理以加速处理。
33.本公开集中于改进定制的、分组交换的tpu加速器侧通信网络的性能。具体地,提出了通过调整分布式训练超级计算机网络中的片上路由器中的分组缓冲器队列来改进流
控制行为的一组解决方案。
34.本文公开的解决方案适用于上面讨论的同步数据并行和模型并行训练模式,并且通常也可以适用于加速器网络中的异步分布式训练。
35.图1是图示根据本公开的实现方式的示例机器学习加速器100的示意图。在该示例中图示了通过片上网络栈处理硬件模块互连的tpu网络。在该示例中,每个tpu 106具有六个网络端口,它们通过缓冲器队列彼此链接以形成片内交叉杆。在一些实现方式中,每个tpu 106可以具有多于或少于六个端口(例如,十个、三个或其他数量)。在一些实现方式中,端口之间的链路可以进一步被划分成多个虚拟通信通道。另外,在tpu网络内执行作业之前,可以在软件级别确定连接哪些端口。例如,图1图示二维配置的多个tpu 106,然而,基于tpu端口之间的连接,可以具有三维(例如球形)配置或其它几何形状。
36.tpu 106的加速器侧网络栈在每个tpu 106上的片上硬件处理模块或路由器102中实施。分布式训练期间的通信被格式化为多个网络分组。在操作中,在到达最终目的地之前,在一对源和目的地tpu芯片之间的分组在一个或多个tpu芯片上被跳跃作为中间步骤。在每个tpu芯片跳,片上网络栈与芯片的各种网络端口接口连接,并且如通过用户指定的路由算法所指令将从一个端口接收到的分组转发到另一个端口。在缓冲器队列中进行芯片内的端口到端口的发送。芯片内的交叉连接的缓冲器队列形成用于快速芯片级别网络处理的交叉杆。
37.可以在超级计算机网络或机器学习加速器100中的每对直接连接的tpu 106之间强制实施流控制,例如,以便防止较快发送方tpu 106加速器压倒较慢接收方tpu 106加速器。当tpu网络开始跨不同加速器转发激活输出和权重梯度流量时,每个芯片的片上网络栈中的缓冲器队列不断地将分组从输入端口输入到输出端口,并且缓冲器空间的利用根据tpu芯片106处的流量进出速率而动态地改变。当与端口对应的缓冲器队列被充分利用时,由于没有剩余的缓冲器空间,在该端口不能接收到分组,并且上游tpu加速器应该停止发送消息。通过机会性地发送流控制消息来调节发送方,该流控制消息告诉发送方在接收器端口处可用的缓冲器队列空间的量,在下文中表示为“信用”。发送方不应发射大于其接收的可用信用的任何消息。在一些实现方式中,任何两个连接的tpu加速器106之间的链路是双向的,并且信用消息也是双向发送的。
38.tpu加速器侧通信网络可以是异构网络环境。换言之,端口之间的通信时间可以从端口到端口以及从tpu 106到tpu 106而变化。另外,在端口上分布的流量的数量可能不是统一的,并且因此智能和动态的消息排队可以显著地增强tpu通信网络中的通信。
39.这种不均匀性可能由几种不同的因素引起。例如,对于缩放到数千个tpu加速器106的大规模深度学习训练超级计算机,可以使用各种链接介质来对整个网络进行布线。链路中被使用的示例介质包括但不限于被用于焊接在同一托盘上的tpu加速器106以交换数据的pcb迹线、用于低成本短距离通信的铜缆、以及用于长距离通信的光缆。不同的介质材料在吞吐量和容量方面呈现异构链路性能,这影响路由器中的队列利用。
40.另外,大规模超级计算机网络不可避免地涉及具有不同长度的链路。数千个tpu加速器106至少跨越多个机架,从而导致具有较短距离和较低时延的机架内电缆,以及具有较长距离、较长时延和不同链路之间的较大变化的机架间电缆。时延影响缓冲器队列的利用。这些电缆链路在使用一段时间后具有各种质量等级,由误码率(ber)来测量。变化的ber使
得分组传输重试行为在所有链路之中不同,从而导致异构链路压力和队列饱和率。
41.tpu的网络端口通常不是统一使用的,这取决于分布式训练作业的拓扑。例如,如果用户训练作业请求超级计算机中可用的所有tpu资源中的2d网格拓扑中的tpu资源,则网格边缘上的tpu不使用所有端口—网格中不面向内部的端口被连接到相邻加速器,但是与其他活动发送端口相比,不接收流量。
42.大规模超级计算机网络可以通过绕过故障芯片、故障主机或故障tpu间链路介质进行路由,固有地提供容错。容错路由可以使链路流量压力不平衡,即使无故障拓扑最初是同构拓扑。其端口全部被活动地使用并且以相同的类型、距离和质量连接到介质的tpu 106可能经历高度异构的流量,因为一些端口在绕过故障站点的更关键的路由上。此外,与故障站点相邻的加速器加剧了端口的不平衡使用,其中直接连接到故障芯片的端口或故障链路不接收流量。
43.分布式训练方法本身引入了异构性。尽管在数据并行模型中,所有tpu 106彼此交换相同量的局部梯度,但是更先进的技术,如模型分割和模型并行性,使得通过网络交换的梯度和激活输出在分割边界上固有地是异构的。通信时延,而不是吞吐量,在模型并行性中也变得更重要,因为对所分割的模型的推断通常取决于来自另一分区的输出。另外,强化学习训练还使得tpu网络流量是异构的,其中一组tpu工作器106作为执行推断的代理,而另一组tpu工作器106执行经典迭代训练循环。这些组内部和之间的流量固有地不同。因此,希望动态队列分配以解决这种异构性。
44.除了多个通信端口、通道和片上硬件处理模块(路由器102)之外,每个tpu 106还包括共享的可编程缓冲器队列存储结构104。每个端口的缓冲器队列可以被软件控制至不同深度,并且被存储在共享随机存取存储器(ram)(例如静态ram(sram)或动态ram(dram))中。在一些实现方式中,tpu 106的每个端口在共享ram 104中被指派开始地址和结束地址以指定共享存储器空间内的特定端口的队列区域。
45.与tpu加速器106的各种网络端口相关联的缓冲器队列的大小在调整总训练通信吞吐量时是关键的。针对经历大量流量的给定链路,针对接收器tpu 106处的端口分配太少的缓冲器队列空间将导致发送方tpu 106频繁地停止其分组发出,减慢流量,并且可能成为同步训练通信的瓶颈。每个队列可以进一步被分成若干虚拟通道,用于每个通道的队列分配。所有队列对应于两个加速器之间的单向链路,尽管互连链路是双向的。
46.图2图示了具有针对端口到端口流量所分配的缓冲器队列的示例共享存储器200。缓冲器队列中的流量可以是出站到端口流量(例如从tpu产生并且出站到不同tpu的流量)、端口到入站流量(例如在特定tpu外部产生并且将由特定tpu摄取的流量)或端口到端口流量(例如通过tpu网络中的tpu的流量)。此外,每个端口可以被细分为多个虚拟通道,每个虚拟通道提供唯一通信路径。虽然图2仅描绘了在共享存储器中所分配的端口到端口队列,但是所有三种类型的流量或其任何合适的组合都可以存在并且在本公开的范围内。在所示的示例中,每个队列的fifo(先进先出)指针使用其起始和结束地址作为从队列推入和弹出数据的参考。端口到入站队列和出站到端口队列遵循相同寻址方案,其中较少数量的队列共享ram容量。相同的机制适用于具有比所图示的端口更多或更少端口的加速器。
47.这些起始和停止地址(例如,如所图示的地址0和地址1)可以经由软件控制或指派。通过tpu加速器的设备驱动器暴露一组应用编程接口(api)以写入到指定每个缓冲器队
列的大小的pcie配置空间寄存器。api将队列大小转换成每个队列的起始和结束地址以用于硬件操作。所公开的解决方案可以调用这些api来动态地配置和分配tpu通信网络中的所有端口的队列大小。
48.图3是根据本公开的实现方式的用于基于预期时延来分配共享存储器的示例过程的流程图。缓冲器队列分配过程检查参与训练过程的(子)网络中活动使用的端口,并且通过每个端口的上行往返时延的权重来分配队列大小(信用)。该方案考虑了链路介质、非同构网络中的非活动端口以及直接连接到故障链路或故障tpu加速器芯片的非活动端口的异构性。该方案分成两步:离线链路校准和在线信用分配。
49.在离线链路校准期间,确定tpu通信网络中被使用的不同链路介质的平均往返时间(rtt)(302)。这可以基于历史值、ping操作或其它方法来确定,并且基于给定链路的介质来提供用于该链路的一般预期时延。例如,pct迹线可能具有比光缆更低的预期时延。
50.在在线信用分配阶段期间,可以执行拓扑发现以确定针对要执行的特定作业所需或请求的tpu通信网络的网络拓扑(304)。拓扑发现可以标识哪些tpu将参与即将到来的作业,以及哪些端口将在每个tpu中可用。
51.在确定网络拓扑之后,可以访问元数据,其提供关于在tpu通信网络中将用于作业的通信端口的信息(306)。例如,每个tpu可以在片上存储器中保存标识每个端口的端口id的元数据、端口是否在当前拓扑中被使用、与每个端口相关联的介质(例如,铜、光、pcb等)以及与端口相关联的电缆长度等。
52.所访问的元数据与在离线校准期间确定的预期时延相结合可以用于确定每个端口的预期或期望的rtt延迟,该预期或期望的rtt延迟然后可以用于根据期望的rtt延迟或时延针对每个端口在共享存储器中分配队列缓冲器(308)。通过tpu本身在每个tpu中针对每个端口计算队列大小。tpu最初将零队列大小指派给任何未使用的端口,然后针对每个端口指派剩余的队列大小。在一些实现方式中,队列大小计算过程针对tpu通信网络中的未决作业的所有tpu独立地并且同时发生。它索引到离线校准的链路时延表中,并且与输入端口的往返时间成比例地计算每个端口的队列大小。在一些实现方式中,队列大小通过以下等式来计算,其中p是正在计算的端口,而n是芯片处活动使用的端口的总数量:
[0053][0054]
一旦确定了每个端口和通道的队列大小,就可以根据大小分配针对每个端口指派共享存储器的起始地址和结束地址(310)。在一些实现方式中,这使用通过tpu架构所提供的一个或多个api来完成。例如,api可以写入到指定每个缓冲器队列的大小的pcie配置空间寄存器。api将队列大小转换成每个队列的起始和结束地址以用于硬件操作。所公开的解决方案可以调用这些api来动态地配置和分配tpu通信网络中的所有端口的队列大小。
[0055]
在完成向共享存储器指派地址时,可以启用tpu通信网络,并且可以开始推断过程或训练运行(312)。推断过程可以是旨在训练神经网络或对其加权以用于未来机器学习输出的长运行过程。
[0056]
图4是根据本公开的实现方式的用于基于剖析流量运行来分配共享存储器的示例过程的流程图。通过执行剖析流量运行,可以确定作业执行期间的流量需求的更真实的表示。在一些实现方式中,用于基于剖析流量运行来分配共享存储器的过程开始于完成如参
考图3所描述的过程(例如,302-310),并且流量队列被给予初始分配。
[0057]
一旦初始缓冲器队列被指派,则可以选择一个或多个消息流量简档用于在网络上的剖析运行(402)。示例简档可以包括但不限于全部到全部、最近邻居流量、或由机器学习模型(例如,模型分割的resnet-50或来自变换器的双向编码器表示(bert)模型)生成的另一合成模式。在一些实现方式中,组合所有先前流量简档或其组合以用于剖析运行。在开始剖析运行之前,软件清空每个tpu中的硬件性能计数寄存器,有效地将其复位为零。硬件tpu性能计数寄存器记录在tpu的每个端口的每个通道处成功接收到的分组的数量。剖析流量被注入到tpu通信网络中,并且在tpu的每个端口处成功接收到的分组的数量由硬件寄存器加以计数(404)。单独的软件系统(例如,经由api)读取计数寄存器,并且在剖析运行期间确定每个端口(和通道)的接收分组的总值。在一些实现方式中,剖析运行显著地短于要执行的实际训练运行。例如,剖析运行可以是分钟或小时的量级,而训练作业可以花费数天或数周。
[0058]
一旦完成了剖析运行,在每个端口的每个通道处接收到的分组的数量可以用于确定该端口的队列大小(406)。在一些实现方式中,使用以下等式来确定队列大小,其中p是端口,n是asic上的端口的总数量,packet_num是在剖析运行期间接收到的分组的数量。应当注意,以下等式为未使用的端口产生零值,因此将为未使用的端口分配零队列大小。
[0059][0060]
一旦确定了每个端口和通道的队列大小,就可以根据大小分配针对每个端口指派共享存储器的起始地址和结束地址(310)。在一些实现方式中,这使用通过tpu架构所提供的一个或多个api来完成。例如,api可以写入指定每个缓冲器队列的大小的pcie配置空间寄存器。api将队列大小转换成每个队列的起始和结束地址以用于硬件操作。所公开的解决方案可以调用这些api来动态地配置和分配tpu通信网络中的所有端口的队列大小。
[0061]
在完成向共享存储器指派地址时,可以启用tpu通信网络,并且可以开始推断过程或训练运行(312)。推断过程可以是旨在训练神经网络或对其加权以用于未来机器学习输出的长运行过程。
[0062]
简档引导的队列调整可以反映由差的链路质量所引起的分组重传、由路由算法或故障芯片/链路所引起的不平衡的链路流量。因此,它可以是针对经历更多流量并且需要更多缓冲器空间以用于将消息从一个端口转发到另一个端口的端口/链路分配更多信用的更优方案。
[0063]
图5是根据本公开的实现方式的用于基于执行期间的流量来分配共享存储器的示例过程的流程图。图5中描述的过程可以类似于图4和图3的过程(例如302到312)开始。在一些实现方式中,一些或所有过程顺序地发生。例如,系统可以如关于图3所描述的基于预测时延来初始地分配存储器,然后执行剖析运行并且如关于图4所描述的基于剖析运行来重新分配存储器,并且最后,在训练运行的执行期间,根据下面参考图5所描述的过程来进一步重新分配存储器。本公开可以预期这些过程的任何适当的组合。
[0064]
一旦(经由图3或图4中描述的过程,或两者)实现了初始队列分配,训练作业可以开始执行。在执行期间,控制器可以监视如上所述由硬件tpu性能计数寄存器所记录的每个端口的分组计数。最初,可以在运行开始时清空每端口的分组统计和硬件计数器(502)。训
练作业可以执行预定时间量,然后可以在作业执行期间基于每个端口的分组计数来调整队列。在一些实现方式中,在执行期间周期性地重新分配消息队列,或者重新分配设定的次数(例如,针对执行的前五个小时,每小时一次)。在一些实现方式中,在训练作业的开始期间更频繁地重新分配消息队列,随着执行的进行频率变低(例如,第一小时每10分钟一次,然后接下来的五小时每小时一次,然后以后每天一次)。在一些实现方式中,周期由用户在逐个情况的基础上加以配置。
[0065]
当预定时间已经期满并且队列将被重新分配时,从硬件tpu性能计数寄存器读取每个端口的分组统计(504)。计算期望的队列大小(506)。在一些实现方式中,使用如参考图4所述的等式来计算期望的队列大小。
[0066]
当确定队列大小时,可以暂停训练作业执行,允许tpu完全摄取和处理任何未决的消息流量并且清空它们的队列(508)。在一些实现方式中,控制器在继续之前验证队列是清空的(例如,共享ram没有针对每个tpu的未决消息)(510)。在一些实例中,暂停持续预定时间量,并且如果共享ram不是清空的(512),则训练作业执行恢复(516)。在这些实例中,控制器可以在稍后时间重新尝试重新分配。如果确定共享ram是清空的,则共享ram中的队列各自被指派新的开始和停止地址(例如,经由如上所述的api)(514)。控制器然后可以清空存储在硬件tpu性能计数寄存器中的每端口分组统计,并且训练作业然后恢复执行(502)。在训练作业执行期间,该过程可以根据需要重复。
[0067]
图6是图示可以用于图1的机器学习加速器中的专用逻辑芯片的示例的图。图6示出在机器学习硬件加速器中被使用的asic作为用于加速与深度神经网络(dnn)相关的张量计算的示例计算系统600的框图。系统600可以是例如如参照图1所述的asic 102。系统600通常包括控制器602、主机接口608、输入/输出(i/o)链路610、包括第一瓦片集612和第二瓦片集614的多个瓦片、分类器部分616和在总线图618中所标识的数据总线(其出于清晰而示出,但是未被包括在系统600中)。控制器602通常包括数据存储器604、指令存储器606和至少一个处理器,其被配置成执行被编码在计算机可读存储介质中的一个或多个指令。指令存储器606可以存储由控制器602的一个或多个处理器可执行的一个或多个机器可读指令。数据存储器604可以是用于存储并且随后地访问与在系统600内发生的计算有关的各种数据的任何各种数据存储介质。
[0068]
控制器602被配置成执行与系统600内的张量计算有关的一个或多个指令,包括被存储在指令存储器606中的指令。在一些实现方式中,数据存储器604和指令存储器606是(一个或多个)易失性存储器单元。在一些其它实现方式中,数据存储器604和指令存储器606是(一个或多个)非易失性存储器单元。数据存储器604和指令存储器606还可以以计算机可读介质的另一形式,诸如软盘设备、硬盘设备、光盘设备或磁带设备、闪速存储器或其他类似固态存储器设备或设备阵列,包括存储区域网络或其他配置中的设备。在各种实现方式中,控制器602还可以被参考或被称为核心管理器602。
[0069]
如所描绘的,主机接口608被耦合到i/o链路610、控制器602和分类器部分616。主机接口608从i/o链路610接收指令和数据参数并且将指令和参数提供到控制器602。一般而言,指令能够通过指令总线624(在下文中描述)被提供到系统600中的一个或多个设备并且参数能够通过环形总线628(在下文中描述)被提供到系统600中的一个或多个设备。在一些实现方式中,指令在初始时间处从主机接口618由控制器602接收并且在稍后时间处被存储
在指令存储器606中用于由控制器602执行。
[0070]
分类器部分616同样地被耦合到控制器602和第二瓦片集614的瓦片7。在一些实现方式中,分类器部分616被实现为系统600内的分离的瓦片。在替选实现方式中,分类器部分616被布置或者定位在控制器602内作为控制器602的子电路或者子设备。分类器部分616通常被配置成在累积预激活值上执行一个或多个功能,其被接收作为完全连接层的输出。完全连接层可以跨瓦片集612和614中的瓦片被划分。因此,每个瓦片被配置成产生可以被存储在瓦片的(一个或多个)存储器单元中的预激活值(即,线性输出)的子集。分类结果总线620提供从分类器部分616到控制器602的数据路径。包括后函数值(即,结果)的数据经由分类结果总线620从分类器部分616被提供到控制器602。
[0071]
总线图618示出了提供第一瓦片集612和第二瓦片集614的瓦片之间的一个或多个相互连接的数据通信路径的数据总线。总线图618提供用于标识分类结果总线620、csr/主机总线622、指令总线624、网状总线626和环形总线628的图例,如在图6中所描绘的。一般而言,瓦片是系统600的加速器架构内的核心部件并且是在系统中发生的张量计算的焦点。每个瓦片是单独的计算单元,其与系统中的其它瓦片合作以跨多层神经网络的一个或多个层加速计算。虽然瓦片集612、614中的瓦片能够共享与给定指令相关联的张量计算的执行,但是单独的计算单元是自含式计算部件,其被配置成相对于瓦片集612、614内的其它对应的瓦片独立地执行张量计算的子集。
[0072]
csr总线622是单主多从总线,其使得控制器602能够传送设定程序配置和读取与一个或多个瓦片相关联的状态寄存器的一个或多个指令。csr总线622可以在单个菊链配置中与一个主机总线段和多个从总线段连接。如在图6中所示,csr总线622通过将瓦片集612、614中的瓦片和环中的控制器602连接到主机接口610的总线数据路径,提供通信耦合。在一些实现方式中,主机接口610是csr总线环的单主机并且整个csr总线地址空间是被映射到主机接口610中的存储器空间的存储器。
[0073]
csr总线622可以由主机接口610用于执行一个或多个操作,包括例如将控制器602中的存储器缓冲器指针编程为使得控制器602能够开始从指令存储器606获取指令、更新/编程在一个或多个计算期间保持静态的各种瓦片设置(例如,用于多项式近似计算的系数表)和/或将固件加载/重新加载到分类部分616。在一个示例中,固件重新加载可以包括待应用到线性输出(即,预激活值)的新函数。因此,具有对csr总线622的访问的每个从机将具有被绑定到从机并且标识其的不同的节点标识符(节点id)。节点id将是指令地址的一部分并且将由csr从机(即,控制器602、瓦片612、614和分类器616)使用、检查或以其它方式检验以确定csr分组是否被寻址到从机。
[0074]
在一些实现方式中,一个或多个指令能够通过控制器602由主机接口602传送。指令可以例如是32位宽,并且前7位包括指示将接收和执行指令的指令地址/目的地的头部信息。头部的前7位可以包含表示特定节点id的数据参数。csr总线环上的从机(例如,每个瓦片)可以因此检查指令的头部以确定通过主机(主机接口610)的请求是否被寻址到检查头部的瓦片。如果头部的节点id未指示目的地是检查瓦片,则检查瓦片将输入csr指令分组复制到连接到下一瓦片的csr总线输入用于由下一瓦片检查。
[0075]
指令总线624起源于控制器602,并且与csr总线622类似,还通过将环中的瓦片集612、614的瓦片连接回到控制器602的总线数据路径提供通信耦合。在一个实现方式中,控
制器602经由指令总线624广播一个或多个指令。由控制器602广播的指令可以与经由csr总线622提供的指令不同。然而,瓦片接收和/或消费或者执行经由总线624接收到的指令的方式可以与用于执行经由csr总线622接收到的指令的过程类似。
[0076]
在一个示例中,指令的头部(即,位图)向接收瓦片指示接收瓦片需要基于与指令相关联的位图消费特定指令。位图可以具有根据位定义的特定宽度。指令通常地基于指令的参数从一个瓦片被转发到下一瓦片。在一个实现方式中,指令总线624的宽度可以被配置成小于指令的大小/宽度。因此,在这样的配置中,指令的传输将在若干周期上并且指令总线624的总线停止将使解码器将在瓦片处接收到的指令放置在与该瓦片相关联的适当的目标指令缓冲器中。
[0077]
如下面进一步描述的,瓦片集612、614中的瓦片通常被配置成支持两个大类的指令。两个大类还可以被称为指令类型。指令类型包括张量操作(tensorop)指令和直接存储器访问(dmaop)指令。在一些实现方式中,dmaop指令具有允许并发的一个或多个特殊化。一个或多个特殊化可以被称为dmaop指令子类型或者操作码。在一些情况下,每个唯一和/或有效dmaop指令类型/子类型元组将具有特定瓦片内的分离的指令缓冲器。
[0078]
在瓦片612、614的特定瓦片处,与指令总线624相关联的总线停止将检验头部位图以确定指令类型/子类型。指令可以由瓦片接收并且在由瓦片执行指令之前随后地被写入到瓦片的指令缓冲器。指令被写入到的瓦片的指令缓冲器可以由指令的类型/子类型指示器/字段确定。指令缓冲器可以包括先进先出(fifo)控制方案,其给予一个或多个相关指令的消费优先级。因此,在该fifo控制方案下,相同类型/子类型的指令将总是以指令到达指令总线的顺序执行。
[0079]
瓦片内的不同的指令缓冲器是tensorop指令缓冲器和dmaop指令缓冲器。如上文所指示的,指令类型包括tensorop指令和dmaop指令。关于dmaop指令,指令子类型(指示“写入”缓冲器位置)包括以下各项:1)网状入站指令缓冲器;2)网状出站指令缓冲器;3)窄宽dma指令缓冲器;4)宽窄dma指令缓冲器;和5)环形总线dma指令缓冲器。下面将参考图7更详细地描述这些缓冲器位置。宽和窄指定贯穿说明书被使用并且通常指代一个或多个存储器单元的宽度(位/字节)方面的近似大小。如本文所使用的,“窄”可以指代每个具有小于16位的大小或者宽度的一个或多个存储器单元并且“宽”可以指代每个具有小于64位的大小或者宽度的一个或多个存储器单元。
[0080]
网状总线626提供与csr总线622、指令总线624和环形总线628(在下文中描述)不同的数据通信路径。如在图6中所描绘的,网状总线626提供在x和y维度两者上将每个瓦片耦合或者连接到其对应的相邻瓦片的通信路径。在各种实现方式中,网状总线626可以被用于在相邻瓦片中的一个或多个窄存储器单元之间运输输入激活量。如所示,网状总线626不允许将输入激活数据直接转发到非相邻瓦片。
[0081]
在各种实现方式中,网状总线626和经由网状总线626连接的各种瓦片可以具有以下配置。网状的四个角瓦片具有两个出站端口和两个入站端口。网状的四个边缘瓦片具有三个入站端口和三个出站端口。所有非边缘非角瓦片具有四个入站端口和四个出站端口。一般而言,给定示例n x n瓦片布局,边缘瓦片是具有仅三个相邻瓦片的瓦片,同时角瓦片是具有两个相邻瓦片的瓦片。关于经由网状总线626的数据流方法论,一般而言,经由用于特定瓦片的网状总线626到达的每个输入激活必须被提交到瓦片的一个或多个窄存储器单
元。而且,对于具有小于四个入站端口的瓦片配置而言,dmaop指令可以将零值写入到瓦片的窄存储器中的位置而不是等待缺席输入端口上的数据。同样地,对于具有小于四个出站端口的瓦片配置而言,dmaop指令将不执行与针对任何缺席端口的传送有关的窄存储器读取和端口写入。
[0082]
在一些实现方式中,特定输入激活将被写入到或者从其读取的(一个或多个)窄存储器单元的位置或者地址将基于经由网状总线626所提供的入站/出站dmaop由张量遍历单元(在下文中“ttu”)生成。入站dmaop和出站dmaop可以并发地执行并且任何所要求的同步将通过由控制器602施行的同步标志控制方案加以管理。下面将参考图7更详细地描述ttu。
[0083]
环形总线628起源于控制器602,并且与csr总线622和指令总线624类似,也通过将环中的瓦片612、614连接回到控制器602的总线数据路径提供通信耦合。在各种实现方式中,环形总线628通常连接或者耦合所有瓦片612、614中的所有宽存储器单元(下面参考图7更详细地描述的)。因此,环形总线628的有效载荷宽度对应于被布置在瓦片集612、614的每个瓦片内的宽存储器单元的宽度。如上文所讨论的,环形总线628还包括指示需要消费包括经由环形总线628传递的指令或者参数的有效载荷数据的瓦片的位图头部。
[0084]
关于经由环形总线628在特定瓦片处接收到的数据(即,有效载荷),响应于接收到信息,每个瓦片将在将数据转发到另一瓦片上之前调零(即,清空)对于接收瓦片唯一的位图头部中所指示的位置数据。因此,当头部位图不具有指示将接收有效载荷的特定瓦片的剩余位集合数据时,有效载荷至另一瓦片的转发将停止。有效载荷数据通常指代在基于深度嵌套循环的执行所执行的张量计算期间由一个或多个瓦片使用的激活和权重。
[0085]
在一些实现方式中,控制器602可以被描述为环形总线628的一部分。在一个示例中,对于在特定瓦片内执行的dmaop指令而言,控制器602可以被用于从环形总线停止弹出数据/有效载荷并且将有效载荷转发到环中的下一瓦片中的环形总线停止。如果这样的动作由位图头部中的指令要求,则控制器602还可以使得有效载荷数据被提交到瓦片的一个或多个宽存储器单元。数据需要被写入到的一个或多个宽存储器单元的地址可以由特定瓦片内的dmaop指令生成。
[0086]
在各种实现方式中,瓦片集612、614的每个瓦片能够是或者有效载荷数据的生产者或者有效载荷数据的消费者。当瓦片是有效载荷数据的生产者时,瓦片从其宽存储器单元中的一个或多个读取数据并且通过环形总线628多播数据用于由一个或多个其它瓦片消费。当瓦片是有效载荷数据的消费者时,瓦片将数据接收并且写入到瓦片内的一个或多个宽存储器单元并且转发有效载荷数据用于由一个或多个其它瓦片消费。关于经由环形总线628的有效载荷数据的移动,通常地在任何给定时间处在环形总线628上仅存在数据的一个生产者/主机。所有瓦片中的dmaop指令执行顺序(例如,fifo控制方案)将确保在给定时间处在环形总线628上仅存在数据的一个生产者/主机。
[0087]
在一些实现方式中,控制器602使用同步标志控制架构确保在给定时间处在环形总线628上仅存在有效载荷数据的一个生产者/主机。在一个示例中,由瓦片对环形输出的每个写入将触发对应的同步标志计数的增量。控制器602可以检验有效载荷数据以确定包括有效载荷的数据块或段的数量。控制器602然后监视通过瓦片的执行以确保在另一瓦片在主模式中执行之前期望数量的数据段由瓦片转发和/或消费。
[0088]
当存在经由在环形总线上没有重叠区域的环形总线628连接的局部多播组时,发
生例外以确保在给定时间处在环形总线628上仅存在数据的一个生产者/主机。例如,瓦片0(主机)可以多播(即,产生数据)到瓦片0-瓦片3分组中的瓦片,而瓦片4(主机)可以对瓦片4-瓦片7分组中的瓦片这样做。该双主机多播方法的重要要求在于,不同的多播组必须不被允许看到彼此的数据分组,因为分组重叠可能发生并且导致一个或多个数据计算误差。
[0089]
如在图6中所示,控制器602提供将瓦片集612、614中的瓦片耦合或者连接到i/o 610的通信数据路径,并且包括若干核心功能。控制器602的核心功能通常包括:将一个或多个i/o输入激活馈送到瓦片集612、614中的瓦片,将从i/o 610接收到的一个或多个输入激活和参数馈送到瓦片,将从i/o 610接收到的一个或多个指令馈送到瓦片,将i/o输出激活发送到主机接口608,并且用作用于csr总线622以及环形总线628的环形停止。如下面更详细地描述的,第一瓦片集612和第二瓦片集614每个包括被用于执行基于包括内循环和外循环的深度循环嵌套执行的一个或多个张量计算的多个瓦片。
[0090]
系统600通常操作如下。主机接口608将一个或多个指令提供到控制器602,其定义针对给定计算发生的直接存储器访问操作(dmaop)。与被馈送到控制器602的指令相关联的描述符将包括由控制器要求以促进与多维数据阵列(张量)相关联的大规模点积计算的信息。一般而言,控制器602从主机接口608接收输入激活、瓦片指令和模型参数(即,权重)用于执行用于神经网络的给定层的张量计算。控制器602可以然后使得指令以由(一个或多个)指令定义的数据流方式被多波到瓦片612、614。如上文所讨论的,消费指令的瓦片可以然后基于指令头部中的位图数据将新/后续指令广播到另一瓦片。
[0091]
关于数据流,输入激活和参数经由环形总线628被传送到瓦片集612、614的瓦片。瓦片612、614中的每一个将存储计算被分配到该特定瓦片的输出激活的子集需要的输入激活的子集。瓦片的dmaop指令将使得输入激活从宽存储器被移动到窄存储器。当所要求的输入激活、参数/权重和计算指令(ttu操作、存储器地址等)在瓦片中可用时,瓦片内的计算开始。当由指令集和预激活函数定义的瓦片完整所有点积操作内的mac运算器(在下文中描述)被应用到乘法运算的结果(即,输出激活)时在瓦片内发生的计算结束。
[0092]
一个或多个张量计算的结果包括将计算层的输出激活写入到执行计算的瓦片的(一个或多个)窄存储器单元。对于某些张量计算而言,将存在经由网状总线626将输出边缘激活传送到相邻瓦片。当计算跨多个层时,要求将输出边缘激活传送到相邻瓦片以计算针对后续层的输出激活。当对所有层的计算完成时,dmaop将通过环形总线628将最后激活移动到分类器瓦片616。控制器602将然后从分类器瓦片616读取最后激活并且执行dmaop以将最后激活移动到主机接口608。在一些实现方式中,分类器部分616执行nn的输出层(即,最后一层)的计算。在其它实现方式中,nn的输出层是分类器层、回归层或者通常与神经网络相关联的另一层类型中的一个。
[0093]
图7图示了可以在如参照图1所述的asic(例如tpu 106)中被使用的示例性神经网络(nn)计算块700。通常地,示例瓦片700可以对应于参考图6上文所讨论的第一瓦片集612和第二瓦片集614内的瓦片中的任一个。在各种实现方式中,计算瓦片700还可以被参考或被称为计算单元700。每个计算瓦片700是自含式计算单元,其被配置成相对于瓦片集612、614内的其它对应的瓦片独立地执行指令。如上文简要讨论的,每个计算瓦片700执行两种类型的指令,tensorop指令和dmaop指令。一般而言,每个指令类型将包括与深度循环嵌套相关联的计算操作并且因此每个指令类型将通常在多个时刻上执行以确保所有循环迭代
的完成。
[0094]
如下面更详细地讨论的,不同的指令类型由通过在计算瓦片700内管理的同步标志控制在数据上同步的计算瓦片700内的独立控制单元执行。同步标志控制管理计算瓦片700内的不同的指令类型的执行之间的并发性。与每个指令类型相关联的每个计算操作将以发布的严格的顺序(即,先进先出)加以执行。关于两个指令类型(tensorop和dmaop),在这些不同的指令类型之间不存在排序保证并且每个类型由计算瓦片700处理为控制的分离的线程。
[0095]
关于数据流构建,计算瓦片700通常包括数据路径702和数据路径705,其每个提供用于进入和离开计算瓦片700的数据流的通信路径。如上文所描述的,系统600包括以环形配置布局的三个不同的数据总线结构——csr总线622、指令总线624和环形总线628。参考图7,数据路径705对应于指令总线624,而数据路径702通常对应于csr总线622和环形总线628中的一个。如所示,数据路径702包括提供用于数据离开计算瓦片700的输出路径的环形输出703和提供用于数据进入计算瓦片700的输入路径的环形输入704。
[0096]
计算瓦片700还包括:tensorop控制706,其包括tensorop张量遍历单元(ttu)726;和dmaop控制708,其包括dmaop ttu 728。tensorop控制706通常管理写入和读取tensorop ttu寄存器732并且施行遍历操作用于由tensorop ttu 726执行。同样地,dmaop控制708通常管理写入和读取dmaop ttu寄存器734并且施行遍历操作用于由dmaop ttu 728执行。ttu寄存器732包括用于存储一个或多个指令的指令缓冲器,该指令包括在由tensorop控制706执行指令时待由tensorop ttu 726执行的操作。同样地,ttu寄存器734包括用于存储一个或多个指令的指令缓冲器,该指令包括在由dmaop控制708执行指令时待由tensorop ttu 708执行的操作。如下面进一步描述的,ttu由计算瓦片700用于遍历通常驻留在窄存储器710和宽存储器712中的一个或多个张量的阵列元素。
[0097]
在一些实现方式中,用于由计算瓦片700执行的某些指令经由数据路径705(即,指令总线624的一部分)到达瓦片。计算瓦片700将检验头部位图以确定指令类型(tensorop或者dmaop)和指令子类型(读操作或者写操作)。由计算瓦片700接收到的(一个或多个)指令取决于指令类型而随后地被写入到特定指令。一般而言,指令在由计算瓦片700的部件执行指令之前被接收并且被存储(即,被写入到缓冲器)。如在图7中所示,指令缓冲器(即,tensorop ttu寄存器732和dmaop ttu寄存器734)可以每个包括先进先出(fifo)控制方案,其给予一个或多个相关指令的消费(执行)以优先级。
[0098]
如上文简要讨论的,张量是多维几何对象并且示例多维几何对象包括度量和数据阵列。包括深度嵌套循环的算法可以由计算瓦片700执行以通过迭代一个或多个嵌套循环以遍历n维张量执行张量计算。在一个示例计算过程中,循环嵌套的每个循环可以负责遍历n维张量的特定维度。如本文所描述的,tensorop控制706通常施行一个或多个张量操作,其驱动特定张量构建的维度元素被遍历并且访问以完成由深度嵌套循环定义的计算的序列。
[0099]
计算瓦片700还包括窄存储器710和宽存储器712。窄和宽指定通常指代窄存储器710和宽存储器712的存储器单元的宽度(比特/字节)的大小。在一些实现方式中,窄存储器710包括每个具有小于16位的大小或者宽度的存储器单元,并且宽存储器712包括每个具有小于32位的大小或者宽度的存储器单元。通常地,计算瓦片700经由数据路径705接收输入激活,并且dma控制708执行将输入激活写入到窄存储器710中的操作。同样地,计算瓦片700
经由数据路径702接收参数(权重),并且dma控制708执行将参数写入到宽存储器712中的操作。在一些实现方式中,窄存储器710能够包括存储器仲裁器,其通常被使用在共享存储器系统中以针对每个存储器周期决定将允许哪个控制设备(例如,tensorop控制706或者dmaop控制708)访问窄存储器710的共享存储器单元。
[0100]
计算瓦片700还包括输入激活总线716和mac阵列714,包括多个小区,其每个包括mac运算器715以及求和寄存器720。一般而言,mac阵列714跨多个小区使用mac运算器715以及求和寄存器720执行包括与点积计算有关的算术运算的张量计算。输入激活总线716提供在其中输入激活针对通过mac阵列714的每个mac运算器715的相应访问逐个由窄存储器710提供的数据路径。因此,基于输入激活的逐个广播,特定小区的单个mac运算器715将每个接收输入激活。由mac阵列714的mac运算器执行的算术运算通常包括将由窄存储器710所提供的输入激活与从宽存储器712访问的参数相乘以产生单个输出激活值。
[0101]
在算术运算期间,部分和可以被累计并且被存储在对应的例如求和寄存器720中或者被写入到宽存储器712并且由mac阵列714的特定小区重新访问以完成后续乘法运算。张量计算能够被描述为第一部分和第二部分。第一部分当例如通过完成输入激活和参数的乘法以生成输出激活乘法运算产生输出激活时被完成。第二部分包括将非线性函数应用到输出激活,并且第二部分当输出激活在函数的应用之后被写入到窄存储器710时被完成。
[0102]
计算瓦片700还包括:输出激活总线718;非线性单元(nlu)722,包括输出激活流水线724;nlu控制738;和参考图730,其指示计算瓦片700中的部件的核心属性。参考图730出于清晰而示出,但是未被包括在计算瓦片700中。核心属性包括特定部件是否是单元、存储设备、运算器、控制设备或者数据路径。一般而言,在完成张量计算的第一部分时,输出激活经由输出激活总线718从mac阵列714被提供到nlu 722。在到达nlu 722之后,经由激活流水线724接收到的指定激活函数的数据被应用到输出激活并且输出激活然后被写入到窄存储器710。在一些实现方式中,输出激活总线718包括至少一个流水线移位寄存器736并且完成张量计算的第二部分包括使用激活总线718的移位寄存器736使输出激活向窄存储器710移位。
[0103]
关于例如用于单个计算瓦片700的两个二维数据阵列的点积计算,mac阵列714提供鲁棒的单指令多数据(simd)功能性。simd通常意味着所有并行单元(多个mac运算器715)共享相同指令(基于深度循环嵌套),但是每个mac运算器715在不同的数据元素上执行指令。在一个基本示例中,在一个周期中逐元素地添加阵列[1,2,3,4]和[5,6,7,8]以获得阵列[6,8,10,12]将通常地要求四个算术单元在每个元素上执行运算。通过使用simd,四个单元能够共享相同指令(例如,“add”)并且并行执行计算。因此,系统600和计算瓦片700提供超过先前方法的张量计算中的增强的加速和并行性。
[0104]
在一个示例中,并且如下面更详细地描述的,单个指令能够由控制器602提供到多个计算瓦片700(参见图6的瓦片集612、614)用于由多个mac阵列714消费。一般而言,神经网络层能够包括多个神经元并且输出神经元能够被划分,使得与输出神经元的子集相关联的张量计算能够被分配到瓦片集612、614的特定瓦片。瓦片集612、614的每个瓦片能够然后在用于给定层的不同组神经元上执行相关张量计算。计算瓦片700能够因此提供并行性的至少两个形式:1)一个形式包括在瓦片集612、614的多个瓦片中间划分输出激活(对应于输出神经元的子集);和2)另一形式包括瓦片集612、614的瓦片中基于划分的输出神经元的多个
子集的同时计算(利用单个指令)。
[0105]
虽然所公开的发明构思包括在所附权利要求书中定义的那些构思,但是应当理解,本发明构思还可以根据以下实施例来定义。
[0106]
实施例1是一种用于机器学习加速器通信网络中的存储器分配的方法。通常,该方法包括访问与专用集成电路(asic)的多个通信端口相关联的元数据。所述元数据针对每个端口标识特定端口是否在当前配置中被使用以及与该特定端口相关联的通信介质。基于元数据针对每个端口确定预期时延,并且将共享存储器的部分指派给每个端口。共享存储器通过以下来分配:针对未使用的端口指派零存储器,基于预期时延来确定每个端口的存储器分配,以及将共享存储器的起始地址和停止地址指派给每个端口。实现方式可以可选地包括以下特征中的一个或多个。
[0107]
实施例2是实施例1的方法,其中,将共享存储器的起始地址和停止地址指派给每个端口包括由与asic不同的设备调用应用编程接口(api)。
[0108]
实施例3是实施例1或2的方法,其中,在asic上执行使用机器学习加速器通信网络和所分配的共享存储器的过程。在一些实施例中,过程是训练神经网络。
[0109]
实施例4是实施例1至3中任一项所述的方法,其中,asic是张量处理单元(tpu)。
[0110]
实施例5是实施例1至4中任一项所述的方法,其中,在元数据中所标识的通信介质是铜缆介质、光学介质、印刷电路板(pcb)介质或其任何组合。
[0111]
实施例6是实施例1至5中任一项所述的方法,其中,存储器根据以下等式加以分配:
[0112]
实施例7是一种系统,包括:一个或多个计算机和存储指令的一个或多个存储设备,指令在由一个或多个计算机执行时可操作以使一个或多个计算机执行根据权利要求1至6中任一项所述的方法。
[0113]
实施例8是一种利用计算机程序编码的计算机存储介质,该程序包括指令,该指令当由数据处理装置执行时可操作以使数据处理装置执行根据权利要求1至6中任一项所述的方法。
[0114]
实施例9是一种用于机器学习加速器通信网络中的存储器分配的方法,包括确定用于机器学习加速器asic的网络的网络拓扑。访问与网络内的每个asic的多个通信端口相关联的元数据。所述元数据针对多个端口中的每个端口标识特定端口是否在当前配置中被使用以及与该特定端口相关联的通信介质。针对网络拓扑中所使用的每个端口,确定往返时间(rtt)延迟。通过以下将共享存储器的部分分配给多个端口中的每个端口:确定与rtt延迟成比例的针对每个端口的存储器分配,以及针对所确定的存储器分配将共享存储器的起始地址和停止地址指派给每个端口。在机器学习加速器上执行过程,该过程在预定持续时间内将剖析流量发送到网络中。针对每个端口确定所接收的流量分组的数量,并且通过以下将共享存储器的部分重新分配给多个端口中的每个端口:确定与所接收的分组计数成比例的每个端口的存储器分配,以及针对所确定的存储器分配的每个端口重新指派起始地址和停止地址。
[0115]
实施例10是实施例9的方法,其中,将共享存储器的起始地址和停止地址指派和重新指派给每个端口包括由与asic不同的设备调用api。
[0116]
实施例11是实施例9或10的方法,其中,与每个端口的所确定的rtt延迟成比例的存储器分配根据下式加以确定:
[0117][0118]
实施例12是实施例9至11中任一项所述的方法,其中,与所接收的分组计数成比例的每个端口的存储器分配根据下式加以确定:
[0119][0120]
实施例13是实施例9至12中任一项所述的方法,其中,rtt延迟在执行之前通过传送和接收一个或多个时序消息以确定时延来计算。
[0121]
实施例14是实施例9至13中任一项所述的方法,其中,剖析流量包括全部到全部流量、最近邻居流量、合成流量简档或其任何合适组合。
[0122]
实施例15是实施例9至14中任一项所述的方法,其中,将共享存储器的起始地址和停止地址指派给每个端口包括由与asic不同的设备调用应用编程接口api。
[0123]
实施例16是实施例9至15中任一项所述的方法,其中,在asic上使用机器学习加速器通信网络和所分配的共享存储器执行过程。在一些实施例中,过程是训练神经网络。
[0124]
实施例17是实施例9至16中任一项所述的方法,其中,asic是张量处理单元(tpu)。
[0125]
实施例18是一种系统,包括:一个或多个计算机和存储指令的一个或多个存储设备,指令在由一个或多个计算机执行时可操作以使一个或多个计算机执行根据权利要求9至17中任一项所述的方法。
[0126]
实施例19是一种利用计算机程序编码的计算机存储介质,该程序包括指令,该指令当由数据处理装置执行时可操作以使数据处理装置执行根据权利要求9至17中任一项所述的方法。
[0127]
实施例20是一种用于为机器学习加速器通信网络分配存储器的方法,包括确定针对机器学习加速器专用集成电路(asic)的网络的网络拓扑。访问与网络内的每个asic的多个通信端口相关联的元数据。所述元数据针对多个端口中的每个端口标识特定端口是否在当前架构中被使用以及与该特定端口相关联的通信介质。所述元数据针对多个端口中的每个端口标识特定端口是否在当前配置中被使用以及与该特定端口相关联的通信介质。针对网络拓扑中所使用的每个端口,确定往返时间(rtt)延迟。通过以下将共享存储器的部分分配给多个端口中的每个端口:确定与rtt延迟成比例的针对每个端口的存储器分配,以及针对所确定的存储器分配将共享存储器的起始地址和停止地址指派给每个端口。在asic上执行过程,过程使用具有所分配的共享存储器的机器学习加速器通信网络。在执行过程期间,确定在第一时间段内在多个端口中的每个端口处所接收的消息分组的数量。基于在每个端口处所接收的消息分组的数量来确定针对多个端口中的每个端口的共享存储器的期望部分大小。在第二时间段内暂停过程,并且确定共享存储器已清空未决消息分组。当共享存储器已清空时,根据期望部分大小,重新指派针对每个端口的共享存储器的起始地址和停止地址,并且恢复过程的执行。
[0128]
实施例21是实施例20的方法,其中,将共享存储器的起始地址和停止地址指派给每个端口包括由与asic不同的设备调用应用编程接口(api)。
[0129]
实施例22是实施例20或21的方法,其中,在asic上使用机器学习加速器通信网络和所分配的共享存储器执行过程。在一些实施例中,过程是训练神经网络。
[0130]
实施例23是实施例20至22中任一项所述的方法,其中,asic是张量处理单元(tpu)。
[0131]
实施例24是一种系统,包括:一个或多个计算机和存储指令的一个或多个存储设备,指令在由一个或多个计算机执行时可操作以使一个或多个计算机执行根据权利要求20至23中任一项所述的方法。
[0132]
实施例25是一种利用计算机程序编码的计算机存储介质,该程序包括指令,该指令当由数据处理装置执行时可操作以使数据处理装置执行根据权利要求20至23中任一项所述的方法。
[0133]
上述描述在一个或多个特定实现方式的上下文中被提供。可以在不脱离本公开范围的情况下对所公开的实现方式进行各种修改、改变和排列。因此,本公开并不旨在仅限于所描述或图示的实现方式,而是将被赋予与本文公开的原理和特征一致的最宽范围。
[0134]
已经描述了主题的特定实施例。其它实施例在以下权利要求的范围内。例如,虽然总线线路被描述为“可控”,但并非所有总线线路都需要具有相同级别的控制。例如,可以存在不同程度的可控性,其中一些总线线路只能在一些总线线路能够从其源数据或能够发送数据的瓦片的数量方面受到限制的情况下被控制。在另一示例中,一些总线线路可以专用于沿单个方向提供数据,例如如本文所述的北、东、西或南。在一些情况下,可以以不同的顺序执行权利要求书中所述的动作,并且仍然实现期望的结果。作为一个示例,附图中描绘的过程不一定需要所示的特定顺序或序列顺序以实现期望的结果。在某些实现方式中,多任务和并行处理可能是有利的。
[0135]
能够在数字电子电路中、在计算机硬件中实现本说明书中所描述的主题和功能操作的实施例,包括本说明书中所公开的结构和其结构等同物或者其中的一个或多个的组合。本说明书中所描述的主题的实施例能够被实现为一个或多个计算机程序,即被编码在有形非暂态程序载体上用于由数据处理装置执行或者控制数据处理装置的操作的计算机程序指令的一个或多个模块。可替选地或者附加地,程序指令能够被编码在人工生成的传播信号上,例如,机器生成的电气、光学或电磁信号,其被生成以编码用于传输到适合的接收器装置以便通过数据处理装置执行的信息。计算机存储介质能够是机器可读存储设备、机器可读存储衬底、随机或串行访问存储器设备或它们中的一个或多个的组合。
[0136]
术语“数据处理装置”包括用于处理数据的各种装置、设备和机器,例如包括可编程处理器、计算机或多处理器或计算机。该装置可以包括专用逻辑电路,例如fpga(现场可编程门阵列)或asic。除了硬件之外,该装置还可以包括为所讨论的计算机程序创建执行环境的代码,例如,构成处理器固件的代码、协议栈、数据库管理系统、操作系统或它们中的一个或多个的组合。
[0137]
本说明书中描述的过程和逻辑流可以通过一个或多个可编程计算机执行,该一个或多个可编程计算机执行一个或多个计算机程序以通过对输入数据进行操作并且生成输出来执行功能。过程和逻辑流还能够通过专用逻辑电路例如fpga、asic或者gpgpu(通用图形处理单元)来执行,并且装置还能够被实现为专用逻辑电路例如,fpga、asic或者gpgpu(通用图形处理单元)。
[0138]
虽然本说明书包含许多特定实现方式细节,但是这些不应该被解释为对任何发明或可以主张什么的范围的限制,而是可以特定于特定发明的特定实施例的特征的描述。在分离的实现方式的上下文中在该说明书中所描述的某些特征还能够组合地被实现在单个实现方式中。相反地,在单个实现方式中的上下文中所描述的各种特征还能够分离地或者以任何适合的子组合被实现在多个实现方式中。而且,尽管特征可以上文描述为在某些组合中作用并且甚至如此初始地要求保护,但是在一些情况下,可以从组合切除所要求保护的组合的一个或多个特征,并且所要求保护的组合可以涉及子组合或子组合的变型。
[0139]
类似地,虽然操作以特定顺序在附图中描绘,但是这不应该被理解为要求这样的操作以所示的特定顺序或者以序列顺序执行,或者全部所图示的操作被执行以实现期望的结果。在某些情况下,多任务和并行处理可以是有利的。而且,上文所描述的实现方式中的各种系统部件的分离不应该被理解为要求所有实现方式中的这样的分离,并且应该理解的是,所描述的程序部件和系统可以一般地一起集成在单个软件产品或者封装到多个软件产品中。
[0140]
除了以上描述之外,可以向用户提供控制,以允许用户选择是否以及何时本文描述的系统、程序或特征可以启用用户信息的收集。此外,某些数据可以在存储或使用之前以一种或多种方式加以处理,从而移除个人可标识信息。例如,可以处理用户的身份,使得不能确定用户的个人可标识信息,或者不能将用户的皮肤数据和/或诊断标识为与用户相关联。因此,用户可以控制收集关于用户的哪些信息以及如何使用这些信息。
[0141]
因此,已经描述本主题的特定实现方式。其他实现方式在以下权利要求的范围内。在一些情况下,权利要求中所记载的动作能够以不同的顺序执行并且仍然实现期望的结果。此外,附图中所描绘的过程不必要求所示的特定顺序或序列顺序来实现期望的结果。在某些实现方式中,多任务和并行处理可以是有利的。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

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

相关文献