深度学习模型量化原理

深度学习模型量化原理

深度学习模型的量化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

相关推荐
带娃的IT创业者几秒前
深度解析:当 AI 代理拥有人格——重构软件开发协作模式
人工智能·重构·大模型·软件开发·人机协作·ai代理·多代理协作
最爱老式锅包肉1 分钟前
《HarmonyOS技术精讲-Core Speech Kit(基础语音服务)》第1篇:音频管理基础与语音服务入门
华为·音视频·harmonyos
小羊没烦恼!4 分钟前
AI转型不是技术问题,是组织问题。
大数据·人工智能·ai
Omics Pro6 分钟前
Agentic AI正在重构整个生物信息学工作流
大数据·数据库·人工智能·机器学习·语言模型·自然语言处理·重构
Rauser Mack9 分钟前
Vibe coding游戏实战:零代码编程五子棋小游戏
人工智能·python·游戏·html·prompt
凡科建站9 分钟前
2026年7月在线考试平台搭建服务商前十有哪些?
大数据·人工智能
zh_xuan10 分钟前
c++ std::Any 用法
开发语言·c++·any
小杍随笔18 分钟前
【Rust全栈项目接入UUID主键实战:从选型到PostgreSQL适配(含v7优化)】
开发语言·postgresql·rust
FriendshipT23 分钟前
Ultralytics:解读PSABlock模块
人工智能·pytorch·python·深度学习·目标检测
minxihou24 分钟前
TRINITY-Router: 用数据证伪LLM路由假设 - 8模型316题实验报告
人工智能·深度学习·语言模型·智能路由器