一种优化int8的量化方法及系统技术方案

技术编号:26378658 阅读:13 留言:0更新日期:2020-11-19 23:47
本发明专利技术提供了一种优化int8的量化方法及系统,所述方法执行以下步骤:获取训练神经网络后保存的浮点模型;计算神经网络各层中各通道中的权重量化缩放因子;采用KL散度算法计算神经网络各层中的激活值量化缩放因子;根据余弦距离确定神经网络各层中的最优权重量化缩放因子和最优激活值量化缩放因子;基于最优权重量化缩放因子和最优激活值量化缩放因子,得到int8的整型结果。根据本发明专利技术的方法,根据最优权重量化缩放因子和最优激活值量化缩放因子,自动进行微调,得到int8的整型结果,可以避免极端值的影响;同时,采用KL散度计算激活值量化缩放因子,并利用余弦距离自动地进行微调,可以减小量化误差,避免极端值的影响。

【技术实现步骤摘要】
一种优化int8的量化方法及系统
本专利技术涉及深度学习
,特别涉及一种优化int8的量化方法及系统。
技术介绍
深度学习理论及其相关技术日新月异的今天,其相关的应用也越来越多地出现在大众的视野当中。优秀的深度学习及人工智能技术不断地被应用在我们的日常生活当中,如图片、视频处理、自动驾驶、人脸识别等等,但同时大量的浮点运算、内存、电量开销,使得目前这些应用仍然存在着运行成本高昂、速度缓慢、并行处理效率较低等问题。比如在这些应用中最常用的深度卷积神经网络模型ResNet50(深度残差网络50),其浮点运算量达到了4.14GFlops(每秒千兆次浮点运算)。一款定制的自动驾驶软件动辄几万甚至几十万,专业图片与视频的处理仍然需要远端强大的服务器处理,商场大流量的人脸检测与监控需要专门的机房用来运行相关的设备及软件等等。使用成本与运行效率等成为了人工智能技术在相关移动及嵌入式设备上部署和应用小型化的瓶颈和障碍。目前解决运算开销和使用成本的方案有深度卷积网络模型的深度压缩和量化,针对卷积运算优化的低秩分解、网络模型蒸馏以及小型化网络的设计。在这些解决方案当中,共同的目标是尽量要保持数据集的测试精度,又能有效地降低计算量,提高计算效率,降低相应的开销。网络模型的深度压缩和量化作为简单且高效的解决方案,一直被人们研究和使用,其他几种解决方案因实现的复杂性,不同的网络结构需要深度定制,不能够很好地达到相关深度卷积网络模型地精度等原因而不被大家广泛使用。深度卷积网络模型的量化可将计算设备上的浮点运算转化为整数甚至移位计算,它不仅是网络模型压缩的关键同时可大幅降低网络计算的时间和开销。目前int8(8位整型)的量化方法是针对校准数据集获取激活值,对激活值进行2的次幂膨胀量化,并统计每一层的量化指数直方图;根据每一层的量化指数直方图计算得到层量化指数的均值并将均值设置为量化指数的上限,然后进行定点乘加,达到加速效果。然而,这种量化方法的弊端在于,当通道有极大值时,量化误差极大。为了解决生成量化表非最优,影响量化精度的问题,亟需一种优化int8的量化方法及系统。
技术实现思路
本专利技术提供一种优化int8的量化方法及系统,用以解决生成量化表非最优,影响量化精度的问题。本专利技术提供了一种优化int8的量化方法,所述方法执行以下步骤:步骤1:获取训练神经网络后保存的浮点模型;步骤2:计算所述神经网络各层中各通道中的权重量化缩放因子;步骤3:采用KL散度算法计算所述神经网络各层中的激活值量化缩放因子;步骤4:根据余弦距离确定所述神经网络各层中的最优权重量化缩放因子和最优激活值量化缩放因子;步骤5:基于所述最优权重量化缩放因子和所述最优激活值量化缩放因子,得到int8的整型结果。进一步地,在所述步骤2中,根据以下公式计算所述神经网络各层中各通道中的权重量化缩放因子:scale=127/xmax(1)其中,scale表示权重量化缩放因子,xmax表示当前通道中的最大权重。进一步地,所述步骤3:采用KL散度算法计算所述神经网络各层中的激活值量化缩放因子,执行以下步骤:步骤S31:获取校准数据集;步骤S32:根据所述校准数据集中的初始化激活值分布,得到每一个间隔样本的数量;步骤S33:对所述间隔样本的数量分布进行归一化,得到归一化数量分布,并基于所述归一化数量分布,得到神经网络各层中的激活值量化缩放因子。进一步地,所述步骤S32中:根据所述校准数据集中的初始化激活值分布,得到每一个间隔样本的数量,执行以下步骤:步骤S321:对所述校准数据集中的每一个激活值设置初始采样个数和初始采样间隔,以得到所述初始化激活值分布;步骤S322:采用对称量化获取所述初始化激活值分布中每一个间隔样本的数量。进一步地,基于所述归一化数量分布,得到神经网络各层中的激活值量化缩放因子,执行以下步骤:步骤S331:将所述归一化数量分布中大于预设阈值的分布相加,得到总阈值,并将所述总阈值赋值到所述归一化数量分布中的预设阈值点,并去除大于所述预设阈值点的分布,得到第一矩阵;步骤S332:设置目标采样个数,并按照所述预设阈值与所述目标采样个数的比值设置重采样间隔,对所述第一矩阵进行重采样,得到第二矩阵;步骤S333:采用KL散度算法计算最小KL散度所对应的阈值;步骤S334:根据所述阈值和所述重采样间隔,计算所述神经网络各层中的激活值量化缩放因子。进一步地,在所述步骤S333中,根据以下公式计算最小KL散度所对应的阈值:其中,DKL(p||q)表示所述第一矩阵和所述第二矩阵的KL散度,p(i)表示第一矩阵中第i个采样点的值,q(i)表示第二矩阵中第i个采样点的值,M表示目标采样个数。进一步地,在所述步骤S334中,采样以下公式计算所述神经网络各层中的激活值量化缩放因子:scaleact=127/(threshold+0.5)*re-interval(3)其中,scaleact表示激活值量化缩放因子,threshold表示阈值,re-interval表示重采样间隔。进一步地,所述步骤4:根据余弦距离确定所述神经网络各层中的最优权重量化缩放因子和最优激活值量化缩放因子,执行以下步骤:步骤S41:对所述神经网络中每一层的权重量化缩放因子,在预设浮点权重范围内采样预设次数,并针对所述校准数据集,根据每一次采样的权重量化缩放因子获取该层的定点输出和原浮点输出,其中所述定点输出是定点输入的浮点输出,所述原浮点输出是浮点输入的浮点输出,根据余弦距离公式得到权重最小余弦距离和对应的最优浮点权重量化缩放因子;步骤S42:在所述神经网络中,固定每一层的权重量化缩放因子,对所述神经网络中每一层的激活量化缩放因子,在预设浮点激活值范围内采样预设次数,并针对所述校准数据集,根据每一次采样的激活量化缩放因子获取该层的定点输出和原浮点输出,根据余弦距离公式得到激活值最小余弦距离和对应的最优浮点激活值量化缩放因子;步骤S43:将所述最优浮点权重量化缩放因子和所述最优浮点激活值量化缩放因子写回到量化表中。进一步地,所述步骤5:基于所述最优权重量化缩放因子和所述最优激活值量化缩放因子,得到int8的整型结果,执行以下步骤:步骤S51:在推理中,对于所述神经网络中每一层,从所述量化表中读取所述最优浮点权重量化缩放因子,作为int8的定点权重;步骤S52:从所述量化表中读取定点的所述最优浮点激活值量化缩放因子,将上一层的输出转换为当前层的输入,并且根据所述最优浮点激活值量化缩放因子和浮点输入,得到int8的定点输入;步骤S53:根据通用性矩阵乘法将对应于各层的定点权重和定点输入进行点乘,将当前层的浮点输出作为下一层的浮点输入;步骤S54:将最后一层的输出作为最终的int8的整型结果。本专利技术实施例提供的一种优化int8的量化方法本文档来自技高网
...

