动态瓦片并行神经网络加速器制造技术

技术编号:30975218 阅读:22 留言:0更新日期:2021-11-25 21:03
动态瓦片神经网络加速器允许重新配置计算瓦片的数量和大小。每个计算单元子阵列的最左列是边缘单元,这些边缘单元有一个增加的矢量复用器,将单元输出反馈到加法器

【技术实现步骤摘要】
【国外来华专利技术】动态瓦片并行神经网络加速器


[0001]本专利技术涉及神经网络加速器,特别涉及神经网络加速器中的动态瓦片(tile)。

技术介绍

[0002]许多复杂的问题可以使用人工智能(AI)而不是传统程序来解决。对于更复杂的应用,往往需要深度学习。
[0003]专门针对AI的硬件加速器已经问世。深度神经网络(DNN)加速器使用许多并行计算引擎来加速深度学习AI应用。然而,这些引擎中的每一个都可能相当大,这增加了数据传输延迟。每个计算引擎的固定大小会导致某些工作负载的低效率,尤其是在使用许多卷积层时。并行的、固定的硬件可能与计算问题不匹配,导致未使用的引擎和低效利用。并行计算引擎的乘法累加器(MAC)效率可能会受到影响。
[0004]已经提出了许多改进深度神经网络的技术。使用开关映射或多级任务调度的控制流方案有固定的配置,可能无法提高MAC利用率。广播数据或提供激活共享的数据流方案同样有固定的配置,可能不会提高MAC利用率。多功能和单指令多数据(SIMD)系统可以有复杂的单元设计,从而增加硅面积。甚至已经提出了3D而不是2D阵列,但这些仍然有固定的配置。
[0005]期望有一种并行处理引擎的神经网络加速器,该引擎可重新配置为各种大小的瓦片(tile)。期望在神经网络加速器中提供动态瓦片大小,以最大化MAC利用率。还期望添加直接路径以减少数据传输延迟。进一步期望通过多功能计算单元来最小化数据传输延迟。
附图说明
[0006]图1是一个具有动态平铺的神经网络加速器的框图。
[0007]图2更详细地显示了多功能计算单元。
[0008]图3更详细地显示了多功能计算边缘单元。
[0009]图4显示了为4
×
4瓦片尺寸配置的动态瓦片神经网络加速器。
[0010]图5显示了为8
×
8瓦片尺寸配置的动态瓦片神经网络加速器。
[0011]图6显示了为8
×
4瓦片尺寸配置的动态瓦片神经网络加速器。
[0012]图7显示了为4
×
8瓦片尺寸配置的动态瓦片神经网络加速器。
[0013]图8A

8B突出显示了用于卷积和整流线性单元(ReLU)操作的单元的动态调度。
[0014]图9A

9B突出显示了图8A

