一种基于忆阻器的DNN加速器的资源分配方法及装置与流程

文档序号:24428820发布日期:2021-03-26 23:43阅读:90来源:国知局
一种基于忆阻器的DNN加速器的资源分配方法及装置与流程
一种基于忆阻器的dnn加速器的资源分配方法及装置
技术领域
1.本发明涉及一种dnn加速器的资源分配方法及装置,特别是一种基于忆阻器的dnn加速器的资源分配方法及装置。


背景技术:

2.深度神经网络(deep neural networks,dnn)技术已广泛应用到计算机视觉、语音识别等领域,并取得了突破性的成功;dnn中两种最常见的网络类型——卷积神经网络和全连接神经网络(如不特别指出,以下所述的dnn专指卷积神经网络和全连接神经网络这两类)的计算过程涉及到大量的乘累加操作,需进行大量的数据计算和数据移动操作,在传统冯诺依曼架构下,dnn模型的计算功耗和面积开销大、计算速度也受访存带宽的限制,对其在边缘设备上部署造成了困难;由于忆阻器低功耗、高存储密度、和存内计算的特性,尤其考虑到利用忆阻器构建的交叉阵列的电压电流关系与dnn乘累加的计算模式高度匹配,因而用忆阻器交叉阵列构建存算一体架构的dnn加速器(简称为:忆阻加速器)来在边缘设备上高效实现dnn的计算已成为一个热门的研究方向。
3.实现dnn加速计算的通用忆阻加速器,通常包含若干个由多个忆阻器交叉阵列和其他外围电路构成的计算模块。计算模块是完整包含了一层神经网络计算需要的所有功能(包括卷积或全连接要求的乘累加计算、激活函数、池化等)的最小单位。因此,映射时,dnn中的每一层会根据该层权重规模大小被映射到一个或多个计算模块中。
4.实现加速器对dnn模型的计算,需要将卷积层和全连接层的权重量化为定点数,并根据单个忆阻器单元可表示位数的多少,将表示权重的定点数按位映射到交叉阵列的一个或多个忆阻器单元上。然而由于dnn权重参数量巨大,若量化精度太高,则需要大量的忆阻器资源,或者说大量的计算模块,这会进一步增加加速器芯片面积和功耗;若量化精度太低,则会导致dnn性能退化甚至不可用。因此在忆阻加速器资源有限时,如何确定dnn各层权重的量化位宽来对dnn进行量化从而合理地利用忆阻加速器的资源以达到最优的性能,仍有待研究。
5.dnn量化常用的方法有全局量化法、分层量化法;全局量化法为网络的每一层分配相同的量化位宽,这种方法优点是量化位宽的搜索空间小,但这种方法未能考虑神经网络各层权重对量化位宽的敏感度不同的因素,某些层的精度冗余会造成忆阻器资源的浪费;分层量化法允许神经网络中不同的层有不同的量化位宽,这种方法优点在于进一步提高压缩率的同时还能保持模型精度,但分层量化会使得量化位宽的搜索空间大大增加。此外,以往的量化方法大都没有考虑忆阻器阵列的大小和忆阻加速器的结构,给出的量化方法未必能够匹配给定的忆阻加速器的计算模块和交叉阵列资源,在dnn算法实际部署时,仍会遇到问题。


技术实现要素:

6.本发明的一个目的就是提供一种基于忆阻器的dnn加速器的资源分配方法,所述
深度神经网络dnn为卷积神经网络或全连接神经网络,其包含卷积层和全连接层的总层数为n,n为正整数;所述用于加载深度神经网络dnn模型的基于忆阻器的dnn加速器包含有若干计算模块,它可以对基于忆阻器的dnn加速器的资源进行分配。
7.本发明的目的是通过这样的技术方案实现的,它包括有以下步骤:
8.1)参数设置:初始化待映射dnn全精度模型中全部n个层的量化位宽,各层的量化位宽的初始值为该层所需的最小量化位宽;
9.2)数据采集:增加所述dnn模型中各层的量化位宽,使各层均不满足局部资源空闲条件,计算当仅向第i层增加1bit的量化位宽时,量化后的dnn模型对测试数据进行推理的准确度p
i
,其中i=1,2,...n;
10.3)资源分配:比较步骤2)中得到的各个准确度p
i
,若准确度最大值唯一,则向对应最大准确度的层增加1bit的量化位宽,若准确度最大值不唯一,则向对应最大准确度且位置最靠近输入端的层增加1bit的量化位宽;
11.4)迭代分配:将步骤3)中重新分配量化位宽后的dnn模型返回步骤2),重复步骤2)—3),直到所述dnn模型的各层均不满足全局资源限制条件,输出所述dnn模型中各层的量化位宽,并映射到dnn加速器,完成dnn加速器的资源分配。
12.进一步,步骤2)中数据采集的具体步骤如下:
[0013]2‑
1)遍历dnn模型的全部n个层,当第i层符合局部资源空闲条件时,重复执行向第i层的量化位宽加1bit的操作,直至第i层不满足局部资源空闲条件;
[0014]2‑
2)重复步骤2

