CN114254733A - 使用树形直接存储器存取(dma)总线的神经网络权重分布 - Google Patents
使用树形直接存储器存取(dma)总线的神经网络权重分布 Download PDFInfo
- Publication number
- CN114254733A CN114254733A CN202111115407.5A CN202111115407A CN114254733A CN 114254733 A CN114254733 A CN 114254733A CN 202111115407 A CN202111115407 A CN 202111115407A CN 114254733 A CN114254733 A CN 114254733A
- Authority
- CN
- China
- Prior art keywords
- tensor processor
- weights
- dma
- tree
- tensor
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Neurology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Medical Informatics (AREA)
- Image Analysis (AREA)
Abstract
本申请涉及使用树形直接存储器存取(DMA)总线的神经网络权重分布。在一个实施例中,一种使用树形直接存储器存取(DMA)总线来分布神经网络权重的方法包括由树形DMA控制器接收存储器地址,该存储器地址指示存储器中存储与机器学习模型相关联的权重集的位置。树形DMA控制器还可以接收分布指令,该指令指示被选择来接收用于处理的权重集的张量处理器集群。树形DMA控制器可以从由存储器地址指示的存储器位置中检索该权重集,然后根据分布指令以寻址到张量处理器集群的DMA分组发送该权重集。可以经由树形DMA总线将DMA分组发送到张量处理器集群,并且张量处理器集群可以使用神经网络权重并行处理输入特征的不同分割部分。
Description
相关申请的交叉引用
本申请要求2020年9月23日提交的美国非临时专利申请第17/030,051号的优先权,其内容通过引用以其整体并入本文。
技术领域
本公开总体上涉及用于机器学习模型的加速器,并且更具体地,涉及使用树形直接存储器存取(DMA)总线的神经网络权重分布。
背景
越来越多地使用神经网络来实现机器学习(ML)技术,以解决各种各样的问题,该问题包括但不限于对象识别、特征分类或内容驱动的图像处理。一些神经网络(其可以称为卷积神经网络)包括一个或更多个卷积层。在卷积神经网络(CNN)中,卷积层通常占CNN内和/或CNN与ML模型其他元素之间执行的计算和数据移动的绝大部分,使它们成为性能瓶颈。因此,现有的ML加速器专注于在整个存储器层次结构中使用高计算并行性以及经优化的数据编排(data orchestration),以加快卷积层的处理速度。然而,现有的ML加速器在边缘设备中实现时可能表现不佳,这些边缘设备具有严格功耗约束并且使用先前训练的模型实时运行推理练习。例如,在用于独立的头戴式显示器上(例如,在增强现实(AR)/虚拟现实(VR)头戴式装置(headset)上)、移动设备或其他边缘计算设备上实现的VR、AR、混合现实(MR)或混杂现实的人工现实系统中,现有的ML加速器可能表现不佳。
特定实施例的概述
在特定实施例中,树形直接存储器存取(DMA)控制器和DMA总线结构可用于跨分布于机器学习(ML)加速器中的多个张量处理器单元选择性地广播、多播或单播神经网络权重(weights)。具体而言,树形DMA控制器可以充当集中式中枢(centralized hub),通过该中枢,神经网络权重被分布到整个ML加速器中的张量处理器单元。单独的张量处理器单元被分成几个集群或“张量处理器集群”。每个张量处理器集群包括其自己的本地存储器(例如,用于存储权重)和几个能够单独执行神经网络算子(operator)的张量处理器单元。树形DMA控制器可以从编译器接收一个或更多个地址,这些地址指示存储器(例如SRAM)中存储权重的位置。树形DMA控制器还可以从编译器接收关于如何在张量处理器集群之间分布权重以处理输入(例如,输入特征)的分布指令。树形DMA控制器可以访问一个或更多个地址来检索权重,然后根据编译器提供的分布指令,通过DMA总线结构或“树形DMA总线”在张量处理器集群之间分布权重。
权重可以广播到所有张量处理器集群,多播到张量处理器集群的子集,或者单播到单个张量处理器集群。例如,树形DMA控制器可以访问由编译器提供的存储器地址,以检索权重集,然后经由树形DMA总线将该权重集广播给每个张量处理器集群,用于处理输入特征。在这种情况下,每个张量处理器集群可以同步锁步地(synchronized lockstep)处理输入特征,使得当张量处理器集群已经完成处理时,它们可以各自向树形DMA控制器提供令牌(token),指示输入特征已经被处理。响应于接收到令牌,树形DMA控制器可以从存储器中检索附加权重,并且经由树形DMA总线将附加权重分布到张量处理器集群。通过根据树形网络拓扑(例如,而不是星形或环形拓扑)来构造树形DMA总线,树形DMA控制器可以将神经网络权重直接分布给每个张量处理器集群,从而最小化延迟和总功耗。因此,机器学习加速器可以适用于AR/VR应用或需要在有限功率预算内以最小延迟进行特征处理的其他应用。
本说明书中描述的主题的创新方面可以体现在系统、方法和计算机可读非暂时性存储介质中,用于由机器学习(ML)加速器的树形直接存储器存取(DMA)控制器接收存储器地址,该存储器地址指示存储器中存储与机器学习模型相关联的权重集的位置;由树形DMA控制器接收分布指令,该分布指令指示ML加速器的多个(a plurality of)张量处理器集群中的被选择来接收权重集以并行处理输入特征的不同分割部分的一个或更多个张量处理器集群;从由存储器地址指示的存储器中的位置检索该权重集;以及根据分布指令,经由树形DMA总线以寻址到一个或更多个张量处理器集群的至少一个DMA分组(packet)中发送权重集。
在一个或更多个公开的实施例中,多个张量处理器集群中的每一个包括:多个张量处理器单元,该多个张量处理器单元中的每一个被配置为使用该权重集对输入特征执行神经网络算子,多个张量处理器单元中的每一个包括本地存储器;以及集群级控制器,其被配置为:根据分布指令,将权重集存储到多个张量处理器单元中的一个或更多个张量处理器单元的本地存储器中;生成指示输入特征被处理的令牌;并将令牌发送给树形DMA控制器。
在所公开的实施例的一个或更多个中,多个张量处理器单元中的每一个都经由树形DMA总线的多个子分支通信耦合到树形DMA控制器。
在所公开的实施例的一个或更多个中,至少一个DMA分组包括:目标位图(destination bitmap),其指示被选择来接收权重集以处理输入特征的一个或更多个张量处理器集群;和用于处理输入特征的权重集。
在所公开的实施例的一个或更多个中,该系统、方法和计算机可读非暂时性存储介质还包括:由ML加速器的DMA路由器根据分布指令将至少一个DMA分组引导到一个或更多个张量处理器集群。
在一个或更多个公开的实施例中,多个张量处理器集群中的每一个都通过树形DMA总线通信地耦合到树形DMA控制器。
在一个或更多个公开的实施例中,分布指令包括以下至少一个:广播分布,其中多个张量处理器集群包括被选择来接收用于处理输入特征的权重集的一个或更多个张量处理器集群;多播分布,其中多个张量处理器集群的子集包括被选择来接收用于处理输入特征的权重集的一个或更多个张量处理器集群;以及单播分布,其中多个张量处理器集群中的单个张量处理器集群包括被选择来接收用于处理输入特征的权重集的一个或更多个张量处理器集群。
本文公开的实施例仅仅是示例,并且本公开的范围不限于它们。特定实施例可以包括上面公开的实施例的部件、元件、功能、操作或步骤中的全部、一些或没有一个被包括。根据本发明的实施例在涉及方法、存储介质、系统和计算机程序产品的所附权利要求中被具体公开,其中在一个权利要求类别(例如方法)中提到的任何要素也可以在另一个权利要求类别(例如系统)中被要求保护。在所附权利要求中的从属性或往回引用仅为了形式原因而被选择。然而,也可以要求保护由对任何先前权利要求的有意往回引用(特别是多个从属关系)而产生的任何主题,从而权利要求及其要素的任何组合被公开了并且可以被要求保护,而不管所附权利要求中选择的从属关系如何。可以被要求保护的主题不仅包括如在所附权利要求中阐述的要素的组合,而且还包括在权利要求中的要素的任何其他组合,其中,在权利要求中提到的每个要素可以与在权利要求中的任何其他要素或其他要素的组合相结合。此外,本文描述或描绘的实施例及其要素中的任一个可以在单独的权利要求中和/或以与本文描述或描绘的任何实施例或要素的任何组合或以与所附权利要求的任何要素的任何组合被要求保护。
本发明的实施例可以包括人工现实系统或结合人工现实系统来被实现。人工现实是一种在呈现给用户之前已经以某种方式进行了调整的现实形式,其可以包括例如虚拟现实(VR)、增强现实(AR)、混合现实(mixed reality,MR)、混杂现实(hybrid reality)或其某种组合和/或衍生物。人工现实内容可以包括完全生成的内容或与捕获的内容(例如,真实世界的照片)相结合的生成的内容。人工现实内容可以包括视频、音频、触觉反馈、或其某种组合,且其中任何一个都可以在单个通道中或在多个通道中被呈现(例如向观看者产生三维效果的立体视频)。另外,在一些实施例中,人工现实可以与应用、产品、附件、服务或其某种组合相关联,这些应用、产品、附件、服务或其某种组合例如用于在人工现实中创建内容和/或在人工现实中被使用(例如,在人工现实中执行活动)。提供人工现实内容的人工现实系统可以在各种平台上实现,这些平台包括连接到主计算机系统的头戴式显示器(HMD)、独立的HMD、移动设备或计算系统、或者能够向一个或更多个观看者提供人工现实内容的任何其他硬件平台。
附图简述
图1示出了多层感知(MLP)神经网络的示例的选定元素。
图2示出了深度神经网络(DNN)的简化构造块的选定元素。
图3示出了卷积神经网络(CNN)中示例卷积层的选定元素。
图4示出了示例多级卷积运算。
图5A示出了分类类型网络的示例CNN。
图5B示出了用于UNet类型网络的示例CNN。
图6示出了包括编译器和ML加速器的示例系统的选定元素。
图7A示出了包括多个张量处理器集群的示例ML加速器的选定元素。
图7B示出了示例张量处理器集群的选定元素。
图7C示出了示例张量处理器单元的选定元素。
图8示出了使用树形DMA总线分布神经网络权重的示例方法的选定元素。
图9示出了示例计算机系统。
示例实施例的描述
在详细讨论本实施例之前,首先提供一些总体关于神经网络和机器学习(ML)模型的背景信息可能是有益的。神经网络或神经网是由相互连接的神经元组成的节点网络,其中每个神经元代表网络中的一个节点。神经元组可以分层排列,其中一层的输出在多层感知(MLP)布置中向前馈送到下一层。MLP可以被理解为将一组输入数据映射到一组输出数据上的前馈神经网络模型。
图1示出了根据特定实施例的多层感知神经网络的示例的选定元素。其结构可以包括多个隐藏的(例如内部的)层,这些层将接收一组输入或向量输入的输入层100映射到包括一组输出或向量输出的输出层180。每一层可以包括任何给定数量的节点,这些节点在本文被示意性地示为每一层内的圆圈。例如,输入层100包括三个节点,示出为节点108、110和112,并且输出层180包括两个节点,示出为182和184。图1所示的示例神经网络包括至少四个隐藏层,但是可以包括图1中未示出的额外的隐藏层。在所示示例中,第一隐藏层126包括两个节点,示为节点128和130,而隐藏层144、152和160各自包括三个节点,分别示为节点146、148和150、节点154、156和158以及节点162、164和166。一般来说,MLP越深(例如,MLP中的隐藏层数越多),它的学习能力就越强。输入层100接收向量输入,该向量输入图示地示出为由输入102、104和106组成的三维向量,并且可以将接收到的向量输入应用于隐藏层序列中的第一隐藏层126。输出层180接收来自多层模型中最后一个隐藏层(例如160)的输出,处理其输入,并产生向量输出结果,该向量输出结果图示性地示出为由输出186和188组成的二维向量。
通常,每个神经元(或节点)产生单个输出,该输出被前馈到紧随其后的层中的神经元。然而,隐藏层中的每个神经元可以接收多个输入,每个输入来自输入层或来自前一个隐藏层(诸如前一个隐藏层或更早之前的隐藏层)中神经元的输出。通常,每个节点可以对其输入应用一个函数来产生该节点的输出。隐藏层(包括被称为学习层的层)中的节点可以将相同的函数或不同的函数应用于它们相应的输入,以产生它们相应的输出。然而,一些节点(诸如输入层100中的节点)可以仅接收一个输入,并且可以是被动的,这意味着每个节点可以简单地将其单个输入的值中继到该节点的输出,从而向输出提供输入的副本(copy)。
在图1所示的示例神经网络中,输入层100的节点108、110和112的输出作为输入前馈到包括节点128和130的隐藏层126。节点128和130的输出又作为输入前馈到包括节点146、148和150的隐藏层144,节点146、148和150的输出作为输入前馈到包括节点154、156和158的隐藏层152,以此类推。最后,最后的隐藏层160的节点162、164和166的输出作为输入前馈到包括节点182和184的输出层180。在图1中示出为各个节点之间的箭头的神经元之间的互连或链路可以具有与其相关联的相应的权重。例如,输入层100的节点108和隐藏层126的节点128之间的互连可以与权重114相关联。另外,输入层100的节点108和隐藏层126的节点130之间的互连可以与权重118相关联,输入层100的节点110和隐藏层126的节点128之间的互连可以与权重116相关联,输入层100的节点110和隐藏层126的节点130之间的互连可以与权重120相关联,输入层100的节点112和隐藏层126的节点128之间的互连可以与权重122相关联,并且输入层100的节点112和隐藏层126的节点130之间的互连可以与权重124相关联。类似地,隐藏层126和144的节点之间的互连可以分别与权重132、134、138、136、140和142相关联,隐藏层160的节点和输出层180的节点之间的互连可以分别与权重168、170、172、174、176和178相关联。为简单起见,图1中未示出与所示神经网络中的节点之间剩余互连相关联的权重。
通常,除了输入层,节点(神经元)可以接收其紧邻的前一层中的节点的输出作为输入。每个节点可以通过例如将其每个输入乘以每个输入的对应互连权重、对其输入的乘积求和、与由可与该特定节点相关联的另一权重或偏差定义的常数相加(或相乘)并将函数(诸如非线性或对数函数)应用于该结果来计算其输出。非线性函数可以被称为激活(activation)函数或传递函数。多种激活函数在本领域中是已知的,并且对特定激活函数的选择对于本讨论并不重要。然而,要注意的是,ML模型的运行或神经网的行为取决于权重值,该权重值可以被学习,使得神经网络为给定的输入提供期望的输出。
图2以简化视图示出了深度神经网络(DNN)的构建块的选定元素。针对特定神经网络节点,给定输入x1200、x2202和xm204、相应的互连权重w1206、w2208和wm210和非线性激活函数g214,图示的构建块生成输出向量216。在所示示例中,输出向量可以通过将激活函数g214应用于输入乘以其相应权重的线性组合来确定,如下所示:
在训练或学习阶段期间,神经网络可以学习(例如可以被训练来确定)适当的权重值,以实现针对给定输入的期望输出。在神经网络被训练之前,权重可以被单独分配一个初始值,诸如随机的并且可选地是非零的值。分配初始权重的各种方法在本领域是已知的。然后训练或优化权重,使得对于给定的训练向量输入,神经网络产生接近期望的训练向量输出例如预定的训练向量输出的输出。与当前输出进行比较的期望输出可以被称为输入数据的标签。训练向量输入及其对应的训练向量输出可以被称为输入-输出训练对,并且训练数据集可以包括多个输入-输出训练对,例如几十个到几百万个,或者更多。以这种方式,可以在数千个迭代周期中递增地调整权重,诸如通过被称为反向传播的技术。几种反向传播技术在本领域是已知的,包括几种基于梯度下降的技术,例如批量梯度下降、随机梯度下降(SGD),其可以包括小批量梯度下降、分布式同步和异步SGD、弹性平均随机梯度下降(EASGD)、Hogwild等。不同的反向传播技术在如何实现梯度下降的特定方面可能不同,但是一般来说,不管所使用的反向传播技术如何,在反向传播的每个周期中,训练输入(例如,向量输入)通过神经网络被前馈以确定其实际输出(例如,向量输出)。然后,基于实际神经元输出和该神经元的目标或期望训练输出,计算每个输出神经元或输出节点的误差。该过程然后反向传播通过神经网络(在从输出层回到输入层的方向上),基于每个权重对总误差的影响程度来更新权重,使得神经网络的输出更接近期望的训练输出移动。然后可以重复该周期,直到神经网络的实际输出在期望训练输出的可接受误差范围内。在机器学习中,轮次(epoch)通常指的是要通过机器学习模型学习的完整训练数据集的一个完整过程,包括反向传播(如果适用)。在一个轮次中,完整的训练数据集可以在单次训练迭代中提交给学习算法,在这种情况下,使用“批量”的训练数据,或者完整的训练数据集可以在多次训练迭代之后以整体的形式提交,每次迭代使用被称为“小批量”的训练数据集的子集。
神经网络模型或机器学习模型的构建一般来说可以包括学习阶段和推理阶段,学习阶段也可以称为训练阶段,推理阶段也可以称为操作、执行或服务阶段。在学习阶段,可以为特定目的训练神经网络,并且可以向神经网络提供一组训练示例,包括作为输入-输出训练对提供的训练输入和训练输出,并且可选地包括一组验证示例,以测试训练的进度。在该学习过程中,与神经网络中的节点和节点互连(例如,链路)相关联的各种权重可以被递增地调整,以便减少神经网络的实际输出和期望的训练输出之间的误差。以这种方式,可以使诸如上面讨论的多层前馈神经网络能够将任何可测量的函数近似到任何期望的精度。学习阶段的结果是经过训练的机器学习模型。在推理阶段,具有未知输出的输入可以被提交给经训练的机器学习模型,例如,提交给执行经训练的ML模型的服务器或边缘设备,该服务器或边缘设备可以应用已经学习的内容来处理输入以产生输出预测。
为了便于说明,神经网络框架的一些方面在本文可以在实际示例实现方式的上下文中公开。由于现实世界的硬件限制,神经网络可能有实际的尺寸限制。例如,一些ML模型可能实现10GB或更大的大尺寸,这可能需要很长时间来训练,并使其硬件实现复杂化。因此,在特定实施例中,使用各种分布式技术,ML模型可以分布在多个类似的机器(例如,具有相同或基本类似架构的机器)之间。此外,通常希望用于训练ML模型的硬件(例如计算系统)被定制用于ML模型本身,并且所有训练都在同一计算系统上进行。有时,用于训练ML模型的计算系统可以包括针对计算能力优化的快速计算设备和远程存储库(例如参数服务器),其可以保存临时参数值,例如权重值。
如本文所使用的,术语“特征(feature)”或“特征(features)”可以指与卷积运算相关联的输入数据或输出数据。在特定实施例中,卷积神经网络的每一层的输出可以由在内容、大小和/或形状上不再类似于原始输入的特征来表示。例如,包含10x10像素的RGB通道的输入图像可以用10x10x3特征来表示。经过一轮卷积后,输出可由4x4x2特征表示,这些特征可能看起来像图像,也可能不像图像。在处理4×4×2特征的第二轮卷积之后,在这个示例中,输出可以由看起来完全不像图像的1×1特征来表示。以3D方式组织的特征在本文可以被称为“张量”,其具有高度(x)、宽度(y)和通道数(z)的维度。注意,图像数据是通常使用机器学习和神经网络处理的非常特定类型的输入,但是它绝不只是可以使用这些技术和使用本文描述的ML加速器处理的唯一类型的数据。例如,由卷积神经网络处理的输入数据可以表示深度图、参数化用户信息、天气预报的热图等。
计算系统和系统配置不仅可以针对特定类型的机器学习模型和训练算法进行定制,还可以针对机器学习模型被设计来处理的数据类型进行定制。例如,机器学习模型可以接收不同类型的输入或特征,诸如密集输入,其通常是长向量、稀疏输入或两者的组合。密集特征向量可用于表示密集输入,并且稀疏特征向量可用于表示稀疏输入。密集特征向量可以由大部分填充的向量来表示,例如,具有大部分非零条目/单元的向量。密集特征向量的常见示例是图像数据。作为另一个示例,密集特征向量可以包括大多数用户或环境共有的或可确定的可确定描述符,这取决于可以从多个来源收集的特定应用。例如,密集特征可以包括与用户相关联的个人信息、标识输入信息的来源的信息或其他上下文信息,诸如位置、一天中的时间等。注意,一些密集特征可以通过用户提供的输入获得,而其他密集特征可以从用户相关的人口统计或地理信息、用户设备状态信息、用户网络活动或其他可观察到的用户相关来源收集。密集输入可以被认为是多个明确可确定的描述符的集合,其中每个描述符可以被赋予一个数值。因为密集输入可以包括许多描述符类型,例如许多信号/值来源,它们一起可以表征、描述或表示用户或环境,所以密集输入可以是大的密集向量,密集向量中的一个或更多个单元/维度/条目被指定给每个描述符类型。
稀疏输入可以反映与特定任务目标相关的更多语义信息。稀疏输入可以由稀疏特征向量来定义,该稀疏特征向量标识更大的选项列表(诸如可以进一步划分/分组为不同类别的列表)中的选择。当包括稀疏输入的标识符列表标识出对更大的选项列表中的各个选择(诸如由密集向量提供的那些选择)时,可能是这种情况。结果,稀疏向量的特征可能是具有大部分零条目和少数非零条目。因此,稀疏向量可以被表示为指向较大列表中具有非零值的选定单元位置的一系列索引,以及该位置的每个索引的相应非零值,应该理解,未被索引标识的所有其他位置都具有默认的零值。稀疏输入可能不一定直接描述用户或环境,而是可以替代地提供与用户或环境间接相关的辅助信息。通常,因为稀疏向量有许多零条目单元,因此可能不太适合直接输入到神经网络。
图3示出了卷积神经网络中示例卷积层的选定元素。在示出的示例中,通过使用二维(2D)卷积滤波器300的集合对三维(3D)输入特征映射(feature map)304执行一系列2D卷积运算来生成3D输出特征映射308。更具体地,输入特征映射304具有维度h(高度)x w(宽度)x c(其中c代表输入通道的数量),并且输出特征映射308具有维度e x f x m(其中m代表输出通道的数量)。在该示例中,多个滤波器300将被应用于输入特征映射,以生成输出特征映射的每个通道的每个元素。更具体地,应用各自不同的滤波器300来产生每个给定输出通道的输出特征映射的元素。因此,滤波器300的数量(即m)与输出通道的数量(m)相匹配。
如图3所示,每个3D滤波器300包括用于每个输入通道c的维度rxs的相应2D核(kernel),并且每个2D滤波器核定义权重的集合,其中相应的权重值与每个核元素相关联,如其在rxs核中的位置所标识的。例如,每个2D滤波器核可以被表示为将与输入特征映射304内类似大小的特征集合进行卷积的3×3的权重网格。更具体地,在对输入特征映射304的相应通道中的元素的卷积运算中应用滤波器300-m的每个2D核。例如,滤波器300-m的第一2D核提供与输入特征映射304的第一通道的元素的rxs大小的部分302-1中的元素的相应值相乘的权重,滤波器300-m的第二2D核提供与输入特征映射304的第二通道的元素的rxs大小的部分302-2中的元素的相应值相乘的权重,以此类推,使得滤波器300-m的最终2D核提供与输入特征映射304的最后一个通道的元素的rxs大小部分302-3中的元素的相应值相乘的权重。这些乘法运算的结果然后被组合,以生成输出特征映射308的单通道的单个元素306,如图3所示。该过程在以下情况下重复:当滤波器300-m的2D核被应用于输入特征映射304的其他部分以在与元素306相同的输出通道中产生输出特征映射308的剩余元素时,以及当滤波器300中的相应其他滤波器的2D核被应用于输入特征映射304以在每个剩余输出通道中产生输出特征映射308的元素时。
图4示出了根据特定实施例的示例多通道卷积运算。在该示例中,通过对多通道(3D)输入特征映射400的连续部分应用多个3D滤波器406来生成多通道(3D)输出特征映射416。在该示例中,输入特征映射416的维度是XxYxZin,其中Zin表示输入通道的数量,并且输出特征映射416的维度是XoutxYoutxZout,其中Zout表示输出通道的数量。每个3D滤波器406包括用于Zout中的每个输出通道zout的维度KernelXxKernelY的相应2D核,其中kx和ky表示对应于特定输出通道的2D核的特定元素的x/y位置。在该示例中,输出特征映射416的每个元素的值计算如下:
[x][y][zout]+=activations[x+kx][y+ky][zin]*weights[kx][ky][zin][zout]
在所示的示例中,在Zout中,每个通道(zout)都有一个3D滤波器406。更具体地,所示的多通道卷积使用四个3D滤波器406来分别为四个输出通道中的每一个中的每一个x/y位置生成元素,同时在每一个输入通道中的输入特征映射400的元素上向下扫描(sweep)适当的2D核。例如,通过将突出显示的3D滤波器406-1应用于输入特征映射400的突出显示部分402(即,27次激活(activations),包括在3个输入通道zin中的每一个的相应x/y位置中的9次激活),来确定输出特征映射416的元素410的值。类似地,通过将3D过滤器406-4应用于输入特征映射400的突出显示部分402,确定输出特征映射416的元素408的值。
遍历x维度中的输入特征映射400涉及到扫描输入特征映射上的突出显示部分402,使得元素404向右移动一个位置,以识别x维度中每个连续迭代的下一组激活。例如,在突出显示部分已经从图4所示的初始位置向右移动两个位置之后,通过将3D滤波器406-1应用于输入特征映射400的突出显示部分402来确定输出特征映射416的元素414的值。遍历y维度中的输入特征映射400涉及扫描输入特征映射上突出显示部分402,使得元素404向下移动一个位置,以识别y维度中每个连续迭代的下一组激活。例如,在突出显示部分已经从图4所示的初始位置向下移动一个位置并且向右移动一个位置之后,通过将3D滤波器406-1应用于输入特征映射400的突出显示部分402来确定输出特征映射416的元素412的值。
执行图4所示的多通道卷积涉及执行一系列2D卷积,如下所示:
在特定实施例中,当生成表示多通道卷积的张量指令时,编译器执行标识每个2D卷积的输入元素和输出元素的标量地址的生成。在特定实施例中,对应的输入张量(激活地址)、权重张量(权重地址)和输出张量(输出地址)中的每一个的标量地址的生成可以根据以下内容在硬件中(诸如在本文描述的ML加速器内)执行:
对于激活地址:
对于权重地址:
并且对于输出地址:
图5A示出了示例卷积神经网络,其中基于分类类型的神经网络中的输入特征映射500,生成输出特征映射510。这种类型的神经网络通常可涉及小或中等分辨率的输入、单个向量输出和相对大量的输出通道。在示出的示例中,具有不同大小和形状的中间特征映射(示出为特征映射502、504、506和508)通过依次对每个这样的中间特征映射执行连续的卷积运算来生成,并且输出特征映射510由在最终中间特征映射508上操作的完全连接(FC)层生成。如图5A所示,对于分类类型神经网络中的每个连续的中间特征映射,通常可以减小整体尺寸和对应的存储器需求。
图5B示出了示例CNN,其中基于UNet类型的神经网络中的输入特征映射512,生成输出特征映射524。这种类型的神经网络可以涉及高分辨率输入和/或输出特征映射以及相对少量的输入和/或输出通道。这种类型的神经网络还可以包括长跳跃连接(long skipconnection),使得特定的中间特征映射不仅可以依赖于紧挨着的前一个中间特征映射,还可以依赖于另一个先前的中间特征映射。这种跳跃连接由图5B中的箭头516和518示出。在所示示例中,在生成输出特征映射524之前,使用一系列卷积运算生成不同大小和形状的中间特征映射,示为特征映射514、520和522。在该示例中,基于输入特征映射512生成中间特征映射514,基于中间特征映射514生成中间特征映射520,基于中间特征映射520和中间特征映射514生成中间特征映射522,并且基于中间特征映射522和输入特征映射512生成输出特征映射524。在特定实施例中(诸如在AR/VR应用中),输入和输出特征映射可以具有相似的大小和形状,而中间特征映射的大小和形状可以变化很大。例如,在一些情况下,特定的中间特征映射可能比该中间特征映射从其中生成的先前特征映射更短、更窄和/或更浅,而在其他情况下,特定的特征映射可能比该特征映射从其中生成的先前特征映射更高、更宽和/或更深。
如上所述,在卷积神经网络中,卷积层通常占CNN内和/或CNN与ML模型的其他元素之间执行的计算和数据移动的绝大部分,使它们成为性能瓶颈。因此,现代的CNN加速器专注于在整个存储器层次结构中使用高计算并行性以及经优化的数据编排,以加快卷积层的处理速度。传统上,机器学习加速器内的各个张量处理器单元可以异步地对图像数据或另一种类型的输入特征映射(或其已被空间分割的部分)执行卷积运算(例如,乘法、累加、池化(pooling)等)。然而,有效利用这些加速器的计算能力可能需要设计特定的映射方案,该方案规定何时(即,在哪个处理周期)和何处(即,在数百到数千个加速器中的哪个计算数据路径)执行每个操作(即,每个乘法和累加(或MAC))。这种映射方案的设计又可能会对硬件架构设计产生影响,因为硬件需要能够在正确的时间以正确的格式将数据传送到正确的计算数据路径,以便能够在正确的周期中运行。
本文描述的ML加速器采用多级控制架构,该架构被设计成最佳地利用由ML加速器中的张量处理器单元提供的并行性。这些机器学习加速器可以包括一个或更多个张量处理器集群,其中的每个张量处理器集群可以包括多个张量处理器单元。每个张量处理器可以是单指令多数据(SIMD)机器,其包括能够执行向量运算的计算阵列,以在张量处理器或张量处理器集群级别实现数据并行性或模型并行性。每个张量处理器集群可以包括共享控制器,该共享控制器控制和同步集群内的张量处理器单元的操作,使得它们并行且锁步地执行共同的操作系列。如本文更详细描述的,相比使用现有ML加速方案可能实现的,多级控制架构可以在神经网络层的计算并行性上支持更大的灵活性,同时降低由于物理电路面积和/或各种张量指令消耗的功率而产生的硬件成本。多级装置可用于实现针对机器学习问题的各种神经网络解决方案中的任何一种,这些问题包括但不限于对象识别、特征分类或内容驱动的图像处理。该多级装置可能特别适合于在边缘设备中实现,这些边缘设备具有严格功耗约束并且例如在AR/VR头戴式装置中使用先前训练的模型实时运行推理练习。
图6示出了包括编译器600和ML加速器614的示例系统的选定元素。在示出的示例中,编译器600基于包括编程语言指令602和指示要执行张量指令606的神经网络的配置的配置信息604的输入,来生成机器语言指令,示为张量指令606。在该示例系统中,ML加速器614接收张量指令606,并为输入特征610和适用的权重612生成输出特征608。例如,编译器600可以根据用于促进特定硬件架构的机器学习处理的指令集架构(ISA),将单个ML运算(诸如卷积运算)映射到多个机器语言指令,这些指令中的任何一个或全部可以是多维(张量)指令。在特定实施例中,完整的ML层可以使用三类硬件指令——计算指令、非线性单元(NLU)指令和直接存储器存取(DMA)指令——中的每一类指令中的一个或更多个指令来表示。
在特定实施例中,编译器600可以分析将要由神经网络执行的工作负载,并使用SIMD和/或单程序多数据(SPMD)方法来确定将要发送到ML加速器614的每个张量处理器集群的各个粗粒度(coarse-grained)张量指令,以分布工作负载。编译器600可以基于以下项来分布工作负载:神经网络的架构、张量处理器集群的数量、每个张量处理器集群中的张量处理器单元的数量和处理能力、输入和输出特征维度、将要在神经网络的不同层执行的其他操作和卷积的数量和类型和/或在每一层产生的输出特征和下一层所需的输入特征之间的关系。一旦本地可用特征集和权重被加载到特定张量处理器单元的存储器中,工作负载分布决策可以最大化本地可用特征集和权重的重用,减少张量处理器集群之间和内部所需的数据移动量,并且优化ML加速器614中的资源利用。
图7A至图7C示出了在多级加速器架构的不同级别上的示例ML加速器的选定元素,诸如类似于图6所示的ML加速器614的ML加速器。例如,图7A示出了示例ML加速器700可以包括四个张量处理器集群724,并且可以包括或可通信地耦合到一个或更多个顶部网格DMA控制器716、树形DMA控制器718和/或可选的定制操作引擎722和对应的可选的定制操作控制器720。ML加速器700可以包括或可通信地耦合到指令主设备(instruction master)702,指令主设备702可以通过指令总线710可通信地耦合到四个张量处理器集群724、顶部网格DMA控制器716和树形DMA控制器718中的每一个。ML加速器700还可以包括树形DMA 704和网格DMA 706,它们中的每一个都可通信地耦合到共享RAM 708。树形DMA 704可以(经由DMA路由器711)可通信地耦合到四个张量处理器集群724中的每一个以及通过树形DMA总线712可通信地耦合到可选的定制操作引擎722。网格DMA 706可以通过网格DMA总线714可通信地耦合到四个张量处理器集群724中的每一个。在至少一些实施例中,ML加速器700还可以包括同步总线(未在图7A中示出),该同步总线可通信地耦合到四个张量处理器集群724、顶部网格DMA控制器716、树形DMA控制器718、可选定制操作引擎722和相应的可选定制操作控制器720、指令主设备702、树形DMA 704、网格DMA 706和/或共享RAM 708或其任何合适的子集。
在一个实施例中,树形DMA控制器718可以包括通常可操作来将神经网络权重分布到张量处理器集群724以处理输入特征的系统、设备或装置。例如,树形DMA控制器718可以将ML加速器614接收的权重612(图6中示出)分布到张量处理器集群724,使得每个张量处理器集群724可以并行处理输入特征610。树形DMA控制器718可以根据从编译器接收的指令将权重分布到张量处理器集群724。例如,树形DMA控制器718可以根据由ML加速器614从编译器600接收的张量指令606(如图6所示)将权重612分布到张量处理器集群724。由树形DMA控制器718从编译器接收的每个张量指令可以包括一个或更多个存储器地址和分布指令,该存储器地址指示存储器中存储神经网络权重的位置,该分布指令指示已经选择了哪些张量处理器集群724来接收神经网络权重。在图7A所示的示例中,树形DMA控制器718可以通过指令总线710(经由指令主设备702)从编译器接收张量指令。
在一个实施例中,由树形DMA控制器718从编译器接收的张量指令可以包括一个或更多个存储器地址,其指示存储器中存储神经网络权重的位置。例如,树形DMA控制器718可以从(图6中示出的)编译器600接收张量指令606,该指令包括指示共享RAM 708中存储权重集的位置的存储器地址。在从编译器接收张量指令时,可以从由一个或更多个存储器地址指示的存储器位置中检索神经网络权重。在一个实施例中,树形DMA控制器718可以向树形DMA 704提供在从编译器接收的张量指令中所包括的存储器地址,并指示树形DMA 704在由存储器地址指示的位置从共享RAM 708检索权重集。在另一个实施例中,树形DMA控制器718可以在由存储器地址指示的位置从共享RAM 708中检索权重集。一旦从存储器中检索到该权重集,树形DMA 704可以通过树形DMA总线712将该权重集分布到张量处理器集群724。
在一个实施例中,由树形DMA控制器718从编译器接收的张量指令可以包括一个或更多个分布指令,该分布指令指示哪个张量处理器集群724已经被分配接收权重集。具体而言,分布指令可以向树形DMA控制器718指示编译器已经选择了哪些张量处理器集群724来使用存储在共享RAM 708中的权重集来处理输入特征。在一个实施例中,分布指令可以指示广播分布、多播分布和/或单播分布。广播分布指令向树形DMA控制器718指示编译器已经选择了ML加速器700中的每个张量处理器集群724来接收权重集,用于并行处理输入特征。例如,来自编译器的广播分布指令可以提示树形DMA控制器718指示树形DMA 704向每个张量处理器集群724-A至724-D广播存储在共享RAM 708中的权重集。多播分布指令指示编译器已经选择了ML加速器700中的张量处理器集群724的子集来接收权重集,以用于并行处理输入特征。例如,响应于从编译器接收到多播分布指令,树形DMA控制器718可以指示树形DMA704将在共享RAM 708中存储的权重集多播到张量处理器集群724-A至724-C,从而排除张量处理器集群724-D接收该权重集。单播分布指令向树形DMA控制器718指示编译器已经选择了单个张量处理器集群724来接收用于处理输入特征的权重集。例如,树形DMA控制器718可以指示树形DMA 704将存储在共享RAM 708中的权重集仅单播给张量处理器集群724-D,从而排除张量处理器集群724-A至724-C接收该权重集。通过允许每个张量处理器集群724、张量处理器集群724的子集或单个张量处理器集群724接收权重集,分布指令在处理工作流中提供了增加的粒度。
在一个实施例中,编译器可以在编译时将分布指令部分地基于与输入特征相关联的分割方案。例如,输入特征可以被空间分割或批量分割,以便于处理输入特征的优化工作流。在一些实施例中,这种优化的工作流可能需要ML加速器700的张量处理器集群724彼此并行地处理输入特征的不同分割部分。例如,每个张量处理器集群724-A至724-D可以彼此锁步地处理相应的批量分割的输入特征或相同的空间分割的输入特征的部分,以最小化延迟并最大化吞吐量。编译器可以选择最好地利用在多个张量处理器集群724之间的并行性的分割方案(例如,批量分割、空间分割等)。例如,包括大数字图像的输入特征可以在空间上被分割成四个更小的部分(即,四分之一),使得每个张量处理器集群724-A至724-D被分配来处理整个数字图像的四分之一。在此,因为每个张量处理器集群724接收同一数字图像的一部分,所以来自编译器的分布指令可以指示树形DMA控制器718在广播分布中分布权重集,以用于并行处理数字图像的各个部分。在另一个示例中,包括RGB图像(由红色、绿色和蓝色神经网络通道组成)的输入特征可以被批量分割,使得张量处理器集群724-A、724-B和724-C分别接收红色、绿色和蓝色神经网络通道。在该示例中,来自编译器的分布指令可以指示树形DMA控制器718向张量处理器集群724-A、724-B和724-C单播传送三个相应的权重集(即,对应于红色、绿色和蓝色神经网络通道),用于并行处理RGB图像。
在一个实施例中,树形DMA控制器718可以在一个或更多个DMA分组中将权重集分布给张量处理器集群724。具体而言,树形DMA控制器718可以指示树形DMA 704生成包括将要经由树形DMA总线712发送到张量处理器集群724的权重集的DMA分组。在一个实施例中,每个DMA分组可以包括目标位图、有效载荷地址和有效载荷。目标位图可以是或包括DMA分组的头部,其中每个张量处理器集群724由目标位图中的一位或多位表示。在一个实施例中,目标位图可以由四位组成,其中每位用于表示被选择来使用该权重集处理输入特征的相应张量处理器集群(例如,张量处理器集群724-A至724-D)。在另一个实施例中,目标位图可以由16位组成,其中每一位用于表示被选择来使用该权重集处理输入特征的相应张量处理器单元726(例如,张量处理器单元726-A至726-D)(在图7B中示出)。有效载荷地址可以指定张量处理器集群724的本地存储器内的地址,该权重集将被存储在该地址中。例如,DMA分组的有效载荷地址可以指向张量处理器集群724内的张量处理器单元726的权重缓冲器746(在图7C中示出)内的地址,该张量处理器集群724被选择来使用该权重集来处理输入特征。有效载荷可以是或包括用于处理输入特征的权重集。以这种方式,DMA分组支持执行分布指令所需的粒度,允许有效载荷在张量处理器集群724之间被广播、多播和/或单播。在其他实施例中,DMA分组可以包括适于将神经网络权重分布到张量处理器集群724的附加的、更少的或任何数量的元素。
在图7A所示的示例中,每个张量处理器集群724可通信地耦合到树形DMA总线712。树形DMA总线712可以是树形网络拓扑,允许树形DMA控制器718将神经网络权重直接分布到张量处理器集群724,从而最小化ML加速器614的延迟和总功耗。也就是说,ML加速器614中的每个张量处理器集群724可以根据树形网络拓扑经由树形DMA总线712可通信地耦合到共享RAM 708,该树形网络拓扑允许ML加速器614消耗比使用其他网络拓扑(例如,星形拓扑、环形拓扑、网状拓扑等)进行广播或多播分布所需的功率更少的功率(例如,神经网络权重分布所需的功率)。如上所述,树形DMA控制器718可以指示树形DMA704在广播分布中分布DMA分组,其中每个张量处理器集群724接收用于处理输入特征的相同有效载荷(即,权重集)。因为树形DMA总线712根据树形网络拓扑将每个张量处理器集群724可通信地耦合到共享RAM 708,所以张量处理器集群724可以在大约相同的情况下在广播或多播分布中接收DMA分组。这允许接收到DMA分组的每个张量处理器集群724开始彼此锁步地处理输入特征。因此,图7A中所示的树形DMA总线712的树状架构相比其他网络拓扑(例如,星形拓扑、环形拓扑、网状拓扑等)促成了用于处理输入特征的增加的并行性,同时具有访问每个张量处理器集群724内的各个张量处理器单元726-A至726-D(在图7B中示出)的粒度。
在一个实施例中,每个DMA路由器711可以包括系统、设备或装置,其通常可操作来经由树形DMA总线712将DMA分组从共享RAM 708引导到一个或更多个张量处理器集群724。在图7A所示的示例中,DMA路由器711-A可以从树形DMA 704接收一个或更多个DMA分组。如上所述,每个DMA分组可以包括目标位图,该位图指定由编译器选择的一个或更多个张量处理器集群724,以根据由树形DMA控制器718执行的分布指令接收DMA分组。基于DMA分组的目标位图,DMA路由器711-A可以将DMA分组发送到张量处理器集群724-A、张量处理器集群724-B和/或DMA路由器711-B。如果DMA分组到达DMA路由器711-B,则DMA分组可以被发送到张量处理器集群724-C和/或张量处理器集群724-D。也就是说,DMA路由器711-B可以基于目标位图,将DMA分组定向到张量处理器集群724-C和/或张量处理器集群724-D。在一个实施例中,ML加速器中的每个DMA路由器711可以包括一个入口端口和可配置数量的出口端口。在其他实施例中,每个DMA路由器711可以具有可配置数量的入口端口和出口端口。注意,尽管图7A所示的示例ML加速器700包括两个DMA路由器711-A和711-B,但是ML加速器700的其他实施例可以包括额外的、更少的和/或任何数量的适于将DMA分组导向张量处理器集群724的DMA路由器711。
在一个实施例中,每个张量处理器集群724可以包括通常可操作来处理输入特征的系统、设备或装置。具体而言,每个张量处理器集群724可以被配置为对从共享RAM 708接收的输入特征执行各种神经网络算子(例如,卷积、偏差相加(bias-add)、归一化、残差相加等)。在图7A所示的示例中,ML加速器700中的每个张量处理器集群724可以经由树形DMA总线712可通信地耦合到树形DMA 704,从而耦合到树形DMA控制器718。如上所述,树形DMA总线712的树状架构允许ML加速器700的张量处理器集群724并行处理输入特征,从而优化工作流。也就是说,树形DMA总线712的树形网络拓扑允许每个张量处理器集群724在大约相同的情况下以广播或多播分布的方式直接从共享RAM 708接收神经网络权重,从而最小化ML加速器614的延迟和总功耗。参考图7B更详细地描述张量处理器集群724。
图7B示出了示例张量处理器集群724的选定元素,诸如图7A所示的ML加速器700的四个张量处理器集群724之一。在这个示例中,张量处理器集群724包括四个张量处理器单元726-A至726-D、共享的集群级控制器730和四个树形DMA总线子分支728-A至728-D,用于将张量处理器单元726-A至726-D可通信地耦合到树形DMA总线712(经由集群级控制器730)。
在一个实施例中,集群级控制器730可以包括系统、设备或装置,其通常可操作来解译从编译器(诸如图6所示的编译器600)接收的粗粒度张量指令,并将其转换成一系列细粒度张量指令,该指令可被发送到张量处理器集群724中的张量处理器单元726,张量处理器单元726的任务是执行常见的操作系列。这些细粒度张量指令中的每一个可以包括将要由每个张量处理器单元726内的硬件计算阵列执行的神经网络算子(例如,卷积、偏差相加、归一化、池化等),或者可以表示将要被应用于硬件计算阵列的中间输出以产生输出特征的元素的非线性指令。另外,集群级控制器730可以包括同步器,该同步器同步张量处理器集群724内的张量处理器单元726的操作,使得它们可以并行且锁步地执行公共的操作系列。具体而言,集群级控制器730可以使用同步器来生成令牌,该令牌指示张量处理器单元726已经完成了公共的操作系列,并且输入特征已经被处理。在一个实施例中,集群级控制器730可以将令牌发送给树形DMA控制器718,使得树形DMA控制器718可以指示树形DMA 704从共享RAM 708中检索额外的权重集,以分布给张量处理器单元726,用于进一步的锁步处理。集群级控制器730可以确保输入特征的适当子集和将要被应用于每个操作的权重集已经被加载到每个张量处理器单元726的本地存储器中,张量处理器单元726的任务是执行公共操作系列。在一个实施例中,这可以包括为权重生成地址模式,为输入激活生成地址模式,以及为公共操作系列的输出生成地址模式。在另一个实施例中,集群级控制器730可以基于在由集群级控制器730经由树形DMA总线712接收的DMA分组中所包括的有效载荷地址,确保该权重集已经被加载到每个张量处理器单元726的本地存储器中。
在图7B所示的示例中,集群级控制器730通过指令总线710接收张量指令(例如,粗粒度张量指令)。发送到张量处理器集群724的每个粗粒度张量指令可以对张量处理器集群724可用的信息进行编码,以执行对应于单个神经网络层的一部分的多周期操作。在一个示例中,使用SPMD方法,(在图6中示出的)编译器600可以分配工作负荷,使得不同的任务被分配给不同的张量处理器集群724,其中一些或全部张量处理器集群724对相同的输入特征进行操作。在另一示例中,使用SIMD方法,编译器600可以分布工作负荷,使得相同的任务被分配给多个张量处理器集群724,并且使得这些多个张量处理器集群724中的每一个对不同的数据进行操作,例如对神经网络的输入特征的不同子集进行操作。使用这种方法,张量处理器集群724可以并行操作,并且可以典型地但不是必须地彼此锁步操作。
在AR/VR应用中使用的卷积神经网络通常必须支持具有各种各样的形状和尺寸尤其是沿着通道维度的形状和尺寸的输入和输出特征映射。对于现有的ASIC加速器,支持这种多样性可能会导致硬件利用率下降,并且对应地降低性能和能效。本申请中描述的张量处理器单元使用灵活的硬件资源和灵活的计算到硬件的映射来解决这个问题。例如,图7C示出了示例张量处理器单元726(诸如图7B所示的张量处理器集群724的四个张量处理器单元726之一)的选定元素。在特定实施例中,张量处理器单元726以灵活的架构实现,其中计算部件被组织成使得张量处理器单元726可以支持各种卷积层形状,具有高资源利用率和本地可用数据的高重用。张量处理器单元726可以是单指令多数据(SIMD)机器,其包括能够执行向量运算的计算阵列,该向量运算使用神经网络中的数据并行性或模型并行性来共同实现更高级别的张量指令。在图7C所示的示例中,张量处理器单元726包括多存储体(multi-bank)激活存储器736、第一交叉开关(crossbar)738、四个计算子阵列740-A至740-D(也称为740)、可选输出缓冲器742、多通路(multi-lane)非线性单元744、权重缓冲器746(例如存储权重的寄存器文件)、第二交叉开关748和本地控制器750。在特定实施例中,张量处理器单元726可以在操作期间被动态地配置为通过使用柔性交叉开关738和748控制提供给每个子阵列740及其MAC计算单元的输入特征映射数据和权重的大小和形状,并且通过控制每个子阵列740及其MAC计算单元的输出的减少和/或组合以生成期望大小和形状的输出特征映射,来执行不同大小和形状的卷积操作。在特定实施例中,张量处理器单元726还可以被配置为执行组卷积运算,其中并非所有输出元素都依赖于相同的输入元素或权重。
在所示示例中,多存储体激活存储器736包括本地存储器元件,其存储将要提供给子阵列740中的各个子阵列的输入特征映射元素。第一交叉开关738是第一灵活的多对多交叉开关,其从多存储体激活存储器736读取输入特征映射元素(例如,像素值),并在每个周期中将其提供给适当的子阵列740。在示出的示例中,可以实现为寄存器文件的权重缓冲器746包括本地存储器元件,其存储将要提供给子阵列740中的各个子阵列的滤波器权重。第二交叉开关748是另一个柔性交叉开关,其从权重缓冲器746加载滤波器权重,并在每个周期中将其提供给适当的子阵列740。
在特定实施例中,四个计算子阵列740中的每一个包括给定大小的乘法和累加(MAC)计算单元阵列,这些计算单元并行操作以将为给定3D卷积滤波器的给定2D核定义的权重应用于输入特征映射的部分,并产生输出特征映射的部分。输出特征映射可具有与输入特征映射不同的形状。张量处理器单元726内的本地控制器750可以例如结合共享集群级控制器(诸如图7B所示的共享集群级控制器730)根据从图6所示的编译器600接收的粗粒度张量指令和/或从共享集群级控制器730接收的细粒度指令,来控制交叉开关738和748以及灵活缩减模块或多通路非线性单元744的操作。
在特定实施例中,可选输出缓冲器742存储来自一个或更多个子阵列740的中间输出,使得部分结果可以在通过缩减模块之前被累加,从而减少缩减操作的范围和/或复杂性。在特定实施例中,多通路非线性单元744是灵活的缩减模块,其可配置为从子阵列740获取中间计算输出,并执行子阵列输出的缩减(即,相加),以在适当的情况下为张量处理器单元726产生整体输出。
图8示出了使用树形DMA总线分布神经网络权重的示例方法800的选定元素。该方法可以在步骤810开始,其中机器学习(ML)加速器的树形直接存储器存取(DMA)控制器接收存储器地址,该存储器地址指示存储器中存储与机器学习模型相关联的权重集的位置。树形DMA控制器可以从编译器接收存储器地址。在步骤820,树形DMA控制器可以接收分布指令,该指令指示被选择来接收用于处理的权重集的ML加速器的一个或更多个张量处理器集群。在步骤830,树形DMA控制器可以从由存储器地址指示的存储器位置中检索该权重集,并且在步骤840,树形DMA控制器可以根据分布指令在寻址到一个或更多个张量处理器集群的DMA分组中发送该权重集。可以经由ML加速器的树形DMA总线将DMA分组发送到一个或更多个张量处理器集群,并且张量处理器集群可以使用该权重集并行处理输入特征的不同分割部分。
图9示出了示例计算机系统900。在特定实施例中,一个或更多个计算机系统900执行本文描述或示出的一个或更多个方法的一个或更多个步骤。在特定实施例中,一个或更多个计算机系统900提供本文描述或示出的功能。在特定实施例中,在一个或更多个计算机系统900上运行的软件执行本文描述或示出的一个或更多个方法的一个或更多个步骤,或者提供本文描述或示出的功能。特定实施例包括一个或更多个计算机系统900的一个或更多个部分。在本文,在适当的情况下,对计算机系统的引用可以包括计算设备,反之亦然。此外,在适当的情况下,对计算机系统的引用可以包括一个或更多个计算机系统。
本公开设想了任何合适数量的计算机系统900。本公开设想了采取任何合适的物理形式的计算机系统900。作为示例而不是作为限制,计算机系统900可以是嵌入式计算机系统、片上系统(SOC)、单板计算机系统(SBC)(诸如例如,模块上计算机(COM)或模块上系统(SOM))、台式计算机系统、膝上型或笔记本计算机系统、交互式信息亭、大型机、计算机系统网状网、移动电话、个人数字助理(PDA)、服务器、平板计算机系统、AR/VR现实设备、或者这些系统的两个或更多个的组合。在适当的情况下,计算机系统900可以包括一个或更多个计算机系统900;可以是整体式的或分布式的;跨越多个位置;跨越多台机器;跨越多个数据中心;或者驻留在云中,云可以包括在一个或更多个网络中的一个或更多个云部件。在适当的情况下,一个或更多个计算机系统900可以在没有实质性空间或时间限制的情况下执行本文描述或示出的一个或更多个方法的一个或更多个步骤。作为示例而不是作为限制,一个或更多个计算机系统900可以实时地或以批处理模式来执行本文描述或示出的一个或更多个方法的一个或更多个步骤。在适当的情况下,一个或更多个计算机系统900可以在不同的时间或在不同的位置处执行本文描述或示出的一个或更多个方法的一个或更多个步骤。
在特定实施例中,计算机系统900包括处理器904、存储器906、存储装置908、输入/输出(I/O)接口910、通信接口912、总线914和ML加速器902。尽管本公开描述并示出了具有在特定布置中的特定数量的特定部件的特定计算机系统,但是本公开设想了具有在任何合适布置中的任何合适数量的任何合适部件的任何合适的计算机系统。
在特定实施例中,处理器904包括用于执行指令(例如构成计算机程序的那些指令)的硬件。作为示例,而不是作为限制,为了执行指令,处理器904可以从内部寄存器、内部高速缓存、存储器906或存储装置908中检索(或取回)指令;将它们解码并执行它们;以及然后将一个或更多个结果写到内部寄存器、内部高速缓存、存储器906或存储装置908。在特定实施例中,处理器904可以包括用于数据、指令或地址的一个或更多个内部高速缓存。在适当的情况下,本公开设想了处理器904包括任何合适数量的任何合适的内部高速缓存。作为示例,而不是作为限制,处理器904可以包括一个或更多个指令高速缓存、一个或更多个数据高速缓存、以及一个或更多个转译后备缓冲器(TLB)。在指令高速缓存中的指令可以是在存储器906或存储装置908中的指令的副本,并且指令高速缓存可以加速处理器904对那些指令的检索。在数据高速缓存中的数据可以是:在存储器906或存储装置908中的数据的副本,用于使在处理器904处执行的指令进行操作;在处理器904处执行的先前指令的结果,用于由在处理器904处执行的后续指令访问或者用于写到存储器906或存储装置908;或其他合适的数据。数据高速缓存可以加速由处理器904进行的读或写操作。TLB可以加速关于处理器904的虚拟地址转译。在特定实施例中,处理器904可以包括用于数据、指令或地址的一个或更多个内部寄存器。在适当的情况下,本公开设想了处理器904包括任何合适数量的任何合适的内部寄存器。在适当的情况下,处理器904可以包括一个或更多个算术逻辑单元(ALU);可以是多核处理器;或者包括一个或更多个处理器904。尽管本公开描述并示出了特定的处理器,但是本公开设想了任何合适的处理器。
在特定实施例中,ML加速器902可以类似于图6所示的ML加速器614,或者图7A所示的ML加速器700。因此,用于使用卷积神经网络的机器学习应用的计算机程序的特定指令可以被转化成张量指令,用于由ML加速器902的各种计算元件执行,如本文所描述的。在特定实施例中,ML加速器902可以使用硬件和/或软件元素以任何合适的组合来实现。如本文所述,ML加速器902可以包括多个张量处理器集群和底层张量处理器单元,每个张量处理器单元可以包括用于存储输入特征、各种多维滤波器的2D核的权重和/或各种卷积运算的输出特征的本地存储器。在特定实施例中,这些本地存储器可以从存储装置908、存储器906或者从另一个源(诸如例如,另一个计算机系统900)加载。与使用处理器904或使用现有的ML加速器来执行张量指令相比,使用ML加速器902来执行张量指令可以提高计算机系统900对于那些应用的整体性能和资源利用率。
在特定实施例中,存储器906包括用于存储用于使处理器904执行的指令或使处理器904对其操作的数据的主存储器。作为示例,而不是作为限制,计算机系统900可以将指令从存储装置908或另一个源(诸如例如,另一个计算机系统900)加载到存储器906。处理器904然后可以将指令从存储器906加载到内部寄存器或内部高速缓存。为了执行指令,处理器904可以从内部寄存器或内部高速缓存中检索指令并将它们解码。在指令的执行期间或之后,处理器904可以将一个或更多个结果(其可以是中间结果或最终结果)写到内部寄存器或内部高速缓存。处理器904然后可以将这些结果中的一个或更多个写到存储器906。在特定实施例中,处理器904仅执行在一个或更多个内部寄存器或内部高速缓存中或在存储器906(而不是存储装置908或其他地方)中的指令,并且仅对在一个或更多个内部寄存器或内部高速缓存中或在存储器906(而不是存储装置908或其他地方)中的数据进行操作。一个或更多个存储器总线(其可以各自包括地址总线和数据总线)可以将处理器904耦合到存储器906。如下所述,总线914可以包括一个或更多个存储器总线。在特定实施例中,一个或更多个存储器管理单元(MMU)驻留在处理器904和存储器906之间,并且便于由处理器904请求的对存储器906的访问。在特定实施例中,存储器906包括随机存取存储器(RAM)。在适当的情况下,该RAM可以是易失性存储器。在适当的情况下,该RAM可以是动态RAM(DRAM)或静态RAM(SRAM)。此外,在适当的情况下,该RAM可以是单端口RAM或多端口RAM。本公开设想了任何合适的RAM。在适当的情况下,存储器906可以包括一个或更多个存储器906。尽管本公开描述并示出了特定的存储器,但是本公开设想了任何合适的存储器。
在特定实施例中,存储装置908包括用于数据或指令的大容量存储装置。作为示例,而不是作为限制,存储装置908可以包括硬盘驱动器(HDD)、软盘驱动器、闪存、光盘、磁光盘、磁带或通用串行总线(USB)驱动器、或这些中的两个或更多个的组合。在适当的情况下,存储装置908可以包括可移动或不可移动(或固定)介质。在适当的情况下,存储装置908可以在计算机系统900的内部或外部。在特定实施例中,存储装置908是非易失性固态存储器。在特定实施例中,存储装置908包括只读存储器(ROM)。在适当的情况下,该ROM可以是掩模编程ROM、可编程ROM(PROM)、可擦除PROM(EPROM)、电可擦除PROM(EEPROM)、电可变ROM(EAROM)、或闪存、或这些中的两个或更多个的组合。本公开设想了采用任何合适的物理形式的大容量存储装置908。在适当的情况下,存储装置908可以包括便于在处理器904和存储装置908之间的通信的一个或更多个存储装置控制单元。在适当的情况下,存储装置908可以包括一个或更多个存储装置908。尽管本公开描述并示出了特定的存储装置,但是本公开设想了任何合适的存储装置。
在特定实施例中,I/O接口910包括提供用于在计算机系统900和一个或更多个I/O设备之间的通信的一个或更多个接口的硬件、软件或两者。在适当的情况下,计算机系统900可以包括这些I/O设备中的一个或更多个。这些I/O设备中的一个或更多个可以实现在人和计算机系统900之间的通信。作为示例,而不是作为限制,I/O设备可以包括键盘、小键盘、麦克风、监视器、鼠标、打印机、扫描仪、扬声器、静态摄像机、触笔、平板计算机、触摸屏、跟踪球、视频摄像机、另一个合适的I/O设备、或这些中的两个或更多个的组合。I/O设备可以包括一个或更多个传感器。本公开设想了任何合适的I/O设备以及用于它们的任何合适的I/O接口910。在适当的情况下,I/O接口910可以包括使处理器904能够驱动这些I/O设备中的一个或更多个的一个或更多个设备或软件驱动器。在适当的情况下,I/O接口910可以包括一个或更多个I/O接口910。尽管本公开描述并示出了特定的I/O接口,但是本公开设想了任何合适的I/O接口。
在特定实施例中,通信接口912包括提供用于在计算机系统900和一个或更多个其他计算机系统900或一个或更多个网络之间的通信(诸如例如,基于分组(packet-based)的通信)的一个或更多个接口的硬件、软件或两者。作为示例,而不是作为限制,通信接口912可以包括用于与以太网或其他基于有线的网络进行通信的网络接口控制器(NIC)或网络适配器,或用于与无线网络(例如WI-FI网络)进行通信的无线NIC(WNIC)或无线适配器。本公开设想了任何合适的网络和用于它的任何合适的通信接口912。作为示例,而不是作为限制,计算机系统900可以与自组织网络、个域网(PAN)、局域网(LAN)、广域网(WAN)、城域网(MAN)或互联网的一个或更多个部分、或这些中的两个或更多个的组合进行通信。这些网络中的一个或更多个的一个或更多个部分可以是有线的或无线的。作为示例,计算机系统900可以与无线PAN(WPAN)(诸如例如,BLUETOOTH WPAN)、WI-FI网络、WI-MAX网络、蜂窝电话网络(诸如例如,全球移动通信系统(GSM)网络)、或其他合适的无线网络、或这些中的两个或更多个的组合进行通信。在适当的情况下,计算机系统900可以包括用于这些网络中的任一个的任何合适的通信接口912。在适当的情况下,通信接口912可以包括一个或更多个通信接口912。尽管本公开描述并示出了特定的通信接口,但是本公开设想了任何合适的通信接口。
在特定实施例中,总线914包括将计算机系统900的部件耦合到彼此的硬件、软件或两者。作为示例而不是作为限制,总线914可以包括加速图形端口(AGP)或其他图形总线、扩展工业标准架构(EISA)总线、前端总线(FSB)、HYPERTRANSPORT(HT)互连、工业标准架构(ISA)总线、INFINIBAND互连、低引脚数(LPC)总线、存储器总线,微通道架构(MCA)总线、外围部件互连(PCI)总线、PCI-Express(PCIe)总线、串行高级技术附件(SATA)总线、视频电子标准协会本地(VLB)总线、或任何其他合适的总线、或这些中的两个或更多个的组合。在适当的情况下,总线914可以包括一个或更多个总线914。尽管本公开描述并示出了特定总线,但是本公开设想了任何合适的总线或互连。
在本文,在适当的情况下,一个或更多个计算机可读非暂时性存储介质可以包括一个或更多个基于半导体的或其他集成电路(IC)(诸如例如,现场可编程门阵列(FPGA)或专用IC(ASIC))、硬盘驱动器(HDD)、混合硬盘驱动器(HHD)、光盘、光盘驱动器(ODD)、磁光盘、磁光盘驱动器、软盘、软盘驱动器(FDD)、磁带、固态驱动器(SSD)、RAM驱动器、安全数字(SECURE DIGITAL)卡或驱动器、任何其他合适的计算机可读非暂时性存储介质、或这些中的两个或更多个的任何合适组合。在适当的情况下,计算机可读非暂时性存储介质可以是易失性的、非易失性的或者易失性和非易失性的组合。
本文中,除非另有明确指示或通过上下文另有指示,否则“或”是包含性的而非排他性的。因此在本文,除非另有明确指示或通过上下文另有指示,否则“A或B”意指“A、B或两者”。此外,除非另有明确指示或通过上下文另有指示,否则“和”既是联合的又是各自的。因此在本文,除非另有明确指示或通过上下文另有指示,否则“A和B”意指“A和B,联合地或各自地”。
本公开的范围包括本领域中的普通技术人员将理解的对本文描述或示出的示例实施例的所有改变、替换、变化、变更和修改。本公开的范围不限于本文描述或示出的示例实施例。此外,尽管本公开将本文的相应实施例描述并示为包括特定的部件、元件、特征、功能、操作或步骤,但是这些实施例中的任何一个可以包括本领域中的普通技术人员将理解的在本文任何地方描述或示出的任何组件、元件、特征、功能、操作或步骤的任何组合或置换。此外,在所附权利要求中对适合于、被布置成、能够、被配置成、实现来、可操作来、或操作来执行特定功能的装置或系统或装置或系统的部件的引用包括该装置、系统、部件,无论它或那个特定功能是否被激活、开启或解锁,只要该装置、系统或部件是这样被调整、被布置、使能够、被配置、被实现、可操作的、或操作的。此外,尽管本公开将特定实施例描述或示为提供特定优点,但是特定实施例可以提供这些优点中的一些、全部或不提供这些优点。
Claims (20)
1.一种方法,包括:
由机器学习(ML)加速器的树形直接存储器存取(DMA)控制器接收存储器地址,所述存储器地址指示存储器中存储与机器学习模型相关联的权重集的位置;
由所述树形DMA控制器接收分布指令,所述分布指令指示所述ML加速器的多个张量处理器集群中的被选择来接收所述权重集以并行处理输入特征的不同分割部分的一个或更多个张量处理器集群;
从由所述存储器地址指示的所述存储器中的位置检索所述权重集;和
根据所述分布指令,经由树形DMA总线以寻址到所述一个或更多个张量处理器集群的至少一个DMA分组发送所述权重集。
2.根据权利要求1所述的方法,其中,所述多个张量处理器集群中的每一个包括:
多个张量处理器单元,所述多个张量处理器单元中的每一个被配置为使用所述权重集对所述输入特征执行神经网络算子,所述多个张量处理器单元中的每一个包括本地存储器;和
集群级控制器,所述集群级控制器被配置为:
根据所述分布指令,将所述权重集存储到所述多个张量处理器单元中的一个或更多个张量处理器单元的本地存储器中;
生成指示所述输入特征被处理的令牌;和
将所述令牌发送到所述树形DMA控制器。
3.根据权利要求2所述的方法,其中,所述多个张量处理器单元中的每一个经由所述树形DMA总线的多个子分支通信地耦合到所述树形DMA控制器。
4.根据权利要求1所述的方法,其中,所述至少一个DMA分组包括:
目标位图,所述目标位图指示被选择来接收用于处理所述输入特征的所述权重集的所述一个或更多个张量处理器集群;和
用于处理所述输入特征的所述权重集。
5.根据权利要求1所述的方法,还包括:
由所述ML加速器的DMA路由器根据所述分布指令将所述至少一个DMA分组导向所述一个或更多个张量处理器集群。
6.根据权利要求1所述的方法,其中,所述多个张量处理器集群中的每一个都经由所述树形DMA总线通信地耦合到所述树形DMA控制器。
7.根据权利要求1所述的方法,其中,所述分布指令包括以下至少一个:
广播分布,其中,所述多个张量处理器集群包括被选择来接收用于处理所述输入特征的所述权重集的所述一个或更多个张量处理器集群;
多播分布,其中,所述多个张量处理器集群的子集包括被选择来接收用于处理所述输入特征的所述权重集的所述一个或更多个张量处理器集群;以及
单播分布,其中,所述多个张量处理器集群中的单个张量处理器集群包括被选择来接收用于处理所述输入特征的所述权重集的所述一个或更多个张量处理器集群。
8.一个或更多个计算机可读非暂时性存储介质,包含软件,所述软件在被执行时能够操作来:
由机器学习(ML)加速器的树形直接存储器存取(DMA)控制器接收存储器地址,所述存储器地址指示存储器中存储与机器学习模型相关联的权重集的位置;
由所述树形DMA控制器接收分布指令,所述分布指令指示所述ML加速器的多个张量处理器集群中的被选择来接收所述权重集以并行处理输入特征的不同分割部分的一个或更多个张量处理器集群;
从由所述存储器地址指示的所述存储器中的位置检索所述权重集;和
根据所述分布指令,经由树形DMA总线以寻址到所述一个或更多个张量处理器集群的至少一个DMA分组发送所述权重集。
9.根据权利要求8所述的介质,其中,所述多个张量处理器集群中的每一个包括:
多个张量处理器单元,所述多个张量处理器单元中的每一个被配置为使用所述权重集对所述输入特征执行神经网络算子,所述多个张量处理器单元中的每一个包括本地存储器;和
集群级控制器,所述集群级控制器被配置为:
根据所述分布指令,将所述权重集存储到所述多个张量处理器单元中的一个或更多个张量处理器单元的本地存储器中;
生成指示所述输入特征被处理的令牌;和
将所述令牌发送到所述树形DMA控制器。
10.根据权利要求9所述的介质,其中,所述多个张量处理器单元中的每一个经由所述树形DMA总线的多个子分支通信地耦合到所述树形DMA控制器。
11.根据权利要求8所述的介质,其中,所述至少一个DMA分组包括:
目标位图,所述目标位图指示被选择来接收用于处理所述输入特征的所述权重集的所述一个或更多个张量处理器集群;和
用于处理所述输入特征的所述权重集。
12.根据权利要求8所述的介质,其中,所述介质还包括:
所述ML加速器的DMA路由器,所述DMA路由器被配置成根据所述分布指令将所述至少一个DMA分组导向所述一个或更多个张量处理器集群。
13.根据权利要求8所述的介质,其中,所述多个张量处理器集群中的每一个都经由所述树形DMA总线通信地耦合到所述树形DMA控制器。
14.根据权利要求8所述的介质,其中,所述分布指令包括以下至少一个:
广播分布,其中,所述多个张量处理器集群包括被选择来接收用于处理所述输入特征的所述权重集的所述一个或更多个张量处理器集群;
多播分布,其中,所述多个张量处理器集群的子集包括被选择来接收用于处理所述输入特征的所述权重集的所述一个或更多个张量处理器集群;以及
单播分布,其中,所述多个张量处理器集群中的单个张量处理器集群包括被选择来接收用于处理所述输入特征的所述权重集的所述一个或更多个张量处理器集群。
15.一种系统,包括:
编译器;
树形DMA总线;
多个张量处理器集群;和
树形直接存储器存取(DMA)控制器,所述树形DMA控制器经由所述树形DMA总线通信地耦合到所述多个张量处理器集群中的每一个,所述树形DMA控制器被配置成:
从所述编译器接收存储器地址,所述存储器地址指示存储器中存储与机器学习模型相关联的权重集的位置;
接收分布指令,所述分布指令指示所述多个张量处理器集群中被选择来接收所述权重集以并行处理输入特征的不同分割部分的一个或更多个张量处理器集群;
从由所述存储器地址指示的所述存储器中的位置检索所述权重集;和
根据所述分布指令,经由所述树形DMA总线以寻址到所述一个或更多个张量处理器集群的至少一个DMA分组发送所述权重集。
16.根据权利要求15所述的系统,其中,所述多个张量处理器集群中的每一个包括:
多个张量处理器单元,所述多个张量处理器单元中的每一个被配置为使用所述权重集对所述输入特征执行神经网络算子,所述多个张量处理器单元中的每一个包括本地存储器;和
集群级控制器,所述集群级控制器被配置为:
根据所述分布指令,将所述权重集存储到所述多个张量处理器单元中的一个或更多个张量处理器单元的本地存储器中;
生成指示所述输入特征被处理的令牌;和
将所述令牌发送到所述树形DMA控制器。
17.根据权利要求16所述的系统,其中,所述多个张量处理器单元中的每一个经由所述树形DMA总线的多个子分支通信地耦合到所述树形DMA控制器。
18.根据权利要求15所述的系统,其中,所述至少一个DMA分组包括:
目标位图,所述目标位图指示被选择来接收用于处理所述输入特征的所述权重集的所述一个或更多个张量处理器集群;和
用于处理所述输入特征的所述权重集。
19.根据权利要求15所述的系统,其中,所述系统还包括:
DMA路由器,所述DMA路由器被配置成根据所述分布指令将所述至少一个DMA分组导向所述一个或更多个张量处理器集群。
20.根据权利要求15所述的系统,其中,所述分布指令包括以下至少一个:
广播分布,其中,所述多个张量处理器集群包括被选择来接收用于处理所述输入特征的所述权重集的所述一个或更多个张量处理器集群;
多播分布,其中,所述多个张量处理器集群的子集包括被选择来接收用于处理所述输入特征的所述权重集的所述一个或更多个张量处理器集群;以及
单播分布,其中,所述多个张量处理器集群中的单个张量处理器集群包括被选择来接收用于处理所述输入特征的所述权重集的所述一个或更多个张量处理器集群。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/030,051 US20220092408A1 (en) | 2020-09-23 | 2020-09-23 | Neural network weight distribution using a tree direct-memory access (dma) bus |
US17/030,051 | 2020-09-23 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114254733A true CN114254733A (zh) | 2022-03-29 |
Family
ID=76305767
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111115407.5A Pending CN114254733A (zh) | 2020-09-23 | 2021-09-23 | 使用树形直接存储器存取(dma)总线的神经网络权重分布 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20220092408A1 (zh) |
EP (1) | EP3975056A1 (zh) |
CN (1) | CN114254733A (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20220188631A1 (en) * | 2020-12-16 | 2022-06-16 | Xmos Inc. | Artificial neural network implementation |
US11782757B2 (en) * | 2021-05-07 | 2023-10-10 | SiMa Technologies, Inc. | Scheduling off-chip memory access for programs with predictable execution |
US20220277399A1 (en) * | 2021-02-26 | 2022-09-01 | Intuit Inc. | Personalized transaction categorization |
US11500802B1 (en) * | 2021-03-31 | 2022-11-15 | Amazon Technologies. Inc. | Data replication for accelerator |
US11531633B2 (en) * | 2021-04-01 | 2022-12-20 | quadric.io, Inc. | Systems and methods for intelligently implementing concurrent transfers of data within a machine perception and dense algorithm integrated circuit |
WO2023177704A1 (en) * | 2022-03-16 | 2023-09-21 | F5, Inc. | Multi-destination dma for packet broadcast |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9081501B2 (en) * | 2010-01-08 | 2015-07-14 | International Business Machines Corporation | Multi-petascale highly efficient parallel supercomputer |
US9715470B1 (en) * | 2016-09-26 | 2017-07-25 | International Business Machines Corporation | Direct memory access between an accelerator and a processor using a coherency adapter |
US9959498B1 (en) * | 2016-10-27 | 2018-05-01 | Google Llc | Neural network instruction set architecture |
CN107895191B (zh) * | 2017-10-30 | 2022-02-22 | 上海寒武纪信息科技有限公司 | 一种信息处理方法及相关产品 |
GB2575293B (en) * | 2018-07-04 | 2020-09-16 | Graphcore Ltd | Data Through Gateway |
US11663461B2 (en) * | 2018-07-05 | 2023-05-30 | International Business Machines Corporation | Instruction distribution in an array of neural network cores |
US11502867B2 (en) * | 2019-08-01 | 2022-11-15 | Nvidia Corporation | Injection limiting and wave synchronization for scalable in-network computation |
-
2020
- 2020-09-23 US US17/030,051 patent/US20220092408A1/en active Pending
-
2021
- 2021-06-07 EP EP21177937.6A patent/EP3975056A1/en active Pending
- 2021-09-23 CN CN202111115407.5A patent/CN114254733A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US20220092408A1 (en) | 2022-03-24 |
EP3975056A1 (en) | 2022-03-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3975056A1 (en) | Neural network weight distribution using a tree direct-memory access (dma) bus | |
CN110197111B (zh) | 用于深度学习引擎的加速单元 | |
EP3533003B1 (en) | Exploiting input data sparsity in neural network compute units | |
US10509846B2 (en) | Accelerator for processing data | |
US20150324690A1 (en) | Deep Learning Training System | |
CN106503791A (zh) | 用于有效神经网络部署的系统和方法 | |
Fan et al. | M³vit: Mixture-of-experts vision transformer for efficient multi-task learning with model-accelerator co-design | |
CN111105023B (zh) | 数据流重构方法及可重构数据流处理器 | |
CN113469355B (zh) | 分布式系统中的多模型训练管道 | |
CN113435682A (zh) | 分布式训练的梯度压缩 | |
CN111465943A (zh) | 芯片上计算网络 | |
CN111783966A (zh) | 一种深度卷积神经网络硬件并行加速器的硬件装置及方法 | |
US11709783B1 (en) | Tensor data distribution using grid direct-memory access (DMA) controller | |
US20200226458A1 (en) | Optimizing artificial neural network computations based on automatic determination of a batch size | |
WO2023080976A1 (en) | Schedule-aware dynamically reconfigurable adder tree architecture for partial sum accumulation in machine learning accelerator | |
JP2022546271A (ja) | カーネルチューニングパラメータを予測するための方法及び装置 | |
Chen et al. | Cerebron: A reconfigurable architecture for spatiotemporal sparse spiking neural networks | |
US11494321B1 (en) | State buffer memloc reshaping | |
CN114662646A (zh) | 实现神经网络的方法和装置 | |
EP3971787A1 (en) | Spatial tiling of compute arrays with shared control | |
US20230376733A1 (en) | Convolutional neural network accelerator hardware | |
US11704562B1 (en) | Architecture for virtual instructions | |
CN111886605B (zh) | 针对多个输入数据集的处理 | |
US12001893B1 (en) | Distributed synchronization scheme | |
US20240143525A1 (en) | Transferring non-contiguous blocks of data using instruction-based direct-memory access (dma) |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |