当前位置: 首页 > 专利查询>浙江大学专利>正文

一种神经网络加速器模型量化方法技术

技术编号:32546382 阅读:11 留言:0更新日期:2022-03-05 11:44
本发明专利技术公开了一种神经网络加速器模型量化方法,包括如下步骤:步骤一、训练一个Float32型CNN模型;步骤二、量化模型权重值;步骤三、通过在校准数据集上进行模型推理计算,统计不同网络层输出值大小范围;步骤四、计算量化因子,基于得到的量化权重值与量化因子,根据不同网络层的量化推理计算方式,进行INT8量化推理计算。整个推理过程为INT8型计算,能够大幅提升模型在神经网络加速器上的推理速度,且使用YOLOv3模型测试量化后INT8模型较原Float32模型精度损失非常小。Float32模型精度损失非常小。Float32模型精度损失非常小。

【技术实现步骤摘要】
一种神经网络加速器模型量化方法


[0001]本专利技术涉及人工智能领域,尤其是涉及一种神经网络加速器模型量化方法。

技术介绍

[0002]神经网络模型目前在很多领域都有着很广泛的应用,但由于神经网络模型深度大,参数量多,计算量大,导致很多应用只能靠服务器端来部署,这大大制约了很多模型的落地部署。基于这些问题,目前神经网络加速器是很多科研机构和企业研究的热点。但是目前常见的量化方法都是基于CPU、GPU等设备进行设计的,无法充分适用于神经网络加速器这类ASIC(Application Specific Integrated Circuit)设备。

技术实现思路

