加速器和加速器的操作方法

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

阅读说明:本技术 加速器和加速器的操作方法 (Accelerator and method for operating an accelerator ) 是由 申宗勳 阿里·沙菲·阿得斯塔尼 哈姆扎·艾哈迈德·阿里·阿卜杜拉齐兹 约瑟夫·哈松 于 2021-05-07 设计创作,主要内容包括:提供了加速器和加速器的操作方法。所述操作方法包括:通过第一处理电路访问权重缓冲器,以执行权重缓冲器中的第一权重张量的区块内预处理,以在权重缓冲器中形成第一预处理后的权重张量,以及通过第一处理电路访问权重缓冲器,以执行第一预处理后的权重张量的区块间预处理,以在权重缓冲器中形成第二预处理后的权重张量,其中,区块内预处理包括:通过将第一权重张量的第一权重区块的第一元素存储在权重缓冲器的第二位置处,将第一元素沿向前方向或沿旁视方向移动一个位置,并且区块间预处理包括:通过将第一预处理后的权重张量的第一权重区块的第一行存储在权重缓冲器的第四位置处,将第一行沿向前方向移动一个位置或者沿旁视方向移动一个位置。(An accelerator and a method of operating an accelerator are provided. The operation method comprises the following steps: accessing, by a first processing circuit, the weight buffer to perform intra-block preprocessing of the first weight tensor in the weight buffer to form a first preprocessed weight tensor in the weight buffer, and accessing, by the first processing circuit, the weight buffer to perform inter-block preprocessing of the first preprocessed weight tensor to form a second preprocessed weight tensor in the weight buffer, wherein the intra-block preprocessing comprises: moving the first element in a forward direction or in a side view direction by one position by storing the first element of the first weight block of the first weight tensor at the second position of the weight buffer, and the inter-block preprocessing comprises: the first row is moved one position in a forward direction or one position in a side view direction by storing the first row of the first weight block of the first preprocessed weight tensor at the fourth position of the weight buffer.)

加速器和加速器的操作方法

本申请要求于2020年5月14日提交的题为“用于神经网络加速器的分层权重预处理(HIERARCHICAL WEIGHT PREPROCESSING FOR NEURAL NETWORK ACCELERATOR)”的第63/024,676号美国临时申请的优先权和权益,该美国临时申请的全部内容通过引用包含于此。

技术领域

根据本公开的实施例的一个或多个方面涉及用于神经网络的加速器,并且更具体地,涉及一种用于神经网络加速器的分层权重预处理的系统和方法。

背景技术

在神经网络中执行的计算可以涉及权重和激活的张量积。涉及的张量可能是相对稀疏度的,因此,由于这些乘积的很大一部分会等于零,所以如果计算每个逐元素乘积,则会导致显著的低效率。

因此,需要一种提高用于神经网络的加速器的运行效率的技术。

发明内容

根据本发明的实施例,提供了一种加速器的操作方法,包括:通过第一处理电路访问权重缓冲器,以执行权重缓冲器中的第一权重张量的区块内预处理,以在权重缓冲器中形成第一预处理后的权重张量,以及通过第一处理电路访问权重缓冲器,以执行第一预处理后的权重张量的区块间预处理,以在权重缓冲器中形成第二预处理后的权重张量,其中,区块内预处理包括:通过将第一权重张量的第一权重区块的第一元素存储在权重缓冲器的第二位置处,将第一权重张量的第一权重区块的第一元素沿向前方向或沿旁视方向移动一个位置,第二位置是沿向前方向或沿旁视方向与存储有第一元素的第一位置邻近的位置,并且区块间预处理包括:通过将第一预处理后的权重张量的第一权重区块的第一行存储在权重缓冲器的第四位置处,将第一预处理后的权重张量的权重区块的第一行沿向前方向移动一个位置或者沿旁视方向移动一个位置,第四位置是沿向前方向或沿旁视方向与存储有第一行的第三位置邻近的位置。