1)直至所述dnn模型中全部n个层均被遍历;
[0015]2‑
3)若dnn中的第i层满足全局资源限制条件,在仅向第i层增加1bit量化位宽的设置下对所述dnn模型进行量化,得到量化模型,通过量化模型对测试数据进行推理,得到推理准确度p
i
,其中i=1,2,...n。
[0016]
进一步,步骤2

3)中对所述dnn模型进行量化的步骤如下:
[0017]2‑3‑1‑
1)寻找待映射dnn模型中第i层权重绝对值的最大值max_abs
i

[0018]2‑3‑1‑
2)根据第i层的量化位宽qbits
i
,用量化位中的最高位表示权重正负号,剩余位表示权重绝对值时,权重绝对值的位可表示的最大整数max_int
i
为:
[0019][0020]2‑3‑1‑
3)计算第i层权重的最小量化单位δ
i
,其中:
[0021][0022]2‑3‑1‑
4)将第i层中的每一个全精度浮点值权重x,采用量化函数q转换为相应的低精度值q(x),其中:
[0023][0024]
式(3)中,round(.)是取整函数,用于将浮点数转换为距离它最近的整数;clip(.)是截断函数,用来限制量化后定点数的范围,其中:
[0025][0026]
式(4)中,t1=max_int
i
,t2=

max_int
i

[0027]2‑3‑1‑
5)重复步骤2
‑3‑1‑
1)
‑2‑3‑1‑
4),直至所述dnn模型中全部n个层均被遍历,dnn模型进行量化完成。
[0028]
进一步,步骤2)中局部资源空闲条件为:
[0029]
若将第i层的量化位宽加1bit,在此量化位宽设置下将第i层权重映射到dnn加速器上,第i层自身占用dnn加速器的计算模块数不增加,且第i层的量化位宽不超过允许的最大量化位宽,则第i层满足局部资源空闲条件。
[0030]
进一步,步骤4)中全局资源限制条件为:
[0031]
若将第i层的量化位宽加1bit,且其他层的量化位宽不变时,在此量化位宽设置下将dnn模型映射到加速器上,其dnn模型占用dnn加速器的计算模块数未超过dnn加速器可用计算模块的总数,且第i层的量化位宽不超过允许的最大量化位宽,则第i层满足全局资源限制条件。
[0032]
进一步,所述dnn模型的权重按位排布采用同一阵列内相邻排布的方式,将dnn模型映射到忆阻器上第i层网络占用dnn加速器的计算模块数module_num
i
为:
[0033][0034][0035]
式(5)、(6)中,row_num_real
i
是映射第i层网络所需交叉阵列的字线数,column_num_real
i
是映射第i层网络所需交叉阵列的位线数,unit_num
i
是映射第i层网络所需的计算单元数;n、m表示所述忆阻器交叉阵列单个阵列具有n条字线、m条位线及n
×
m个存储器元件,p表示单个计算模块包含计算单元的个数;
[0036]
若该第i层为卷积层,映射第i层网络所需交叉阵列的字线数row_num_real
i
和映射该层网络所需交叉阵列的位线数column_num_real
i
计算公式如下:
[0037]
row_num_real
i
=k
xi
*k
yi
*cin
i
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(7)
[0038][0039]
式(7)、(8)中,k
xi
和k
yi
别为第i层卷积核的宽和高,cin
i
为第i层卷积核的通道数,cout
i
为第i层卷积层中卷积核的个数,qbits
i
是第i层权重的量化位宽,qbits
i

1是权重绝对值的位宽,cbits是单个忆阻器单元可表示的比特数,就是表示一个权重值需要的忆阻器单元数;
[0040]
若第i层为全连接层,映射第i层网络所需交叉阵列的字线数row_num_real
i
和映射第i层网络所需交叉阵列的位线数column_num_real
i
计算公式如下:
[0041]
row_num_real
i
=cin
i
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(9)
[0042]
[0043]
式(9)、(10)中,cin
i
为全连接层的输入特征向量的长度,cout
i
为全连接层的输出特征向量的长度,qbits
i
是第i层权重的量化位宽,qbits
i

