原文链接
参考链接
量化的基本公式
对称均匀量化(symmetric uniform quantization)
对称量化将零点z限制为真实的0。注意对称均匀量化并不是关于零点对称。它还分为有符号和无符号。
signed量化公式
signed量化范围
8bit量化范围[-128, 127]
signed缩放系数
### signed零点计算方法
Z = 0
unsigned 量化公式
unsigned量化范围
8bit的量化范围[0,255]
unsigned缩放系数计算方法
### unsigned零点计算方法
Z = 0
反量化公式
非对称量化(Asymmetric uniform quantization)
即均匀仿射量化(uniform affine quantization)。
非对称量化公式
非堆成量化范围
[-128, 127] for signed
[0, 255] for unsigned
缩放系数
零点公式
Z = Qmax - round(rmax/S)
反量化公式
2、量化的误差来源有哪些
3、既然有误差,那为何某些业务对误差不敏感,有的又非常敏感
4、量化信息是插入tensor还是op,或者是两者都要
5、ptq量化的基本流程
6、ptq和qat的简单区别
7、常说的per tensor和per channel,对于conv2d的weight来说具体有什么区别
8、量化里常说的fake quant大概是在干什么
9、对于qat来说,fake quant在训练和推理时有什么区别
10、对称非对称,有无符号等量化选择,对于conv2d的3个输入来说一般各自采用哪种组合
11、requant的基本计算逻辑和作用
12、混合精度的基本计算逻辑
13、量化中有哪些op通常需要特殊处理
14、对于conv2d来说,multiplier,shift如何推理出来的
15、对于conv2d来说,采用multiplier,shift计算时,对bias的scale有特殊要求吗
16、对称量化时我们统计出来的浮点范围,为何要限制min≤0,max≥0
17、常见的阈值搜索方法
8bit量化带符号时,q_min选-128和-127的有区别吗
论文
来源
这里有个 Trick,即对于权重是量化到[−127,127],这是为了累加的时候减少溢出的风险。
因为 8bit 的取值区间是[-2^7, 2^7 -1],两个 8bit 相乘之后取值区间是 (-214,214],累加两次就到了(-215,215],所以最多只能累加两次而且第二次也有溢出风险,比如相邻两次乘法结果都恰好是214会超过215-1(int16 正数可表示的最大值)。
所以把量化之后的权值限制在(-127,127)之间,那么一次乘法运算得到结果永远会小于-128*-128 = 2^14。
19、为什么有的模型会出现中间量化误差大,后续量化误差又减少的情况
20、余弦度量在衡量量化误差上有什么优缺点