模型推理]量化实现分享 II:KL 对称量化算法实现详解 - KL 量化原理
最编程
2024-03-30 19:20:40
...
KL 量化是用 KL 散度来衡量真实数据分布和量化数据分布之间的相似性的量化方法,是英伟达 TensorRT 中对于激活值采用的量化策略,KL 量化的主要逻辑如下:
KL 和 MIN-MAX 不一样,不是直接将
[min, max]
映射到[-127, 127]
,而是去寻找一个阈值|T| < max(|max|, |min|)
,将其[-T, T]
映射到[-127, 127]
。认为只要阈值选取得当,就能将阈值以外的值舍弃掉,也不会对精度损失造成大的影响;超出阈值
±|T|
以外的值直接映射为阈值,如上图中的三个红色点,直接映射为 -127,这种映射关系称为是饱和的。
KL 量化方法试图将 float32 数值分布和 int8 数值分布抽象成两个分布,用阈值 |T|
来更新这两个数值分布,并用 KL
散度来衡量这两个分布的相似性,若 KL 散度值越小,说明这两个分布越相似,也就说明这个阈值 |T|
选择的最好。对于对称量化来说,根据这个阈值就能算出 Scale,而 Zero_point 始终为零。
下面的图是 TensorRT 中的关于 KL 散度校准的伪代码,这个图也完美诠释了 KLD 整个量化过程。(标记一下下图为图二,后面会调用)
上一篇: GPTQ 和 OBQ:量化您的 GPT
下一篇: 模型量化技术的挑战与机遇