一种应用于FPGA的深度卷积神经网络混合精度量化方法
未命名
08-03
阅读:98
评论:0

一种应用于fpga的深度卷积神经网络混合精度量化方法
背景技术:
1.深度卷积神经网络(deep convolutional neural networks,dcnns)为目标检测应用带来了准确率的显著提升。同时,dcnns巨大的计算开销和复杂度以及大量的访存操作对目标检测任务的执行核心带来极大的挑战。目前主流的dcnns有着数以亿计的连接,同时具有访存密集型和计算密集型的特点。随着现存的应用场景对dcnns精度和功能要求的提高,神经网络的规模在不断的加深,当权重矩阵的规模远大于缓存大小时,访存问题成了神经网络计算过程中的一大瓶颈。
2.dcnns的基础运算包含大量的的乘累加运算,乘法运算对硬件资源的消耗多、功耗大、延时长,这种问题在边缘智能场景下尤为突出。大多数情况下,边缘设备无法提供大量的存储资源及计算资源并且功耗受限,深度卷积神经网络难以在嵌入式设备中部署。因此需要在算法层面上通过剪枝、量化、低秩近似、知识蒸馏等方法对模型进行压缩,其中最常用的是剪枝和量化。量化是减少神经网络计算时间和功耗最有效的方法之一。在神经网络量化中,存储权值和激活张量的比特位宽比训练常用的16位或32位精度要低,可以有效的减少存储时的内存开销和矩阵乘法的计算成本。这一过程也叫做软件优化。在硬件层面上为了解决这些问题需要在这些模型的部署平台上采用高并行度和高数据重用性的优化方法来构建优化的加速器。目前,主要的硬件加速器有图形处理器(graphics processing unit,gpu)、专用集成电路(application specific integrated circuit,asic)和可编程逻辑门阵列(field programmable logic array,fpga),其中gpu功耗大,asic定制周期长且灵活性差,fpga拥有并行性高、数据局部性好以及可重构等特性。基于fpga的硬件加速器平衡了性能、功耗和灵活性之间的差距。为了进一步提高计算效率,dnn硬件加速器开始支持混合精度(1-8位),混合精度量化策略相比单一精度量化更能充分发挥硬件逻辑资源的灵活性,同时也提出了一个巨大的挑战即如何选取混合精度量化策略找到每一层的最佳位宽,它需要领域专家探索巨大的设计空间以达到精度、延迟、能效和模型大小之间的权衡。
3.综合目前的研究状况,神经网络采用浮点卷积计算时巨大的计算量和大量的访存操作会带来资源及功耗受限等问题。现有的成熟的量化技术如dorefa-net能够以任意的精度量化权重、激活值及梯度,在量化策略方面为了更好的适配硬件平台更加偏向于采用混合精度量化。目前大多数深度卷积神经网络混合精度量化算法通常只关注如何设计搜索算法获得可达到预期的混合精度量化模型,但是没有考虑到量化精度的搜索空间过大导致的实施起来较为繁琐及耗时的缺点。
技术实现要素:
4.为了解决目前大多数深度卷积神经网络混合精度量化算法通常只关注如何设计搜索算法获得可达到预期的混合精度量化模型,但是没有考虑到量化精度的搜索空间过大导致的实施起来较为繁琐及耗时的问题,本发明提出一种应用于fpga的深度卷积神经网络混合精度量化方法。
5.为了实现上述目的,本发明采用如下一种技术方案:
6.一种应用于fpga的深度卷积神经网络混合精度量化方法,包括如下步骤:
7.步骤1:选取数据集和所需网络模型,选取一个量化位宽的取值集合用于混合精度量化中为模型各层分配量化位宽,集合内部将其按照元素值升序进行排列;
8.步骤2:统计所使用神经网络的权重分布直方图,直方图的横坐标对应权值,纵坐标对应权值的个数,直方图集中的权值点反映当前权值的数量多,将直方图峰值作为当前层权重的典型值,根据典型值大小判断当前层权重的重要程度并据此分配权重的量化位宽,典型值大的卷积层分配较高的量化位宽;
9.步骤3:在训练时的前向推理过程中将激活值分布直方图峰值作为当前层激活值的典型值,根据典型值大小判断当前层激活值的重要程度并据此分配激活值的量化位宽,典型值大的卷积层分配较高的量化位宽;
10.步骤4:训练上述针对每层分配好合适位宽的网络模型,其中量化方式采用对称均匀量化;
11.步骤5:在fpga端侧进行推理,采用位运算来实现低位宽定点整数之间的卷积运算。
12.特别地,步骤1具体包括以下步骤:
13.将所要使用的数据集划分为训练集、测试集和验证集,在所划分的训练集中随机选取一部分子集作为校准集,其中包括图像以及标签值;选取一个量化位宽的取值集合用于混合精度量化中为模型各层分配量化位宽,集合内部将其按照元素值升序进行排列,量化集合的长度为n;给定已经训练至收敛的深度卷积神经网络。
14.特别地,步骤2具体包括以下步骤:
15.统计所给定的深度卷积神经网络每层的权重分布直方图;针对每一层,取权重分布直方图峰值所对应的权重值作为当前层权重的典型值;将所得到的每一层的权重的典型值按照取绝对值后的大小从小到大排序得到一个典型值集合,根据步骤1中所得量化集合的长度n将所得典型值集合划分成n个子集合,并将量化集合中的值依次分配给这n个子典型值集合;典型值集合中的每个典型值所对应的量化位宽即这个典型值在模型中的对应层的权重量化位宽。
16.特别地,步骤3具体包括以下步骤:
17.将步骤1中的校准集的图像以及标签值作为输入对所给定的浮点模型进行一次前向推理过程以获得每一层计算后的激活值,统计所得到的每层的激活值的分布直方图,针对每一层,取激活值分布直方图峰值所对应的激活值作为当前层激活的典型值;将所得到的每一层的激活值的典型值按照取绝对值后的大小从小到大排序得到一个典型值集合,根据步骤1中所得量化集合的长度n将所得典型值集合划分成n个子集合,并将量化集合中的值依次分配给这n个子典型值集合;典型值集合中的每个典型值所对应的量化位宽即这个典型值在模型中的对应层的激活值量化位宽。
18.特别地,步骤4具体包括以下步骤:
19.结合步骤2和步骤3得到模型每一层量化位宽的组合,将步骤1中的训练集的图像以及标签值作为输入对当前的网络模型进行量化感知训练;在每层的量化规则上选用对称均匀量化,可以更容易的在硬件中实现,具体如下:
20.在训练过程中通过以下公式将每层的浮点数转换为其所对应的k位定点数;
[0021][0022]
α=max|r|
ꢀꢀ
(2)
[0023][0024]
其中ri表示输入浮点数,ri的取值范围是[-α,α];r0是量化后的k位定点数;r表示这一层中ri所有取值的集合;max|r|表示对浮点数集合中的值绝对值后再取最大值;δ表示比例因子;在反向传播中为了规避0梯度的问题,使用直通估计器ste,用对低精度权重的导数来近似对浮点数的导数:
[0025][0026]
其中,loss代表总损失误差,w和wq分别代表浮点数权重和量化后的权重。
[0027]
特别地,步骤5具体包括以下步骤:
[0028]
在fpga端侧进行推理,参考dorefa-net采用位运算来实现低位宽定点整数之间的卷积运算:
[0029][0030]
其中分别是m位,k位的定点整数序列集合,和是位向量,公式(4)的计算复杂度为o(mk),即与x和y的位宽度成正比。
[0031]
本发明的有益效果:
[0032]
相较于传统的基于混合比特量化空间迭代搜索得到最优混合比特量化模型的方法,本发明所述的应用于fpga的深度卷积神经网络混合精度量化方法针对深度卷积神经网络不同的层权重值分布情况不同且对量化的敏感程度不同这一特性,结合硬件的特性对权重或激活分布直方图中峰值较高的层即量化较为敏感的层分配了较高的量化位宽,对权重或激活分布直方图中峰值较低的层即量化敏感程度低的层分配较低的量化位宽;传统的混合精度量化策略为了找到每一层的最佳位宽,需要领域专家探索巨大的设计空间以达到精度、延迟、能效和模型大小之间的权衡。不同于传统的基于混合比特量化空间迭代搜索得到最优混合比特量化模型方式,本发明在一定程度上缩小了搜索空间,设计了较为方便快捷的混合精度量化策略。
[0033]
本发明针对所提出的混合精度量化策略对神经网络中权重值和激活值都进行了低比特量化,参考现有的成熟的量化技术如dorefa-net在硬件端采用位运算的计算方法,其计算复杂度与每层权值及激活值的位宽成正比,不同层的量化位宽不同其计算复杂度也不同,较传统的运算方法来说总体的计算复杂度会降低。
附图说明
[0034]
图1是根据本发明的用于fpga的深度卷积神经网络混合精度量化方法的流程图;
[0035]
图2是根据本发明的用于fpga的深度卷积神经网络混合精度量化方法的每层权重量化精度的详细步骤流程图;
[0036]
图3是根据本发明的用于fpga的深度卷积神经网络混合精度量化方法的每层激活
值量化精度的详细步骤流程图。
具体实施方式
[0037]
下面将结合本发明实施例中的附图,对本公开实施例中的技术方案进行详细说明:
[0038]
如图1所示,本发明提供一种应用于fpga的深度卷积神经网络混合精度量化方法,包括如下步骤:
[0039]
s1,将所要使用的数据集划分为训练集、测试集和验证集,在所划分的训练集中随机选取一部分子集作为校准集;选取一个量化位宽的取值集合(8bit,4bit,2bit)并将其按照从小到大排序得到一个长度为n的量化集合(使用8bit,4bit,2bit,n=3);给定已经训练至收敛的深度卷积神经网络。
[0040]
s2,使用tensorboard工具查看所给定的深度卷积神经网络每层的权重分布直方图;针对每一层,取权重分布直方图峰值所对应的权重值作为当前层权重的典型值;将所求的每一层的典型值按照其绝对值后的大小从小到大排序得到一个典型值序列,根据s1中所得量化集合的长度n将所得典型值序列进行划分成n个子序列,具体方法如图2所示:
[0041]
s21将所获得的典型值序列中的值相加求均值,大于均值的划分出来组成典型值子序列1,再将剩余的典型值相加求均值,大于均值的划分出来组成典型值子序列2,剩余的重复上述步骤,直至划分出n个子序列;s22将量化集合中的n个值按照从大到小的顺序分配给上述n个典型值子序列,典型值序列中的每个典型值所对应的量化位宽即这个典型值在模型中的对应层的权重量化位宽。
[0042]
s3,对激活值的量化处理如图3所示,s31将s1中的校准集的图像以及标签值作为输入对所给定的浮点模型进行一次前向推理过程以获得每一层计算后的激活值,统计所得到的每层的激活值的分布直方图,针对每一层,取激活值分布直方图峰值处所对应的激活值作为当前层激活值的典型值;将所求的每一层的典型值按照其取绝对值后的大小从小到大排序得到一个典型值序列,根据s1中所得量化集合的长度n将所得典型值序列进行划分成n个子序列,具体方法为:
[0043]
s32将所获得的典型值序列中的值相加求均值,大于均值的划分出来组成典型值子序列1,再将剩余的典型值相加求均值,大于均值的划分出来组成典型值子序列2,剩余的重复上述步骤,直至划分出n个子序列;s33将量化序列中的n个值按照从大到小的顺序分配给上述n个典型值子序列,典型值序列中的每个典型值所对应的量化位宽即这个典型值在模型中的对应层的激活值量化位宽。
[0044]
s4,根据所述混合精度量化策略(s2、s3)得到模型的要进行量化的各层量化位宽的组合。
[0045]
s5,按照所述混合精度量化策略将s1中的训练集的图像以及标签值作为输入对当前的网络模型进行量化感知训练;在每层的量化规则上选用对称均匀量化,可以更容易的在硬件中实现。具体如下:
[0046]
在训练过程中通过以下公式将每层的浮点数转换为其所对应的k位定点数。
[0047]
[0048]
α=max|r|
ꢀꢀ
(2)
[0049][0050]
其中ri表示输入浮点数,ri的取值范围是[-α,α];r0是量化后的k位定点数;r表示这一层中ri所有取值的集合;max|r|表示对浮点数集合中的值绝对值后再取最大值;δ表示比例因子;在反向传播中为了规避0梯度的问题,使用ste(straight-through estimator),用对低精度权重的导数来近似对浮点数的导数:
[0051][0052]
其中,loss代表总损失误差;w和wq分别代表浮点数权重和量化后的权重。
[0053]
s6,在fpga端侧进行推理,参考dorefa-net采用位运算来实现低位宽定点整数之间的卷积运算:
[0054][0055]
其中分别是m位,k位的定点整数序列集合,和是位向量。公式(4)的计算复杂度为o(mk),即与x和y的位宽度成正比。
[0056]
综上所述,本发明通过针对深度卷积神经网络不同的层权重值分布情况不同且对量化的敏感程度不同这一特性,结合硬件平台的逻辑资源容量及对每层精度的要求对量化较为敏感的层分配了较高的比特精度,对量化敏感程度低的层分配较低的比特精度,相较于目前大多数深度卷积神经网络混合精度量化算法通常只关注如何设计搜索算法获得可达到预期的混合精度量化模型,但是没有考虑到量化精度的搜索空间过大导致的实施起来较为繁琐及耗时的缺点来说,本发明设计了较为方便快捷的混合精度量化策略。
技术特征:
1.一种应用于fpga的深度卷积神经网络混合精度量化方法,包括如下步骤:步骤1:选取数据集和所需网络模型,选取一个量化位宽的取值集合用于混合精度量化中为模型各层分配量化位宽,集合内部将其按照元素值升序进行排列;步骤2:统计所使用神经网络的权重分布直方图,直方图的横坐标对应权值,纵坐标对应权值的个数,直方图集中的权值点反映当前权值的数量多,将直方图峰值作为当前层权重的典型值,根据典型值大小判断当前层权重的重要程度并据此分配权重的量化位宽,典型值大的卷积层分配较高的量化位宽;步骤3:在训练时的前向推理过程中将激活值分布直方图峰值作为当前层激活值的典型值,根据典型值大小判断当前层激活值的重要程度并据此分配激活值的量化位宽,典型值大的卷积层分配较高的量化位宽;步骤4:训练上述针对每层分配好合适位宽的网络模型,其中量化方式采用对称均匀量化;步骤5:在fpga端侧进行推理,采用位运算来实现低位宽定点整数之间的卷积运算。2.根据权利要求1所述的应用于fpga的深度卷积神经网络混合精度量化方法,其特征在于:步骤1具体包括以下步骤:将所要使用的数据集划分为训练集、测试集和验证集,在所划分的训练集中随机选取一部分子集作为校准集,其中包括图像以及标签值;选取一个量化位宽的取值集合用于混合精度量化中为模型各层分配量化位宽,集合内部将其按照元素值升序进行排列,量化集合的长度为n;给定已经训练至收敛的深度卷积神经网络。3.根据权利要求1所述的应用于fpga的深度卷积神经网络混合精度量化方法,其特征在于:步骤2具体包括以下步骤:统计所给定的深度卷积神经网络每层的权重分布直方图;针对每一层,取权重分布直方图峰值所对应的权重值作为当前层权重的典型值;将所得到的每一层的权重的典型值按照取绝对值后的大小从小到大排序得到一个典型值集合,根据步骤1中所得量化集合的长度n将所得典型值集合划分成n个子集合,并将量化集合中的值依次分配给这n个子典型值集合;典型值集合中的每个典型值所对应的量化位宽即这个典型值在模型中的对应层的权重量化位宽。4.根据权利要求1所述的应用于fpga的深度卷积神经网络混合精度量化方法,其特征在于:步骤3具体包括以下步骤:将步骤1中的校准集的图像以及标签值作为输入对所给定的浮点模型进行一次前向推理过程以获得每一层计算后的激活值,统计所得到的每层的激活值的分布直方图,针对每一层,取激活值分布直方图峰值所对应的激活值作为当前层激活的典型值;将所得到的每一层的激活值的典型值按照取绝对值后的大小从小到大排序得到一个典型值集合,根据步骤1中所得量化集合的长度n将所得典型值集合划分成n个子集合,并将量化集合中的值依次分配给这n个子典型值集合;典型值集合中的每个典型值所对应的量化位宽即这个典型值在模型中的对应层的激活值量化位宽。5.根据权利要求1所述的应用于fpga的深度卷积神经网络混合精度量化方法,其特征在于:步骤4具体包括以下步骤:结合步骤2和步骤3得到模型每一层量化位宽的组合,将步骤1中的训练集的图像以及
标签值作为输入对当前的网络模型进行量化感知训练;在每层的量化规则上选用对称均匀量化,可以更容易的在硬件中实现,具体如下:在训练过程中通过以下公式将每层的浮点数转换为其所对应的k位定点数;α=max|r|
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(2)其中r
i
表示输入浮点数,r
i
的取值范围是[-α,α];r0是量化后的k位定点数;r表示这一层中r
i
所有取值的集合;max|r|表示对浮点数集合中的值绝对值后再取最大值;δ表示比例因子;在反向传播中为了规避0梯度的问题,使用直通估计器ste,用对低精度权重的导数来近似对浮点数的导数:其中,loss代表总损失误差,w和w
q
分别代表浮点数权重和量化后的权重。6.根据权利要求1所述的应用于fpga的深度卷积神经网络混合精度量化方法,其特征在于:步骤5具体包括以下步骤:在fpga端侧进行推理,参考dorefa-net采用位运算来实现低位宽定点整数之间的卷积运算:其中分别是m位,k位的定点整数序列集合,和是位向量,公式(4)的计算复杂度为o(mk),即与x和y的位宽度成正比。
技术总结
本发明公开了一种应用于FPGA的深度卷积神经网络混合精度量化方法。首先针对将要部署神经网络的FPGA硬件平台的逻辑资源容量及对每层精度的要求选取合适的几种量化位宽;其次,根据所使用神经网络的权重分布直方图峰值判断当前层权重的重要程度并选择一种作为当前层权重的量化位宽;然后在前向推理过程中根据激活值分布直方图峰值判断当前层激活值的重要程度并选择一种作为当前层激活值的量化位宽;最后采用对称均匀量化方式。该方法分析深度卷积神经网络不同层的权重分布,针对不同层对量化的敏感程度对权重和激活值分配相应的量化位宽,不同于传统的基于混合比特量化空间迭代搜索得到最优混合比特量化模型方式,实现了较方便快捷的混合精度量化策略。现了较方便快捷的混合精度量化策略。现了较方便快捷的混合精度量化策略。
技术研发人员:孙建德 王赠惠 刘珂 万文博 李圣涛 张化祥
受保护的技术使用者:山东师范大学
技术研发日:2023.03.22
技术公布日:2023/8/1
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/