8B的卷积和ReLU操作的时序。
[0015]图10显示了使用池化的卷积和ReLU的时序。
[0016]图11显示了训练一个神经网络,如图1的神经网络加速器。
具体实施方式
[0017]本专利技术涉及对神经网络加速器的改进。下面的描述是为了使本领域普通技术人员能够在特定应用及其要求的背景下制造和使用本专利技术。对优选实施例的各种修改对于本领
域的技术人员来说将是显而易见的,并且本文所定义的一般原则可应用于其它实施例。因此,本专利技术并不打算局限于所示和所述的特定实施例,而是要给予符合本文所公开的原则和新颖特征的最广泛的范围。
[0018]图1是一个具有动态平铺(tiling)的神经网络加速器的框图。一个处理引擎阵列由计算单元10和边缘单元12组成。计算单元10可以执行二维乘法,而边缘单元12可以执行二维乘法和矢量处理。边缘单元12具有计算单元10的所有功能,还可以执行矢量运算。
[0019]在这个例子中,单元阵列被分成4个子阵列,每个子阵列是一个4
×
4的单元阵列。单元的左边或第一列由边缘单元12组成,而单元的其余3列由计算单元10组成。因此边缘单元12构成了4
×
4子阵列的左边缘。
[0020]来自输入寄存器28的输入数据和来自控制寄存器24的控制信息位于阵列的顶部,并将数据和控制信息向下馈送到计算单元10和边缘单元12的阵列中。
[0021]来自权重寄存器22的权重位于阵列的左边,并将权重向右馈送到计算单元10和边缘单元12的阵列中。
[0022]专利技术人没有把输出寄存器26放置在阵列的右边,而是将输出寄存器26放置在阵列的左边,与权重寄存器22位于同一侧。将输出寄存器26放置在阵列的左边,允许激活单元重复使用,因为当输出寄存器26在左边时,输出可以一个一个地发送,因此不需要额外的激活单元硬件资源。
[0023]四个子阵列通过行数据选择器14水平连接,通过列数据选择器16垂直连接。行数据选择器14向右传递权重,向左输出数据。列数据选择器16向下传递控制信息和输入数据。
[0024]配置控制器20控制行数据选择器14和列数据选择器16。配置控制器20可以控制列数据选择器16从第四行计算单元10选择控制信息和输入数据,或直接从控制寄存器24和输入寄存器28选择控制信息和输入数据,允许控制和输入数据绕过上部4
×
4子阵列,从而减少到下部4
×
4子阵列的延迟。
[0025]控制和数据的选择方式相同,因此,列数据选择器16的输入取自控制寄存器24、输入寄存器28,或两个输入取自计算单元10。
[0026]配置控制器20还控制行数据选择器14,以从第四列计算单元10选择权重,或直接从权重寄存器22选择权重。配置控制器20还可以将右部子阵列的边缘单元12产生的输出发送到左部子阵列的第四列计算单元10,或者绕过左部子阵列,直接将输出发送到输出寄存器26。每个列数据选择器16可以有两个2:1复用器。每个行数据选择器14可以是两个复用器,一个是正向复用器,一个是反向的解复用器(de

mux)。
[0027]这种绕过4
×
4子阵列的做法减少了延迟。行数据选择器14和列数据选择器16可以调整瓦片(tile)大小,以减少延迟并提高计算单元10和边缘单元12的处理引擎利用率。通过控制行数据选择器14和列数据选择器16,配置控制器20可以控制来自输入分区和层的流数据,并根据正在进行的操作,配置阵列连接。这种绕过可以将输入数据广播到每个瓦片中。
[0028]图2更详细地显示了多功能计算单元。计算单元10从输入寄存器28、上游的计算单元10、或从列数据选择器16接收输入数据,这取决于计算单元10在阵列内的位置。该输入数据存储在单元输入寄存器104中,并可以传递到下游的计算单元10或列数据选择器16。
[0029]类似地,计算单元10从控制寄存器24、上游的计算单元10、或从列数据选择器16接
收控制信息,这取决于计算单元10在阵列中的位置。该控制信息存储在单元控制寄存器120中,并可以传递到下游的计算单元10或列数据选择器16。存储在单元控制寄存器120中的控制信息比特由计算单元10内部使用,以控制加法器

比较器112、累加器寄存器114和输出寄存器118的操作。
[0030]计算单元10也从上游的(左边的)计算单元10或边缘单元12接收权重。该权重存储在单元权重寄存器102中,并可传递到下游的(右边的)计算单元10或本文档来自技高网
...

【技术保护点】

【技术特征摘要】
【国外来华专利技术】1.一种动态瓦片神经网络加速器,包括:一个计算单元的阵列,每个计算单元都有乘法器和加法器

比较器,它们根据控制比特对输入、权重和输出进行操作,以产生覆盖所述输出的结果;其中输入、权重、输出和控制比特在所述阵列内相邻的计算单元之间移位;配置控制器,当被配置为第一模式时,将所述计算单元的阵列重新配置为具有第一瓦片尺寸的多个瓦片,当被配置为第二模式时,将所述计算单元的阵列重新配置为至少一个具有第二瓦片尺寸的瓦片;其中,所述第二瓦片尺寸大于所述第一瓦片尺寸;一列行数据选择器,其插入在所述计算单元的阵列的相邻两列计算单元之间,其中,当所述配置控制器处于所述第一模式时,在该列行数据选择器中的一个行数据选择器绕过所述计算单元的阵列内的一个计算单元子阵列周围的权重和输出,其中,当所述配置控制器处于所述第二模式时,所述行数据选择器直接在所述计算单元的阵列的所述相邻两列的相邻计算单元之间直接传递权重和输出;一行列数据选择器,其插入在所述计算单元的阵列的相邻两行计算单元之间,其中,当所述配置控制器处于所述第一模式时,在该行列数据选择器中的一个列数据选择器绕过所述计算单元的阵列内的一个计算单元子阵列周围的控制比特和输入,其中,当所述配置控制器处于所述第二模式时,所述列数据选择器直接在所述计算单元的阵列的所述相邻两行的相邻计算单元之间传递控制比特和输入;一初始列的权重寄存器和输出寄存器,其中所述权重寄存器将权重移位到所述计算单元的阵列的第一列的边缘单元,其中所述输出寄存器接收从所述第一列的边缘单元移出的所述输出;其中,所述权重寄存器的权重从所述初始列移入所述第一列的边缘单元,然后从所述第一列的边缘单元移到与所述第一列相邻的第二列的计算单元,然后移到其他列的计算单元;其中,由所述计算单元产生的输出朝着所述初始列移位,移位到相邻的计算单元,并通过所述第二列计算单元移入所述第一列的边缘单元;由此,对于所述第一瓦片尺寸的阵列配置,所述配置控制器将所述行数据选择器和所述列数据选择器配置为绕过,对于所述第二瓦片尺寸的阵列,配置为不绕过。2.根据权利要求1所述的动态瓦片神经网络加速器,还包括:每个所述边缘单元中的矢量复用器,所述矢量复用器将从所述第二列移入边缘单元的输出,反馈到所述边缘单元中的加法器

