深度学习模型量化原理

深度学习模型量化原理

深度学习模型的量化 (Quantization)是一种优化技术,它通过减少模型中权重和激活值的精度来减小模型大小和提高推理速度,同时尽量保持模型的准确度。

模型在训练时,一般是以标准的float32类型(fp32)进行运算的,即使用32个bit来表示一个浮点数并进行浮点数运算。但是在边缘计算设备上进行推理时,处理器往往没有那么高的算力支持fp32的运算。此时,我们常常将模型量化为int8类型 来减小模型大小 并加快推理速度。

对称量化与非对称量化

int8量化分为对称量化(Symmetric Quantization)与非对称量化(Asymmetric Quantization),通常对称量化的性能会优于非对称量化, 而精度上非对称量化更优。

非对称量化

如图所示,非对称量化就是把数值缩放到[-128,127](int8)或者[0,255](uint8)之间,量化公式如下:
r = S ( q + Z ) q = i n t ( r S ) − Z S = max − min qmax − qmin Z = R o u n d ( − min S + qmin ) r=S(q+Z) \quad q=int(\frac{r}{S})-Z \\ S=\frac{\text{max}-\text{min}}{\text{qmax}-\text{qmin}} \\ Z=Round(-\frac{\text{min}}{S}+\text{qmin}) r=S(q+Z)q=int(Sr)−ZS=qmax−qminmax−minZ=Round(−Smin+qmin)

其中, Z Z Z是zeropoint, S S S是scale, q q q是量化后的值, r r r是真实的值; min / max \text{min}/\text{max} min/max是原始值的范围, qmin / qmax \text{qmin}/\text{qmax} qmin/qmax是量化后值的范围。

非对称量化的优点是能够更灵活地表示数据范围,特别是当数据分布不是以零为中心对称时。然而,非对称量化的缺点是执行量化和反量化操作可能需要更多的计算

对称量化

对称量化是当 Z = 0 Z=0 Z=0时非对称量化的特例。
r = S q q = i n t ( r S ) r=Sq \quad q=int(\frac{r}{S}) r=Sqq=int(Sr)

这种方法比非对称量化更简单,容易在硬件上实现,并且对称量化可以减少量化和反量化过程中的计算量,因为它不需要像非对称量化那样处理零点偏移。

对称量化假设数据分布是对称的,但在实际应用中,很多数据分布并不是对称的,这限制了对称量化的应用场景。

校准

当我们对激活值进行非对称量化时,需要知道值的动态范围(最小值、最大值),但是模型训练后一般是不会保存这些信息的,所以在量化阶段我们仍然需要一个比较小的训练集(一般从模型的训练集中抽取100-200张各个类型的数据)来进行校准 (Calibration)。

校准就是收集输入数据在模型各层的输出值,并统计得到动态范围。除此以外,TensorRT等方法还使用了KLD方法(基于KL散度)来获取量化门限,这种方法不是直接将 m i n , m a x min,max min,max映射到 − 127 , 127 -127,127 −127,127,而是寻找一个阈值,将阈值以外极值附近的点直接映射为最大/最小值。

参考文献:

个阈值,将阈值以外极值附近的点直接映射为最大/最小值。

参考文献:

A Survey of Quantization Methods for Efficient Neural Network Inference

相关推荐
Navicat中国1 小时前
Navicat 18 内置 AI 助手让数据库开发从繁琐操作迈向智能协作
大数据·人工智能·数据库开发
4SAPI1 小时前
多模型请求路由怎么设计?成本、速度和能力如何平衡
人工智能·python·gateway·php
魔乐社区1 小时前
翼芯・智算测试与适配优化专区,让国产算力“选得准、跑得通、用得好“
人工智能·开源·大模型
Pniubi2 小时前
HashMap的扩容和树化边界
java·开发语言
XCDoris3 小时前
郴州logo设计机构
大数据·人工智能·python
Goboy3 小时前
一个人带三个Agent,我用全新TRAE从0到1搭了个资讯周刊站
人工智能·trae
俊哥V3 小时前
每日 AI 研究简报 · 2026-10-19
人工智能·ai
AI_AGENT_DEV_AI4 小时前
AI英语教培智能体的开发
人工智能
物联网软硬件开发-轨物科技4 小时前
【技术白皮书】光伏清检一体化机器人系统解决方案技术白皮书
大数据·运维·网络·人工智能·机器人
gCode Teacher 格码致知4 小时前
Pandas教学-17:Series与Dataframe的关系
开发语言·python·pandas