根据本发明的实施例,提供了一种加速器,包括:第一处理电路,第一处理电路被配置为:访问权重缓冲器,以执行权重缓冲器中的第一权重张量的区块内预处理,以在权重缓冲器中形成第一预处理后的权重张量,以及访问权重缓冲器,以执行第一预处理后的权重张量的区块间预处理,以在权重缓冲器中形成第二预处理后的权重张量,其中,区块内预处理包括:通过将第一权重张量的第一权重区块的第一元素存储在权重缓冲器的第二位置处,将第一权重张量的第一权重区块的第一元素沿向前方向或沿旁视方向移动一个位置,第二位置是沿向前方向或沿旁视方向与存储有第一元素的第一位置邻近的位置,并且区块间预处理包括:通过将第一预处理后的权重张量的第一权重区块的第一行存储在权重缓冲器的第四位置处,将第一预处理后的权重张量的权重区块的第一行沿向前方向移动一个位置或者沿旁视方向移动一个位置,第四位置是沿向前方向或沿旁视方向与存储有第一行的第三位置邻近的位置。

根据本发明的实施例,提供了一种加速器,包括:用于处理的装置,用于处理的装置被配置为:访问权重缓冲器,以执行权重缓冲器中的第一权重张量的区块内预处理以在权重缓冲器中形成第一预处理后的权重张量,以及访问权重缓冲器,以执行第一预处理后的权重张量的区块间预处理,以在权重缓冲器中形成第二预处理后的权重张量,其中,区块内预处理包括:通过将第一权重张量的第一权重张量的第一权重区块的第一元素存储在权重缓冲器的第二位置处,将第一权重区块的第一元素沿向前方向或沿旁视方向移动一个位置,第二位置是沿向前方向或沿旁视方向与存储有第一元素的第一位置邻近的位置,并且区块间预处理包括:通过将第一预处理后的权重张量的第一权重区块的第一行存储在权重缓冲器的第四位置处,将第一预处理后的权重张量的权重区块的第一行沿向前方向移动一个位置或者沿旁视方向移动一个位置,第四位置是沿向前方向或沿旁视方向与存储有第一行的第三位置邻近的位置。

根据本发明的实施例,提供了一种分层权重预处理方法,包括:执行第一权重张量的区块内预处理以形成第一预处理后的权重张量,以及执行第一预处理后的权重张量的区块间预处理,以形成第二预处理后的权重张量,区块内预处理包括:在第一权重张量的第一权重区块内,将第一权重区块的第一元素沿向前方向或沿旁视方向移动一个位置,并且区块间预处理包括:将第一预处理后的权重张量的权重区块的第一行沿向前方向移动一个位置或者沿旁视方向移动一个位置。

在一些实施例中,区块内预处理包括:在第一权重张量的第一权重区块内,将第一权重区块的第一元素沿向前方向移动的一个位置。

在一些实施例中,区块间预处理包括:将第一行沿向前方向移动一个位置。

在一些实施例中,区块内预处理还包括:在第一权重张量的第二权重区块内,将第二权重区块的第一元素沿旁视方向移动一个位置。

在一些实施例中,第一行是第一预处理后的权重张量的第二权重区块的行,区块间预处理包括:将第一行沿旁视方向从第二权重区块移动到第一权重区块。

在一些实施例中,区块间预处理还包括:创建与第一预处理后的权重张量对应的区块稀疏度图,区块稀疏度图具有:列,针对第一预处理后的权重张量的每个权重区块,以及行,针对权重区块的每个行,区块稀疏度图指示第一预处理后的权重张量的权重区块的空行的位置。

在一些实施例中,区块稀疏度图具有比第一预处理后的权重张量的维度少一个维度的维度。

在一些实施例中,所述方法还包括基于区块稀疏度图来标识第一行。

在一些实施例中,所述方法还包括:将第一行与第一激活向量相乘,以形成第一点积,其中,相乘的步骤包括从激活缓冲器的列提取激活向量,激活缓冲器的所述列是激活缓冲器中的第二列。

在一些实施例中,所述方法还包括:在第一处理元件电路中将第一行与第一激活向量相乘以形成第一点积,在第二处理元件电路中将第一预处理后的权重张量的权重区块的第二行与第二激活向量相乘以形成第二点积,以及将第一点积和第二点积相加。

在一些实施例中,区块间预处理还包括:将第一预处理后的权重张量的第二行沿向前方向移动一个位置。

在一些实施例中,所述方法还包括:基于区块稀疏度图来标识第二行。

根据本发明的实施例,提供了一种分层权重预处理系统,包括:第一处理电路,第一处理电路被配置为:执行第一权重张量的区块内预处理以形成第一预处理后的权重张量,以及执行第一预处理后的权重张量的区块间预处理以形成第二预处理后的权重张量,区块内预处理包括:在第一权重张量的第一权重区块内,将第一权重区块的第一元素沿向前方向或沿旁视方向移动一个位置,并且区块间预处理包括将第一预处理后的权重张量的权重区块的第一行沿向前方向移动一个位置或者沿旁视方向移动一个位置。

在一些实施例中,区块内预处理包括:在第一权重张量的第一权重区块内,将第一权重区块的第一元素沿向前方向移动的一个位置。

在一些实施例中,区块间预处理包括:将第一行沿向前方向移动一个位置。

在一些实施例中,区块内预处理还包括:在第一权重张量的第二权重区块内,将第二权重区块的第一元素沿旁视方向移动一个位置。

在一些实施例中,第一行是第一预处理后的权重张量的第二权重区块的行,区块间预处理包括:将第一行沿旁视方向从第二权重区块移动到第一权重区块。

在一些实施例中,区块间预处理还包括:创建与第一预处理后的权重张量对应的区块稀疏度图,区块稀疏度图具有:列,针对第一预处理后的权重张量的每个权重区块,以及行,针对权重区块的每个行,区块稀疏度图指示第一预处理后的权重张量的权重区块的空行的位置。

在一些实施例中,所述系统还包括第二处理电路,第二处理电路包括:第一处理元件电路,以及第二处理元件电路,其中:第一处理元件电路被配置为将第一行与第一激活向量相乘,以形成第一点积;并且第二处理元件电路被配置为:将第一预处理后的权重张量的权重区块的第三行与第二激活向量相乘,以形成第二点积,以及将第一点积和第二点积相加。

根据本发明的实施例,提供了一种分层权重预处理系统,包括:用于处理的装置,用于处理的装置被配置为:执行第一权重张量的区块内预处理以形成第一预处理后的权重张量,以及执行第一预处理后的权重张量的区块间预处理,以形成第二预处理后的权重张量,区块内预处理包括:在第一权重张量的第一权重区块内,将第一权重区块的第一元素沿向前方向或沿旁视方向移动一个位置,并且区块间预处理包括:将第一预处理后的权重张量的第一行沿向前方向移动一个位置或者沿旁视方向移动一个位置。

附图说明

参照说明书、权利要求书和附图将领会和理解本公开的这些和其他特征和优点,在附图中:

图1是根据本公开的实施例的框图;

图2A是根据本公开的实施例的数据组织图;

图2B是根据本公开的实施例的数据组织图;

图2C是根据本公开的实施例的数据组织图;

图2D是根据本公开的实施例的数据组织图;

图2E是根据本公开的实施例的数据组织图;

图2F是根据本公开的实施例的数据组织图;

图2G是根据本公开的实施例的数据组织图;

图2H是根据本公开的实施例的数据组织图;

图2I是根据本公开的实施例的数据组织图;

图2J是根据本公开的实施例的数据组织图;

图3是根据本公开的实施例的简化电路图;

图4A是根据本公开的实施例的张量的示图;

图4B是根据本公开的实施例的轴的表;

图4C是根据本公开的实施例的流程图;

图4D是根据本公开的实施例的张量的示图;

图4E是根据本公开的实施例的流程图;

图4F是根据本公开的实施例的成本的表;

图4G是根据本公开的实施例的混合框图和示意图;

图4H是根据本公开的实施例的混合框图和示意图;以及

图4I是根据本公开的实施例的示意图。

具体实施方式

下面结合附图阐述的具体实施方式旨在作为根据本公开提供的用于神经网络加速器的分层权重预处理的系统和方法的示例性实施例的描述,而不旨在表示可以构造或利用本公开的唯一形式。该描述结合示出的实施例阐述了本公开的特征。然而,将理解的是,相同或等同的功能和结构可以通过也旨在包含在公开的范围内的不同实施例来实现。如在此其他地方所表示的,相同的元件编号旨在指示相同的元件或特征。

在针对神经网络(例如,卷积神经网络)执行的计算中,可以对权重的张量和激活的张量(后者可以被称为输入特征图(IFM))执行各种操作。一种这样的操作是张量积,在该张量积中,一些维度(这可以被称为可约维度(reducible dimension))被求和,并且一些维度(这可以被称为不可约维度)不被求和。这种张量积的计算可以由处理电路执行,该处理电路可以包括如图1中所示的处理元件电路105(或简称为“处理元件”或“区块(tile)”)的阵列。每个区块可以被馈送来自权重缓冲器110的权重和来自激活缓冲器115的激活。每个区块可以包括乘法器阵列120和加法器树125。在操作中,在每个计算周期(这可以包括系统时钟的单个周期或系统时钟的一些周期)中,每个区块可以进行以下项操作:(i)从(共享的)激活缓冲器的列读取激活向量,(ii)从其权重缓冲器的行读取权重向量(或“行”),并且将向量相乘以形成点积。向量的相乘可以包括(在乘法器中)计算激活向量和权重行的逐元素乘积,以及(在加法器树中)对乘积求和。求和的乘积可以被称为点积。在一个示例中,权重缓冲器可包括在用于神经网络的加速器内部或外部。

当权重张量的一些元素为零时,这种系统可以跳过执行乘法。例如,参照图2A,四个区块(例如,区块#1至区块#4)的权重阵列中的每个阵列可以包括作为零或“空”(如无阴影正方形所示)的一些元素和作为非零(如阴影正方形所示)的一些元素。与区块对应的权重阵列可以被称为“权重区块”。权重区块的水平项指代通道(例如,ch1、ch2、ch3和ch4),并且垂直项指代计算周期(例如,周期1至周期5)。例如,由“周期1”指示的计算周期在由“周期2”指示的计算周期之前。在第一权重区块、第二权重区块和第三权重区块中的每个中,如果在一个计算周期之前被处理,则被标记为“向前(或称为前视,lookahead)”的元素将使其当前占据的行变得完全空(即,该行的所有元素将为零),这意味着处理可以跳过该行并直接前进到下一行。例如,区块1(即,第一权重区块,标记为“区块#1”)的权重阵列在第二行中具有单个非零元素(标记为“向前”),并且在第一行中并且在与非零元素相同的列中具有空元素。因此,将标记为“向前”的元素移动到前一行(可以被称为“向前”方向的方向)将使第二行变空。可以通过修改权重张量并且(如下面进一步详细讨论的)通过使用多路复用器,以允许区块从除了激活缓冲器中的当前列之外的列访问元素,来实现这样的乱序处理。

在图2A的示例中,第四权重区块的第二行包括可以移动到其正上方的位置中(即,移动到在同一列中的第一行中)的一个元素(标记为“向前”),以及在第二行中并且由于其正上方的元素不是空的而不能直接向上移动的另一元素(标记为“旁视(lookaside)”)。然而,因为标记为“旁视”的元素的上方左侧的元素是空的,所以标记为“旁视”的元素可以向上移动一行并移动到相邻列(即,向上并从第四列到第三列)。标记为“旁视”的元素移动的方向可以被称为“旁视”方向。在这个示例中,通过将第四权重区块的第二行第二列的元素存储在权重缓冲器的第二位置处,将第四权重区块的第二行第二列的元素沿向前方向移动一个位置,第二位置是沿向前方向与存储有第二行第二列的元素的第一位置邻近的位置(例如,存储有第一行第二列的元素的位置)。此外,通过将第四权重区块的第二行第四列的元素存储在权重缓冲器的第四位置处,将第四权重区块的第二行第四列的元素沿旁视方向移动一个位置,第四位置是沿旁视方向与存储有第二行第四列的元素的第三位置邻近的位置(例如,存储有第一行第三列的元素的位置)。在一个示例中,向前方向(或前视方式)指示在权重区块的第一元素所在的列中存在零元素的情况下第一元素移动到该零元素所沿的方向;旁视方向指示在第一元素所在的列中不存在零元素但在与该列邻近的列中存在零元素的情况下第一元素移动到该零元素所沿的方向。

一旦对权重阵列进行了所有修改,修改后的权重张量就可以如图2B中所示地呈现。权重是三维张量的元素,所述三维张量包括四个(二维)权重区块(每个权重区块本身是张量)。如上所述,与区块相关的每个权重阵列可以被称为“权重区块”(如在此所使用的,没有限定词“权重”的词“区块”指处理元件)。图2B中示出的修改后的张量可以被称为“预处理后的权重张量”或“第一预处理后的权重张量”;因为关于哪些元素将在权重区块中的任何一个权重区块内移动的决定仅基于空元素在权重区块内的位置,所以对张量进行修改以形成第一预处理后的权重张量可以被称为“区块内预处理”。在一个示例中,包括在加速器中的处理电路访问权重缓冲器,以执行权重缓冲器中的第一权重张量的区块内预处理,以在权重缓冲器中形成第一预处理后的权重张量。该处理电路与处理元件电路105可以是同一处理电路或不同的处理电路。

因为激活缓冲器可以被配置为在任何计算周期期间向所有区块发送相同的激活向量,所以图1的实施例可能无法利用由区块内预处理产生的空行。因此,如果系统跳过其中第一权重区块、第三权重区块和第四权重区块具有空行的第二计算周期,则不会根据第二权重区块的第二行中的权重计算正确的乘积。在一些实施例中,采用多个激活缓冲器,每个区块一个激活缓冲器,以在不同时间跳过行。

在一些实施例中,可以通过执行可以被称为“区块间预处理”的附加预处理步骤来避免使用多个激活缓冲器。如下面进一步详细讨论的,在区块间预处理中,可以基于其他权重区块的空元素来移动权重区块的元素,并且可以将元素从一个权重区块移动到另一权重区块。区块间预处理可以根据第一预处理后的权重张量形成另一预处理后的权重张量(这可以被称为“第二预处理后的权重张量”),因此,区块内预处理和区块间预处理可以形成两个层次的权重张量预处理层级。在一个示例中,处理电路访问权重缓冲器,以执行第一预处理后的权重张量的区块间预处理,以在权重缓冲器中形成第二预处理后的权重张量。

为了执行区块间预处理,可以首先生成区块稀疏度图(具有比权重张量的维度少一的维度)。图2C中示出了图2B的第一预处理后的权重张量的区块稀疏度图。T1、T2、T3和T4分别指示第一权重区块、第二权重区块、第三权重区块和第四权重区块。在图2C中,c2至c5可指示第二计算周期至第五计算周期。区块稀疏度图可以针对第一预处理后的权重张量的每个权重区块的每行具有一个元素,如果行为空,则该元素为0(或e),并且如果行不为空,则该元素为1。在其他实施例中,可以另外表示相同的信息(例如,以一指示空行,并且零指示行不为空),或者还可以通过区块稀疏度图捕获附加信息(如图2C中那样,其中,正方形中的符号指示行是否为空,并且如果不为空,则正方形中的符号指示在执行区块间预处理之前其对应于什么计算周期)。

区块稀疏度图可以用于标识对权重张量的进一步修改(例如,要移动的区块稀疏度图的元素),这可以使得系统能够利用由区块内预处理产生的空行。例如,可以看出的是,通过将第一列的第三元素向上移动一个位置,将第三列的第二元素和第三元素各自向上移动一个位置,并且将第四列的第三元素向上移动一个位置,可以修改区块稀疏度图,使得如图2D中所示,第三行是空的。该结果意味着:(i)对权重张量的进一步调整导致权重区块在第三计算周期中全部具有空行,以及(ii)如果以这种方式调整权重,则在激活缓冲器被配置为在每个计算周期期间向所有区块发送相同的激活向量的系统中,可以跳过第三计算周期。

图2E示出了两种不同情况的计算周期的序列:第一种情况(“情况0”)和第二种情况(“情况1”),在第一种情况(“情况0”)下,不对权重张量进行修改,并且不跳过计算周期(因为不存在所有权重区块都具有空行的计算周期),在第二种情况(“情况1”)下,跳过第三计算周期,每个权重区块的第三行由于首先的区块内预处理和其次的区块间预处理而为空。图2E还示出了:对于第二种情况,可以被执行以得到具有空行的区块稀疏度图的区块间向前(如上所述)。每个区块间向前涉及沿向前方向(即,在图2C和图2E的表示中向上)将权重区块的行中的所有权重(或等效地,所有非零权重)移动一个位置,使得例如(如图2C至图2E中所示),在区块间预处理完成之后,第二预处理后的权重张量的第一区块的第二行是第一预处理后的权重张量的第一区块的第三行。当权重区块的行沿向前方向移动一个位置时,在操作中被乘的激活向量可以是激活缓冲器115中的第二向量(而不是激活缓冲器115中的当前(第一)向量)(即,激活缓冲器115中的如果在预处理中没有执行向前则将在下一计算周期期间被处理的向量)。在这个示例中,通过将第一预处理后的权重张量的第一区块的第三行存储在权重缓冲器的第二位置处,将第一预处理后的权重张量的第一区块的第三行沿向前方向移动一个位置,第二位置是沿向前方向与存储有第一区块的第三行的第一位置邻近的位置(例如,存储有第一区块的第二行的位置)。

在一些情况下,可以通过执行区块旁视(即,在权重张量内将权重从一个权重区块移动到另一个权重区块中),来使得跳过附加计算周期成为可能。图2F示出了一个示例中的(在区块内预处理之后的)权重区块,并且图2G示出了图2F的权重区块的区块稀疏度图。在图2G中,cycle'1至cycle'5可分别指示第一计算周期至第五计算周期。图2H示出了执行区块间预处理的方法,并且图2I示出了在执行区块间预处理之后的区块稀疏度图。图2H和图2I示出了使用区块稀疏度图可以被重新布置的区块向前和区块旁视的组合(并且可以以类似的方式修改权重张量),使得可以跳过两个计算周期。每个区块旁视涉及将一行权重从一个权重区块移动到另一权重区块中较早一个处理周期的行,使得例如(如图2H中所示)在区块间预处理完成之后,第二预处理后的权重张量的第一权重区块的第四行是第一预处理后的权重张量的第二权重区块的第五行。这样的移动可以(与上述区块内旁视移动类似)被称为沿“旁视”方向的移动。在这个示例中,通过将第一预处理后的权重张量的第二权重区块的第五行存储在权重缓冲器的第四位置处,将第一预处理后的权重张量的第二权重区块的第五行沿旁视方向移动一个位置,第四位置是沿旁视方向与存储有第二权重区块的第五行的第三位置邻近的位置(例如,存储有第一权重区块的第四行的位置)。

图2J示出了两种不同情况的计算周期的序列:第一种情况(“情况1”)和第二种情况(“情况2”),在第一种情况(“情况1”)下,区块间预处理仅涉及区块向前,在第二种情况(“情况2”)下,区块间预处理涉及区块向前和区块旁视两者。从图2J可以看出的是,在该示例中,如果使用区块旁视,则可以跳过附加的计算周期。因此,用于神经网络的运算的周期数可减少,从而提高用于神经网络的加速器的运行效率。

图3示出了在一些实施例中用于执行张量计算的电路。当权重张量的权重被移动以使周期跳过成为可能时,激活也被移动,使得每个激活乘以适当的权重。如上所述,可以例如通过(下面进一步详细讨论的)处理电路在预处理期间移动权重,并且如所示出的,可以使用多路复用器在操作期间移动激活。第一多路复用器305的组用于执行激活的移动,激活的移动对应于:(1)通过区块内向前接着是区块间向前移动的权重,以及(2)通过区块内旁视接着是区块间向前移动的权重(如下面的句子中所解释的,该第二部分被供应为乘法器的输入)。第二多路复用器310的组用于:(i)执行与区块内向前接着是区块间向前对应的激活的选择,以及(ii)将结果发送到多路复用器305的输入端口中的一个输入端口。每个加法器树315的输出连接到解复用器320,解复用器320进行以下操作:(i)将区块旁视(这是不可约维度中的旁视)的结果传送回权重最初(在权重的预处理之前)所在的区块,并且(ii)将其他结果发送到累加器325。在执行权重的预处理的同时生成用于多路复用器的控制信号,并且将用于多路复用器的控制信号从与权重缓冲器110并行的相应控制位缓冲器330反馈给每个区块。

以上针对三维权重张量(其中一个维度是可约的并且一个维度是不可约的)的情况讨论的构思可以被推广到如下具有更大数量的维度的张量。图4A示出了具有一个或多个可约维度以及零个或多个不可约维度的一般N维权重张量。维度可以按最内到最外的顺序排序(参照可以用于处理张量的循环的嵌套)。在计算周期中同时处理权重张量中的每个空间平行超平面。一些实施例通过在时间轴内提供稀疏度权重张量的压缩,来减少计算周期的数量以加速处理的速度。图4B是示出了对于两种不同的计算(卷积和GEMV(F.C.)(通用矩阵向量乘法))哪些轴是可约的以及哪些轴是不可约的表,其中,C、K、R和S分别是卷积的输入通道的索引、卷积的输出通道的索引、卷积的高度的索引、和卷积的宽度的索引。图4C是示出可以从N维权重张量的分层权重处理(HWP)开始在可约维度和不可约维度中预处理N维张量所通过的迭代处理的流程图。在图4C中,LWP表示作为最低水平的权重预处理的二维权重张量(这可以表示为矩阵)的向前和旁视的“局部权重预处理”。例如,在三维情况下(即N=3),该处理可以如下地进行。在图4C中的步骤1(由带圆圈的“1”指示)中,N维权重张量(其中,例如N=3)准备好使用分层权重处理(HWP)来处理以加速计算。在步骤2中,3个维度可以被分成三个类别(如3个维度=1(时间轴)+2(空间轴)=1(时间轴DTime)+1(不可约轴DIS:多个区块)+1(可约轴DRS:处理元件中的多个乘法器))。在步骤3中,三维权重张量可以被认为是二维张量的一维(1=N-2=3-2)有序集合,每个二维张量可以是或可以类似于图2A中示出的二维权重区块中的一个。在图4C中,DInner-most指示最内部的空间轴。在步骤4中,通过使用向前和旁视,可以执行第一水平权重预处理(这在这种情况下是区块内预处理)。在步骤5和步骤6中,有序集合的每个二维张量可以被汇总在一维稀疏度向量中,以生成(N-1)维稀疏度减少图(SRM)(在三维分层权重处理的情况下,二维SRM是区块稀疏度图)。然后,该处理可以返回到步骤2。第一水平预处理已经完成,用于下一次迭代的感兴趣张量变为二维((N-1)维)稀疏度减少图,并且该处理重复预处理步骤以完成第二水平预处理,该第二水平预处理是区块间预处理。在包括处理元件电路105的阵列的处理电路中,空间平行的维度可以是三,并且权重张量的维度可以是四(1个时间+3个空间)。在这种情况下,可以在图4C中执行三次迭代以产生如图2I中示出的同步四维张量。图4C的三个维度的示例可以扩展到更高的维度(诸如,四个维度或五个维度)。图4D示出了通过图4C中示出的方法的周期减少。图4E是图4C中示出的方法的更详细的流程图。图4F是示出用于沿着可约轴和沿着不可约轴执行预处理的硬件的(处理和开销)成本的表,其中,C0和K0分别对应于输入维度和输出维度。(hi、di、h'i、d'i)的元素分别是针对可约轴的向前、针对可约轴的旁视、针对不可约轴的向前和针对不可约轴的旁视。

图4G示出了示出用于可约维度和不可约维度的硬件的框图。在可约维度中,可以在两个阶段中执行激活的重新布置,以与在预处理中执行的权重的重新布置一致。激活启动器(AP)可以执行与区块间预处理(例如,在图2G至图2J的示例中,一次移动一行权重)对应的激活的重新布置,并且多路复用器405可以执行与区块内预处理(例如,在图2A和图2B的示例中,一次移动一个权重)对应的激活的重新布置。在不可约维度中,为了与在预处理中执行的权重的重新布置一致,激活的重新布置可以仅涉及第一(激活启动器)阶段,并且在乘法被执行之后,解复用器410可以用于将区块旁视(这是不可约维度中的旁视)的结果传送回权重最初所在的区块。在图4G中,在不可约情况下,类似于对可以在三维分层权重处理中使用的多个区块的激活广播,可以通过广播到多个内部水平的HWi-1来共享激活寄存器。在图4G中,Ai是针对HWi供应的激活周期的数量(等于激活寄存器的数量)。图4H是示出激活启动器的操作的示意性框图,激活启动器可以从Ai个激活周期中选择连续的A(i-1)个激活周期。该操作可以类似于滑动窗口的操作。图4I示出了在一些实施例中激活启动器的实施方式,其中,具有两个输入的多路复用器415用于支持区块间向前的一个计算周期(如在图3的示例中那样,其中,第二多路复用器310对应于激活启动器)。在其他实施例中,多路复用器可以具有更多的输入,并且更大数量的区块间向前的计算周期可以被支持。在图4I中,WS是通过HWi单元中的所有激活启动器共享的多路复用(mux)信号。在图4I中,cyc可指示周期,act0至actAi-1)可指示从多路复用器415输出的激活。

如在此所使用的,某物的“一部分”意味着该物的“至少一些”,并且因此可以意味着比该物的全部或所有少。因此,物的“一部分”包括整个物作为特殊情况(即,整个物是物的一部分的示例)。

术语“处理电路”在此用于表示用于处理数据或数字信号的硬件、固件和软件的任何组合。处理电路硬件可以包括例如专用集成电路(ASIC)、通用或专用中央处理器(CPU)、数字信号处理器(DSP)、图形处理器(GPU)和可编程逻辑装置(诸如,现场可编程门阵列(FPGA))。在处理电路中,如在此所使用的,每个功能由被配置(即,硬连线)为执行所述功能的硬件执行,或由被配置为执行存储在非暂时性存储介质中的指令的更通用的硬件(诸如,CPU)执行。处理电路可以制造在单个印刷电路板(PCB)上或者分布在一些互连的PCB上。处理电路可以包含其他处理电路;例如,处理电路可以包括在PCB上互连的两个处理电路、FPGA和CPU。

如在此所使用的,术语“阵列”指数字的有序集合,而不管如何存储(例如,是存储在连续的存储器位置中还是存储在链表中)。如在此所使用的,术语“矩形”包括作为特殊情况的正方形(即,正方形是矩形的示例)。如在此所使用的,当第二数字“在”第一数字的“Y%内”时,这意味着第二数字是第一数字的至少(1-Y/100)倍,并且第二数字是第一数字的至多(1+Y/100)倍。如在此所使用的,术语“或”应解释为“和/或”,使得例如“A或B”意味着“A”、“B”和“A和B”中的任何一个。

