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

一种神经网络加速处理方法及相关装置与流程

2022-03-23 08:26:28 来源:中国专利 TAG:


1.本技术涉及神经网络计算技术领域,特别涉及一种神经网络加速处理方法、神经网络加速处理装置、加速系统以及计算机可读存储介质。


背景技术:

2.随着信息技术的不断发展,cnn(convolutional neural networks,卷积神经网络)应用越发广泛,对精度的要求也越来越高,这使得cnn算法模型变得越来越大,计算复杂度越来越高,因此cnn网络计算量不可避免地大幅增加。另一方面,由于自动驾驶、工业互联网等领域对实时性要求越来越高,越来越多的cnn推理需要在边缘端完成,因此需要对推理进行加速。
3.相关技术中,大多数神经网络加速器都会关注卷积加速,但由于访存带宽的限制,卷积计算的并行度无法做到太高,限制了加速效果。此外,有些神经网络加速器利用深度可分离卷积代替部分标准卷积层来对网络进行加速,其架构专门针对深度可分离卷积设计,对于标准卷积计算过程的兼容性不够好,影响了加速性能。
4.因此,如何提高对卷积计算进行加速的效果是本领域技术人员关注的重点问题。


技术实现要素:

5.本技术的目的是提供一种神经网络加速处理方法、神经网络加速处理装置、加速系统以及计算机可读存储介质,提高对卷积计算进行加速的效果。
6.为解决上述技术问题,本技术提供一种神经网络加速处理方法,包括:
7.加速设备从片上特征缓存模块获取特征数据;
8.从片上权重缓存模块获取权重数据;
9.采用逐点处理阵列中的多个处理组合以流水线的方式对所述特征数据和所述权重数据进行并行卷积计算,得到逐点卷积结果;其中,每个所述处理组合包括多个处理核心;其中,每个所述处理核心包括多个乘法单元和一组加法树;
10.采用累加模块对所述逐点卷积结果进行累加计算处理,得到逐点累加处理结果;
11.采用逐通道处理阵列以流水线的方式对所述逐点累加处理结果和所述片上权重缓存模块中对应的权重数据进行并行卷积计算,得到逐通道卷积结果。
12.可选的,采用逐点处理阵列中的多个处理组合以流水线的方式对所述特征数据和所述权重数据进行并行卷积计算,得到逐点卷积结果,包括:
13.从所述逐点处理阵列的n路输入通道并行接收到每一路对应的特征数据和权重数据;
14.通过每个所述处理组合中的每个处理核心对对应通道的特征数据和权重数据进行并行卷积计算,得到每个输出通道对应的逐点卷积结果。
15.可选的,采用累加模块对所述逐点卷积结果进行累加计算处理,得到逐点累加处理结果,包括:
16.采用所述累加模块对所述每个输出通道的逐点卷积结果进行累加处理,得到累加数据;
17.对所述累加数据进行数据处理,得到所述逐点累加处理结果;其中,所述数据处理至少包括量化处理、融入激活处理、残差处理中的一种或多种。
18.可选的,采用逐通道处理阵列以流水线的方式对所述逐点累加处理结果和所述片上权重缓存模块中对应的权重数据进行并行卷积计算,得到逐通道卷积结果,包括:
19.当进行深度可分离卷积计算时,将所述逐点累加处理结果写入逐点特征缓存;
20.从片上权重缓存模块获取逐通道权重数据;
21.采用逐通道处理阵列的多个逐通道处理核心以流水线的方式对所述逐点累加处理结果和所述逐通道权重数据进行并行卷积计算,得到所述逐通道卷积结果;其中,每个所述逐通道处理核心包括多个乘法单元和一组加法树。
22.可选的,还包括:
23.当进行深度可分离卷积计算时,对所述逐通道卷积结果进行融入激活处理,并对处理结果进行量化处理,得到逐通道处理结果;
24.当进行3x3卷积计算时,采用3x3累加模块对所述逐通道卷积结果进行累加计算,对累加计算的结果进行数据处理得到3x3卷积计算结果;其中,所述数据处理至少包括量化处理、融入激活处理、残差处理中的一种或多种。
25.可选的,还包括:
26.采用所述片上特征缓存模块存储基于预设格式的特征数据;其中,所述片上特征缓存模块是由三组缓存单元构建得到的。
27.可选的,还包括:
28.通过池化模块对所述片上特征缓存模块中的特征数据进行池化计算,得到池化结果;
29.将所述池化结果写入所述片上特征缓存模块。
30.本技术还提供一种神经网络加速处理装置,包括:
31.特征数据获取模块,用于从片上特征缓存模块获取特征数据;
32.权重数据获取模块,用于从片上权重缓存模块获取权重数据;
33.逐点计算模块,用于采用逐点处理阵列中的多个处理组合以流水线的方式对所述特征数据和所述权重数据进行并行卷积计算,得到逐点卷积结果;其中,每个所述处理组合包括多个处理核心;其中,每个所述处理核心包括多个乘法单元和一组加法树;
34.1x1累加计算模块,用于对所述逐点卷积结果进行累加计算处理,得到逐点累加处理结果;
35.逐通道计算模块,用于以流水线的方式对所述逐点累加处理结果和所述片上权重缓存模块中对应的权重数据进行并行卷积计算,得到逐通道卷积结果。
36.本技术还提供一种加速系统,包括:
37.存储器,用于存储计算机程序;
38.处理器,用于执行所述计算机程序时实现如上所述的神经网络加速处理方法的步骤。
39.本技术还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算
机程序,所述计算机程序被处理器执行时实现如上所述的神经网络加速处理方法的步骤。
40.本技术所提供的一种神经网络加速处理方法,包括:加速设备从片上特征缓存模块获取特征数据;从片上权重缓存模块获取权重数据;采用逐点处理阵列中的多个处理组合以流水线的方式对所述特征数据和所述权重数据进行并行卷积计算,得到逐点卷积结果;其中,每个所述处理组合包括多个处理核心;其中,每个所述处理核心包括多个乘法单元和一组加法树;采用累加模块对所述逐点卷积结果进行累加计算处理,得到逐点累加处理结果;采用逐通道处理阵列以流水线的方式对所述逐点累加处理结果和所述片上权重缓存模块中对应的权重数据进行并行卷积计算,得到逐通道卷积结果。
41.通过逐点处理阵列对缓存中的特征数据和权重数据进行计算,并通过该逐点处理阵列中的多个处理组合以及其中的处理核心进行并行计算,再采用逐通道处理阵列以流水线的方式进行数据处理,实现了流水线式的并行卷积的计算过程,提高计算过程的并行度,提高神经网络的计算效率。并且同时兼容处理深度可分离卷积和普通卷积。
42.本技术还提供一种神经网络加速处理装置、加速系统以及计算机可读存储介质,具有以上有益效果,在此不做赘述。
附图说明
43.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
44.图1为本技术实施例所提供的一种神经网络加速处理方法的流程图;
45.图2为本技术实施例所提供的一种神经网络加速器的结构示意图;
46.图3为本技术实施例所提供的一种神经网络加速处理方法的pe核结构示意图;
47.图4为本技术实施例所提供的一种神经网络加速处理方法的逐点pe组合结构示意图;
48.图5为本技术实施例所提供的一种神经网络加速处理方法的逐点pe阵列结构示意图;
49.图6为本技术实施例所提供的一种神经网络加速处理方法的1x1累加模块结构示意图;
50.图7为本技术实施例所提供的一种神经网络加速处理方法的逐通道pe核结构示意图;
51.图8为本技术实施例所提供的一种神经网络加速处理方法的逐通道pe阵列结构示意图;
52.图9为本技术实施例所提供的一种神经网络加速处理方法的3x3累加模块结构示意图;
53.图10为本技术实施例所提供的一种神经网络加速处理方法的片上特征缓存模块结构示意图;
54.图11为本技术实施例所提供的一种神经网络加速处理装置的结构示意图。
具体实施方式
55.本技术的核心是提供一种神经网络加速处理方法、神经网络加速处理装置、加速系统以及计算机可读存储介质,提高对卷积计算进行加速的效果。
56.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
57.相关技术中,大多数神经网络加速器都会关注卷积加速,但由于访存带宽的限制,卷积计算的并行度无法做到太高,限制了加速效果。此外,有些神经网络加速器利用深度可分离卷积代替部分标准卷积层来对网络进行加速,其架构专门针对深度可分离卷积设计,对于标准卷积计算过程的兼容性不够好,影响了加速性能。
58.因此,本技术提供一种神经网络加速处理方法,通过逐点处理阵列对缓存中的特征数据和权重数据进行计算,并通过该逐点处理阵列中的多个处理组合以及其中的处理核心进行并行计算,再采用逐通道处理阵列以流水线的方式进行数据处理,实现了流水线式的并行卷积的计算过程,提高计算过程的并行度,提高神经网络的计算效率。并且同时兼容处理深度可分离卷积和普通卷积。
59.以下通过一个实施例,对本技术提供的一种神经网络加速处理方法进行说明。
60.请参考图1,图1为本技术实施例所提供的一种神经网络加速处理方法的流程图。
61.本实施例中,该方法可以包括:
62.s101,加速设备从片上特征缓存模块获取特征数据;
63.可见,本可选方案旨在加速设备从片上特征缓存模块获取特征数据。
64.其中,片上特征缓存模块暂存cnn网络计算过程中的特征数据,也可用于输入输出过程中的数据缓冲。暂存的特征数据包括最初的第一层输入特征数据、卷积层计算结果、池化层计算结果等。
65.s102,从片上权重缓存模块获取权重数据;
66.可见,本可选方案旨在加速设备从片上权重缓存模块获取权重数据。
67.其中,片上权重缓存用于存储权重数据,并按要求的格式及顺序为逐点处理阵列和逐通处理阵列提供权重数据。当神经网络权重参数量不是很大,所使用的fpga(field-programmable gate array,现场可编程门阵列)/asic(application specific integrated circuit,专用集成电路)片上存储资源充足时,可以将所有的权重数据全部存储在片上;如果神经网络权重参数量比较大,片上存储资源较紧张时,可选择将权重数据存储到片外存储器中,进行计算时从片外读取所需数据,再输出给逐点处理阵列或逐通道处理阵列。
68.s103,采用逐点处理阵列中的多个处理组合以流水线的方式对特征数据和权重数据进行并行卷积计算,得到逐点卷积结果;其中,每个处理组合包括多个处理核心;其中,每个处理核心包括多个乘法单元和一组加法树;
69.在s101和s102的基础上,本步骤旨在采用逐点处理阵列中的多个处理组合对特征数据和权重数据进行并行卷积计算,得到逐点卷积结果。
70.进一步的,本步骤可以包括:
71.步骤1,从逐点处理阵列的n路输入通道并行接收到每一路对应的特征数据和权重数据;
72.步骤2,通过每个处理组合中的每个处理核心对对应通道的特征数据和权重数据进行并行卷积计算,得到每个输出通道对应的逐点卷积结果。
73.可见,本可选方案主要是说明如何进行并行卷积计算。本可选方案中,从逐点处理阵列的n路输入通道并行接收到每一路对应的特征数据和权重数据,通过每个处理组合中的每个处理核心对对应通道的特征数据和权重数据进行并行卷积计算,得到每个输出通道对应的逐点卷积结果。其中,n可以为8。
74.s104,采用累加模块对逐点卷积结果进行累加计算处理,得到逐点累加处理结果;
75.在s103的基础上,本步骤旨在采用累加模块对逐点卷积结果进行累加计算处理,得到逐点累加处理结果
76.其中,逐点处理阵列用于1x1卷积计算,累加模块也被作为1x1累加模块,主要用于完成各输入通道部分和的累加和累加结果的量化,除此之外还集成了激活和残差功能。在1x1累加模块后设有选择器,当计算深度可分离卷积时,1x1累加模块的计算结果输出给特征缓存模块用于逐通道卷积的计算;仅计算1x1卷积时,累加模块的计算结果输出给片上特征缓存模块。
77.进一步的,本步骤可以包括:
78.步骤1,采用累加模块对每个输出通道的逐点卷积结果进行累加处理,得到累加数据;
79.步骤2,对累加数据进行数据处理,得到逐点累加处理结果;其中,数据处理至少包括量化处理、融入激活处理、残差处理中的一种或多种。
80.可见,本可选方案中主要是说明如何进行累加计算。本可选方案中,采用累加模块对每个输出通道的逐点卷积结果进行累加处理,得到累加数据,对累加数据进行数据处理,得到逐点累加处理结果;其中,数据处理至少包括量化处理、融入激活处理、残差处理中的一种或多种。
81.s105,采用逐通道处理阵列以流水线的方式对逐点累加处理结果和片上权重缓存模块中对应的权重数据进行并行卷积计算,得到逐通道卷积结果。
82.在s104的基础上,本步骤旨在采用逐通道处理阵列以流水线的方式对逐点累加处理结果和片上权重缓存模块中对应的权重数据进行并行卷积计算,得到逐通道卷积结果。
83.其中,逐通道处理阵列既可以用于计算逐通道卷积,也可以用于计算标准卷积。与1x1累加模块类似,3x3累加模块除了完成输入通道部分和累加外,还可以集成量化、激活和残差功能。在计算逐通道卷积时,逐通道处理阵列接收来自逐点特征缓存的数据,计算结果为最终卷积层输出,直接输出给片上特征缓存模块;在计算标准卷积(3x3卷积)时,逐通道处理阵列从片上特征缓存模块读取特征数据用于计算,计算结果还需经过3x3累加模块完成各输入通道部分和相加,再经过量化、激活、残差计算等操作,得到最终结果再输出给片上特征缓存模块。
84.进一步的,本步骤可以包括:
85.步骤1,当进行深度可分离卷积计算时,将逐点累加处理结果写入逐点特征缓存;
86.步骤2,从片上权重缓存模块获取逐通道权重数据;
87.步骤3,采用逐通道处理阵列的多个逐通道处理核心以流水线的方式对逐点累加处理结果和逐通道权重数据进行并行卷积计算,得到逐通道卷积结果;其中,每个逐通道处理核心包括多个乘法单元和一组加法树。
88.可见,本可选方案中还说明在逐点处理阵列处理之后,还可以通过逐通道阵列进行处理计算,以实现对可分离卷积网络进行加速计算。本可选方案中,当进行深度可分离卷积计算时,将处理结果写入逐点特征缓存,从片上权重缓存模块获取逐通道权重数据,采用逐通道处理阵列的多个逐通道处理核心以流水线的方式对逐点累加处理结果和逐通道权重数据进行并行卷积计算,得到逐通道卷积结果;其中,每个逐通道处理核心包括多个乘法单元和一组加法树。
89.此外,本实施例还可以包括:
90.步骤1,当进行深度可分离卷积计算时,对逐通道卷积结果进行融入激活处理,并对处理结果进行量化处理,得到逐通道处理结果;
91.步骤2,当进行3x3卷积计算时,采用3x3累加模块对逐通道卷积结果进行累加计算,对累加计算的结果进行数据处理得到3x3卷积计算结果;其中,数据处理至少包括量化处理、融入激活处理、残差处理中的一种或多种。
92.在上一可选方案的基础上,实现了对深度可分离卷积和3x3卷积同时进行兼容,提高了该加速设备的适用范围。
93.此外,本实施例还可以包括:
94.采用片上特征缓存模块存储基于预设格式的特征数据;其中,片上特征缓存模块是由三组缓存单元构建得到的。
95.此外,本实施例还可以包括:
96.步骤1,通过池化模块对片上特征缓存模块中的特征数据进行池化计算,得到池化结果;
97.步骤2,将池化结果写入片上特征缓存模块。
98.也就是,池化模块从片上特征缓存模块读取数据,计算完成后再写回去;此外,数据运算模块用于完成其他操作,例如通道数据拼接等。
99.综上,本实施例通过逐点处理阵列对缓存中的特征数据和权重数据进行计算,并通过该逐点处理阵列中的多个处理组合以及其中的处理核心进行并行计算,再采用逐通道处理阵列以流水线的方式进行数据处理,实现了流水线式的并行卷积的计算过程,提高计算过程的并行度,提高神经网络的计算效率。并且同时兼容处理深度可分离卷积和普通卷积。
100.以下通过一个具体的实施例,对本技术提供的一种神经网络加速处理方法的神经网络加速器做进一步说明。
101.请参考图2,图2为本技术实施例所提供的一种神经网络加速器的结构示意图。
102.本实施例中,神经网络加速器主要针对cnn网络进行加速,该加速器主要由输入(片上)filter(权重)缓存模块、片上特征缓存模块、逐点卷积处理单元阵列(以下称为逐点pe(processing elements,处理单元)阵列)、1x1累加模块、逐通道卷积处理单元阵列(以下称逐通道pe阵列)、3x3累加模块、池化模块等组成,图2是该加速器的整体结构框图。
103.其中,神经网络加速器一般部署在fpga或asic上,cpu将经过预处理的特征数据直
接下发到片上特征缓存;当权重数据量不大时,cpu可选择将权重数据下发到输入(片上)filter缓存存储;当cnn网络参数较多,cpu可选择将权重数据下发到片外存储器,输入(片上)缓存模块作为一级数据缓存,从片外存储器读取数据后,再输送给逐点pe阵列和逐通道pe阵列。
104.逐点pe阵列用于1x1卷积计算,1x1累加模块主要用于完成各输入通道部分和的累加和累加结果的量化,除此之外还集成了激活和残差功能。在1x1累加模块后设有选择器,当计算深度可分离卷积时,1x1累加模块的计算结果输出给特征缓存模块用于逐通道卷积的计算;仅计算1x1卷积时,累加模块的计算结果输出给片上特征缓存模块。
105.逐通道pe阵列既可以用于计算逐通道卷积,也可以用于计算标准卷积。与1x1累加模块类似,3x3累加模块除了完成输入通道部分和累加外,还集成了量化、激活和残差功能。在计算逐通道卷积时,逐通道pe阵列接收来自逐点特征缓存的数据,计算结果为最终卷积层输出,直接输出给片上特征缓存模块;在计算标准卷积(3x3卷积)时,逐通道pe阵列从片上特征缓存模块读取特征数据用于计算,计算结果还需经过3x3累加模块完成各输入通道部分和相加,再经过量化等操作(可选地进行激活和残差计算),得到最终结果再输出给片上特征缓存模块。
106.池化模块从片上特征缓存模块读取数据,计算完成后再写回去;数据运算模块用于完成其他操作,例如通道数据拼接等。
107.本实施例的神经网络加速器主要用于cnn网络加速,以下分别介绍其中的主要模块。
108.请参考图3,图3为本技术实施例所提供的一种神经网络加速处理方法的pe核结构示意图。
109.逐点pe阵列中的pe核结构如图3所示,每个pe核里包含8个乘法单元和一组加法树。d0-d8是8个输入通道的特征数据,w1-w8是对应的8个通道的权重数据,8个乘法单元分别完成8个通道的1x1卷积相乘操作。加法树完成8个输入通道部分和的相加后,将结果输出。由此可得,单个pe核能够完成8个输入通道特征的并行计算。
110.请参考图4,图4为本技术实施例所提供的一种神经网络加速处理方法的逐点pe组合结构示意图。
111.逐点pe组合由8个逐点pe核组成,如图4所示,分别为pe1-pe8,每个pe核完成8个特征与8个filter数据的乘累加计算。其中d1代表特征图上位置1对应的8个输入通道的特征数据(共8个),d2代表特征图上位置2对应的8个输入通道的特征数据,依次类推。8输入通道filter为上述提到的8个输入通道对应的权重数据(共8个),一个逐点pe组合共享一组权重数据(8个),能够并行完成8输入通道下的8路特征数据的计算。
112.请参考图5,图5为本技术实施例所提供的一种神经网络加速处理方法的逐点pe阵列结构示意图。
113.如图5所示,逐点pe阵列由32个逐点pe组合组成,每个处理组合计算一个输出通道。特征输入1代表输出通道1对应的8组8输入通道特征,特征输入2代表输出通道2对应的8组8输入通道特征,特征输入3-特征输入32依此类推。权重输入f1代表输出通道1对应的8输入通道权重数据,权重输入f1代表输出通道2对应的8输入通道权重数据,权重输入f3-权重输入f32依此类推。
114.至此,可以看出逐点pe阵列可以在特征图数据、输入通道和输出通道3个维度进行并行计算。本实施例以8路特征数据、8输入通道和32输出通道为例进行阐述,其中特征数据和filter数据都被量化为int8类型。
115.请参考图6,图6为本技术实施例所提供的一种神经网络加速处理方法的1x1累加模块结构示意图。
116.1x1累加模块接收逐点pe阵列输出的部分和结果,完成累加计算、量化、激活等操作,其结构如图6所示。1x1累加模块对32个输出通道进行并行计算,与逐点pe阵列相匹配。图中部分和1-部分和32是1-32输出通道的部分和,部分和经过累加后需经过量化操作。量化是将累加完的结果(int32)重新变为int8格式,这样32通道并行计算完成的数据位宽为8*32*8bit=2048bit,该数据位宽过高,对后续数据处理压力较大,因此利用fifo(first input first output,先进先出存储器)将其变为8特征*8输出通道=512bit。
117.根据网络结构,在1x1累加模块中可选择是否进行激活操作和残差计算。如果该逐点卷积层后紧跟残差计算,那么可以在进行1x1累加计算的同时,从片上缓存单元读取对应的数据,待残差计算完成后,再写回片上特征缓存模块。本实施例设计每次写回片上特征缓存模块的特征数据顺序是相同的,因此可以按顺序从片上缓存模块读取数据,累加计算、残差操作能够形成流水线,这样既能减少大量访存动作,还能节省处理时间。1x1累加模块的最终计算结果经过选择器后,输出给逐通道卷积阵列或片上特征缓存模块。
118.进一步的,当该神经网络加速器在计算深度可分离卷积时,逐点pe阵列的处理结果先进入逐点特征缓存。逐点特征缓存主要是将缓存的数据按要求改变顺序及端口格式,输送给逐通道pe阵列。
119.请参考图7,图7为本技术实施例所提供的一种神经网络加速处理方法的逐通道pe核结构示意图。
120.逐通道pe阵列由32个逐通道pe核组成,可以并行完成32输出通道的3x3卷积计算。逐通道pe核的结构如图7所示,该pe核包含9个乘法单元和一组加法树,每个乘法单元完成一个特征数据(图7中d0-d8)和一个权重数据(图7中w0-w8)的相乘,加法树完成9个乘法结果的求和计算,加法树包含4级,适合进行流水线计算。加法树后面还连接量化及激活操作组件,如果是计算可分离卷积,则需要经过量化操作和激活操作;如果计算标准卷积,则直接输出加法树累加结果。
121.请参考图8,图8为本技术实施例所提供的一种神经网络加速处理方法的逐通道pe阵列结构示意图。
122.逐通道pe阵列的结构如图8所示,阵列共包含32个逐通道处理核(pe1-pe32),每个pe核完成一个输出通道的3x3卷积计算。特征通道1

