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

用于处置具有异常的处理的电路的制作方法

2023-01-15 10:10:25 来源:中国专利 TAG:

用于处置具有异常的处理的电路
1.相关申请的交叉引用
2.本技术要求2021年6月28日提交的题为“improving area and power efficiency using activation outlier values”的美国临时申请no.63/215,812的优先权和权益,其全部内容通过引用并入本文。
技术领域
3.根据本公开的实施例的一个或多个方面涉及神经网络计算,并且更具体地,涉及用于处置异常(outlier)的系统和方法。


背景技术:

4.由人工神经网络执行的计算可能涉及计算乘积的和,例如,当执行卷积运算时。每个乘积可以是权重和激活(activation)的乘积,并且在一些情况下,激活值的分布可以使得只有相对少量的激活(其可以被称为“异常”)超过诸如15或31的阈值。在这种情况下,因为例如当激活中的任一个是5位宽时,可能使用5
×
8位乘法器而不是4
×
8位乘法器来将多个4位激活乘以8位权重,因此以相同的方式处理所有的乘积可能是浪费的。
5.因此,需要用于处置异常的改进的系统和方法。


技术实现要素:

6.根据本公开的实施例,提供了一种方法,包括:从激活阵列的第一行读取第一激活,第一激活包括最低有效部分和最高有效部分,第一激活的最高有效部分为零;将第一权重乘以第一激活;从激活阵列的第二行读取第二激活,第二激活包括最低有效部分和最高有效部分,第二激活的最高有效部分非零;以及将第二权重乘以第二激活,将第一权重乘以第一激活包括在第一乘法器中将第一权重乘以第一激活的最低有效部分,第一乘法器与第一行相关联;将第二权重乘以第二激活包括:在第二乘法器中将第二权重乘以第二激活的最低有效部分,第二乘法器与第二行相关联;以及在共享的乘法器中将第二权重乘以第二激活的最高有效部分,共享的乘法器与激活阵列的多个行相关联,多个行包括第一行和第二行。
7.在一些实施例中,该方法还包括:从激活阵列的第三行读取第三激活,第三激活包括最低有效部分和最高有效部分,第三激活的最高有效部分非零;以及将第三权重乘以第三激活,其中,将第三权重乘以第三激活包括:在第三乘法器中将第三权重乘以第三激活的最低有效部分,第三乘法器与激活阵列的第三行相关联;以及将第三激活的最高有效部分存储在包括多个行的缓冲器的第一行中,缓冲器的第一行与激活阵列的第三行相关联。
8.在一些实施例中,该方法还包括递增与缓冲器的第一行相关联的计数器。
9.在一些实施例中,将第三激活存储在缓冲器的第一行中包括确定与缓冲器的第一行相关联的计数器的值小于或等于与对应于第二激活的缓冲器的行相关联的计数器的值。
10.在一些实施例中,将第三权重乘以第三激活的最高有效部分还包括:从缓冲器中
检索第三激活的最高有效部分,以及在第三乘法器中将第三权重乘以第三激活的最高有效部分。
11.在一些实施例中,将第三权重乘以第三激活的最高有效部分还包括:从缓冲器中检索第三激活的最高有效部分,以及在共享的乘法器中将第三权重乘以第三激活的最高有效部分。
12.在一些实施例中,第三激活的最高有效部分具有四位的宽度,并且第三激活的最低有效部分具有四位的宽度。
13.在一些实施例中,第三激活的最高有效部分具有三位的宽度,并且第三激活的最低有效部分具有五位的宽度。
14.在一些实施例中,共享的乘法器包括:第一部分宽度乘法器;第二部分宽度乘法器;以及加法器。
15.根据本公开的实施例,提供了一种系统,包括:处理电路,包括:第一乘法器;第二乘法器;以及共享的乘法器;处理电路被配置为:从激活阵列的第一行读取第一激活,第一激活包括最低有效部分和最高有效部分,第一激活的最高有效部分为零;将第一权重乘以第一激活;从激活阵列的第二行读取第二激活,第二激活包括最低有效部分和最高有效部分,第二激活的最高有效部分非零;以及将第二权重乘以第二激活,将第一权重乘以第一激活包括在第一乘法器中将第一权重乘以第一激活的最低有效部分,第一乘法器与第一行相关联;将第二权重乘以第二激活包括:在第二乘法器中将第二权重乘以第二激活的最低有效部分,第二乘法器与第二行相关联;以及在共享的乘法器中将第二权重乘以第二激活的最高有效部分,共享的乘法器与激活阵列的多个行相关联,多个行包括第一行和第二行。
16.在一些实施例中,处理电路还被配置为:从激活阵列的第三行读取第三激活,第三激活包括最低有效部分和最高有效部分,第三激活的最高有效部分非零;以及将第三权重乘以第三激活,其中,将第三权重乘以第三激活包括:在第三乘法器中将第三权重乘以第三激活的最低有效部分,第三乘法器与激活阵列的第三行相关联;以及将第三激活的最高有效部分存储在包括多个行的缓冲器的第一行中,缓冲器的第一行与激活阵列的第三行相关联。
17.在一些实施例中,处理电路还被配置为递增与缓冲器的第一行相关联的计数器。
18.在一些实施例中,将第三激活存储在缓冲器的第一行中包括确定与缓冲器的第一行相关联的计数器的值小于或等于与对应于第二激活的缓冲器的行相关联的计数器的值。
19.在一些实施例中,将第三权重乘以第三激活的最高有效部分还包括:从缓冲器中检索第三激活的最高有效部分,以及在第三乘法器中将第三权重乘以第三激活的最高有效部分。
20.在一些实施例中,将第三权重乘以第三激活的最高有效部分还包括:从缓冲器中检索第三激活的最高有效部分,以及在共享的乘法器中将第三权重乘以第三激活的最高有效部分。
21.在一些实施例中,第三激活的最高有效部分具有四位的宽度,并且第三激活的最低有效部分具有四位的宽度。
22.在一些实施例中,第三激活的最高有效部分具有三位的宽度,并且第三激活的最低有效部分具有五位的宽度。
23.在一些实施例中,共享的乘法器包括:第一部分宽度乘法器;第二部分宽度乘法器;以及加法器。
24.根据本公开的实施例,提供了一种系统,包括:用于处理的部件,包括:第一乘法器;第二乘法器;以及共享的乘法器;用于处理的部件被配置为:从激活阵列的第一行读取第一激活,第一激活包括最低有效部分和最高有效部分,第一激活的最高有效部分为零;将第一权重乘以第一激活;从激活阵列的第二行读取第二激活,第二激活包括最低有效部分和最高有效部分,第二激活的最高有效部分非零;以及将第二权重乘以第二激活,将第一权重乘以第一激活包括在第一乘法器中将第一权重乘以第一激活的最低有效部分,第一乘法器与第一行相关联;将第二权重乘以第二激活包括:在第二乘法器中将第二权重乘以第二激活的最低有效部分,第二乘法器与第二行相关联;以及在共享的乘法器中将第二权重乘以第二激活的最高有效部分,共享的乘法器与激活阵列的多个行相关联,多个行包括第一行和第二行。
25.在一些实施例中,用于处理的部件还被配置为:从激活阵列的第三行读取第三激活,第三激活包括最低有效部分和最高有效部分,第三激活的最高有效部分非零;以及将第三权重乘以第三激活,其中,将第三权重乘以第三激活包括:在第三乘法器中将第三权重乘以第三激活的最低有效部分,第三乘法器与激活阵列的第三行相关联;以及将第三激活的最高有效部分存储在包括多个行的缓冲器的第一行中,缓冲器的第一行与激活阵列的第三行相关联。
附图说明
26.参考说明书、权利要求书和附图,将会认识和理解本公开的这些和其他特征及优点,其中:
27.图1是根据本公开的实施例的用于执行神经网络计算的处理系统的部分的框图;
28.图2a是根据本公开的实施例的用于执行神经网络计算的处理系统的部分的框图;
29.图2b是根据本公开的实施例的用于执行神经网络计算的处理系统的部分的框图;
30.图3a是根据本公开的实施例的数据布局和流程图;
31.图3b是根据本公开的实施例的数据布局和流程图;
32.图3c是根据本公开的实施例的数据布局和流程图;
33.图3d是根据本公开的实施例的数据布局和流程图;
34.图3e是根据本公开的实施例的数据布局和流程图;
35.图3f是根据本公开的实施例的数据布局和流程图;
36.图4a是根据本公开的实施例的数据布局图;以及
37.图4b是根据本公开的实施例的用于执行神经网络计算的处理系统的部分的框图。
具体实施方式
38.下文结合附图阐述的详细描述旨在说明根据本公开提供的用于处理异常的系统和方法的示例性实施例,而非旨在表示可以构建或利用本公开的唯一形式。该描述结合所示的实施例阐述了本公开的特征。然而,应当理解,相同或等效的功能和结构可以通过不同的实施例来实现,这些实施例也旨在包含在本公开的范围内。如本文别处所示的,相似的附
图标记旨在指示相似的元素或特征。
39.由人工神经网络执行的推理运算可能涉及卷积计算或涉及权重阵列和激活阵列相乘的其他运算。深度神经网络(dnn)可以使用多组乘法器-累加器(multiplier-accumulator,mac)单元或具有8位乘法器的内积单元来实现。在一些情况下,有可能将大比例的激活表示为低位数(low-bit number)(例如,具有小位宽的数)。剩余的激活可以被称为“异常”。在这种情况下,如果一次在小的组中形成乘积和总和,则具有两个以上异常(即,超过阈值位宽的两个以上的数)的这种组的比例可能非常小。例如,如果10%的激活超过特定位宽(例如,4个位;即,10%的激活大于15),并且如果这些“异常”激活随机分布在激活的集合中,则随机选择的四个激活的集合将包括最多一个异常的概率是94.77%。因此,乘法器可以被组合为被称为“块(brick)”的小电路。此外,可以在每个块中包括额外的共享的乘法器,以处置异常的最高有效部分,如下面进一步详细讨论的。
40.图1示出了可以用于将二维权重阵列(图1的示例中的16
×
16权重阵列,w[0,0]至w[15,15])乘以激活向量(图1的示例中的a[0]至a[15])的处理分片(tile)。该分片包括被称为“块”105且排列成16列的64个电路。图1示出了块的4
×
16阵列,但是本发明不限于这种配置,并且该阵列可以具有任何尺寸。在每一行中,激活被广播到所有的列,使得在每个处理周期(cycle)中,每个激活都被乘以多个权重(例如,乘以16个权重)。
[0041]
图2a示出了一些实施例中的块105(或块的部分)。块105被配置为处置具有n位宽度的最低有效部分;宽于n位的激活(即,具有非零最高有效部分的激活)被视为异常,并且它们的最高有效部分被单独处置,如下面进一步详细讨论的。块包括五行。其中,前四行中的每一行都包括专用于该行的乘法器205(其可以被称为“行乘法器”)。第五行包括共享的乘法器210。这个乘法器在以下意义上是共享的:(i)它的输入之一连接到可以选择四个权重中的任一个的复用器215,以及(ii)另一个输入可以被馈送激活中任一个的最高有效部分,如下面进一步详细讨论的。由行乘法器205形成的乘积在包括三个加法器215的加法器树中相加在一起,并且输出可选地由可控移位器220移位n位。
[0042]
每个激活的最低有效部分可以是n个最低有效位(例如,4个最低有效位或5个最低有效位)。
[0043]
每个行乘法器205可以是n
×
8位乘法器。如果激活是8位数,那么任何激活的最高有效部分都可以是当该数的最低有效部分(具有n位的宽度)被移除时剩余的8-n位。共享的乘法器210可以是(8-n)
×
8位乘法器。在运算中,在给定的周期中,块可以接收四个激活。如果n=4,则行乘法器205中的每一个都可以将相应激活的最低有效部分(即,最低有效半字节(nibble))乘以相应权重。如果四个激活之一是异常(即,如果四个激活之一具有非零的最高有效部分),则可以在共享的乘法器210中将该异常的最高有效部分乘以适当的权重。
[0044]
如果四个激活中没有一个是异常,则共享的乘法器210可以在对应的周期中处于空闲。如果四个激活中有一个以上是异常,则可以在共享的乘法器210中将对应的非零最高有效部分之一乘以适当的权重,并且可以将剩余的最高有效部分存储在缓冲器中(其可以被称为“残差缓冲器”315(图3a)),如下面进一步详细讨论的。激活的最低有效部分的宽度n可以根据激活值的预期分布并基于硬件要求(例如,较大的n值要求行乘法器205较大)来选择。例如,(i)n可以等于4,行乘法器205中的每一个都可以是4
×
8乘法器,并且共享的乘法器210可以是4
×
8乘法器、或者(ii)n可以等于5,行乘法器205中的每一个都可以是5
×
8乘
法器,并且共享的乘法器210可以是3
×
8乘法器。图2a的电路可以在保持8
×
8乘法的性能的同时减少关键路径。
[0045]
图2b示出了一些实施例中的块105(或块的部分)。图2b的实施例与图2a的不同之处在于,在图2b的实施例中,共享的乘法器210是复合的、可配置的乘法器,包括两个乘法器(其可以被称为“部分宽度(partial width)”乘法器225)和一个加法器。此外,图2b的实施例具有六行,其中第五行和第六行连接到复合的共享的乘法器210。共享的乘法器210的加法器可以具有这样的能力:在将输入之一处的值与另一个输入处的值相加之前对该值进行移位,使得加法器可以将这两个输入视为(4
×
8)乘积的最高有效部分和最低有效部分(即,两个部分乘积)、或者加法器可以将这两个输入视为相同有效(significance)的两个乘积,使得加法器的输出是这两个乘积的和。例如,n可以等于4,行乘法器205中的每一个都可以是4
×
8乘法器,并且共享的乘法器210(在运算期间)可以被配置为(i)4
×
8乘法器(能够处置具有多达4个非零位的最高有效部分)或者(ii)两个2
×
8乘法器(能够一起处置各自具有多达两个非零位的两个最高有效部分)。
[0046]
图3a-图3f示出了具有激活的示例集合的处理电路的运算。处理电路向接收相同广播的块105的集合广播激活(例如,向图1所示的四个这种块105的集合之一,即,块105的一行)。图3a示出了存储要处理的激活阵列的激活缓冲器305。激活缓冲器305的每个列对存储(i)该列对的右手列中的最低有效部分的集合(例如,最低有效半字节(lsn)),以及(ii)该列对的左手列中的最高有效部分的集合(例如,最高有效半字节(msn))。左手列中任一个的空白单元指示对应的最高有效部分为零。根据激活缓冲器305从右到左处理激活,即首先处理最右边的两列。如图3a所示,前两列包含四个激活,其中两个是异常;这两个异常在(激活缓冲区305的,以及存储在激活缓冲区305中的阵列的)第一行和第四行,分别具有最高有效部分a和b。
[0047]
四个最低有效部分在四个相应行中被广播到块的集合(即接收相同广播的块105的集合)。在图3a的处理历史表310中示出该广播;该表并不对应于处理电路中的物理结构,而是在图3a-图3f中使用,以示出在任何时间已经被处理的激活的历史。异常之一的最高有效部分a被广播到块的集合中的每个块的共享的乘法器210。另一个异常的最高有效部分b被保存在残差缓冲器315中,与激活缓冲器305中存储另一个异常的行在同一行(即,在第四行,行3)中。处理电路包括残差计数器320的集合;与残差缓冲器315的新占用的行(即,第四行)相对应的计数器320增加1。
[0048]
图3b示出了继图3a的周期之后的周期。在图3b中,处理(激活缓冲区305的第二列对中(从右开始)的)激活的第二集合。如在前一周期中(如图3a所示),四个最低有效部分在四个相应行中被广播到块的集合。激活的第二集合包括两个异常,在第二行和第三行中具有最高有效部分c和d。这些异常中的第一个的最高有效部分c被广播到块的集合中的每个块的共享的乘法器210。另一个异常的最高有效部分d被保存在残差缓冲器315中,在同一行(第三行,行2,即,激活缓冲器305中存储了另一个异常的行)中。与该行(即第三行)相对应的计数器320增加1。
[0049]
在图3c中,处理(激活缓冲器305的第三列对中(从右开始)的)激活的第三集合。该激活的集合包括两个异常,一个在第一行,一个在第四行。如计数器320指示的,残差缓冲器315的第四行已经包含了条目(b),并且残差缓冲器315的第一行还不包含条目。当可能时,
以保持每行中条目的数量尽可能接近相等的方式来填充残差缓冲器315;这允许对保存在残差缓冲器315中的条目进行更高效的后续处理,如下面进一步详细讨论的。为此,第一激活的最高有效部分(即e)被保存在残差缓冲器315中,而第四激活的最高有效部分(即f)被广播到共享的乘法器210。
[0050]
在图3d中,处理(激活缓冲器305的(从右开始)第四列对中的)激活的第四集合。两个激活(第一激活和第四激活)是异常。残差缓冲器315在每个对应的行中都具有相同数量的条目;这样,为了保持每行中条目的数量尽可能接近相等,是第一最高有效部分g还是第四最高有效部分h被保存在残差缓冲器315中并不重要。在这种情况下(对于第一列对和第二列对也发生了这种情况(分别如图3a和图3b所示)),系统可以例如向块的集合中的每个块的共享的乘法器210广播来自具有异常的最低编号行的最高有效部分(在这种情况下,广播来自行0的值g),并且将另一个最高有效部分(在这种情况下,值h)保存在残差缓冲器315中。这就是图3d中所做的。
[0051]
在图3e中,处理(激活缓冲器305的(从右开始)第五列对中的)激活的第五集合。该激活的集合仅包括一个异常,并且其最高有效部分i被广播到块的集合中的每个块的共享的乘法器210。在图3f中,残差缓冲器315的内容被广播到块的集合,完成对激活的五个集合的处理。在该步骤中,值h被发送到共享的乘法器210。在一些实施例中,每个块中存在更多(例如,2或3个)共享的乘法器210(使得在不使用残差缓冲器315的情况下处置更多异常成为可能)。在一些实施例中,不存在残差缓冲器315。在一些实施例中,不存在共享的乘法器210,仅残差缓冲器315用于处置异常。
[0052]
图4a示出了残差缓冲器315,图4b示出了从残差缓冲器315中检索存储的最高有效部分的电路。该电路包括多个复用器405和多个索引查找电路450(仅示出了其中之一)。每个索引查找电路450可以控制以下两者:(i)复用器405从残差缓冲器315中选择要广播到块105的数据,以及(ii)每个块105中的复用器选择要馈送到乘法器中的对应的权重。
[0053]
如本文所使用的,“某事物的部分”指事物的“至少一部分”,因此可以指少于该事物的全部或该事物全部。同样地,事物的“部分”包括作为特例的整个事物,即,整个事物是事物的部分的示例。如本文所使用的,当第二量在第一量x的“y内”时,表示第二量至少是x-y,并且第二量至多是x y。如本文所使用的,当第二数在第一数的“y%内”时,表示第二数至少是第一数的(1-y/100)倍,并且第二数至多是第一数的(1 y/100)倍。如本文所使用的,术语“或”应当解释为“和/或”,例如,“a或b”表示“a”或“b”或者“a和b”中的任何一个。
[0054]
本文使用的术语“处理电路”和“用于处理的部件”中的每一个都表示用于处理数据或数字信号的硬件、固件和软件的任何组合。处理电路硬件可以包括例如专用集成电路(asic)、通用或专用中央处理单元(cpu)、数字信号处理器(dsp)、图形处理单元(gpu)以及诸如现场可编程门阵列(fpga)的可编程逻辑器件。如本文所使用的,在处理电路中,每个功能或者由被配置(即硬连线)为执行该功能的硬件来执行、或者由被配置为执行存储在非暂时性存储介质中的指令的更通用的硬件(诸如cpu)来执行。处理电路可以制造在单个印刷电路板(pcb)上、或者分布在若干个互连的pcb上。处理电路可以包含其他处理电路;例如,处理电路可以包括在pcb上互连的两个处理电路,fpga和cpu。
[0055]
如本文所使用的,术语“阵列”是指有序数集,与存储方式(例如,是否存储在连续的存储位置或存储在链表中)无关。
[0056]
如本文所使用的,当方法(例如,调整)或第一量(例如,第一变量)被称为“基于”第二量(例如,第二变量)时,表示第二量是该方法的输入或影响第一量,例如,第二量可以是计算第一量的函数的输入(例如,唯一输入或若干输入之一)或第一量可以等于第二量、或者第一量可以与第二量相同(例如,存储在存储器中与第二量相同的一个或多个位置)。
[0057]
应当理解,尽管术语“第一”、“第二”、“第三”等可以在本文用来描述各种元件、部件、区域、层和/或部分,但是这些元件、部件、区域、层和/或部分不应该受到这些术语的限制。这些术语仅用于区分一个元件、部件、区域、层或部分与另一个元件、部件、区域、层或部分。因此,在不脱离本发明构思的精神和范围的情况下,本文讨论的第一元件、部件、区域、层或部分可以被称为第二元件、部件、区域、层或部分。
[0058]
本文使用的术语仅用于描述特定实施例,而不旨在限制本发明构思。如本文所使用的,术语“基本上”、“大约”和类似术语用作近似术语,而不是程度术语,并且旨在说明本领域普通技术人员将会认识到的测量值或计算值的固有偏差。
[0059]
如本文所使用的,单数形式“一”和“一个”也旨在包括复数形式,除非上下文另有明确说明。还将理解,术语“包括”和/或“包含”在本说明书中使用时,指定所陈述的特征、整数、步骤、运算、元件和/或组件的存在,但不排除一个或多个其他特征、整数、步骤、运算、元件、组件和/或其组合的存在或添加。如本文所使用的,术语“和/或”包括一个或多个关联列出项目的任何和所有组合。当在元素列表之后时,诸如“中的至少一个”的表述修饰整个元素列表,而不是修饰列表的单个元素。此外,当描述本发明构思的实施例时,使用“可以”是指“本公开的一个或多个实施例”。此外,术语“示例性”旨在指代示例或说明。如本文所使用的,术语“使用”和“用于”可以被认为分别与术语“利用”和“用作”同义。
[0060]
本文所述的任何数值范围旨在包括所述范围内包含的相同数值精度的所有子范围。例如,“1.0至10.0”或“1.0至10.0之间”的范围旨在包括所述最小值1.0和所述最大值10.0之间的所有子范围,即,最小值等于或大于1.0且最大值等于或小于10.0,诸如例如2.4至7.6。本文中所述的任何最大数值限制旨在包括其中包含的所有较低数值限制,并且本说明书中列举的任何最小数值限制旨在包括其中包含的所有较高数值限制。
[0061]
应当理解,当一个元件被称为与另一个元件“直接连接”或“直接耦合”时,不存在中间元件。如本文所使用的,“通常连接”意味着通过可以通过包含任意中间元件(包括其存在定性地改变电路行为的中间元件)的电路径连接。如本文所使用的,“连接”意味着(i)“直接连接”或(ii)通过中间元件(该中间元件是不会定性地影响电路行为的元件(例如,低值电阻器或电感器、或传输线的短部分))连接。
[0062]
尽管本文已经具体描述和说明了用于处置异常的系统和方法的示例性实施例,但多种修改和变化对本领域技术人员而言是清楚的。因此,应当理解,根据本公开的原理构建的用于处置异常的系统和方法可以不按本文具体描述的方式来实施。本公开也在所附权利要求及其等同物中定义。
再多了解一些

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

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

相关文献