如在此所使用的,当方法(例如,调整)或第一数量(例如,第一变量)被称为“基于”第二数量(例如,第二变量)时,这意味着第二数量是方法的输入或影响第一数量(例如,第二数量可以是计算第一数量的函数的输入(例如,唯一输入或一些输入中的一个),或者第一数量可以等于第二数量,或者第一数量可以与第二数量相同(例如,存储在存储器中相同的一个或多个位置))。

将理解的是,尽管在此可以使用术语“第一”、“第二”、“第三”等来描述各种元件、组件、区域、层和/或部分,但是这些元件、组件、区域、层和/或部分不应受这些术语的限制。除非上下文另有表示,否则这些术语仅用于将一个元件、组件、区域、层或部分与另一元件、组件、区域、层或部分区分开。因此,在不脱离发明构思的精神和范围的情况下,在此讨论的第一元件、组件、区域、层或部分可以被称为第二元件、组件、区域、层或部分。上下文另外指示的示例包括诸如“列在激活缓冲器中是第二个”或“行在矩阵的行之中是第一个”的短语。

如在此所使用的,除非上下文另有明确指示,否则单数形式旨在也包括复数形式。还将理解的是,术语“包括”和/或“包含”当在本说明书中使用时,说明存在所陈述的特征、整体、步骤、操作、元件和/或组件,但不排除存在或添加一个或多个其他特征、整体、步骤、操作、元件、组件和/或它们的组。如在此所使用的,术语“和/或”包括相关所列项中的一个或多个的任何组合和所有组合。诸如“……中的至少一个”的表述在一列元件(元素)之后时,修饰元件(元素)的整个列表,而不修饰列表的单个元件(元素)。此外,在描述发明构思的实施例时使用“可以”指“本公开的一个或多个实施例”。此外,术语“示例性”旨在表示示例或说明。如在此所使用的,术语“使用”、“正使用”和“被使用”可以被认为分别与术语“利用”“正利用”和“被利用”同义。