[0003]为解决现有技术的不足,本专利技术通过对常见浮点模型进行权重值及输出值量化,在推理过程中将所有的浮点运算转化为整型计算,实现大幅降低神经网络加速器的内存带宽,提高计算速度的目的,本专利技术采用如下的技术方案:一种神经网络加速器模型量化方法,包括如下步骤:S1,训练Float32位浮点型神经网络模型,并将部分测试数据集作为校准数据集;S2,对模型的浮点型权重值进行量化,将Float32位的浮点值量化得到INT8位整型权重值;S3,在校准数据集上,使用浮点模型进行模型的推理计算,对模型各层浮点型输出值进行模拟量化,并统计各层输出值范围;S4,通过各层输出值范围,得到量化因子,根据本层量化的权重值和量化因子,直接对模型进行INT8全整型推理计算。
[0004]进一步地,量化的公式如下:其中,q表示量化后的8位整数,round( )表示四舍五入取整操作,f表示32位浮点数,s、z表示量化系数。对于每个网络层的输入输出,均为格式,因此可以令,在推理计算中可以直接使用作为各个网络层的输入和输出值,便可以减少冗余计算,这样便能够很好的将CNN模型在神经网络加速器这类低精度高吞吐率的硬件设备上部署了。
[0005]进一步地,S4中,计算得到的量化系数:,,和表示量化前浮点型输出值的最大值和最小值,和表示量化后整型输出值的最大值和最小值,通过量化系数,得到量化因子。
[0006]进一步地,S4中,计算CNN模型中卷积层的量化系数,得到量化因子,
表示权重值量化系数,表示本层输入值(即上一层输出值)量化系数,表示本层输出值量化系数。
[0007]进一步地,S4中,计算CNN模型中残差、路由层的输出量化系数,得到量化因子,表示本层输入值量化系数,表示本层输出值量化系数,由于残差、路由层都是两个输入,因此会得到两个量化因子和。
[0008]全整型推理计算是对卷积、残差和路由层采用不同的量化推理计算方式,计算过程是对中间计算折叠,减少加减法运算。
[0009]进一步地,量化因子,进行定点化处理,由于量化因子为一个浮点值,但其取值区间通常较小,因此将其近似表示为,其中为INT32整型值,为移位系数,,得到最终的量化因子和。
[0010]进一步地,对于CNN模型中的卷积层与批归一化层进行融合(CONV+BN,CONV:卷积,BN:批归一化),得到融合后的卷积层,计算公式如下:其中,表示融合的输出,分别模式卷积层中卷积算子的权值、偏置值和输入,为批归一化层的输入均值和方差,为批归一化层的缩放系数,令,则将作为融合后的卷积层的权值,作为融合后的卷积层的偏置值。
[0011]进一步地,q和z均在整型数值取值空间内[

a,b]内,a、b均为整数,当q和/或z在计算中,出现取值空间外的值,则进行截断处理:c=max(min(b,c),

a),其中c表示q和/或z。
[0012]进一步地,量化过程是将Float32浮点值量化得到INT8型数值,即8位整型值,取值区间为[

128,127]。
[0013]进一步地,S3中,统计出各个网络层的输出值最大值和最小值,由于在推理计算中无法一次遍历所有的校准数据集,因此需要通过迭代的方式进行输出值的最大值最小值统计,因此,每次迭代便会产生一对最大最小值,此时使用移动平均的方式来计算最佳的一对最大最小值:其中,λ表示比例系数,为当前轮次统计值的最大或最小值,为历史最大或最小值。
[0014]本专利技术的优势和有益效果在于:本专利技术使用8Bit整型权值和输出值,通过对权重值和每层输出值都进行量化操作,在获得所有层的量化因子及量化后的模型权重值后,同时对不同的算子设计不同的量
化推理方式,实现模型的全整型推理,从而减少卷积层、残差层、路由层的计算耗时,同时8位整型权值数据能够大幅度减少模型内存占用,充分发挥神经网络加速器的加速性能。
附图说明
[0015]图1是本专利技术的方法流程图。
[0016]图2是本专利技术在YOLOv3模型上的量化流程图。
具体实施方式
[0017]以下结合附图对本专利技术的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本专利技术,并不用于限制本专利技术。
[0018]如图1所示,一种神经网络加速器模型INT8量化方法,主要包括两个阶段:第一个阶段,进行权重值量化和激活值分布范围统计,得到INT8型权重值数据和模型各个网络层的激活值的最大、最小值。第二个阶段,计算不同网络层的量化因子,使用量化后的权重值和量化因子进行量化推理计算,整个过程中,各个网络层的输入和输出均为整数。具体步骤如下:步骤一:首先在GPU等设备上训练一个Float32型的神经网络模型,主要包括模型权重和模型网络结构图,准备校准数据集。
[0019]步骤二:对获取的模型的权重值进行INT8量化,即按照本专利技术提出的量化公式对权重值进行量化,量化后的权值数据和原权重值的对应关系如下:其中表示32位浮点数,表示量化后的8位整数,为量化系数,为四舍五入操作,同时在计算过程中需要确保和都的INT8型数值取值区间[

128,127]内,具体来说对于和,如果计算中出现该区间之外的值,需要进行截断处理。例如:对于,计算公式为。
[0020]步骤三:在校准集上进行模型推理计算,统计模型每一层的输出值范围。该过程主要是通过在校准集上使用浮点模型的推理过程,最终统计出各个网络层的输出值最大最小值。由于在推理计算中无法一次遍历所有的校准数据集,因此需要通过迭代的方式进行激活值的最大值最小值统计,这样每次迭代就会产生一对最大最小值,此时使用移动平均的方式来计算最佳的一对最大最小值,具体的公式如下:其中,为当前轮次统计值,为历史值。
[0021]步骤四:计算量化因子,然后根据量化的权值和量化因子进行INT8推理计算。该步骤主要包括量化因子计算和量化推理两个子步骤:1)量化因子计算首先,针对不同的网路层,计算量化因子的方式也有所不同,以卷积层为例,卷积
的计算可以看作矩阵乘法,公式如下:其中为卷积层的输出,为卷积层输入,为权重值,均为Float32型。
[0022]此时便可以写出量化后的卷积计算公式:其中,表示矩阵q1的第i行第j列,表示矩阵q2的第本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种神经网络加速器模型量化方法,其特征在于包括如下步骤:S1,训练浮点型神经网络模型,并将部分测试数据集作为校准数据集;S2,对模型的浮点型权重值进行量化,得到整型权重值;S3,在校准数据集上,使用浮点模型进行模型的推理计算,对模型各层浮点型输出值进行模拟量化,并统计各层输出值范围;S4,对于每一个网络层,基于输入值范围、输出值范围,计算该层的量化因子,最后使用所有层的量化因子对模型进行全整数推理计算。2.根据权利要求1所述的一种神经网络加速器模型量化方法,其特征在于所述量化的公式如下:其中,q表示量化后的整数,round( )表示四舍五入取整操作,f表示浮点数,s、z表示量化系数。3.根据权利要求2所述的一种神经网络加速器模型量化方法,其特征在于所述S4中,计算得到的量化系数:,,和表示每一个网络层量化前浮点型输出的最大值和最小值,和表示量化后整型输出值的最大值和最小值,通过量化系数,得到量化因子。4.根据权利要求3所述的一种神经网络加速器模型量化方法,其特征在于所述S4中,计算CNN模型中卷积层的量化系数,得到量化因子,表示权重值量化系数,表示本层输入值量化系数,表示本层输出值量化系数。5.根据权利要求3所述的一种神经网络加速器模型量化方法,其特征在于所述S4中,计算CNN模型中残差、路由层的输出量化系数,得到量化因子,表示本层输入值量化系数,表示本层输出值量化系数,由于残差、路由层都是两个输入,因此会得到两个量化因子和。...

【专利技术属性】
技术研发人员:凡军海朱国权杨方超陆启明金孝飞孙世春章明何煜坤马德胡有能
申请(专利权)人:浙江大学
类型:发明
国别省市:

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

1