1是权重绝对值的位宽,cbits是单个忆阻器单元可表示的比特数,就是表示一个权重值需要的忆阻器单元数。
[0044]
本发明的另一个目的就是提供一种基于忆阻器的dnn加速器的资源分配装置,所述深度神经网络dnn为卷积神经网络或全连接神经网络,其包含卷积层和全连接层的总层数为n,n为正整数;所述用于加载深度神经网络dnn模型的基于忆阻器的dnn加速器包含有若干计算模块,它可以对基于忆阻器的dnn加速器的资源进行分配。
[0045]
本发明的这个目的是通过这样的技术方案实现的,它包括有以下模块:
[0046]
1)参数设置模块:初始化待映射dnn全精度模型中全部n个层的量化位宽,各层的量化位宽的初始值为该层所需的最小量化位宽;
[0047]
2)数据采集模块:增加所述dnn模型中各层的量化位宽,使各层均不满足局部资源空闲条件,计算当仅向第i层增加1bit的量化位宽时,量化后的dnn模型对测试数据进行推理的准确度p
i
,其中i=1,2,...n;
[0048]
3)资源分配模块:比较步骤2)中得到的各个准确度p
i
,若准确度最大值唯一,则向对应最大准确度的层增加1bit的量化位宽,若准确度最大值不唯一,则向对应最大准确度且位置最靠近输入端的层增加1bit的量化位宽;
[0049]
4)迭代分配模块:将重新分配量化位宽后的模型进行迭代分配,直到所述dnn模型的各层均不满足全局资源限制条件,输出所述dnn模型中各层的量化位宽,并映射到dnn加速器,完成dnn加速器的资源分配。
[0050]
由于采用了上述技术方案,本发明具有如下的优点:
[0051]
1、本申请通过用全局资源限制条件约束,保证了采用此方法确定的dnn模型各层权重的量化位宽能够匹配给定的dnn加速器可用资源情况;2、在以分层量化为原则的前提下,本申请所提出的优先级迭代法,各层量化位宽的搜索空间只随dnn模型的层数增加而线性增加,缩小了量化位宽的搜索空间,加快了最优量化位宽的确定过程;3、通过加入局部资源空闲条件的判断,让增加量化位宽而不会导致本层占用加速器计算模块个数增加的层直接增加量化位宽,而不用先进行繁琐的测试集推理确定优先级的过程,加快了整体量化位宽的确定过程;4、通过加入最大量化位宽限制条件,通过引入一个先验过的足够可靠的量化位宽作为最大量化位宽限制,避免量化位宽的盲目增加带来不必要的精度冗余,进一步减小了量化位宽的搜索空间。
[0052]
本发明的其他优点、目标和特征在某种程度上将在随后的说明书中进行阐述,并且在某种程度上,基于对下文的考察研究对本领域技术人员而言将是显而易见的,或者可以从本发明的实践中得到教导。本发明的目标和其他优点可以通过下面的说明书和权利要求书来实现和获得。
附图说明
[0053]
本发明的附图说明如下。
[0054]
图1为本发明的流程图。
[0055]
图2为本发明实施例1中权重在忆阻器交叉阵列上按位排布的示意图。
具体实施方式
[0056]
下面结合附图和实施例对本发明作进一步说明。
[0057]
实施例1:
[0058]
1.一种基于忆阻器的dnn加速器的资源分配方法,所述深度神经网络dnn为卷积神经网络或全连接神经网络,其包含卷积层和全连接层的总层数为n,n为正整数;所述用于加载深度神经网络dnn模型的基于忆阻器的dnn加速器包含有若干计算模块,其特征在于,所述资源分配方法包括以下步骤:
[0059]
1)参数设置:初始化待映射dnn全精度模型中全部n个层的量化位宽,各层的量化位宽的初始值为该层所需的最小量化位宽;
[0060]
全部n个层的量化位宽初始值设置为允许的最小量化位宽,如:必须用1位表示权重的正负,另外还需要用最少1位来表示权重的绝对值时,可以考虑将量化位宽初始值均设为2bit;此外,也可以根据先验知识将初始量化位宽设为其他值,各层的初始量化位宽也可以不同,但各层的初始量化位宽仍须大于等于允许的最小量化位宽;且设置初始量化位宽须保证在此量化位宽条件下,dnn模型映射到所用忆阻加速器上时占用的总计算模块数不能超过可用计算模块的总数。如果需占用资源超过可用资源,那么需要调小初始量化位宽,或者增大可用计算模块数。
[0061]
2)数据采集:增加所述dnn模型中各层的量化位宽,使各层均不满足局部资源空闲条件,计算当仅向第i层增加1bit的量化位宽时,量化后的dnn模型对测试数据进行推理的准确度p
i
,其中i=1,2,...n;其具体步骤如下:
[0062]2‑
1)遍历dnn模型的全部n个层,当第i层符合局部资源空闲条件时,重复执行向第i层的量化位宽加1bit的操作,直至第i层不满足局部资源空闲条件;所述局部资源空闲条件为:
[0063]
若将第i层的量化位宽加1bit,在此量化位宽设置下将第i层权重映射到dnn加速器上,第i层自身占用dnn加速器的计算模块数不增加,且第i层的量化位宽不超过允许的最大量化位宽,则第i层满足局部资源空闲条件;
[0064]
满足局部资源空闲条件的层,在当前量化位宽条件下被映射后所在的计算模块,还有映射多1bit量化位宽时的该层的能力,由于这时给该层增加量化位宽不会增加资源开销,所以可以直接给这些层增加量化位宽。
[0065]2‑
2)重复步骤2

