一种降低计算量化参数时显存占用的方法与流程

本发明属于神经网络量化,特别涉及一种降低计算量化参数时显存占用的方法。
背景技术:
1、现有技术中,模型量化就是将训练好的深度神经网络的权值,激活值等从高精度转化成低精度的操作过程,例如将32位浮点数转化成8位整型数int8。
2、模型量化的基本公式:
3、r=s(q-z)
4、
5、以上量化公式就是量化与反量化的公式。r和q分别表示量化前的浮点数和量化后的定点数。s和z是两个重要的量化参数scale(步长)和zero point(零点)。要想实现量化与反量化就得求出s和z这两个参数。
6、
7、
8、公式里面的qmax、qmin表示定点数q的数值范围。也表示量化的范围,例如8bit的非对称量化,量化后的数值范围一般就是0~255,即qmax=255,qmin=0。
9、还有两个非常重要的量化参数:rmin、rmax,分别表示浮点数r的数值范围。对于一个常规的神经网络来说,只要知道了每一层特征(feature map)的rmin、rmax,就可以求出s和z,就可以将神经网络的每一层特征进行量化。这个量化每一层的过程简称为量化feature。
10、因为在量化feature的过程中需要统计rmin、rmax,需要大量的校正集来作为统计rmin、rmax的样本,使得rmin、rmax处在一个合适的区间,使得量化更加的精准。对于量化某一个feature时,统计它这一层feature的样本往往是比较大,在实际的过程中,这些统计样本会统一存储在显存中,当统计样本过大时,就会造成显存不足、显存溢出的情况。本文介绍的方法就是减小在这个过程的显存占用。本文所介绍的方法就是一种在统计rmin、rmax的过程中,减少统计过程中的显存占用的方法。
11、下文所提及到的min和max所指代的就是上述公式中的rmin、rmax。
12、现有的降低显存的方法有:
13、1.低精度计算:神经网络计算使用的是32-bit float类型的数,而所谓低精度计算,则是指用更少的比特表示神经网络中的数值,比如,float16或者int8等。
14、2.分段计算:将一个模型分成几个部分来进行计算。从而可以减少显存的使用,但是同样代价就是会使得计算速度变慢。
15、然而,目前现有的计算模型量化参数的方式,一般都是通过模型推理校正集,通过在显存中保存校正集通过模型每一层的输出,再统计模型每一层的输出中的min和max来进行模型的量化。一般情况下,模型的校正集数量越多,计算出来的min和max也会更加的准确,进而提高模型的量化效果。目前存在的问题,当模型的输入的校正集较大时,或模型原本的输入分辨率很大时,在计算min和max时,就会占用更多的显存,导致显存溢出的情况。
16、此外,现有技术中常用技术术语包括:
17、1.模型量化:模型量化就是将训练好的深度神经网络的权值,激活值等从高精度转化成低精度的操作过程。
18、2.量化参数:在定点与浮点等数据之间建立一种数据映射关系时,所产生的一些参数。
19、3.显存:显卡内存。也被叫做帧缓存,显存是用来存储要处理的图形信息的部件。它的作用是用来存储显卡芯片处理过或者即将提取的渲染数据。
20、4.显存占用:处理过或者即将提取的渲染数据占总显存的比重。
21、5.tensor:张量,表示一个多维矩阵。
22、6.min、max:一个张量中存储的浮点值的最小值和最大值。
技术实现思路
1、为了解决上述问题,本申请的目的在于:本方法可以在大批量的校正集下,去获得模型量化的min和max,降低计算过程中的显存占用,减少显存溢出的问题。并且计算出的min和max,基本上不影响量化的效果。
2、具体地,本发明提供一种降低计算量化参数时显存占用的方法,所述方法包括以下步骤:
3、s1,获取一个有精度的网络模型:
4、需要一个有精度的网络模型,使用统计min和max方法进行量化,即求得浮点范围的最大值rmax和最小值rmin,另外量化范围的最大值为qmax和最小值qmin,然后通过尺度s=(rmax-rmin)/(qmax-qmin),z=qmax-rmax/s进行线性映射:q=r/s+z,测试量化前后的一个精度损失,以及在量化过程中使用不同分辨率的校正集进行统计,统计过程中的显存占用情况;
5、s2,分批次输入校正数据集:
6、s2.1,在模型中分批次输入校正集,获取校正集在模型中每一层feature中的输出结果;
7、s2.2,统计每一层feature的min和max,并保存;
8、将校正数据集输入所述网络模型中进行推理,当校正集被推理到统计量化的min和max的层时,使用量化策略求出校正集在当前层的输出结果,再对输出的结果进行min和max统计工作;
9、s2.3,在每一批次校正输集之后都进行一次min和max的统计工作,统计结束后,就将显存中保存的模型推理当前批次的中间层进行删除,只保留当前统计出来的min和max;
10、s2.4,依次迭代更新模型的min和max,即,当下一批次的校正集在计算完min和max之后,根据统计出来的min和max与上一次批次保存的min和max的实际情况对min和max进行迭代;
11、s3,获取到最终的min、max作为量化参数。
12、所述步骤s3通过滑动平均迭代量化参数的方法,即使用滑动平均的方式更新min和max:
13、将当前批次统计出来的min_n和max_n,与上一个批次更新后的min_o和max_o进行比较将4个数min_n和min_o,max_n和max_o中的最大和最小值乘上一个的系数,再加上4个数值中的其他两个数值乘上l,将所得出来的min和max进行保存:
14、这里两个系数的对应关系
15、
16、其中,min_o,max_o代表上一批次的最小最大值,min_n,max_n代表当前批次的最大最小值,和均为小于1的系数,且相加为1,分别代表前一次保留*100%,当前保留*100%。
17、由此,本申请的优势在于:本方法简单,通过一种计算量化参数时减少显存占用的方法。通过分批次统计模型量化参数,每一个批次都计算量化参数并通过滑动平均迭代量化参数的方法,来减少计算量化参数中的显存占用。
技术特征:
1.一种降低计算量化参数时显存占用的方法,其特征在于,所述方法包括以下步骤:
2.根据权利要求1所述的一种降低计算量化参数时显存占用的方法,其特征在于,所述步骤s3通过滑动平均迭代量化参数的方法,即使用滑动平均的方式更新min和max:
技术总结
本发明提供一种降低计算量化参数时显存占用的方法,包括:S1,获取一个有精度的网络模型;S2,分批次输入校正数据集,通过分批次统计模型量化参数,每一个批次都计算量化参数并采用滑动平均迭代量化参数的方法;S3,获取到最终的min、max作为量化参数。本方法减少计算量化参数中的显存占用。
技术研发人员:余慧
受保护的技术使用者:北京君正集成电路股份有限公司
技术研发日:
技术公布日:2024/11/28
技术研发人员:余慧
技术所有人:北京君正集成电路股份有限公司
备 注:该技术已申请专利,仅供学习研究,如用于商业用途,请联系技术所有人。
声 明 :此信息收集于网络,如果你是此专利的发明人不想本网站收录此信息请联系我们,我们会在第一时间删除