将理解的是,当元件或层被称为“在”另一元件或层“上”、“连接到”、“结合到”或“邻近于”另一元件或层时,该元件或层可以直接在所述另一元件或层上、连接到、结合到或邻近于所述另一元件或层,或者可以存在一个或多个中间元件或中间层。相反,当元件或层被称为“直接在”另一元件或层“上”、“直接连接到”、“直接结合到”或“紧邻”另一元件或层时,不存在中间元件或中间层。

在此叙述的任何数值范围旨在包括包含在叙述的范围内的相同数值精度的所有子范围。例如,“1.0至10.0”或“1.0与10.0之间”的范围旨在包括所叙述的最小值1.0与所叙述的最大值10.0之间(并且包括所叙述的最小值1.0和所叙述的最大值10.0)的所有子范围(即,具有等于或大于1.0的最小值且等于或小于10.0的最大值(诸如,以2.4至7.6为例)的所有子范围)。在此所叙述的任何最大数值限度旨在包括在其中包含的所有较低数值限度,并且本说明书中所叙述的任何最小数值限度旨在包括在其中包含的所有较高数值限度。

尽管在此已经具体描述和示出了用于神经网络加速器的分层权重预处理的系统和方法的示例性实施例,但是许多修改和变化对于本领域技术人员将是清楚的。因此,将理解的是,根据本公开的原理构造的用于神经网络加速器的分层权重预处理的系统和方法可以以不同于如在此具体描述那样来实现。发明还以所附权利要求及其等同物来限定。

30页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种水下噪声分类卷积神经网络加速器

网友询问留言

已有0条留言

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

精彩留言,会给你点赞!