【技术保护点】
1.一种优化int8的量化方法,其特征在于,所述方法执行以下步骤:/n步骤1:获取训练神经网络后保存的浮点模型;/n步骤2:计算所述神经网络各层中各通道中的权重量化缩放因子;/n步骤3:采用KL散度算法计算所述神经网络各层中的激活值量化缩放因子;/n步骤4:根据余弦距离确定所述神经网络各层中的最优权重量化缩放因子和最优激活值量化缩放因子;/n步骤5:基于所述最优权重量化缩放因子和所述最优激活值量化缩放因子,得到int8的整型结果。/n

【技术特征摘要】
1.一种优化int8的量化方法,其特征在于,所述方法执行以下步骤:
步骤1:获取训练神经网络后保存的浮点模型;
步骤2:计算所述神经网络各层中各通道中的权重量化缩放因子;
步骤3:采用KL散度算法计算所述神经网络各层中的激活值量化缩放因子;
步骤4:根据余弦距离确定所述神经网络各层中的最优权重量化缩放因子和最优激活值量化缩放因子;
步骤5:基于所述最优权重量化缩放因子和所述最优激活值量化缩放因子,得到int8的整型结果。


2.如权利要求1所述的方法,其特征在于,在所述步骤2中,根据以下公式计算所述神经网络各层中各通道中的权重量化缩放因子:
scale=127/xmax(1)
其中,scale表示权重量化缩放因子,xmax表示当前通道中的最大权重。


