CN114051618A - 用于对加速分布式处理进行流水线并行的系统和方法 - Google Patents
用于对加速分布式处理进行流水线并行的系统和方法 Download PDFInfo
- Publication number
- CN114051618A CN114051618A CN202080048246.XA CN202080048246A CN114051618A CN 114051618 A CN114051618 A CN 114051618A CN 202080048246 A CN202080048246 A CN 202080048246A CN 114051618 A CN114051618 A CN 114051618A
- Authority
- CN
- China
- Prior art keywords
- data
- neural network
- circuits
- layer
- circuitry
- 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/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/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
- G06N3/065—Analogue means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
-
- 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
-
- 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
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Computing Systems (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Neurology (AREA)
- Image Analysis (AREA)
Abstract
在本文中公开了一种系统、方法和设备,用于进行流水线并行以加速分布式学习网络图。针对神经网络的第一层的第一数据可以被存储在存储器中。包括第一多个处理元件(PE)电路的第一电路系统可以从存储器中读取第一数据,并且使用第一数据执行针对神经网络的第一层的计算,以生成第二数据。第一电路系统包括多个缓冲区,用于将所生成的第二数据输出作为到第二电路系统的输入,以执行针对神经网络的第二层的计算。第二电路系统包括第二多个PE电路,被配置为使用第二数据执行针对神经网络的第二层的计算。
Description
技术领域
本公开一般涉及神经网络,包括但不限于用于针对神经网络的AI加速器中的流水线并行的系统和方法。
背景技术
机器学习是在各种不同的计算环境中实现的,例如,包括计算机视觉、图像处理等。一些机器学习系统可以包含神经网络(例如,人工神经网络)。然而,从处理的角度和从能源效率两者的角度来看,这种神经网络在计算上可能是昂贵的。
发明内容
本文中所公开的各种实施例都涉及一种设备,用于进行流水线并行,以针对神经网络执行AI相关处理。设备包括存储器(例如,静态随机存取存储器),被配置为存储针对神经网络的第一层的第一数据。设备包括第一电路系统,具有第一多个处理元件(PE)电路,该第一PE电路被配置为从存储器中读取第一数据,并且使用第一数据针对神经网络的第一层执行计算,以生成第二数据。第一电路系统还包括多个缓冲区(例如,顺序和/或组合逻辑或设备),该多个缓冲区被配置为将所生成的第二数据输出作为到第二电路系统的输入,以执行针对神经网络的第二层的计算。第二电路系统包括第二多个PE电路,该第二电路系统被配置为使用第二数据执行针对神经网络的第二层的计算。
在一些实施例中,第一多个PE电路被配置为:在第二多个PE电路执行针对神经网络的第二层的计算时,执行针对神经网络的至少一个节点的计算。在一些实施例中,至少一个节点是来自神经网络的第三层或来自神经网络的第一层。在一些实施例中,多个缓冲区被配置为通过绕过进入或离开存储器的第二数据的任何传输,将所生成的第二数据输出作为到第二电路系统的输入。在一些实施例中,第二多个PE电路还被配置为使用第二数据来生成第三数据。在一些实施例中,第二多个PE电路还被配置为将所生成的第三数据存储到存储器。在一些实施例中,第二电路系统还包括多个缓冲区,该多个缓冲区被配置为将所生成的第三数据输出作为到第三电路系统的输入。
在一些实施例中,第一数据包括针对神经网络的第一层的权重或激活信息中的至少一个,并且第二数据包括针对神经网络的第二层的权重或激活信息中的至少一个。在一些实施例中,第一多个PE电路被配置为使用第一数据来执行卷积运算,并且第二多个PE电路被配置为使用第二数据来执行点积运算。在一些实施例中,第一电路系统和第二电路系统形成在同一半导体器件上。在一些实施例中,多个缓冲区被配置具有足够的能力来缓冲所生成的第二数据,并且将所生成的第二数据输出给第二电路系统。
本文中所公开的各种实施例都涉及一种方法,用于进行流水线并行,以针对神经网络执行AI相关处理。方法可以包括将神经网络的第一层的第一数据存储在存储器中。方法可以包括由第一多个处理元件(PE)电路从存储器中读取第一数据。方法可以包括由第一多个PE电路使用第一数据执行针对神经网络的第一层的计算,以生成第二数据。方法可以包括由第一多个PE电路的多个缓冲区,将所生成的第二数据提供作为到第二多个PE电路的输入,以执行针对神经网络的第二层的计算。方法可以包括由第二多个PE电路使用第二数据执行针对神经网络的第二层的计算。
在一些实施例中,方法包括:第二多个PE电路执行针对神经网络的第二层的计算时,由第一多个PE电路执行针对神经网络的至少一个节点的计算。在一些实施例中,至少一个节点是来自神经网络的第三层或来自神经网络的第一层。在一些实施例中,方法包括通过多个缓冲区,通过绕过进入或离开存储器的第二数据的任何传输,将所生成的第二数据提供作为到第二电路系统或多个PE电路的输入。在一些实施例中,方法包括:由第二多个PE电路,使用第二数据来生成第三数据。在一些实施例中,方法包括由第二多个PE电路将所生成的第三数据存储到存储器。在一些实施例中,方法包括由第二电路系统的多个缓冲区(例如,与第二多个PE电路对应的缓冲区)将所生成的第三数据提供作为到第三电路系统的输入。在一些实施例中,第一数据包括针对神经网络的第一层的权重或激活信息中的至少一个,并且第二数据包括针对神经网络的第二层的权重或激活信息中的至少一个。在一些实施例中,方法包括由第一多个PE电路使用第一数据来执行卷积运算,并且由第二多个PE电路使用第二数据来执行点积运算。
这些和其他方面和实施方式将在下面进行详细讨论。上面的信息和下面的详细描述包括各个方面和实现的说明性示例,并且提供概述或框架来理解所要求的方面和实施方式的性质和特征。图提供对各个方面和实施方式的图示和深化理解,并且并入本说明书中,而且构成本说明书的部分。将认识到,被描述为适合并入实施例中的任何特征都旨在概括到本发明的任何和所有方面和实施例。
附图说明
附图并不旨在按比例绘制。相同的附图标记和标记在各个附图中都指示相同的元素。为了清楚起见,不是每个组件都可以在每个图中标注出来。
图1A是根据本公开的示例实施方式的用于执行人工智能(AI)相关处理的系统的实施例的框图。
图1B是根据本公开的示例实施方式的用于执行人工智能(AI)相关处理的设备的实施例的框图。
图1C是根据本公开的示例实施方式的用于执行人工智能(AI)相关处理的设备的实施例的框图。
图1D示出了根据本公开的示例实施方式的代表计算系统的框图。
图2A是根据本公开的示例实施方式的用于进行流水线并行以针对神经网络14执行AI相关处理的设备的框图。
图2B是根据本公开的示例实施方式的用于进行流水线并行以针对神经网络执行AI相关处理的设备的框图。
图2C是流程图,图示了根据本公开的示例实施方式的用于进行流水线并行以针对神经网络执行AI相关处理的过程。
具体实施方式
在转向详细图示了某些实施例的图之前,应当理解,本公开并不限于说明书中所述或图中所示的细节或方法。还应当理解,本文中所使用的术语仅仅是以描述为目的,而不应当被视为限制。
为了阅读下面对本发明的各个实施例的描述,下面对本说明书的章节以及其对应的内容的描述可能是有帮助的:
-A节描述了对实践或实施本系统、方法和设备的实施例有用的环境、系统、配置和/或其他方面;以及
-B节描述了用于进行流水线并行以针对神经网络执行AI相关处理的设备、系统和方法的实施例。
A.用于人工智能相关处理的环境
在B节中讨论系统、设备和/或方法的实施例的细节之前,讨论对实践或实施系统、设备和/或方法的某些实施例有用的环境、系统、配置和/或其他方面可能是有帮助的。现在参照图1A,描绘了用于执行人工智能(AI)相关处理的系统的实施例。在简要概述中,系统包括一个或多个AI加速器108,其可以使用输入数据110来执行AI相关处理。虽然被称为AI加速器108,但有时也被称为神经网络加速器(NNA)、神经网络芯片或硬件、AI处理器、AI芯片等。(多个)AI加速器108可以根据输入数据110和/或参数128(例如,权重和/或偏差信息)执行AI相关处理,以输出或提供输出数据112。AI加速器108可以包括和/或实施一个或多个神经网络114(例如,人工神经网络)、一个或多个处理器24和/或一个或多个存储设备126。
上述元件或组件中的每个都在硬件或硬件和软件的组合中实施。例如,这些元件或组件中的每个都可以包括任何应用、程序、库、脚本、任务、服务、过程或任何类型和形式的可执行指令,这些指令在硬件上执行,诸如电路,该电路可以包括数字和/或模拟元件(例如,一个或多个晶体管、逻辑门、寄存器、存储器设备、电阻元件、导电元件、电容元件)。
输入数据110可以包括任何类型或形式的数据,用于配置、调整、训练和/或激活(多个)AI加速器108的神经网络和/或由(多个)处理器124进行处理。神经网络114有时被称为人工神经网络(ANN)。配置、调整和/或训练神经网络可以指或者包括机器学习过程,其中训练数据集(例如,作为输入数据110),诸如历史数据,被提供给神经网络,以进行处理。调整或配置可以指或包括对神经网络114进行训练或处理,以允许神经网络提高准确性。例如,调整或配置神经网络114可以包括使用架构设计、形成、构建、合成和/或建立神经网络,这些架构已经被证明对神经网络114所需的问题类型或目标是成功的。在某些情况下,一个或多个神经网络114可以在相同或相似的基线模型启动,但是在调整、训练或学习过程期间,神经网络114的结果可以完全不同,使得每个神经网络114都可以被调整,以处理特定类型的输入,并且生成特定类型的输出,与处于基线模型或针对不同的目标或目的而被调整或训练的不同神经网络相比,该输出具有较高水平的准确性和可靠性。调整神经网络114可以包括针对每个神经网络114设置不同的参数128,以不同的方式针对每个神经网络114微调参数114或分配不同的权重(例如,超参数或学习速率)、张量流量等。因此,基于调整或训练过程以及(多个)神经网络和/或系统的目标,针对(多个)神经网络114设置适当的参数128,可以提高整个系统的性能。
AI加速器108的神经网络114可以包括任何类型的神经网络,例如,包括卷积神经网络(CNN)、深度卷积网络、前馈神经网络(例如,多层感知器(MLP))、深度前馈神经网络、径向基函数神经网络、科荷伦(“Kohonen”)自组织神经网络、递归神经网络、模块化神经网络、长期/短期存储器神经网络。(多个)神经网络114可以被部署或用于执行数据(例如,图像、音频、视频)处理、对象或特征识别、推荐功能、数据或图像分类、数据(例如,图像)分析等,诸如自然语言处理。
作为示例,并且在一个或多个实施例中,神经网络114可以被配置为或包括卷积神经网络。卷积神经网络可以包括一个或多个卷积小区(或池化层)和内核,其可以各自用于不同的目的。卷积神经网络可以包括、包含和/或使用卷积内核(有时被简单地称为“内核”)。卷积内核可以处理输入数据,并且池化层可以使用例如非线性函数(诸如,最大化)简化数据,从而减少不必要的特征。包括卷积神经网络的神经网络114可以促进图像、音频或任何数据识别或其他处理。例如,输入数据110(例如,来自传感器)可以传递给卷积神经网络的卷积层,这些卷积层形成漏斗,压缩输入数据110中所检测到的特征。卷积神经网络的第一层可以检测第一特性,第二层可以检测第二特性等等。
卷积神经网络可以是深度前馈类型的人工神经网络,被配置为分析视觉图像、音频信息和/或任何其他类型或形式的输入数据110。卷积神经网络可以包括多层感知器,被设计为使用最小的预处理。基于它们的共享权重架构和平移不变性特性,卷积神经网络可以包括或被称为移位不变或空间不变人工神经网络。与其他数据分类/处理算法相比,卷积神经网络可以使用相对较少的预处理,因此卷积神经网络可以自动学习过滤器,这些过滤器可以是针对其他数据分类/处理算法而被手工设计的,从而提高与配置、建立或设置神经网络114相关联的效率,从而提供相对于其他数据分类/处理技术的技术优势。
神经网络114可以包括神经元或节点的输入层116和输出层122。神经网络114还可以具有一个或多个隐藏层118、119,可以包括神经元或节点的卷积层、池化层、全连接层和/或归一化层。在神经网络114中,每个神经元都可以接收来自前一层中的某些位置的输入。在全连接层中,每个神经元都可以接收来自前一层的每个元素的输入。
神经网络114中的每个神经元都可以通过将某种函数应用于来自前一层中的接收域的输入值来计算输出值。应用于输入值的函数由权重向量和偏差(通常是实数)来指定。神经网络114中的学习(例如,在训练阶段期间)可以通过对偏差和/或权重进行增量调整来进行。权重向量和偏差可以被称为过滤器,并且可以表示输入的某些特征(例如,特定形状)。卷积神经网络的显著特征是许多神经元可以共享相同的过滤器。这减少了内存占用,因为可以在共享该过滤器的所有接收域之间使用单一偏差或单一权重向量,而不是每个接收域都具有其自己的偏差和权重向量。
例如,在卷积层中,系统可以将卷积运算应用于输入层116,以将结果传递给下一层。卷积模拟单个神经元对输入刺激的响应。每个卷积神经元都只能够处理针对其接收域的数据。与全连接前馈神经网络相比,使用卷积运算可以减少神经网络114中所使用的神经元的数量。因此,卷积运算可以减少自由参数的数量,允许网络利用更少的参数变得更深。例如,不管输入数据(例如,图像数据)大小,大小为5×5的平铺区(每个都有相同的共享权重)都只可以使用25个可学习参数。以这种方式,具有卷积神经网络的第一神经网络114可以通过使用反向传播来解决对具有多个层的传统多层神经网络进行训练时的梯度消失或激增问题。
神经网络114(例如,被配置具有卷积神经网络)可以包括一个或多个池化层。一个或多个池化层可以包括局部池化层或全局池化层。池化层可以将一层处神经元集群的输出组合为下一层中的单一神经元。例如,最大池化可以使用前一层的神经元集群中的每个神经元的最大值。另一个示例是平均池化,其可以使用前一层的神经元集群中的每个神经元的平均值。
神经网络114(例如,被配置具有卷积神经网络)可以包括全连接层。全连接层可以将一层中的每个神经元连接到另一层中的每个神经元。神经网络114可以在卷积层中被配置具有共享权重,该共享权重可以指用于层中的每个接收域的相同过滤器,从而减少内存占用并且提高第一神经网络114的性能。
隐藏层118、119可以包括过滤器,被调整或被配置以基于输入数据(例如,传感器数据,例如,来自虚拟现实系统)检测信息。当系统逐步通过神经网络114(例如,卷积神经网络)中的每一层时,系统可以将输入从第一层转换并且将所转换的输入用以输出给第二层等等。基于正在被检测、处理和/或计算的对象或信息的类型以及输入数据110的类型,神经网络114可以包括一个或多个隐藏层118、119。
在一些实施例中,卷积层是神经网络114(例如,被配置为CNN)的核心构建块。层的参数128可以包括可学习过滤器集(或内核),这些过滤器具有小的接收域,但是延伸通过输入量的整个深度。在正向传递过程期间,每个过滤器都跨输入量的宽度和高度来卷积,以计算过滤器的条目与输入之间的点积,并且产生该过滤器的2维激活映射。因此,神经网络114可以学习过滤器,当它在输入中的某个空间位置处检测到某种特定类型的特征时,这些过滤器就会激活。沿着深度维度来堆叠针对所有过滤器的激活映射,会形成卷积层的完整输出量。因此,输出量中的每个条目也都可以被解释为神经元的输出,该神经元注视输入中的小区域并且与同一激活映射中的神经元共享参数。在卷积层中,神经元可以接收来自前一层的受限子区域的输入。通常,子区域具有正方形(例如,大小为5乘5)。神经元的输入区域被称为其接收域。因此,在全连接层中,接收域是整个前一层。在卷积层中,接收区域可以比整个前一层更小。
第一神经网络114可以被训练以检测、分类、分割和/或转换输入数据110(例如,通过基于输入数据110来检测或确定对象、事件、词语和/或其他特征的概率)。例如,神经网络114的第一输入层116可以接收输入数据110,处理输入数据110以将数据转换为第一中间输出,并且将第一中间输出转发给第一隐藏层118。第一隐藏层118可以接收第一中间输出,处理第一中间输出以将第一中间输出转换为第二中间输出,并且将第二中间输出转发给第二隐藏层119。例如,第二隐藏层119可以接收第二中间输出,处理第二中间输出以将第二中间输出转换为第三中间输出,并且将第三中间输出转发给输出层122。输出层122可以接收第三中间输出,处理第三中间输出以将第三中间输出转换为输出数据112,并且转发输出数据112(例如,可能转发给后处理引擎,用于呈现给用户、用于存储等等)。作为示例,输出数据112可以包括对象检测数据、增强/转换/强化数据、推荐、分类和/或分段数据。
再次参照图1A,AI加速器108可以包括一个或多个存储设备126。存储设备126可以被设计或实现,以存储、保存或维护与(多个)AI加速器108相关联的任何类型或形式的数据。例如,数据可以包括由(多个)加速器108接收到的输入数据110和/或输出数据112(例如,在被输出给下一个设备或处理阶段之前)。数据可以包括中间数据,用于或来自(多个)神经网络114和/或(多个)处理器124的任何处理阶段。数据可以包括一个或多个操作数,用于输入给(多个)神经网络114的神经元并且在其上进行处理,该操作数可以从存储设备126中读取或访问。例如,数据可以包括针对(多个)神经网络114的一个或多个神经元(或节点)和/或层的输入数据、权重信息和/或偏差信息、激活功能信息和/或参数128,这些信息可以存储在存储设备126中并且从存储设备126中读取或访问。数据可以包括来自(多个)神经网络114的神经元的输出数据,该输出数据可以被写入和存储在存储设备126中。例如,数据可以包括针对(多个)神经网络114的一个或多个神经元(或节点)和/或层的激活数据、改进或更新数据(例如,来自训练阶段的权重信息和/或偏差信息,例如,激活功能信息和/或参数128),这些数据可以传输或写入并且存储在存储设备126中。
在一些实施例中,AI加速器108可以包括一个或多个处理器124。一个或多个处理器124可以包括任何逻辑、电路和/或处理组件(例如,微处理器),用于预处理针对(多个)神经网络114或(多个)AI加速器108中的任何一个或多个的输入数据,和/或用于后处理针对(多个)神经网络114或(多个)AI加速器108中的任何一个或多个的输出数据。一个或多个处理器124可以提供逻辑、电路系统、处理组件和/或功能性,用于配置、控制和/或管理(多个)神经网络114或(多个)AI加速器108的一个或多个操作。例如,处理器124可以接收与神经网络114相关联的数据或信号,以控制或降低功耗(例如,经由实现神经网络114的操作的电路系统上的时钟门控控制)。作为另一示例,处理器124可以划分和/或重新设置数据,用于单独处理(例如,在AI加速器108的各个组件处,例如,并行)、顺序处理(例如,在AI加速器108的同一组件上,在不同的时间或阶段)或存储在存储设备的不同存储器切片或不同的存储设备中。在一些实施例中,(多个)处理器124可以将神经网络114配置为针对特定上下文操作,提供某种类型的处理和/或解决特定类型的输入数据,例如通过标识、选择特定权重、激活功能和/或参数信息和/或将其加载到神经网络114的神经元和/或层。
在一些实施例中,AI加速器108被设计和/或实施,以操纵或处理深度学习和/或AI工作负荷。例如,AI加速器108可以针对人工智能应用提供硬件加速,包括人工神经网络、机器视觉和机器学习。AI加速器108可以被配置用于操作,以操纵机器人相关、物联网(IoT)相关和其他数据密集型或传感器驱动的任务。AI加速器108可以包括多核或多处理元件(PE)设计,并且可以并入各种类型和形式的设备中,诸如人工现实(例如,虚拟、强化或混合现实)系统、智能手机、平板计算机和计算机。AI加速器108的某些实施例可以包括至少一个数字信号处理器(DSP)、协处理器、微处理器、计算机系统、处理器的异构计算配置、图形处理单元(GPU)、现场可编程门阵列(FPGA)和/或专用集成电路(ASIC)或使用它们来实施。AI加速器108可以是基于晶体管、基于半导体和/或基于量子计算的设备。
现在参照图1B,描绘了用于执行AI相关处理的设备的示例实施例。在简要概述中,设备可以包括或对应于AI加速器108,例如具有上面结合图1A所描述的一个或多个特征。AI加速器108可以包括一个或多个存储设备126(例如,存储器,诸如,静态随机存取存储器(SRAM)设备)、一个或多个缓冲区、多个处理器元件(PE)电路或它们的阵列、其他逻辑或电路系统(例如,加法器电路系统)和/或其他结构或构造(例如,互连、数据总线、时钟电路系统、(多个)电力网络)。每个上述元件或组件都在硬件或硬件和软件的至少组合中实施。例如,硬件可以例如包括电路元件(例如,一个或多个晶体管、逻辑门、寄存器、存储器设备、电阻元件、导电元件、电容元件和/或电线或导电连接器)。
在AI加速器108中所实现的神经网络114(例如,人工神经网络)中,神经元可以采取各种形式,并且可以被称为处理元件(PE)或PE电路。神经元可以实施为相应的PE电路,并且可以在神经元处发生的处理/激活可以在PE电路处被执行。PE连接到特定网络模式或阵列中,其中不同的模式服务于不同的功能目的。人工神经网络中的PE以电方式操作(例如,在半导体实施方式的实施例中),并且可以是模拟的、数字的或混合的。为了与生物突触的效果平行,PE之间的连接可以被赋予乘法权重,该权重可以被校准或“训练”以产生正确的系统输出。
PE可以根据下列方程(例如表示神经元的McCulloch-Pitts模型)来限定:
ζ=∑iwixi (I)
y=σ(ζ) (2)
其中ζ是输入的加权和(例如,输入向量和抽头权重向量的内积),并且σ(ζ)是加权和的函数。其中权重和输入元素形成向量w和x,ζ加权和成为简单的点积:
ζ=w·X (3)
这可以被称为激活功能(例如,在阈值比较的情况下)或传递功能。在一些实施例中,一个或多个PE可以被称为点积引擎。到神经网络114的输入(例如,输入数据110)x可以来自输入空间,并且输出(例如,输出数据112)是输出空间的部分。对于一些神经网络,输出空间Y可以与{0,1}一样简单,或它可以是复杂的多维(例如多通道)空间(例如,对于卷积神经网络)。神经网络倾向于在输入空间中具有一个每自由度输入,并且在输出空间中具有一个每自由度输出。
在一些实施例中,PE可以被设置和/或实施为脉动阵列。脉动阵列可以是耦合数据处理单元(DPU)(诸如,PE,被称为小区或节点)的网络(例如,同构网络)。例如,每个节点或PE可以根据从其上游邻居接收到的数据来独立计算部分结果,可以将结果存储在自身内,并且可以将结果传递到下游。脉动阵列可以是硬连线的或被配置用于特定应用的软件。节点或PE可以是固定的和相同的,并且脉动阵列的互连可以是可编程的。脉动阵列可以依赖于同步数据传输。
再次参照图1B,到PE 120的输入x可以是输入流132的部分,该输入流132是从存储设备126(例如SRAM)读取或访问的。输入流132可以指向一行(水平库或组)PE,并且可以跨一个或多个PE来共享,或被划分为数据部分(重叠或不重叠的数据部分)作为对应PE的输入。权重流(例如,从存储设备126中读取)中的权重134(或权重信息)可以指向或提供给列(垂直库或组)。列中的PE中的每个PE都可以共享相同的权重134或者接收相应的权重134。针对每个目标PE的输入和/或权重都可以直接被路由(例如,从存储设备126)到目标PE(例如,不经过(多个)其他PE),或可以通过一个或多个PE(例如沿着PE的行或列)路由到目标PE。每个PE的输出都可以被直接路由出PE阵列(例如,不经过(多个)其他PE),或可以通过一个或多个PE(例如,沿着PE的列)路由以退出PE阵列。PE每个列的输出可以在对应列的加法器电路系统处求和或相加,并且被提供给对应列PE的缓冲区130。(多个)缓冲区130可以将接收到的输出提供、传输、路由、写入和/或存储到存储设备126。在一些实施例中,由存储设备126存储的输出(例如,来自神经网络的一层的激活数据)可以从存储设备126中取回或读取,并且用作PE120的阵列的输入,用于在稍后进行(神经网络的随后层的)处理。在某些实施例中,存储设备126所存储的输出可以从存储设备126中取回或读取,作为AI加速器108的输出数据112。
现在参照图1C,描绘了用于执行AI相关处理的设备的一个示例实施例。在简要概述中,设备可以包括或对应于AI加速器108,例如具有上面结合图1A和图1B所描述的一个或多个特征。AI加速器108可以包括一个或多个PE 120、其他逻辑或电路系统(例如加法器电路系统)和/或其他结构或构造(例如,互连、数据总线、时钟电路系统、(多个)电力网络)。每个上述元件或组件都在硬件或硬件和软件的至少组合中实现。例如,硬件可以例如包括电路元件(例如,一个或多个晶体管、逻辑门、寄存器、存储器设备、电阻元件、导电元件、电容元件和/或电线或导电连接器)。
在一些实施例中,PE 120可以包括一个或多个乘法累加(MAC)单元或电路140。一个或多个PE有时可以被称为(单独或共同)MAC引擎。MAC单元被配置为执行(多个)乘法累加运算。MAC单元可以包括乘法器电路、加法器电路和/或累加器电路。乘法累加运算计算两个数字的乘积,并且将该乘积添加到累加器。MAC运算可以结合累加器操作数a以及输入b和c如下表示:
a←a+(b×c) (4)
在一些实施例中,MAC单元140可以包括在组合逻辑中所实施的乘法器,然后是加法器(例如,其包括组合逻辑)和存储结果的累加器寄存器(例如,其包括顺序和/或组合逻辑)。累加器寄存器的输出可以反馈到加法器的一个输入,以便在每个时钟周期,乘法器的输出都可以被添加到累加器寄存器。
如上所述,MAC单元140可以执行乘法和加法功能两者。MAC单元140可以分两个阶段操作。MAC单元140可以首先在第一阶段计算给定数字(输入)的乘积,然后转发针对第二阶段操作(例如,加法和/或累加)的结果。n位MAC单元140可以包括n位乘法器、2n位加法器和2n位累加器。MAC单元140(例如,在PE中)阵列或多个MAC单元140可以被布置在脉动阵列中,用于并行集成、卷积、相关、矩阵乘法、数据分类和/或数据分析任务。
本文中所描述的各个系统和/或设备可以在计算系统中实施。图1D示出了代表计算系统150的框图。在一些实施例中,图1A的系统可以形成计算系统150的(多个)处理单元156(或处理器156)的至少部分。例如,计算系统150可以实施为设备(例如,消费设备),诸如智能电话、其他移动电话、平板计算机、可穿戴计算设备(例如,智能手表、眼镜、头戴式显示器)、桌上型计算机、膝上型计算机,或用分布式计算设备实施。计算系统150可以被实施来提供VR、AR、MR体验。在一些实施例中,计算系统150可以包括传统的、专门的或定制的计算机组件,诸如处理器156、存储设备158、网络接口151、用户输入设备152和用户输出设备154。
网络接口151可以提供到局域网/广域网(例如,互联网)的连接,(本地/远程)服务器或后端系统也连接到该局域网/广域网(例如,互联网)。网络接口151可以包括有线接口(例如,以太网)和/或无线接口,该无线接口实施各种RF数据通信标准,诸如Wi-Fi、蓝牙或蜂窝数据网络标准(例如,3G、4G、5G、LTE等)。
用户输入设备152可以包括任何设备(或多个设备),经由该设备,用户可以将信号提供给计算系统150;计算系统150可以将信号解释为指示特定的用户请求或信息。用户输入设备152可以包括以下任何一项或全部项:键盘、触摸板、触摸屏、鼠标或其他指向设备、滚轮、点击轮、拨号盘、按钮、开关、小键盘、麦克风、传感器(例如,运动传感器、眼动传感器等)等等。
用户输出设备154可以包括任何设备,经由该设备,计算系统150可以将信息提供给用户。例如,用户输出设备154可以包括显示器,用于显示由计算系统150生成或传送给计算系统150的图像。显示器可以包含各种图像生成技术,例如液晶显示器(LCD)、发光二极管(LED),包括有机发光二极管(OLED)、投影系统、阴极射线管(CRT)等以及支持电子设备(例如,数模转换器或模数转换器、信号处理器等)。可以使用设备,诸如充当输入和输出设备的触摸屏。除了或代替显示器,可以提供用户输出设备154。示例包括指示灯、扬声器、触觉“显示”设备、打印机等等。
一些实施方式包括电子组件,诸如微处理器、存储装置和存储器,将计算机程序指令存储在非暂态计算机可读存储介质中。本说明书中所描述的许多特征可以实现为过程,这些过程被指定为在计算机可读存储介质上编码的程序指令集。当这些程序指令由一个或多个处理器执行时,它们使处理器执行程序指令中所指示的各种操作。程序指令或计算机代码的示例包括机器代码(诸如,由编译器产生)以及文件(包括高级代码),这些文件由计算机、电子组件或微处理器使用解释器来执行。通过合适的编程,处理器156可以针对计算系统150提供各种功能性,包括由服务器或客户端执行的本文中所描述的任何功能性或与消息管理服务相关联的其他功能性。
将认识到,计算系统150是说明性的,并且变化和修改是可能的。结合本公开所使用的计算机系统可以具有这里没有具体描述的其他能力。进一步地,虽然计算系统150参考特定块进行了描述,但是要理解,这些块是为了方便描述而被限定的,并不旨在指组件部分的特定物理布置。例如,不同的框可以位于相同的设施中,位于相同的服务器机架中或位于相同的主板上。进一步地,块不需要与物理上不同的组件对应。块可以被配置为执行各种操作,例如通过编程处理器或提供适当的控制电路系统,并且各种块可以或不可以重新配置,这取决于如何获得初始配置。本公开的实施方式可以在各种装置中实现,包括使用电路系统和软件的任何组合来实施的电子设备。
B.用于进行流水线并行以针对神经网络执行AI相关处理的方法和设备
在本文中公开了系统、方法和设备的实施例,用于进行流水线并行以针对神经网络执行AI相关处理,诸如加速分布式学习网络图中的处理。在一些方面中,本公开涉及实施神经网络加速器(NNA),这些加速器支持跨神经网络的至少两层的流水线并行。如上所述,神经网络可以包括两个或更多个的层。在一些实现中,针对神经网络的第一层所计算的输出数据(或激活数据)是从本地缓冲区被写入存储器(例如,SRAM)中的。存储器中的输出数据随后被从存储器中读取并且被提供(例如,作为输入操作数)到另一(或同一)MAC引擎或NNA(例如,点积引擎或矩阵乘法加速器,包括多个PE)中,用于针对神经网络的第二层的计算。这些存储器读取和写入操作可以是频繁的,涉及大量数据传输,并且导致大量功耗(例如,在芯片上,例如,在头戴式显示单元中)。
目前的技术解决方案可以实施AI加速器链接或流水线,以将第一层输出数据从第一AI加速器108(例如,第一PE 120阵列)的本地缓冲区直接发送给第二AI加速器108(例如,第二PE阵列),从而绕过存储器读取和写入操作。例如,这种AI加速器链接或流水线可以支持层类型,该层类型的第一层输出数据可以适合于本地缓冲区(具有足够的缓冲能力,而不需要附加的存储器存储)来进行第二层处理。在一些实施例中,例如,除了用潜在未利用/未充分利用的PE实施单个AI加速器108,两个或更多个更小(但是被更有效地利用)的AI加速器108可以使用相同或类似的PE电路总数量以链接配置来实施。
根据本文中所描述的实施方式,目前的技术解决方案可以支持流水线并行,其中神经网络的两个(或更多个)的层的操作并行运行或执行,也在流水线中运行或执行(使得一层的输出可以被直接提供到下一层中)。因此,目前的技术解决方案可以通过并行处理来提供更好的性能,并且可以绕过对存储器的读取和写入操作(例如,在神经网络的层之间),从而为处理吞吐量和/或能源效率提供了改进。目前的技术解决方案可以允许将基于分布式学习的应用被部署在这种多加速器设备上,这提供了在定制的节能硬件上并行运行的高效的多层机器学习的好处。根据技术解决方案的实施方式,神经网络的层是流水线或链接的,使得一层可以将其输出直接发送作为到下一层的输入,这可以通过避免存储器相关的操作和/或业务来节省电力。也可以实现节能,这与使用适合某个应用的较小PE集(而不是较大的PE集)来执行AI相关处理(例如,组卷积)的计算减少成比例。
现在参照图2A和图2B,描绘了用于进行流水线并行以执行AI相关处理的设备200的框图。图2A和图2B中所描绘的至少一些组件可以与图1B中所描绘和上面所描述的组件相似。例如,设备200可以是或包括AI加速器108。设备200可以包括多个处理元件(PE)电路202或处理元件(PE)电路202的阵列,在某些方面可以与上面在A节中所描述的(多个)PE电路120相似或相同。类似地,设备200可以包括和/或使用存储设备204、(多个)缓冲区206和权重208,在某些方面可以分别与上述存储设备124、(多个)缓冲区130和权重134相似或相同。如下面更详细地描述的,存储设备204可以被配置为存储针对神经网络的第一层的数据。(多个)PE电路202可以被配置为从存储设备204中读取数据,并且执行针对神经网络的第一层的计算,以生成数据(例如,输出数据或激活数据)。(多个)缓冲区206可以被配置为将所生成的数据输出、指向、传达、发送和/或提供给(多个)其他PE电路202(例如,如图2B中所示)。(多个)那些其他PE电路202可以被配置为使用所生成的数据作为输入,执行针对神经网络的第二(例如,不同的或下一)层的计算。
上述元件或组件中的每个都在硬件、或者硬件和软件的组合中实施。例如,这些元件或组件中的每个都可以包括任何应用、程序、库、脚本、任务、服务、过程或任何类型和形式的可执行指令,这些指令在硬件上执行,诸如电路系统,可以包括数字和/或模拟元件(例如,一个或多个晶体管、逻辑门、寄存器、存储器设备、电阻元件、导电元件、电容元件)。
在示例实施例中,设备200被示出为包括存储设备204(例如,存储器)。存储设备204可以是或包括设备200的任何设备、组件、元件或子系统,该设备200被设计或实施来接收、存储数据和/或提供对数据的访问。存储设备204可以通过将数据写入存储设备204中的存储器位置(由存储器地址标识)来存储数据。随后可以从存储设备204中取回数据(例如,通过PE电路202或设备200的其他组件)。在一些实施方式中,存储设备204可以包括静态随机存取存储器(SRAM)或者任何其他类型或形式的存储器、存储寄存器或存储驱动器。存储设备204可以被设计或实施,以存储针对神经网络的数据(例如,针对神经网络的各个层的数据或信息、针对神经网络的对应层内各个节点的数据或信息等)。例如,数据可以包括针对神经网络的一个或多个神经元(或节点)和/或层的激活(或输入)数据或信息、改进或更新数据(例如,来自训练阶段的权重信息和/或偏差信息,例如,激活功能信息和/或其他参数),可以被传输给存储设备204或被写入存储设备204并且被存储在存储设备204中。如下面更详细地描述的,(第一AI加速器的)PE电路202可以被配置为使用来自存储设备204的数据,以从神经网络生成输出。
设备200被示出为包括多个PE电路202。在一些实施例中,设备200可以包括第一组PE电路202A和第二组PE电路202B。在一些实施例中,第一组PE电路202A和第二组PE电路202B可以在同一半导体器件或电子芯片上被配置、设置、合并或以其他方式形成。每个PE电路202在某些方面都可以与上述PE电路120相似。PE电路202可以被设计或实施,以从数据源读取输入数据,并且执行一个或多个计算(例如,使用来自权重流208的权重数据、偏差信息、参数和/或内核信息),以生成相应的数据。输入数据可以是输入流(例如,从存储设备204接收或读取)或激活/输入流(例如,来自神经网络的前一层或节点)等。作为一个示例,第一组PE电路202A可以被配置为从存储设备204中读取数据(例如,权重数据208),并且使用输入数据执行针对神经网络的第一层的计算,以生成输出(例如,针对神经网络的第二层的激活/输入数据)。第一组PE电路202A可以被配置为将所生成的输出或激活数据传递给(多个)缓冲区206。(多个)缓冲区206可以被配置为将激活数据(例如,作为激活流)传输、中继、排队、缓冲、指向、提供或以其他方式输出给第二组PE电路202B。
当第一组PE电路202A执行针对随后的输入数据(或输入流)的计算时,第二组PE电路202B可以被配置为使用从第一组PE电路202A接收的激活数据(如下面更详细地描述的)执行针对神经网络的第二层(并行)的计算。因此,除了将所生成的数据(例如,由第一层生成)从(多个)缓冲区206写入存储设备204(例如,用于第二组PE电路202B进行后续取回),第一组PE电路202A可以被配置为将所生成的数据提供给(多个)缓冲区206,该(多个)缓冲区206转而将所生成的数据直接传递给第二组PE电路202B。这些实施例可以通过在针对神经网络进行处理期间绕过对存储设备204的读取和/或写入操作来降低能耗。进一步地,由于第一组PE电路202A和第二组PE电路202B并行执行多层计算,整体处理吞吐量的提高可以通过针对神经网络的对应层的这种并行计算来实现。
PE电路202可以被配置为执行针对神经网络的至少一个节点的计算。例如,并且如上面在A节中更详细地描述的,神经网络可以包括神经元或节点的输入层和输出层以及一个或多个隐藏层(例如,卷积层、池化层、全连接层和/或归一化层)。每层都可以包括多个神经元或节点。每个节点都可以接收来自前一层中的一些位置的输入(例如,输入数据或激活数据等)。在全连接层中,每个神经元都可以接收来自前一层的每个元件的输入。神经网络中的每个神经元都可以通过将某种函数应用于来自前一层中的接收域的输入值来计算输出值。应用于输入值的函数可以由权重向量和偏差(通常是实数)指定。权重向量和偏差可以被称为过滤器,并且可以表示输入的某些特征。
在一些实施例中,第一组PE电路202A可以被配置为执行针对神经网络的(例如,第一层的)至少一个节点的计算。第一组PE电路202A可以被配置为执行针对神经网络的第一层的节点中的每个节点的计算。第一层可以包括多个节点(神经元)。来自第一组PE电路202A的至少一个PE电路202可以被配置为执行针对来自第一层的所有节点或节点子集的计算。在一些实施例中,第一组PE电路202A可以被配置为执行针对神经网络的第一层的单个节点的计算。在某些实施例中,PE电路202A中的一个电路可以被配置为执行针对来自第一层的对应节点的计算,而另一PE电路202A可以被配置为执行针对来自第一层的不同节点的计算(例如,来自第一组202A的每个PE电路202A都执行针对第一层的专用节点的计算)。类似地,第二组PE电路202B可以被配置为执行针对神经网络的第二层的计算(例如,PE电路202B子集可以执行针对神经网络的一个节点的计算,或专用PE电路202B可以执行针对神经网络的相应节点的计算,或所有PE电路202B都可以执行针对神经网络的单个节点的计算,等等)。
在一些实施例中,神经网络的层中的每层都可以包括对应组的PE电路202(例如,针对第一层的第一组PE电路202A、针对第二层的第二组PE电路202B、针对第三层的第三组PE电路202等等)。在一些实施例中,PE电路202中的一些电路(例如,在PE电路组202A、202B内)可以专门用于操纵针对神经网络的特定节点的处理。例如,PE电路202A中的一些电路可以被分配或映射到第一层内的(多个)节点,而其他PE电路202A可以被分配或映射到第三层内的(多个)节点。在一些实施例中,第一组PE电路202A可以在第一时间窗口期间,针对第一层的第一节点(或第一节点子集)执行处理,针对第一节点(或第一节点子集)生成(多个)第一输出,然后在第二/随后的时间窗口期间,针对第一层的第二节点(或第二节点子集)执行处理,并且针对第二节点(或第二节点子集)生成(多个)第二输出。第二组PE电路202B可以接收(多个)第一输出,并且在第二时间窗口期间,针对神经网络的第二层的第一节点(或第一节点子集)来执行处理,针对第二层的第一节点(或第一节点子集)生成(多个)第一输出,然后在第三时间窗口期间针对第二层的第二节点(或第二节点子集)执行处理,并且针对第二层的第二节点(或第二节点子集)生成(多个)第二输出。在这方面,神经网络可以包括一个或多个节点的层,并且PE电路202可以被配置为针对节点和/或层执行流水线和并行计算两者。
缓冲区206可以被配置为输出所生成的数据(例如,从PE电路202接收)。在一些实施例中,PE电路202可以将所生成的数据传输、传送、传递、传达、指向或以其他方式提供给缓冲区206(例如,直接绕过其他电路202,或通过其他PE电路202被路由)。在一些实施例中,缓冲区206包括顺序设备(例如,寄存器或触发器),这些设备被定时和/或启用,以传输、移位或输出所生成的数据。例如,缓冲区206可以被配置为保存数据一段时间,这段时间可以与时钟周期对应(例如,在一定的持续时间或时间量之后提供数据作为输出)。在一些实施例中,缓冲区206可以是或包括实施中继器(或放大器)的组合逻辑。如此,缓冲区206可以被配置为将由缓冲区206接收的数据中继到另一电路系统或子系统(例如,中继给第二组PE电路202B,例如,该第二组PE电路202B形成点积引擎)。在这些和其他实施例中,缓冲区206可以被配置为通过绕过进入或离开存储设备204的第二数据的任何传输,将所生成的数据(例如,由第一组PE电路202A生成)输出作为到第二组PE电路202B的输入。缓冲区206可以被配置或实施具有足够的能力以将所生成的数据接收、缓冲、排队、提供和/或输出到第二组PE电路202B。
在一些实施例中,第二组PE电路202B可以被配置为使用从第一组PE电路202A(例如,通过缓冲区206)接收的数据来生成数据。具体地,如图2B中所示,第二组PE电路202B可以被配置为经由缓冲区206接收来自第一组PE电路202A的数据。第二组PE电路202B可以接收来自缓冲区206的激活数据(例如,作为激活流)。第二组PE电路202B可以被配置为使用来自存储设备204的激活数据和其他数据(例如,上面在A节中所描述的权重流208或其他激活信息)来执行计算。例如,其他激活信息可以包括关于激活功能的信息、偏差信息、内核信息和/或(多个)参数128。类似于第一组PE电路202A,第二组PE电路202B可以被配置为接收和使用激活数据,以生成其他数据(例如,输出数据或针对神经网络的第三层的激活数据等)。在一些实施例中,第二组PE电路202B可以被配置为将所生成的数据存储到存储设备206(例如,随后用于针对神经网络的另一层的(多个)计算)。在一些实施例中,设备200可以包括附加组的缓冲区206,其被配置为接收由第二组PE电路202B生成的数据,并且将数据传输、传送、提供或以其他方式输出给第三组PE电路202。
在一些实施例中,第一组PE电路202A可以被配置为针对神经网络的层执行一个功能(例如,激活功能),并且第二组PE电路202B可以被配置为针对神经网络的另一层执行另一功能。例如,第一组PE电路202A可以被配置为使用第一数据来执行卷积运算。卷积运算可以是或包括深度前馈类型的人工神经网络,该人工神经网络被配置为分析视觉图像、音频信息和/或任何其他类型或形式的输入数据。卷积运算可以包括多层感知器,被设计为使用最小的预处理。基于它们的共享权重架构和平移不变性特性,卷积运算可以包括或被称为移位不变或空间不变人工神经网络。第一组PE电路202A可以被配置为针对神经网络的至少一个节点和/或一层执行卷积运算。第二组PE电路202B可以被配置为使用由第一组PE电路202生成的数据来执行点积运算(例如,针对(多个)相同的节点和/或层,或针对升级网络的(多个)不同的节点和/或层)。第二组PE电路202B可以被配置为执行点积运算,以形成针对神经网络的输出210。
根据本文中所描述的实施例,设备200可以被配置为支持神经网络的流水线并行,其中针对神经网络的两个(或更多个)层的操作可以流水线和/或并行运行。设备200可以被配置,使得来自神经网络的一层的输出经由一个或多个缓冲区被直接提供给下一层,从而有效地绕过对存储器的读取和/或写入操作。因此,通过绕过存储器相关的读取和/或写入操作,以及通过使用较小的PE组(例如,以执行组卷积)来降低计算成本,可以实现节能。进一步地,通过多组PE电路202A、202B所进行的并行计算,可以改进处理吞吐量。
现在参照图2C,描绘了方法215的流程图,该方法215进行流水线并行以执行AI相关处理,例如针对跨神经网络的多层的节点。方法215的功能性可以适应图1A至图2B中所描述的组件(诸如,AI加速器108和/或设备200)来实施或由其执行。在简要概述中,存储器可以存储针对神经网络(220)的第一层的第一数据。第一多个PE电路可以读取第一数据(225)。第一多个PE电路使用第一数据执行针对第一层的计算,以生成第二数据(230)。多个缓冲区可以将第二数据提供给第二多个PE电路(235)。第二多个PE电路可以使用第二数据,以执行针对神经网络的第二层的计算(240)。
在(220)的附加细节中,并且在一些实施例中,方法215包括将针对神经网络的第一层的第一数据存储在存储器中。第一数据可以是或包括针对神经网络的第一层的权重或激活信息。存储器或存储设备126可以在多个输入流132中提供激活数据,并且例如,激活数据可以包括针对AI加速器108的输入数据110的至少部分。在一些实施例中,方法215可以包括存储针对神经网络的第一层和第二层的第一数据和第二数据。第一数据可以特定于神经网络的对应层。在一些实施例中,第一数据和第二数据可以特定于神经网络的对应层的节点。存储器(或存储设备126)可以接收和保存第一数据,以供一个或多个PE进行后续取回。在一些实施例中,第一数据(例如,权重、激活功能)可以随着时间的过去(例如在改进权重和/或激活信息的训练阶段)被训练或改进,以改进针对神经网络的一个或多个节点和/或层的输出数据。
在(225)的附加细节中,并且在一些实施例中,方法215包括读取第一数据。在一些实施例中,(第一电路系统或第一AI加速器108的)第一多个PE电路从存储器(例如,神经网络的第一层的一个或多个节点)中读取第一数据。在一些实施方式中,每个对应的PE电路可以从存储器中读取或访问对应数据。例如,第一多个PE电路的PE电路可以专用于、分配和/或映射到特定节点,并且每个对应PE电路可以访问存储器,以从与PE电路对应的存储器中检索、访问或以其他方式读取权重和/或激活数据。PE电路可以访问存储器来读取第一数据,用于执行针对第一层的计算,如下面更详细地描述的。
在(230)的附加细节中,并且在一些实施例中,方法215包括使用第一数据来执行针对第一层的计算,以生成第二数据(例如,作为到第二电路系统的输入)。在一些实施例中,第一多个PE电路使用第一数据来执行针对神经网络的第一层的计算(例如,卷积运算),以生成第二数据。第一多个PE电路可以使用第一数据(例如,来自第一数据的内核或权重信息)执行针对输入流的计算。第一多个PE电路可以使用输入流和第一数据执行针对输入流的计算,以生成相应的输出(例如,其可以用作针对神经网络的第二层的激活数据)。在一些实施例中,第一多个PE电路可以使用第一数据(以及输入流)(例如,来自第一数据的内核信息)来执行卷积运算。第一多个PE电路可以执行卷积运算,以生成第二层的激活数据(或第二数据)。
在(235)的附加细节中,并且在一些实施例中,方法215包括将第二数据提供给第二多个PE电路。在一些实施例中,第一多个PE电路的多个缓冲区将所生成的第二数据提供作为到第二多个PE电路的输入,以执行针对神经网络的第二层的计算。缓冲区可以将所生成的第二数据传递、传达或输出给第二电路系统(例如,在步骤(230)处),以执行针对神经网络的第二层的计算或处理。缓冲区可以被定时和/或启用,以在一段时间后传递或输出所生成的第二数据。在一些实施例中,响应于接收到来自第一多个PE电路的数据,缓冲区可以(相对于时钟信号异步地或同步地)传递所生成的第二数据。在这些实施例中的每个实施例中,多个缓冲区可以通过绕过进入或离开存储器(例如,存储设备126)的第二数据的任何传输,将所生成的第二数据提供作为到第二电路系统或第二多个PE电路的输入。
在(240)的附加细节中,并且在一些实施例中,方法215包括使用第二数据,以执行针对神经网络的第二层的计算。在一些实施例中,第二多个PE电路使用第二数据,以执行针对神经网络的第二层的计算。类似于步骤(230),第二多个PE电路可以使用来自存储器的数据(例如,权重)和第二数据(例如,来自缓冲区)执行针对神经网络的第二层的计算。第二数据可以包括针对神经网络的第二层的权重、偏差和/或激活功能信息。在一些实施例中,步骤(230)和步骤(240)可以在流水线中依次执行,也可以基本上同时(例如,并行)执行。例如,在第二多个PE电路可以执行针对神经网络的第二层的至少另一个节点的计算时,第一多个PE电路可以执行针对神经网络(的第一/第二/第三层)的至少一个节点的计算。在一些实施方式中,至少一个节点可以是来自第三层(例如,在神经网络的第二层下游的层)或来自第一层(例如,在神经网络的第二层上游)。在一些实施例中,第二多个PE电路可以包括点积引擎,该点积引擎可以使用第二数据来执行点积运算。第二多个PE电路可以对由缓冲区接收的第二数据执行点积运算,以生成输出。
在一些实施例中,第二多个PE电路可以使用第二数据来生成第三数据。第二多个PE电路可以将第三数据存储在存储器中(例如,通过对存储器执行写入操作)。第三数据可以存储在存储器中,以供神经网络的另一层后续使用,或者供设备或设备外部的组件后续使用。第二多个PE电路可以将第三数据提供到与第二多个PE电路对应的多个缓冲区,该缓冲区转而可以将第三数据提供给第三多个PE电路(例如,类似于步骤(235))。在第二多个PE电路可以使用从与第一多个PE电路对应的缓冲区所接收的数据来执行计算(与第三多个PE电路并行)时,并且在第一多个PE电路执行对数据的输入流的计算(与第二多个PE电路和第三多个PE电路并行)时,第三多个PE电路可以使用第三数据(以及来自存储器的其他数据)来执行计算。如此,第一多个PE电路、第二多个PE电路和/或第三多个PE电路可以并行执行计算。进一步地,针对第一多个PE电路的缓冲区可以将激活数据(例如,通过在第一层处执行计算而生成)提供给第二多个PE电路,并且针对第二多个PE电路的缓冲区可以将相应的激活数据(例如,通过执行针对第二层处的激活数据的计算而生成)提供给第三多个PE电路。因此,这些缓冲区可以绕过对存储器进行激活数据的读取和写入操作。
现在已经描述了一些说明性实施方式,很明显,上述实施方式是说明性的而非限制性的,已经通过示例的方式呈现。具体地,虽然本文中所呈现的许多示例涉及方法动作或系统元素的特定组合,但是这些动作和这些元素能够以其它方式组合以实现相同的目的。结合一种实施方式所讨论的动作、元件和特征并不旨在被排除在其他实施方式中的相似作用之外。
用于实施结合本文中所公开的实施例所描述的各种过程、操作、说明性逻辑、逻辑块、模块和电路的硬件和数据处理组件可以用通用的单芯片或多芯片处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其他可编程逻辑设备、离散门或晶体管逻辑、离散硬件组件或它们的被设计以执行本文中所描述的功能的任何组合来实施或执行。通用处理器可以是微处理器或任何传统处理器、控制器、微控制器或状态机。处理器还可以实施为计算设备的组合,诸如DSP和微处理器的组合、多个微处理器、与DSP核心结合的一个或多个微处理器或任何其他此类配置。在一些实施例中,特定过程和方法可以由特定于给定功能的电路系统执行。存储器(例如,存储器、存储器单元、存储设备等)可以包括一个或多个设备(例如,RAM、ROM、闪存、硬盘存储装置等),用于存储数据和/或计算机代码,以完成或促进本公开中所描述的各个过程、层和模块。存储器可以是或包括易失性存储器或非易失性存储器,并且可以包括数据库组件、目标代码组件、脚本组件或任何其他类型的信息结构,用于支持本公开中所描述的各种活动和信息结构。根据示例性实施例,存储器经由处理电路通信连接到处理器,并且包括计算机代码,用于执行(例如,通过处理电路和/或处理器)本文中所描述的一个或多个过程。
本公开考虑在任何机器可读介质上用于完成各种操作的方法、系统和程序产品。本公开的实施例可以使用现有的计算机处理器来实施,或由为了这个目的或另一目的而包含的适当系统的专用计算机处理器实施或由硬连线系统实施。本公开的范围内的实施例包括程序产品,包括机器可读介质,用于携带或具有存储在其上的机器可执行指令或数据结构。这种机器可读介质可以是任何可用介质,可以由通用或专用计算机或带有处理器的其他机器访问。例如,这种机器可读介质可以包括RAM、ROM、EPROM、EEPROM或其他光盘存储装置、磁盘存储装置或其他磁盘存储设备或可以用于携带或存储机器可执行指令或数据结构形式的期望程序代码并且可以由通用或专用计算机或具有处理器的其他机器访问的任何其他介质。上述项的组合还被包括在机器可读介质的范围内。例如,机器可执行指令包括指令和数据,使通用计算机、专用计算机或专用处理机器执行某个功能或某组功能。
本文所使用的措词和术语是用于描述的目的,并且不应该被认为是限制的。在这里使用“包括”、“包括”、“具有”、“包含”、“涉及”、“表征”、“特性在于”以及其变型来指包括其后所列的项、其等同物和附加项以及排他地由其后所列的项组成的备选实施方式。在一种实施方式中,本文中所描述的系统和方法由所描述的元素、动作或组件中的一个、一个以上的组合或全部组成。
对在本文中以单数形式提及的系统和方法的实施方式或元素或动作的任何参考也可以包含包括多个这样的元素的实施方式,并且对在本文中以复数形式提及的任何实施方式或元素或动作的参考也可以包含只包括单个元素的实施方式。单数或复数形式的参考并不旨在将目前公开的系统或方法、其组件、动作或元素限于单个或复数个配置。对基于任何信息、动作或元素的任何动作或元素的参考可以包括动作或元素是至少部分地基于任何信息、动作或元素的实施方式。
本文中所公开的任何实施方式都可以与任何其他实施方式或实施例组合,并且对“实施方式”、“一些实施方式”、“一种实施方式”等的参考不一定是互斥的并且旨在表明,结合实施方式所描述的特定特征、结构或特性可以包括在至少一种实施方式或实施例中。本文中所使用的这种术语不必然全部都指相同的实施方式。任何实施方式都能够以与本文中所公开的方面和实施方式一致的方式与任何其他实施方式包含地或排他地组合。
在图、具体实施方式或任何权利要求中的技术特征的后面有参考符号的情况下,为了提高图、具体实施方式或权利要求的可理解性,已经包括这些参考符号。因此,参考符号或其不存在都不会对任何权利要求元素的范围有任何限制影响。
本文中所描述的系统和方法可以具化为其他具体形式,而不脱离其特性。对“大约”、“约”、“大体上”或其他程度术语的参考包括从给定的测量、单位或范围的+/-10%的变化,除非另有明确说明。耦合元素可以是直接地或通过介于中间的元件彼此电气地、机械地或物理地耦合。因此,本文中所描述的系统和方法的范围由所附权利要求而不是上述描述指示,并且在权利要求等价的含意和范围内的变化将包括在其中。
术语“耦合”以及其变型包括两个构件直接或间接地相互连接。这种连接可以是静止的(例如,永久的或固定的)或可移动的(例如,可移除的或可释放的)。这种连接可以通过直接耦合或相互耦合的两个构件、使用单独的介于中间的构件和彼此耦合的任何额外的中间构件而彼此耦合的两个构件或使用介于中间的构件(该介于中间的构件与两个构件中的一个构件形成单个整体)而相互耦合的两个构件来实现。如果“耦合”或其变型由附加的术语(例如,直接耦合)修改,则上述“耦合”的一般定义由附加的术语的平实语言含义修改(例如,“直接耦合”指的是两个构件在没有任何单独的介于中间的构件的情况下连接),导致定义比上述“耦合”的一般定义更窄。这种耦合可以是机械的、电气的或流体的。
对“或”的参考可以被认为是包括的,因此使用“或”所描述的任何术语都可以指示所描述的术语中的单个、一个以上和全部中的任何一种。对“‘A’和‘B’中的至少一个”的参考可以只包括‘A’,只包括‘B’以及包括‘A’和‘B’两者。结合“包括”或其他开放术语所使用的这种参考可以包括附加项。
所描述的元素和动作的修改,诸如各个元素的大小、尺寸、结构、形状和比例的变化、参数的值、安装布置、材料的使用、颜色、方向,可以在没有实质性地偏离本文中所公开的主题的教示和优点的情况下发生。例如,被示出为整体形成的元素可以由多个部分或元素构成,元素的位置可以颠倒或以其他方式改变,并且离散元素或位置的性质或数量可以更改或改变。在不偏离本公开的范围的情况下,还可以对所公开的元素和操作的设计、操作条件和布置进行其他替换、修改、更改和省略。
本文中对元素的位置(例如“顶部”、“底部”、“上面”、“下面”)的参考仅用于描述图中的各个元素的方向。根据其他示例性实施例,各个元素的方向可能不同,并且这种变型旨在由本公开包含。
Claims (14)
1.一种设备,包括:
存储器,被配置为存储神经网络的第一层的第一数据;
第一电路系统,包括第一多个处理元件(PE)电路,第一多个PE电路被配置为从所述存储器中读取所述第一数据并且使用所述第一数据执行针对所述神经网络的所述第一层的计算以生成第二数据,所述第一电路系统包括多个缓冲区,所述多个缓冲区被配置为将所生成的所述第二数据输出作为到第二电路系统的输入,以执行针对所述神经网络的第二层的计算;以及
所述第二电路系统,包括第二多个PE电路,所述第二多个PE电路被配置为使用所述第二数据执行针对所述神经网络的所述第二层的计算。
2.根据权利要求1所述的设备,其中所述第一多个PE电路被配置为:在所述第二多个PE电路执行针对所述神经网络的所述第二层的计算时,执行针对所述神经网络的至少一个节点的计算;并且优选地,其中所述至少一个节点是来自所述神经网络的第三层或来自所述神经网络的所述第一层。
3.根据权利要求1或2所述的设备,其中所述多个缓冲区被配置为:通过绕过进入或者离开所述存储器的所述第二数据的任何传输,将所生成的所述第二数据输出作为到所述第二电路系统的输入。
4.根据权利要求1、2或3所述的设备,其中所述第二多个PE电路还被配置为使用所述第二数据来生成第三数据;并且优选地,其中所述第二多个PE电路还被配置为:将所生成的所述第三数据存储到所述存储器;和/或优选地,其中所述第二电路系统还包括多个缓冲区,所述多个缓冲区被配置为将所生成的所述第三数据输出作为到第三电路系统的输入。
5.根据权利要求1至4中任一项所述的设备,其中所述第一数据包括针对所述神经网络的所述第一层的权重或激活信息中的至少一个,并且所述第二数据包括针对所述神经网络的所述第二层的权重或激活信息中的至少一个。
6.根据权利要求1至5中任一项所述的设备,其中所述第一多个PE电路被配置为使用所述第一数据来执行卷积运算,并且所述第二多个PE电路被配置为使用所述第二数据来执行点积运算。
7.根据权利要求1至6中任一项所述的设备,其中所述第一电路系统和所述第二电路系统被形成在同一半导体器件上。
8.根据权利要求1至7中任一项所述的设备,其中所述多个缓冲区被配置具有足够的容量来缓冲所生成的所述第二数据,并且将所生成的所述第二数据输出给所述第二电路系统。
9.一种方法,包括:
将针对神经网络的第一层的第一数据存储在存储器中;
由第一多个处理元件(PE)电路从所述存储器中读取所述第一数据;
由第一多个PE电路使用所述第一数据执行针对所述神经网络的所述第一层的计算,以生成第二数据;
由所述第一多个PE电路的多个缓冲区将所生成的所述第二数据输出作为到第二多个PE电路的输入,以执行针对所述神经网络的第二层的计算;以及
由所述第二多个PE电路使用所述第二数据执行针对所述神经网络的所述第二层的计算。
10.根据权利要求9所述的方法,还包括:在所述第二多个PE电路执行针对所述神经网络的所述第二层的计算时,由所述第一多个PE电路执行针对所述神经网络的至少一个节点的计算;并且优选地,其中所述至少一个节点是来自所述神经网络的第三层或来自所述神经网络的所述第一层。
11.根据权利要求9或10所述的方法,包括:由所述多个缓冲区通过绕过进入或者离开所述存储器的所述第二数据的任何传输,将所生成的所述第二数据提供作为到所述第二多个PE电路。
12.根据权利要求9、10或11所述的方法,还包括:由所述第二多个PE电路使用所述第二数据来生成第三数据;并且优选地,还包括由所述第二多个PE电路将所生成的所述第三数据存储到所述存储器;和/或优选地,还包括由与所述第二多个PE电路对应的多个缓冲区将所生成的所述第三数据提供作为到第三电路系统的输入。
13.根据权利要求9至12中任一项所述的方法,其中所述第一数据包括针对所述神经网络的所述第一层的权重或激活信息中的至少一个,并且所述第二数据包括针对所述神经网络的所述第二层的权重或激活信息中的至少一个。
14.根据权利要求9至13中任一项所述方法,包括:由所述第一多个PE电路使用所述第一数据来执行卷积运算,并且由所述第二多个PE电路使用所述第二数据来执行点积运算。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/509,252 | 2019-07-11 | ||
US16/509,252 US20210012186A1 (en) | 2019-07-11 | 2019-07-11 | Systems and methods for pipelined parallelism to accelerate distributed processing |
PCT/US2020/041218 WO2021007333A1 (en) | 2019-07-11 | 2020-07-08 | Systems and methods for pipelined parallelism to accelerate distributed processing |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114051618A true CN114051618A (zh) | 2022-02-15 |
Family
ID=71948741
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080048246.XA Pending CN114051618A (zh) | 2019-07-11 | 2020-07-08 | 用于对加速分布式处理进行流水线并行的系统和方法 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20210012186A1 (zh) |
EP (1) | EP3997622A1 (zh) |
JP (1) | JP2022539662A (zh) |
KR (1) | KR20220031629A (zh) |
CN (1) | CN114051618A (zh) |
WO (1) | WO2021007333A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20210073317A1 (en) * | 2019-09-05 | 2021-03-11 | International Business Machines Corporation | Performing dot product operations using a memristive crossbar array |
US20220036163A1 (en) * | 2020-07-29 | 2022-02-03 | Apple Inc. | Chained neural engine write-back architecture |
US20220207332A1 (en) * | 2020-12-31 | 2022-06-30 | Nxp Usa, Inc. | Scalable neural network accelerator architecture |
CN114820630B (zh) * | 2022-07-04 | 2022-09-06 | 国网浙江省电力有限公司电力科学研究院 | 一种基于fpga的目标跟踪算法模型管道加速方法以及电路 |
-
2019
- 2019-07-11 US US16/509,252 patent/US20210012186A1/en not_active Abandoned
-
2020
- 2020-07-08 KR KR1020227002206A patent/KR20220031629A/ko unknown
- 2020-07-08 WO PCT/US2020/041218 patent/WO2021007333A1/en unknown
- 2020-07-08 CN CN202080048246.XA patent/CN114051618A/zh active Pending
- 2020-07-08 JP JP2021571014A patent/JP2022539662A/ja active Pending
- 2020-07-08 EP EP20751405.0A patent/EP3997622A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
JP2022539662A (ja) | 2022-09-13 |
KR20220031629A (ko) | 2022-03-11 |
EP3997622A1 (en) | 2022-05-18 |
US20210012186A1 (en) | 2021-01-14 |
WO2021007333A9 (en) | 2022-02-03 |
WO2021007333A1 (en) | 2021-01-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11675998B2 (en) | System and method for performing small channel count convolutions in energy-efficient input operand stationary accelerator | |
US11615319B2 (en) | System and method for shift-based information mixing across channels for shufflenet-like neural networks | |
CN114207629A (zh) | 用于在神经网络加速器中读写稀疏数据的系统和方法 | |
US20210012178A1 (en) | Systems, methods, and devices for early-exit from convolution | |
US11385864B2 (en) | Counter based multiply-and-accumulate circuit for neural network | |
US10977002B2 (en) | System and method for supporting alternate number format for efficient multiplication | |
US11429394B2 (en) | Efficient multiply-accumulation based on sparse matrix | |
CN114051618A (zh) | 用于对加速分布式处理进行流水线并行的系统和方法 | |
US11301545B2 (en) | Power efficient multiply-accumulate circuitry | |
US11681777B2 (en) | Optimization for deconvolution | |
US20210012202A1 (en) | Systems and methods for asymmetrical scaling factor support for negative and positive values | |
US11899745B1 (en) | Systems and methods for speech or text processing using matrix operations |
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 | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: California, USA Applicant after: Yuan Platform Technology Co.,Ltd. Address before: California, USA Applicant before: Facebook Technologies, LLC |