比较器的反馈输入,所述边缘单元用于比较所述反馈输入,以在移位到所述初始列的输出寄存器之前有条件地修改所述输出;其中所述边缘单元是修改过的计算单元,具有所述计算单元中不存在的矢量复用器,其中边缘单元使用所述矢量复用器将从相邻计算单元移入的所述输出反馈到所述加法器

比较器,而所述计算单元不能将从相邻计算单元移入的所述输出反馈到所述加法器

比较器。3.根据权利要求2所述的动态瓦片神经网络加速器,还包括:其中,当所述配置控制器处于所述第一模式时,所述行数据选择器直接从所述初始列的权重寄存器中选择权重,以绕过所述列的行数据选择器和所述初始列之间的计算单元。
4.根据权利要求3所述的动态瓦片神经网络加速器,还包括:一备用列的边缘单元,其与所述列行数据选择器相邻,且不在所初始列和所述列行数据选择器之间;其中,当所述配置控制器处于所述第二模式时,所述备用列的边缘单元作为计算单元运行;其中,当所述配置控制器处于所述第一模式时,所述备用列的边缘单元使用所述矢量复用器来反馈由其他计算单元移入的并最初由其他计算单元产生的输出。5.根据权利要求4所述的动态瓦片神经网络加速器,其中,当所述配置控制器处于所述第一模式时,所述行数据选择器将输出直接发送到所述初始列的输出寄存器,以绕过所述列行数据选择器和所述初始列之间的计算单元。6.根据权利要求5所述的动态瓦片神经网络加速器,其中每个计算单元和每个边缘单元包括一个单元,该单元包括:单元权重寄存器,用于存储移入所述单元的权重;单元输入寄存器,用于存储移入所述单元的输入;累加器寄存器,用于存储一个累积值;输出寄存器,其能够接收从相邻计算单元移入的输出,并能够接收存储在所述累加器寄存器中的所述累积值;乘法器,用于将来自所述单元权重寄存器的所述权重与来自所述单元输入寄存器的所述输入相乘,以产生一个结果;加法器

比较器,其能够将所述乘法器的所述结果与存储在所述累加器寄存器中的所述累积值相加,以产生一个更新的累积值,来更新所述累加器寄存器,并且能够执行比较操作以更新所述累积值。7.根据权利要求6所述的动态瓦片神经网络加速器,其中每个边缘单元还包括:矢量复用器,其将存储在所述输出寄存器中的所述输出反馈到所述加法器

比较器,其中,每个边缘单元能够对从相邻计算单元移入到所述输出寄存器的输出执行比较操作,其中所述计算单元不能对从相邻计算单元移入到所述输出寄存器的输出执行比较操作。8.根据权利要求7所述的动态瓦片神经网络加速器,其中所述矢量复用器通过所述乘法器反馈到所述加法器

比较器。9.根据权利要求5所述的动态瓦片神经网络加速器,其中所述权重在一行中的相邻计算单元之间,向远离所述初始列的第一方向上水平移位;其中,所述输出在所述行中的相邻计算单元之间,以朝向所述初始列的第二方向水平移位;其中所述二方向与所...

【专利技术属性】
技术研发人员:李涛单晓勍黄嘉隆刘雪娇刘瑜
申请(专利权)人:香港应用科技研究院有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1