3.如权利要求1所述的方法,其特征在于,所述步骤3:采用KL散度算法计算所述神经网络各层中的激活值量化缩放因子,执行以下步骤:
步骤S31:获取校准数据集;
步骤S32:根据所述校准数据集中的初始化激活值分布,得到每一个间隔样本的数量;
步骤S33:对所述间隔样本的数量分布进行归一化,得到归一化数量分布,并基于所述归一化数量分布,得到神经网络各层中的激活值量化缩放因子。


4.如权利要求3所述的方法,其特征在于,所述步骤S32中:根据所述校准数据集中的初始化激活值分布,得到每一个间隔样本的数量,执行以下步骤:
步骤S321:对所述校准数据集中的每一个激活值设置初始采样个数和初始采样间隔,以得到所述初始化激活值分布;
步骤S322:采用对称量化获取所述初始化激活值分布中每一个间隔样本的数量。


5.如权利要求4所述的方法,其特征在于,基于所述归一化数量分布,得到神经网络各层中的激活值量化缩放因子,执行以下步骤:
步骤S331:将所述归一化数量分布中大于预设阈值的分布相加,得到总阈值,并将所述总阈值赋值到所述归一化数量分布中的预设阈值点,并去除大于所述预设阈值点的分布,得到第一矩阵;
步骤S332:设置目标采样个数,并按照所述预设阈值与所述目标采样个数的比值设置重采样间隔,对所述第一矩阵进行重采样,得到第二矩阵;
步骤S333:采用KL散度算法计算最小KL散度所对应的阈值;
步骤S334:根据所述阈值和所述重采样间隔,计算所述神经网络各层中的激活值量化缩放因子。


6.如权利要求5所述的方法,其特征在于,在所述步骤S333中,根据以下公式计算最小KL散度所对应的阈值:



其中,DKL(p||q)表示所述第一矩阵和所述第二矩阵的KL散度,p(i)表示第一矩阵中第i个采样点的值,q(i)表示第二矩阵中第i个采样点的值,M表示目标采样个数。


...

【专利技术属性】
技术研发人员:谢远东
申请(专利权)人:云知声智能科技股份有限公司厦门云知芯智能科技有限公司
类型:发明
国别省市:北京;11

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

1