一种量化推理超参数大于1时确保推理精度的方法技术

技术编号:33998698 阅读:55 留言:0更新日期:2022-07-02 11:34
本发明专利技术一种量化推理超参数大于1时确保推理精度的方法,包括:假设第i层的量化计算如下所示:所示:Xq=scale(Q

【技术实现步骤摘要】
一种量化推理超参数大于1时确保推理精度的方法


[0001]本专利技术涉及图像处理
,特别涉及一种量化推理超参数大于1时确保推理精度的方法。

技术介绍

[0002]现有技术中,对模型进行定点化,即对网络进行的权重和feature输出进行定点化处理,使得网络前向传播过程中避免float数的存在,从而提升网络的运行效率及速度;然而由于模型在训练的过程中scale存在多种因素的影响,会导致scale大于1(正常模型的scale值是小于1的float数)的情况,使得模型定点化无法进行移位操作。
[0003]原始网络模型定点化公式中对scale的处理需满足scale小于1的要求,scale小于1时,通过移位转化scale至[0.5,1]的区间,然后对scale乘以2的32次方进行定点化;然而网络训练时,模型合并的scale会存在value大于1的情况,因此需要对大于1的scale超参进行额外的处理;换句话说,现有技术中对scale参数进行定点化时,需要满足scale小于1的要求,模型训练的过程中scale值无法保证scale一定小于1,从而导致模型训练完之后无法在定点化推理模型上运行。
[0004]现有技术中的常用术语如下:
[0005]量化定点化推理:将权重和feature根据超参数进行定点化推理,量化至定点化位宽;
[0006]超参数:定点化过程中对超参数(scale)定点化求解过程。

技术实现思路

[0007]为了解决上述问题,本方法的目的在于:修改模型的定点化过程,使得模型能够同时满足scale大于或者小于1的情况。
[0008]具体地,本专利技术提供一种量化推理超参数大于1时确保推理精度的方法,所述方法包括:
[0009]假设第i层的量化计算如下所示:
[0010][0011][0012]Xq=scale(Q
f
*Q
w
+bias)
[0013]然后把scale进行31位定点化运算:
[0014]其中,增加scale大于1.0的定点化过程,即增加left_shift参数,所述left_shift参数为右移操作值,在对模型超参数量化移位过程中减去left_shift参数,确保网络在scale推理参数能够满足模型的定点化通用性。其中,所述右移操作,逐步使得scale的值缩
进至0.5与1.0之间,left_shift的命名是以实际应用时定点化进行命名。
[0015]所述方法进一步包括以下步骤:
[0016]S1,初始化:其中包括:left_shift参数并赋值为0;
[0017]S2,对scale进行小于1.0的定点化;
[0018]S3,对scale进行大于1.0的定点化:
[0019]当scale值大于1.0时:即while(scale>1.0f);
[0020]Scale值除以2并赋值给scale:scale=scale/2.0;
[0021]left_shift加1并赋值给left_shift:left_shift=left_shift+1;
[0022]定点化:int32_t mul=static_cast<int32_t>(round(real_multiplier*(1ll<<max_precision)));
[0023]S4,进行超参数量化,增加scale大于1.0的超参数量化:
[0024]增加scale定点化过程中左移与右移的值,同时在定点化过程中减去对右移left_right的值:
[0025]使得网络的输入通过右移的形式还原到网络量化的结果,避免网络float的运算,同时由于scale大于1时求取得右移left_right,所以需要减去left_right值,确保量化结果一致性:int32_t ab=static_cast<int32_t>((xw*mul)>>(max_precision

left_right)),左移:const int32_t mask=(1<<right_shift)

1;
[0026]const int32_t one=1;
[0027]通过ab和mask两者结果的与操作,确保量化输出的精度,决定0.5是向上保留还是向下:int32_t remainder=ab&mask;
[0028]mask右移1位并赋值于阈值threshold:const int32_t threshold=mask>>1;
[0029]ab右移并赋值于ab:int32_t temp3=ab>>right_shift;
[0030]int temp4=0;
[0031]如果remainder大于阈值threshold:if(remainder>threshold);则temp4=1;
[0032]res=temp3+temp4;
[0033]其中xw为网络输入,mul与right_shift为定点化时模型乘以2的31次方的超参数。
[0034]所述31位定点化运算是通过对scale,scale值为小的全精度数,通过对scale移位,使得scale值保持在[0.5,1]之间,然后使得scale与2的31次方相乘取round操作,求取整数值;
[0035]所述步骤S1具体包括以下表达式:
[0036]right_shift=0;
[0037]max_precision=31;
[0038]left_shift=0。
[0039]所述步骤S2具体包括:
[0040]正常情况下对scale进行小于1.0的定点化表达式如下:
[0041]当real_multiplier<0.5f时:while(real_multiplier<0.5f);
[0042]scale=scale*2.0;
[0043]right_shift=right_shift+1。
[0044]所述步骤S2还可以包括:
[0045]scale小于1时对定点化数据进行量化的操作,表达式如下:
[0046]int32_t ab=static_cast<int32_t>((xw*mul)>>max_precision);
[0047]const int32_t mask=(1<<right_shift)

1;
[0048]const int32_t one=1;
[0049本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种量化推理超参数大于1时确保推理精度的方法,其特征在于,所述方法包括:假设第i层的量化计算如下所示:化计算如下所示:Xq=scale(Q
f
*Q
w
+bias)然后把scale进行31位定点化运算:其中,增加scale大于1.0的定点化过程,即增加left_shift参数,所述left_shift参数为右移操作值,在对模型超参数量化移位过程中减去left_shift参数,确保网络在scale推理参数能够满足模型的定点化通用性。2.根据权利要求1所述的一种量化推理超参数大于1时确保推理精度的方法,其特征在于,所述方法进一步包括以下步骤:S1,初始化:其中包括:left_shift参数并赋值为0;S2,对scale进行小于1.0的定点化;S3,对scale进行大于1.0的定点化:当scale值大于1.0时:即while(scale>1.0f);Scale值除以2并赋值给scale:scale=scale/2.0;left_shift加1并赋值给left_shift:left_shift=left_shift+1;定点化:int32_t mul=static_cast<int32_t>(round(real_multiplier*(1ll<<max_precision)));S4,进行超参数量化,增加scale大于1.0的超参数量化:增加scale定点化过程中左移与右移的值,同时在定点化过程中减去对右移left_right的值:使得网络的输入通过右移的形式还原到网络量化的结果,避免网络float的运算,同时由于scale大于1时求取得右移left_right,所以需要减去left_right值,确保量化结果一致性:int32_t ab=static_cast<int32_t>((xw*mul)>>(max_precision

left_right)),左移:const int32_t mask=(1<<right_shift)

1;const int32_t one=1;通过ab和mask两者结果的与操作,确保量化输出的精度,决定0.5是向上保留还是向下:int32_t remainder=ab&mask;const int32_t threshold=mask>>1;int3...

【专利技术属性】
技术研发人员:周飞飞
申请(专利权)人:合肥君正科技有限公司
类型:发明
国别省市:

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

1