主要量化方法
发布时间:2025-4-11 13:15阅读:99
根据不同的原理和位宽,量化可以有多种算法。
根据量化的相邻阶之间的间距是否相等,量化可以分为均匀量化与非均匀量化;根据量化是否基于零点对称,量化可以分为对称量化与不对称量化。
根据量化是在训练的同时完成,还是训练后再进行,量化可以分为训练中量化(Quantization Aware Training,QAT)与训练后量化(Post Training Quantization,PTQ)。上面提到的Type3和Type4就属于QAT,而Type1和Type2则属于PTQ。
根据量化的对象不同,量化又可以分为权重参数量化、激活值量化、梯度量化。其中,激活值量化和梯度量化一般每层采用相同的量化参数,而权重参数量化可以有更细粒度的划分,如逐层甚至逐通道采用不同的量化参数。由于激活值和权重参数的分布范围不同,两者往往会采用不同的量化策略。
由于我们在实际应用时更关注量化本身带来的对模型体积的减小及对模型性能的加速,因此实践中主要根据位宽的不同来定义模型量化技术,比如1bit量化、2bit量化、8bit量化,以及任意比特数量化。其中,1bit量化、8bit量化和混合精度量化最为常用,我们一起来看一看。
1bit量化,也称为二值量化,是最高效的量化方式,最适合在FPGA等平台进行并行计算。
它通常是对权重或者激活函数进行二值量化,公式如下:
式中,bw、ba分别是二值量化后的权重和激活值;α、β是两个参数。获取bw、ba最简单的办法就是使用符号函数对浮点型的权重和激活值进行转换。得到二值量化后的权重和激活值后,卷积操作如下:
式中,⊗表示卷积操作;⊙表示异或操作。可以看出,原来卷积中基于浮点数的乘法操作,就变成了bw和ba的异或操作。下图展示了一个具体的基于异或计算的二值矩阵卷积。卷积过程中的乘加都可以转换为异或操作,并行程度更高,运算速度也更快。
二值量化模型虽然计算效率很高,但是对模型性能的损害是非常大的,难以满足当前大部分工业界任务的要求。与之相比,8bit量化模型能够取得较好的精度保持,是当前工业界比较成熟稳定的量化方案,包括基于变换函数的非对称量化、基于信息损失的对称量化算法等等。
以基于信息损失的对称量化为例,它的核心理念是:先找出模型里权重和激活值的最大值和最小值,然后把这些值从最小到最大重新分配,让它们都能用8位整数(INT8)表示,范围是从-127到128。
INT8量化方案
为啥要这么做呢?因为不同的网络层对量化的敏感程度不一样。比如,模型的第一层和最后一层,它们特别重要,因为第一层是模型的入口,最后一层是出口。如果对这两层进行量化,可能会让模型算得不准。
拿卷积神经网络来说,第一层处理的是图片,这些图片一般都是8位的。研究告诉我们,如果在第一层卷积层加太多0,模型的准确率就会下降得很厉害。而且,第一层处理的通道数不多,计算量也不大,所以通常我们不量化第一层的权重。但是,第一层的输出是可以量化的,这样后面的网络层就能接着用了。
至于模型的最后一层,它负责生成结果,这和量化后的位向量有点像。如果结果的种类不多,为了避免准确率下降太多,我们一般也不量化最后一层的全连接层。实际上,像BNN、XNOR-net这些网络,它们在实际应用中也不对第一层和最后一层进行量化,这也证明了这个理论是有道理的。
除了单一使用INT8量化方案之外,还可以采用混合精度分解的量化方法,即将包含了Emergent Features的几个维度从矩阵中分离出来,对其做高精度(FP16)的矩阵乘法;其余部分进行INT8量化。
文章转载自知乎网@摘星狐狸,不构成投资建议,投资者据此操作风险自担!
股票抵用开户请联系高经理!


温馨提示:投资有风险,选择需谨慎。

-
打工人/宝妈/退休族必看!国泰海通2025理财“专属方案”:你的身份决定买哪款
2025-06-27 17:04
-
超全整理:100+金融实用工具合集来啦!赶紧收藏~
2025-06-27 17:04
-
ETF基金热潮来袭,普通人怎么抓住机会?
2025-06-27 17:04