模型量化-对称量化和非对称量化

模型量化是深度学习推理优化的关键技术,通过将浮点数参数转换为整型,减少模型尺寸、内存占用和能耗,提升计算速度。然而,这一过程也伴随着精度损失和操作复杂性的增加。非对称量化和对称量化是两种主要方法,前者适用于数值分布不均匀的情况,后者则可能浪费部分表示范围。模型量化在边缘计算和资源受限的设备中尤为重要,但也需要权衡精度与效率。

模型量化的目的

本文的模型量化是优化深度学习模型推理过程的内存容量和内存带宽问题的概念,通过将模型参数的浮点数类型转换称整型存储的一种模型压缩技术。以可以接受的精度损失换取更少的存储开销和带宽需求,更快的计算速度,更低的能耗与占用面积。

比如int8量化,就是让原来32bit存储的数字映射到8bit存储。int8范围是[-128,127], uint8范围是[0,255]。

模型量化优点:

  • 减小模型尺寸,如8位整型量化可减少75%的模型大小
  • 减少存储空间,在边缘侧存储空间不足时更具有意义
  • 易于在线升级,模型更小意味着更加容易传输
  • 减少内存耗用,更小的模型大小意味着不需要更多的内存
  • 加快推理速度,访问一次32位浮点型可以访问四次int8整型,整型运算比浮点型运算更快
  • 减少设备功耗,内存耗用少了推理速度快了自然减少了设备功耗
  • 支持微处理器,有些微处理器属于8位的,低功耗运行浮点运算速度慢,需要进行8bit量化

模型量化缺点:

  • 模型量化增加了操作复杂度,在量化时需要做一些特殊的处理,否则精度损失更严重
  • 模型量化会损失一定的精度,虽然在微调后可以减少精度损失,但推理精度确实下降

量化数据映射的实现

比如进行int8的量化,数据范围是[-128,127],最大值最小值分别是Xmax, Xmin,X_q表示量化后的数据,X_f表示浮点数据。

X_q=X_f/scale +zero

scale=(Xmax-Xmin)/(127-(-128))=(Xmax-Xmin)/255

zero=0-round(Xmin/scale)或者zero=255-round(Xmax/scale)

量化方式分为对称量化非对称量化,其中上面是非对称量化的方式,如果是对称量化,则是将原浮点数的范围由[Xmin, Xmax]扩充为[-Xmax, Xmax],这里假定 |Xmax|>|Xmin|。然后按照上面公式转换量化值。对称量化对于正负数不均匀分布的情况不够友好,比如如果浮点数全部是正数,量化后的数据范围是[128,255], [0,127]的范围就浪费了,减弱了int8数据的表示范围。

对称量化的图示

在这里插入图片描述

非对称量化的图示

在这里插入图片描述

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Briwisdom

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值