特征通道32分别为第1-32输出通道对应的特征数据,每个通道包含9个特征值,权重通道1

权重通道32分别为第1-32输出通道对应的权重数据,每个通道包含9个权重值。为了保证逐通道卷积计算结果的数据格式、存储顺序与逐点卷积结果一致,在每个pe核后设有一个fifo,当计算结果累计到8个时一并输出。此外,32个pe核并行输出的8特征*32通道数据也需要经过fifo,转换为8特征*8通道(=512bit)再输出。最终经过选择器后或者输出给3x3累计模块,或者输出给片上特征缓存模块。
123.请参考图9,图9为本技术实施例所提供的一种神经网络加速处理方法的3x3累加
模块结构示意图。
124.在计算标准卷积时,逐通道阵列计算的结果还需要进行通道累加才能得到最终结果。本实施例的神经网络加速器包含了3x3累加模块,其结构与1x1累加模块基本一致,如图9所示,3x3累加模块接收逐点pe阵列输出的部分和结果,完成累加计算、量化、激活等操作。3x3累加模块对32个输出通道进行并行计算,与逐通道pe阵列相匹配。图中部分和1-部分和32是1-32输出通道的部分和,部分和经过累加后需经过量化操作。量化是将累加完的结果(int32)重新变为int8格式,这样32通道并行计算完成的数据位宽为8*32*8bit=2048bit,该数据位宽过高,对后续数据处理压力较大,因此利用fifo将其变为8特征*8输出通道=512bit。
125.与1x1累加模块类似,根据网络结构,在3x3累加模块中可选择是否进行激活操作和残差计算。如果该卷积层后紧跟残差计算,那么可以在进行3x3累加计算的同时,从片上缓存单元读取对应的数据,待残差计算完成后,再写回片上特征缓存模块。同样地,每次写回片上特征缓存模块的特征数据顺序是相同的,因此可以按顺序从片上缓存模块读取数据。与1x1累加模块不同的是,3x3累加模块的结果直接写回片上特征缓存模块。
126.其中,片上filter缓存模块用于存储权重数据,并按要求的格式及顺序为逐点pe阵列和逐通道pe阵列提供filter数据。当神经网络权重参数量不是很大,所使用的fpga/asic片上存储资源充足时,可以将所有的权重数据全部存储在片上;如果神经网络权重参数量比较大,片上存储资源较紧张时,可选择将权重数据存储到片外存储器中,进行计算时从片外读取所需数据,再输出给逐点pe阵列或逐通道pe阵列。
127.请参考图10,图10为本技术实施例所提供的一种神经网络加速处理方法的片上特征缓存模块结构示意图。
128.片上特征缓存模块暂存cnn网络计算过程中的特征数据,也可用于输入输出过程中的数据缓冲。暂存的特征数据包括最初的第一层输入特征数据、卷积层计算结果、池化层计算结果等。如图10所示,片上特征缓存模块主要由3个存储块组成,分别为存储块a、存储块b和存储块c,3个存储块的结构完全一样,端口宽度均为512bit,均由简单双端口ram组成,可读或写,选择简单双端口ram可以减少ram资源的消耗。每个存储块都有独立的读写控制逻辑,模块整体包含3组接口,分别为a、b和c,模块通过存储块选择控制逻辑去决定哪个(或哪几个)需要读或者写。设置3个存储块,任2个存储块可以组成乒乓结构,适合卷积计算、残差计算等流水线处理的需求,满足以下多种场景的计算:
129.计算卷积时,设当前需计算的特征数据暂存于存储块a,那么可以从存储块a读取特征数据,卷积阵列进行流水线计算的同时结果可写回到存储块b;
130.计算卷积层与残差时,假设前面某一层卷积层m的计算结果暂存于存储块a,当前需要计算的卷积层特征数据暂存于存储块b,那么进行计算时,从存储块b读取特征数据进行卷积计算,累加模块进行计算时,同时从存储块a读取需进行残差的数据,残差数据计算完成后将最终结果写到存储块c;
131.进行池化计算时,设当前需要计算的特征数据暂存于存储块a,则从存储块a读取数据,计算完成后写回到存储块b。
132.如上述几种情景,将cnn网络中的中间结果(卷积层、残差等的计算结果)写到片上特征缓存模块存储,进行下一层计算时也从片上特征缓存模块读取数据,避免了对片外存
储器的访问,不仅能够破除访问片外存储器带宽不足的限制,还能读写数据的时间。此外,设置3个存储块,可以在计算卷积的同时进行残差计算,将整个残差操作融入到流水线中,这样便能加速整个网络的计算。
133.池化操作是cnn网络中最常见的计算之一,本实施例中的池化模块用于完成池化计算,池化模块从片上特征缓存模块中读取数据,计算完成后再写回片上特征缓存模块。其他数据操作模块可以完成数据拼接等操作,可以根据网络结构及fpga/asic可使用资源情况灵活设计。
134.可见,本实施例可以支持3个维度并行计算的逐点pe阵列设计:逐点pe阵列的结构设计使其能在特征图数据、输入通道和输出通道3个维度进行并行计算,使得可以计算并行度大幅增加。cnn网络所有中间计算结果暂存在片上,避免了对片外存储器的频繁访问,消除了访存带宽不足对加速性能的影响;通过3组存储块的设计,将残差计算嵌入到累加模块中实现流水线处理,减少了访问次数,加速了网络计算流程;3组独立读写存储块的设计,任意两组可以形成乒乓结构,使其适合流水线处理;除此之外,3组存储块还能保证残差计算的流水线处理。
135.下面对本技术实施例提供的神经网络加速处理装置进行介绍,下文描述的神经网络加速处理装置与上文描述的神经网络加速处理方法可相互对应参照。
136.请参考图11,图11为本技术实施例所提供的一种神经网络加速处理装置的结构示意图。
137.本实施例中,该装置可以包括:
138.特征数据获取模块100,用于从片上特征缓存模块获取特征数据;
139.权重数据获取模块200,用于从片上权重缓存模块获取权重数据;
140.逐点计算模块300,用于采用逐点处理阵列中的多个处理组合以流水线的方式对所述特征数据和所述权重数据进行并行卷积计算,得到逐点卷积结果;其中,每个所述处理组合包括多个处理核心;其中,每个所述处理核心包括多个乘法单元和一组加法树;
141.1x1累加计算模块400,用于对所述逐点卷积结果进行累加计算处理,得到逐点累加处理结果;
142.逐通道计算模块500,用于以流水线的方式对所述逐点累加处理结果和所述片上权重缓存模块中对应的权重数据进行并行卷积计算,得到逐通道卷积结果。
143.可选的,该逐点计算模块300,具体用于从所述逐点处理阵列的n路输入通道并行接收到每一路对应的特征数据和权重数据;通过每个所述处理组合中的每个处理核心对对应通道的特征数据和权重数据进行并行卷积计算,得到每个输出通道对应的逐点卷积结果。
144.可选的,该1x1累加计算模块400,具体用于采用所述累加模块对所述每个输出通道的逐点卷积结果进行累加处理,得到累加数据;对所述累加数据进行数据处理,得到所述逐点累加处理结果;其中,所述数据处理至少包括量化处理、融入激活处理、残差处理中的一种或多种。
145.可选的,该逐通道计算模块500,具体用于当进行深度可分离卷积计算时,将所述逐点累加处理结果写入逐点特征缓存;从片上权重缓存模块获取逐通道权重数据;采用逐通道处理阵列的多个逐通道处理核心以流水线的方式对所述逐点累加处理结果和所述逐
通道权重数据进行并行卷积计算,得到所述逐通道卷积结果;其中,每个所述逐通道处理核心包括多个乘法单元和一组加法树。
146.可选的,该装置,还可以包括:
147.3x3累加计算模块,用于当进行深度可分离卷积计算时,对所述逐通道卷积结果进行融入激活处理,并对处理结果进行量化处理,得到逐通道处理结果;当进行3x3卷积计算时,采用3x3累加模块对所述逐通道卷积结果进行累加计算,对累加计算的结果进行数据处理得到3x3卷积计算结果;其中,所述数据处理至少包括量化处理、融入激活处理、残差处理中的一种或多种。
148.可选的,该装置,还可以包括:
149.特征数据存储模块,用于采用所述片上特征缓存模块存储基于预设格式的特征数据;其中,所述片上特征缓存模块是由三组缓存单元构建得到的。
150.可选的,该装置,还可以包括:
151.池化模块,用于对片上特征缓存模块中的特征数据进行池化计算,得到池化结果;将池化结果写入片上特征缓存模块。
152.本技术实施例还提供一种加速系统,其特征在于,包括:
153.存储器,用于存储计算机程序;
154.处理器,用于执行所述计算机程序时实现如权利要求1至7任一项所述的神经网络加速处理方法的步骤。
155.本技术实施例还提供一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的神经网络加速处理方法的步骤。
156.说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
157.专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
158.结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。
159.以上对本技术所提供的一种神经网络加速处理方法、神经网络加速处理装置、加速系统以及计算机可读存储介质进行了详细介绍。本文中应用了具体个例对本技术的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本技术的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本技术原理的前提下,还可
以对本技术进行若干改进和修饰,这些改进和修饰也落入本技术权利要求的保护范围内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

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

相关文献