System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术属于神经网络,特别涉及一种后量化网络conv2d算子bias量化的优化方法。
技术介绍
1、当前,后量化算法conv2d算子量化重点是对算子激活、权重量化进行的,减少激活、权重量化信息损失,但是忽略bias参数量化过程的信息丢失。然而,对bias量化的优化方法,能够有效减少量化带来的信息损失,提升后量化模型整体的精度。
2、当前对conv2d算子bias参数量化是根据算子输入和权重量化参数共同决定,而不是根据bias参数分布进行量化功能。当算子输入和权重量化参数之积sumscale参数过大时,对bias的量化过程丢失有效信息,从而导致模型精度丢失。感知量化过程发生过类似问题,在bias量化过程使用固定shift_factor参数进行移位。但是后量化过程相较感知量化过程算子分布差异大,使用固定shift_factor对bias移位效果并不理想。
3、因此,现有技术存在的缺陷在于:
4、1.由于后量化的原生模型复杂性、多样性,导致不同的模型推理结果分布不同,同个模型的不同算子推理结果分布不同,固定的shift_factor不能满足要求:
5、1)不能有效减少bias的损失;
6、2)可能带来线上int32位卷积操作的溢出;
7、2.同时固定的shift_fatcor移位操作要求所有的后量化conv2d算子需要进行移位,影响效率。
技术实现思路
1、为了解决上述问题,本申请的目的在于:对conv2d算子bi
2、具体地,本专利技术提供一种后量化网络conv2d算子bias量化的优化方法,所述方法包括以下步骤:
3、s1:按照神经网络的算子排序逐层访问conv2d算子;
4、s2:获取当前算子的sumscale数组信息,获取sumscale数组的最大值maxvalue;
5、s3:当maxvalue大于1时,对maxvalue进行移位操作,直到maxvalue是小于1时,记录移位信息为shift_factor;
6、s4:使用shift_factor参与bias移位量化,同时更新conv2d算子后量化公式推理和sumscale数组。
7、所述步骤s2中的bias量化,包括以下步骤:
8、s2.1,算子输入inputscale计算,8比特对称量化公式如下:
9、
10、s2.2,权重weightscale计算,8比特对称量化公式如下:
11、
12、s2.3,权重量化过程
13、wi8=round(wf/weightscale);
14、s2.4,bias的量化sumscale参数是算子输入的inputscale参数和权重的weightscale参数之积:
15、sumscale=inputscale×weightscale;
16、s2.5,对bias直接进行量化操作时:
17、biasint32=round(bias/sumscale);
18、conv2d算子浮点计算公式转换后量化计算公式:
19、
20、
21、
22、s2.6,得到最终conv2d算子后量化计算公式:
23、yf=(∑(xi8×wi8)+bi32)×sumscale。
24、所述bias移位量化,包括以下步骤:
25、当量化sumscale数组中存在值大于1的参数,即表示为sumscale>1时,导致bias值域处于(0,1)量化结果为零,导致信息丢失严重;
26、从而在bias量化过程引入shift_factor变量移位操作,保存量化bias有效信息:
27、biasint32=round(bias/sumscale×2shift_factor);
28、使用shift_factor参数完成bias移位量化后,为了保证conv2d算子在线上推理正常进行,更新上述推导的后量化算子公式:
29、yf=(∑(xi8×wi8×2shift_factor)+bi32)×sumscale÷2shift_factor;
30、conv2d算子在线上进行推理时,为了保持和量化bias对齐,对量化的输入和量化的权重值之积进行shift_factor移位:
31、xi8×wi8×2shift_factor;
32、sumscale数组是浮点数组同时是静态参数,为了节省计算资源,线下完成sumscale数组和shift_factor参数合并工作:
33、sumscale=inputscale×weightscale/2shift_factor;
34、完成合并后,推理得到的引入shift_factor参数conv2d算子后量化计算公式:
35、yf=(∑(xi8×wi8×2shift_factor)+bi32)×sumscale
36、在线下完成对量化bias左移位操作,减少bias在量化过程信息丢失;在线上计算输入和权重之积要完成左移位操作,需要量化bias进行对齐操作才能求和;为了节约计算资源,将线上进行还原的对应右移位信息在线下完成和sumscale数组的合并操作。
37、所述方法是对模型后量化conv2d算子bias量化选择动态的shift_factor参数,有效减少bias量化过程信息损失,因为在训练量化使用统一mul_factor参数对模型全局conv2d算子bias量化进行位移操作,但是应用于后量化过程,mul_factor参数设置较小时,对bias量化损失召回不明显,mul_factor参数设置较大时,能导致线性计算溢出问题。
38、由此,本申请的优势在于:本申请方法简单,并且:
39、1.相比直接进行bias量化工作,动态shift_factor移位操作能够有效的保存bias信息;当统一的移位shift_factor较大时,有效减少线上推理过程发生的整型数溢出;当统一的移位shift_factor较小时,无法有效减少量化bias损失,减少统一移位操作带来线上推理开销,动态选择shift_factor功能,可以使满足要求conv2d算子不进行移位操作。
40、2.动态shift_factor移位能够有效选择需要进行移位的算子,提升线上推理效率。
本文档来自技高网...【技术保护点】
1.一种后量化网络Conv2D算子bias量化的优化方法,其特征在于,所述方法包括以下步骤:
2.根据权利要求1所述的一种后量化网络Conv2D算子bias量化的优化方法,其特征在于,所述步骤S2中的bias量化,包括以下步骤:
3.根据权利要求2所述的一种后量化网络Conv2D算子bias量化的优化方法,其特征在于,所述bias移位量化,包括以下步骤:
4.根据权利要求1所述的一种后量化网络Conv2D算子bias量化的优化方法,其特征在于,所述方法是对模型后量化Conv2D算子bias量化选择动态的shift_factor参数,有效减少bias量化过程信息损失,因为在训练量化使用统一mul_factor参数对模型全局Conv2D算子bias量化进行位移操作,但是应用于后量化过程,mul_factor参数设置较小时,对bias量化损失召回不明显,mul_factor参数设置较大时,能导致线性计算溢出问题。
【技术特征摘要】
1.一种后量化网络conv2d算子bias量化的优化方法,其特征在于,所述方法包括以下步骤:
2.根据权利要求1所述的一种后量化网络conv2d算子bias量化的优化方法,其特征在于,所述步骤s2中的bias量化,包括以下步骤:
3.根据权利要求2所述的一种后量化网络conv2d算子bias量化的优化方法,其特征在于,所述bias移位量化,包括以下步骤:
4.根据权利要求1所述的一种后量化...
【专利技术属性】
技术研发人员:张传,
申请(专利权)人:合肥君正科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。