1)直至所述dnn模型中n层均被遍历;
[0066]2‑
3)若dnn中的第i层满足全局资源限制条件,在仅向第i层增加1bit量化位宽的设置下对所述dnn模型进行量化,得到量化模型,通过量化模型对测试数据进行推理,得到推理准确度p
i
,其中i=1,2,...n;所述对dnn模型进行量化的步骤如下:
[0067]2‑3‑1‑
1)寻找待映射dnn模型中第i层权重绝对值的最大值max_abs
i

[0068]2‑3‑1‑
2)根据第i层的量化位宽qbits
i
,用量化位中的最高位表示权重正负号,剩余位表示权重绝对值时,权重绝对值的位可表示的最大整数max_int
i
为:
[0069][0070]2‑3‑1‑
3)计算第i层权重的最小量化单位δ
i
,其中:
[0071]
[0072]2‑3‑1‑
4)将第i层中的每一个全精度浮点值权重x,采用量化函数q转换为相应的低精度值q(x),其中:
[0073][0074]
式(13)中,round(.)是取整函数,用于将浮点数转换为距离它最近的整数;clip(.)是截断函数,用来限制量化后定点数的范围,其中:
[0075][0076]
式(14)中,t1=max_int
i
,t2=

max_int
i

[0077]2‑3‑1‑
5)重复步骤2
‑3‑1‑
1)
‑2‑3‑1‑
4),直至所述dnn模型中全部n个层均被遍历,dnn模型进行量化完成。
[0078]
3)资源分配:比较步骤2)中得到的各个准确度p
i
,若准确度最大值唯一,则向对应最大准确度的层增加1bit的量化位宽,若准确度最大值不唯一,则向对应最大准确度且位置最靠近输入端的层增加1bit的量化位宽;
[0079]
4)迭代分配:将步骤3)中重新分配量化位宽后的dnn模型返回步骤2),重复步骤2)—3),直到所述dnn模型的各层均不满足全局资源限制条件,输出所述dnn模型中各层的量化位宽,并映射到dnn加速器,完成dnn加速器的资源分配;所述全局资源限制条件为:
[0080]
若将第i层的量化位宽加1bit,且他层的量化位宽不变时,在此量化位宽设置下将dnn模型映射到加速器上,其dnn模型占用dnn加速器的计算模块数未超过dnn加速器可用计算模块的总数,且第i层的量化位宽不超过允许的最大量化位宽,则第i层满足全局资源限制条件;
[0081]
在本发明实例中,在局部资源空闲条件、全局资源限制条件中设置的允许最大量化位宽目的是,一些研究工作证明了一些网络在量化位宽为8时,相比全精度模型,其在准确度指标上几乎没有退化,那么,通过引入一个先验过的足够可靠的量化位宽作为最大量化位宽限制,避免量化位宽的盲目增加带来不必要的精度冗余,可以进一步减小量化位宽的搜索空间。
[0082]
在本发明实例中,基于忆阻器的dnn加速器包含有若干计算模块,每个计算模块包含若干个计算单元,每个计算单元包含两个忆阻器交叉阵列分别用来存放数值为正数和数值为负数的权重的绝对值的定点数的值,但每个忆阻器单元可以表示比特数有限,通常需要用多个忆阻器单元表示一个权重值。当所述dnn模型的权重按位排布采用如图2所示的同一阵列内相邻排布的方式(图2中第一行为定点数表示的权重;第二行为每个忆阻器表示的比特位;第三行为单个忆阻器交叉阵列,横向线段为该忆阻器交叉阵列的字线,纵向线段为该忆阻器交叉阵列的位线;),将dnn模型映射到忆阻器上第i层网络占用dnn加速器的计算模块数module_num
i
为:
[0083]
[0084][0085]
式(15)、(16)中,row_num_real
i
是映射第i层网络所需交叉阵列的字线数,column_num_real
i
是映射第i层网络所需交叉阵列的位线数,unit_num
i
是映射第i层网络所需的计算单元数;n、m表示所述忆阻器交叉阵列单个阵列具有n条字线、m条位线及n
×
m个存储器元件,p表示单个计算模块包含计算单元的个数;
[0086]
若该第i层为卷积层,映射第i层网络所需交叉阵列的字线数row_num_real
i
和映射该层网络所需交叉阵列的位线数column_num_real
i
计算公式如下:
[0087]
row_num_real
i
=k
xi
*k
yi
*cin
i
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(17)
[0088][0089]
式(17)、(18)中,k
xi
和k
yi
别为第i层卷积核的宽和高,cin
i
为第i层卷积核的通道数,cout
i
为第i层卷积层中卷积核的个数,qbits
i
是第i层权重的量化位宽,qbits
i

