用于神经网络处理器的计算方法以及神经网络处理器与流程
未命名
07-26
阅读:201
评论:0

1.本发明属于嵌入式技术领域,特别地涉及用于神经网络处理器的计算方法以及神经网络处理器。
背景技术:
2.传统嵌入式神经网络处理器(npu,neural-network processing unit)的乘法累加器(mac,multiply accumulate)在运算时,仅能处理固定尺度(例如16x16)大小对齐的数据。当所需处理数据在输入通道维度上某一维度小于乘法累加器输入通道维度大小对齐量时,将使乘法累加器中的一部分乘累加单元运算无效数据,导致嵌入式神经网络处理器硬件未被完全利用,导致嵌入式神经网络处理器性能表现情况不佳,且带来不必要的功耗开销。
技术实现要素:
3.本发明的目的在于提供用于神经网络处理器的计算方法以及神经网络处理器,用于对嵌入式神经网络处理器中乘法累加器的利用率进行改善提升,优化嵌入式神经网络处理器性能。
4.在第一方面,本发明的实施例提供一种用于神经网络处理器的计算方法。该计算方法包括:获取输入数据,所述输入数据的输入通道维度小于神经网络处理器的乘法累加器的硬件输入通道维度;对所述输入数据在输入通道中的待读取数据进行重组排列,使得在读取所述输入通道的数据时,跳过所述输入通道的无效数据,以连续读取所述输入数据;以及将所述输入通道的读取的所述输入数据和权重数据对应相乘并累加。
5.于本发明的一实施例中,对所述输入数据在输入通道中的待读取数据进行重组排列包括:在高度方向上对所述输入数据的待读取数据进行切分分组,使得读取所述输入通道的数据时,跳过轴向所述输入通道的无效数据,以连续读取高度方向上的所述输入数据。
6.于本发明的一实施例中,对所述输入数据在输入通道中的待读取数据进行重组排列包括:在宽度方向上对所述输入数据的待读取数据进行切分分组,使得读取所述输入通道的数据时,跳过横向所述输入通道的无效数据,以连续读取宽度方向上的所述输入数据。
7.于本发明的一实施例中,该计算方法还包括:获取所述权重数据;以及对所述权重数据进行重组排列,包括:复制所述权重数据,使得各读取的所述输入数据分别对应于一份所述权重数据。
8.于本发明的一实施例中,相同输出通道的各读取的所述输入数据的权重数据相同。
9.于本发明的一实施例中,该计算方法还包括:获取所述权重数据,所述权重数据包括多份复制数据,各读取的所述输入数据分别对应于一份所述复制数据。
10.于本发明的一实施例中,将所述输入通道的读取的所述输入数据和权重数据对应相乘并累加包括:将所述输入通道的读取的不同的输入数据分别与各自所对应的权重数据
依次相乘后累加,以同时输出多个输出通道的输出数据,其中所述输入通道的读取的相同的输入数据与所述输入通道所所对应的权重数据依次相乘后累加形成一个输出通道的输出数据。
11.于本发明的一实施例中,将所述输入通道的读取的所述输入数据和权重数据对应相乘并累加包括:针对读取的所述输入数据和权重数据进行卷积运算,以在输出通道输出卷积结果。
12.在第二方面,本发明的实施例提供一种神经网络处理器。该神经网络处理器包括:读取流水线控制单元,被配置为获取输入数据,所述输入数据的输入通道维度小于神经网络处理器的乘法累加器的硬件输入通道维度,并对所述输入数据在输入通道中的待读取数据进行重组排列,使得在读取所述输入通道的数据时,跳过所述输入通道的无效数据,以连续读取所述输入数据;存储单元,被配置为存储重组排列后的所述输入数据;多个累加器,被配置为将所述存储单元存储的各所述输入通道读取的所述输入数据和权重数据对应相乘并累加。
13.于本发明的一实施例中,所述读取流水线控制单元包括:高度方向分组单元,被配置为在高度方向上对所述输入数据的待读取数据进行切分分组,使得读取所述输入通道的数据时,跳过轴向所述输入通道的无效数据,以连续读取高度方向上的所述输入数据;和/或宽度方向分组单元,被配置为在宽度方向上对所述输入数据的待读取数据进行切分分组,使得读取所述输入通道的数据时,跳过横向所述输入通道的无效数据,以连续读取宽度方向上的所述输入数据。
14.于本发明的一实施例中,所述读取流水线控制单元还包括:权重数据重组排列单元,被配置为获取所述权重数据,以及对所述权重数据进行重组排列,其中所述权重数据重组排列单元被配置为复制所述权重数据,使得各读取的所述输入数据分别对应于一份所述权重数据。
15.于本发明的一实施例中,多个所述累加器被配置为将所述输入通道的读取的不同的输入数据分别与各自所对应的权重数据依次相乘后累加,以同时输出多个输出通道的输出数据,其中单个所述累加器被配置为将所述输入通道的读取的相同的输入数据与所述输入通道所对应的权重数据依次相乘后累加形成一个输出通道的输出数据。
16.通过本发明实施例的用于神经网络处理器的计算方法及神经网络处理器,可以调整神经网络处理器中乘法累加器运算过程中的数据排列方式,有效提高乘法累加器的利用率,降低乘法累加器无效运算占比,同时减少了因无效运算导致的功耗开销。
附图说明
17.图1显示为本实施例的用于神经网络处理器的计算方法的流程图。
18.图2显示为本实施例的用于神经网络处理器的计算方法的原始输入数据的示意图。
19.图3显示为现有技术中常规卷积乘法累积器的运算示意图。
20.图4显示为本实施例的用于神经网络处理器的计算方法中切分分组后数据读取流水线的示意图。
21.图5显示为本实施例的用于神经网络处理器的计算方法中等效输入数据的示意
图。
22.图6显示为本实施例的用于神经网络处理器的计算方法中乘法累加器的运算示意图。
23.图7显示为本实施例的神经网络处理器的原理框图。
24.图8显示为本实施例的神经网络处理器中读取流水线控制单元的原理框图。
具体实施方式
25.以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。
26.需要说明的是,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
27.本发明的实施例提供一种用用于神经网络处理器的计算方法以及神经网络处理器,用于对嵌入式神经网络处理器中乘法累加器的利用率进行改善提升,优化嵌入式神经网络处理器性能。通过新的数据读取流水线,调整乘法累加器运算过程中的数据排列方式,来提高乘法累加器的利用率,降低乘法累加器(multiplying accumulator,mac)无效运算占比,提升性能,同时减少因无效运算导致的功耗开销。
28.以下将详细阐述本发明的用于神经网络处理器的计算方法以及神经网络处理器的原理及实施方式,使本领域技术人员不需要创造性劳动即可理解本发明的构思。
29.图1是示出本实施例的用于神经网络处理器的计算方法的流程图,如图1所示,本实施例的用于神经网络处理器的计算方法包括以下步骤s100至步骤s300。
30.步骤s100,获取输入数据,所述输入数据的输入通道维度小于神经网络处理器的乘法累加器的硬件输入通道维度。
31.图2显示为本实施例的用于神经网络处理器的计算方法的原始输入数据的示意图,该图示中,a、b、c、d表示为四种输入数据,输入数据的输入通道为4x4x8。本实施例以图2中所示的输入数据进行1x1卷积运算为例进行说明,如图2所示,输入数据的输入通道仅为乘法累加器对齐量的一半,输出通道也仅为乘法累加器对齐量的一半,其中,虚线部分为乘法累加器运算时需要补充的无效数据。
32.步骤s200,对所述输入数据在输入通道中的待读取数据进行重组排列,使得在读取所述输入通道的数据时,跳过所述输入通道的无效数据,以连续读取所述输入数据。
33.在一些实施例中,在重组排列时,在高度方向上对所述输入数据的待读取数据进行切分分组,使得读取所述输入通道的数据时,跳过轴向所述输入通道的无效数据,以连续读取高度方向上的所述输入数据。在一些实施例中,在重组排列时,在宽度方向上对所述输入数据的待读取数据进行切分分组,使得读取所述输入通道的数据时,跳过横向所述输入通道的无效数据,以连续读取宽度方向上的所述输入数据。
34.步骤s300,将所述输入通道的读取的所述输入数据和权重数据对应相乘并累加。在一些实施例中,针对读取的所述输入数据和权重数据进行卷积运算,以在输出通道输出卷积结果。
35.在一些实施例中,可以获取所述权重数据,以及对所述权重数据进行重组排列。在一些实施例中,复制所述权重数据,使得各读取的所述输入数据分别对应于一份所述权重数据。在其它实施例中,可以获取所述权重数据,所述权重数据包括多份复制数据,各读取的所述输入数据分别对应于一份所述复制数据。
36.当输入数据的输入通道维度小于乘法累加器(multiplying accumulator,mac)的硬件固有维度对齐限制时,本实施例的用于神经网络处理器的计算方法对运算数据进行重组排列,控制跳过无效数据,再读取下一片段的有效数据,形成数据读取流水线,随后在乘法累加器中同时运算各组,可以减少原本乘法累加器运算中因为固有维度限制而导致的无效计算,以提高乘法累加器利用率。
37.图3显示为现有技术中常规卷积乘法累积起的运算示意图,如图3所示,对于输入数据,对于输入输出通道为乘法累加器对齐量一半的卷积,因为硬件固有的维度对齐限制,所以硬件在读入数据时,会将无效数据部分补充0数据,以满足乘法累加器一次运算的数据量要求,其中,输入数据a后面的虚线部分为乘法累加器运算时需要补充的无效数据,有效输入数据占比为50%。对于待乘权重数据,图3中1~8分别表示为8种权重数据,输出通道为乘法累加器对齐量四分之一的卷积,输入权重数据1~8a旁边的虚线部分为乘法累加器运算时需要补充的无效数据,有效待乘权重数据占比为25%。这样乘法累加器仅能利用图3中的灰色部分,图3中虚线部分为填充的无效数据,图3中有效输入数据占比为50%,有效待乘权重数据占比为25%,则该过程乘法累加器利用率为25%。对于输出数据,输入数据与权重数据两两对乘后在输入通道上累加起来,累加后形成每个输出通道的一个点,一次mac运算可以全部输出,共计形成8个有效输出数据点。
38.本实施例的用于神经网络处理器的计算方法对需进行卷积计算的数据,当输入通道数(以数量8为例)维度小于乘法累加器的硬件固有维度对齐限制(以数量为16为例)时,通过本实施例的用于神经网络处理器的计算方法对输入数据的待读取数据进行切分分组(通过控制跳过多少的无效数据,然后再读取下一片段的有效数据),随后在乘法累加器中同时运算各组。可以减少原本mac运算中因为固有维度限制而导致的无效计算,以提高mac利用率。
39.根据本发明实施例,对所述输入数据进行重组排列可以包括:在高度方向和/或宽度方向上,对所述输入数据的待读取数据进行切分分组,使得读取所述输入通道的数据时,跳过轴向和/或横向所述输入通道的无效数据,以连续读取高度和/或宽度方向上的所述输入数据。
40.以下以在高度方向上对所述输入数据切分分组为例进行具体说明。
41.当输入通道维度不能被乘法累加器输入通道维度的对齐限制整除时,现有技术的技术手段为:在读取输入数据时,在输入通道方向补充乘法累加器的运算通道数(mac_inchannel)减去输入数据的通道维数个数据,通过无效数据填充满乘法累加器来进行运算。现有技术采用的技术手段由于填充的是无效数据,导致进行小尺度的卷积运算时,乘法累加器利用率低下。
42.本实施例的用于神经网络处理器的计算方法通过读取数据顺序变化,将常规做法中填充的无效数据转化为有效数据,从而提高乘法累加器利用率。
43.图4显示为本实施例的用于神经网络处理器的计算方法中切分分组后数据读取流水线的示意图。本实施例在高度方向上对所述输入数据进行分组切分后,可以将原始输入数据看作如图4所示的数据。通过本数据读取流水线优化后,可以将未利用的乘法累加器部分(图3中间部分的虚线部分)利用起来,通过在原始输入数据上,在高度方向上对所述输入数据的待读取数据进行切分分组,将图3中的无效数据部分以真实有效数据进行填充,使乘法累加器利用率提高至100%。
44.以在高度方向上对输入数据进行分组为例,如图5所示,对输入数据在高度方向上进行切分分组。将原本输入通道的高度进行切分,在高度方向上依次取输入数据,填充到所述输入通道的无效数据部分,即在读取所述输入通道的数据时,跳过所述输入通道的无效数据,连续读取所述输入数据,这样乘法累加器运算时填充的无效数据更少,使得乘法累加器利用率得到提高。
45.具体地,以对输入数据在高度方向上切分为四组为例进行说明。将图4中原本输入通道的高度进行切分,等效的输入通道如图5所示,在读取所述输入通道的数据a后,跳过所述输入通道a下一个位置的无效数据,继续读取数据b,相当于将输入数据a下方的输入数据b填充到所述输入通道a下一个位置的无效数据部分,连续读取所述输入数据,形成数据读取流水线,这样乘法累加器运算时填充的无效数据更少,使得乘法累加器利用率得到提高。
46.根据本发明实施例,对所述权重数据进行重组排列可以包括:复制所述权重数据,使得各读取的所述输入数据分别对应于一份所述权重数据。
47.具体地,如图6所示,本实施例中,相同输出通道的各读取的所述输入数据的权重数据相同。将图3中的权重数据进行复制,复制后输入数据在于权重数据相乘时,权重数据的等效图如图6所示,相当于权重数据填充了图3中权重数据的虚线部分的无效数据,可以使得各所述输入通道的输入数据和各所述权重数据对应相乘并同时累加后输出。
48.根据本发明实施例,将所述输入通道的读取的所述输入数据和权重数据对应相乘并累加包括:将所述输入通道的读取的不同的输入数据分别与各自所对应的权重数据依次相乘后累加,以同时输出多个输出通道的输出数据。所述输入通道的读取的相同的输入数据与所述输入通道所所对应的权重数据依次相乘后累加形成一个输出通道的输出数据。
49.如图6所示,a、b、c、d组数据分别与所对应的权重数据相乘后,a组数据累加后形成一个输出通道的8个输出数据,b组数据累加后形成一个输出通道的8个输出数据,c组数据累加后形成一个输出通道的8个输出数据,d组数据累加后也形成一个输出通道的8个输出数据,使mac利用率提高至100%。
50.本实施例还提供一种神经网络处理器,图7显示为本实施例的神经网络处理器的原理框图。如图7所示,本实施例中,神经网络处理器100包括:读取流水线控制单元110、存储单元120以及多个乘法累加器130。
51.于本实施例中,所述读取流水线控制单元110被配置为获取输入数据,所述输入数据的输入通道维度小于神经网络处理器100的乘法累加器130的硬件输入通道维度,对所述输入数据在输入通道中的待读取数据进行重组排列,使得在读取所述输入通道的数据时,跳过所述输入通道的无效数据,以连续读取所述输入数据。
52.本实施例中,所述读取流水线控制单元110还被配置为根据寄存器配置通过memoryinterface(axi总线等)从内存读取输入数据,然后对所述输入数据和权重数据进行重组排列。
53.图8显示为本实施例的神经网络处理器100中读取流水线控制单元110的原理框图。如图8所示,于本实施例中,所述读取流水线控制单元110包括:高度方向分组单元1101和/或高度方向分组单元1101。
54.所述高度方向分组单元1101被配置为在高度方向上对所述输入数据的待读取数据进行切分分组,使得读取所述输入通道的数据时,跳过轴向所述输入通道的无效数据,以连续读取高度方向上的所述输入数据。
55.所述高度方向分组单元1101被配置为在宽度方向上对所述输入数据的待读取数据进行切分分组,使得读取所述输入通道的数据时,跳过横向所述输入通道的无效数据,以连续读取宽度方向上的所述输入数据。
56.于本实施例中,所述读取流水线控制单元110还包括权重数据重组排列单元1103,其被配置为获取所述权重数据,以及对所述权重数据进行重组排列。权重数据重组排列单元1103被配置为复制所述权重数据,使得各读取的所述输入数据分别对应于一份所述权重数据。
57.于本实施例中,所述权重数据重组排列单元1103还可以被配置为获取所述权重数据,其中所述权重数据包括多份复制数据,各读取的所述输入数据分别对应于一份所述复制数据。
58.本实施例中,所述读取流水线控制单元110对所述输入数据和权重数据进行重组排列的过程与上述步骤s100的原理过程相同,在此不再赘述。
59.于本实施例中,所述存储单元120被配置为存储重组排列后的所述输入数据和所述权重数据。
60.多个所述累加器被配置为将所述存储单元120存储的各所述输入通道的输入数据和各所述权重数据对应相乘并同时累加后输出。
61.具体地,于本实施例中,多个所述累加器被配置为将所述输入通道的读取的不同的输入数据分别与各自所对应的权重数据依次相乘后累加,以同时输出多个输出通道的输出数据,其中单个所述累加器被配置为将所述输入通道的读取的相同的输入数据与所述输入通道所对应的权重数据依次相乘后累加形成一个输出通道的输出数据。即启动乘法累加器130,根据寄存器配置到所述存储单元120中读取出相应输入数据和权重数据,对读取的输入数据和权重数据进行卷积运算,以在输出通道输出卷积结果。
62.多个所述累加器的运算过程与上述步骤s200的原理过程相同,在此不再赘述。
63.综上所述,通过本发明实施例的用于神经网络处理器的计算方法及神经网络处理器100,可以调整神经网络处理器100中乘法累加器130运算过程中的数据排列方式,有效提高乘法累加器130的利用率,降低乘法累加器130无效运算占比,同时减少了因无效运算导致的功耗开销。所以,本发明有效克服了现有技术中的种种缺点而具高度产业利用价值。
64.上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完
成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。
技术特征:
1.一种用于神经网络处理器的计算方法,其特征在于,包括:获取输入数据,所述输入数据的输入通道维度小于神经网络处理器的乘法累加器的硬件输入通道维度;对所述输入数据在输入通道中的待读取数据进行重组排列,使得在读取所述输入通道的数据时,跳过所述输入通道的无效数据,以连续读取所述输入数据;以及将所述输入通道的读取的所述输入数据和权重数据对应相乘并累加。2.根据权利要求1所述的计算方法,其特征在于,对所述输入数据在输入通道中的待读取数据进行重组排列包括:在高度方向上对所述输入数据的待读取数据进行切分分组,使得读取所述输入通道的数据时,跳过轴向所述输入通道的无效数据,以连续读取高度方向上的所述输入数据。3.根据权利要求1或2所述的计算方法,其特征在于,对所述输入数据在输入通道中的待读取数据进行重组排列包括:在宽度方向上对所述输入数据的待读取数据进行切分分组,使得读取所述输入通道的数据时,跳过横向所述输入通道的无效数据,以连续读取宽度方向上的所述输入数据。4.根据权利要求1所述的计算方法,其特征在于,还包括:获取所述权重数据;以及对所述权重数据进行重组排列,包括:复制所述权重数据,使得各读取的所述输入数据分别对应于一份所述权重数据。5.根据权利要求4所述的计算方法,其特征在于,相同输出通道的各读取的所述输入数据的权重数据相同。6.根据权利要求1所述的计算方法,其特征在于,还包括:获取所述权重数据,所述权重数据包括多份复制数据,各读取的所述输入数据分别对应于一份所述复制数据。7.根据权利要求1所述的计算方法,其特征在于,将所述输入通道的读取的所述输入数据和权重数据对应相乘并累加包括:将所述输入通道的读取的不同的输入数据分别与各自所对应的权重数据依次相乘后累加,以同时输出多个输出通道的输出数据,其中所述输入通道的读取的相同的输入数据与所述输入通道所所对应的权重数据依次相乘后累加形成一个输出通道的输出数据。8.根据权利要求1所述的计算方法,其特征在于,将所述输入通道的读取的所述输入数据和权重数据对应相乘并累加包括:针对读取的所述输入数据和权重数据进行卷积运算,以在输出通道输出卷积结果。9.一种神经网络处理器,其特征在于,包括:读取流水线控制单元,被配置为获取输入数据,所述输入数据的输入通道维度小于神经网络处理器的乘法累加器的硬件输入通道维度,对所述输入数据在输入通道中的待读取数据进行重组排列,使得在读取所述输入通道的数据时,跳过所述输入通道的无效数据,以连续读取所述输入数据;存储单元,被配置为存储重组排列后的所述输入数据;多个累加器,被配置为将所述存储单元存储的各所述输入通道读取的所述输入数据和
权重数据对应相乘并累加。10.根据权利要求9所述的神经网络处理器,其特征在于,所述读取流水线控制单元包括:高度方向分组单元,被配置为在高度方向上对所述输入数据的待读取数据进行切分分组,使得读取所述输入通道的数据时,跳过轴向所述输入通道的无效数据,以连续读取高度方向上的所述输入数据;和/或宽度方向分组单元,被配置为在宽度方向上对所述输入数据的待读取数据进行切分分组,使得读取所述输入通道的数据时,跳过横向所述输入通道的无效数据,以连续读取宽度方向上的所述输入数据。11.根据权利要求10所述的神经网络处理器,其特征在于,所述读取流水线控制单元还包括:权重数据重组排列单元,被配置为获取所述权重数据,以及对所述权重数据进行重组排列,其中所述权重数据重组排列单元被配置为复制所述权重数据,使得各读取的所述输入数据分别对应于一份所述权重数据。12.根据权利要求9所述的神经网络处理器,其特征在于,多个所述累加器被配置为将所述输入通道的读取的不同的输入数据分别与各自所对应的权重数据依次相乘后累加,以同时输出多个输出通道的输出数据,其中单个所述累加器被配置为将所述输入通道的读取的相同的输入数据与所述输入通道所对应的权重数据依次相乘后累加形成一个输出通道的输出数据。
技术总结
本发明提供用于神经网络处理器的计算方法以及神经网络处理器。所述方法包括:获取输入数据,所述输入数据的输入通道维度小于神经网络处理器的乘法累加器的硬件输入通道维度;对所述输入数据在输入通道中的待读取数据进行重组排列,使得在读取所述输入通道的数据时,跳过所述输入通道的无效数据,以连续读取所述输入数据;以及将所述输入通道的读取的所述输入数据和权重数据对应相乘并累加。通过本发明的用于神经网络处理器的计算方法及神经网络处理器,可以调整神经网络处理器中乘法累加器运算过程中的数据排列方式,有效提高乘法累加器的利用率,降低乘法累加器无效运算占比,同时减少了因无效运算导致的功耗开销。同时减少了因无效运算导致的功耗开销。同时减少了因无效运算导致的功耗开销。
技术研发人员:肖一键 陈原平 曾飞
受保护的技术使用者:瑞芯微电子股份有限公司
技术研发日:2023.04.19
技术公布日:2023/7/25
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/