1是权重绝对值的位宽,cbits是单个忆阻器单元可表示的比特数,就是表示一个权重值需要的忆阻器单元数;
[0090]
若第i层为全连接层,映射第i层网络所需交叉阵列的字线数row_num_real
i
和映射第i层网络所需交叉阵列的位线数column_num_real
i
计算公式如下:
[0091]
row_num_real
i
=cin
i
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(19)
[0092][0093]
式(19)、(20)中,cin
i
为全连接层的输入特征向量的长度,cout
i
为全连接层的输出特征向量的长度,qbits
i
是第i层权重的量化位宽,qbits
i

1是权重绝对值的位宽,cbits是单个忆阻器单元可表示的比特数,就是表示一个权重值需要的忆阻器单元数。
[0094]
将dnn模型映射到忆阻加速器上时,模型占用dnn加速器的计算模块的总数为各个层占用计算模块数之和。
[0095]
忆阻加速器的结构以及dnn在加速器上的映射方式并非唯一的,上面的描述只是举出忆阻加速器结构以及dnn映射方式的典型实例,以证明本发明的问题来源的真实性以及本发明实施方案的可行性,本申请所提出的方法并不仅限在用于上面描述的情况。
[0096]
实施例2:
[0097]
一种基于忆阻器的dnn加速器的资源分配装置,所述深度神经网络dnn为卷积神经网络或全连接神经网络,其包含卷积层和全连接层的总层数为n,n为正整数;所述用于加载深度神经网络dnn模型的基于忆阻器的dnn加速器包含有若干计算模块,其特征在于,所述资源分配装置包括以下模块:
[0098]
1)参数设置模块:初始化待映射dnn全精度模型中全部n个层的量化位宽,各层的量化位宽的初始值为该层所需的最小量化位宽;
[0099]
2)数据采集模块:增加所述dnn模型中各层的量化位宽,使各层均不满足局部资源空闲条件,计算当仅向第i层增加1bit的量化位宽时,量化后的dnn模型对测试数据进行推理的准确度p
i
,其中i=1,2,...n;
[0100]
3)资源分配模块:比较步骤2)中得到的各个准确度p
i
,若准确度最大值唯一,则向对应最大准确度的层增加1bit的量化位宽,若准确度最大值不唯一,则向对应最大准确度且位置最靠近输入端的层增加1bit的量化位宽;
[0101]
4)迭代分配模块:将重新分配量化位宽后的模型进行迭代分配,直到所述dnn模型的各层均不满足全局资源限制条件,输出所述dnn模型中各层的量化位宽,并映射到dnn加速器,完成dnn加速器的资源分配。
[0102]
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd

rom、光学存储器等)上实施的计算机程序产品的形式。
[0103]
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0104]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0105]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0106]
最后应当说明的是:以上实施例仅用以说明本发明的技术方案而非对其限制,尽管参照上述实施例对本发明进行了详细的说明,所属领域的普通技术人员应当理解:依然可以对本发明的具体实施方式进行修改或者等同替换,而未脱离本发明精神和范围的任何修改或者等同替换,其均应涵盖在本发明的权利要求保护范围之内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1