【24小时创业】2022年8月18日
06-17
引文 上一篇文章描述了为什么量化量化 int8 足以运行 inference,以及 Quantization 量化对 TinyML 的重要性,但没有深入解释 Quantization 的实现机制。这篇博文我打算从TFlite的案例代码开始,从代码的Optimize选项开始讲讲TFLite背后的Quantization的PTQ和QAT技术。
TF-Lite 示例:Optimize Optionsstflite exmaple 众所周知,使用 TFLite 对 TF 模型进行 Quantization 技术转换,可以减少权重,提高推理速度。其背后的机制是什么?上面代码的一个典型应用场景是使用TFLite的转换器来转换保存的模型。
转换器优化的 tf.lite.Optimize 有三个可选参数(DEFAULT、OPTIMIZE_FOR_SIZE、OPTIMIZE_FOR_LATENCY)。他们有什么区别?顾名思义,“FOR_SIZE”应该侧重于优化模型的大小,“FOR_LATENCY”应该侧重于优化推理速度;那么问题来了,同样是QUANTIZATION,这两个方向的实现机制有什么区别呢?量化技术分类 从高层次来看,TFLite 的量化技术有两大类: 训练后量化(PTQ) 量化权重压缩(针对尺寸) 量化推理计算(针对延迟) 量化感知训练(QAT) 量化感知训练:QAT 量化意识训练:训练期间量化重量。
在这里,甚至梯度也是根据量化权重计算的。通俗地说,训练过程量化每一层的输出,让网络习惯精度降低的训练,最终在推理部署时实现更小的精度损失。
这篇文章主要讲的是PTQ,以后有机会我会再展开。训练后量化(PTQ) PTQ 的作用是将 TF 模型的权重的 float32 转换为合适的 int8,存储在 tflite 模型中,并在运行时将其转换为浮点数。
然而,不同的策略导致两者在压缩和运行转换时存在差异。 Quantized Weight Compression (for size) algoquantized权重压缩用于sizedecompress解压,将模型中保存的权重的int8转换回float32,并将范围缩放回原来的值,然后执行标准浮点乘法;获得的好处是网络被压缩,模型的尺寸减小。
量化推理计算(针对延迟) 摆脱浮点计算以加速推理是量化的另一种选择。具体来说,将输出浮点计算转换为整数乘法。
这里先岔开话题,讲一下背景知识:浮点 vs 定点。 浮点 vs 定点 浮点数使用尾数和指数来表示实际值,两者都可以变化。
指数允许表示各种数字,尾数给出精度。小数点可以“浮动”,即出现在相对于数字的任何位置。
浮点 vs 定点 如果用固定比例因子替换指数,则可以使用整数来表示相对于该常量的数值(即该常量的整数倍)。小数点的位置现在由比例因子“固定”。
回到数字行的例子,比例因子的值决定了线上 2 个刻度之间的最小距离,而这些刻度的数量取决于我们用来表示整数的位数(对于 8 位固定整数)点,或 28)。我们可以使用它们来权衡范围和精度。
任何不是常量整数倍的值都会四舍五入到最接近的点。针对延迟的伪代码量化推理计算 例如,我们手动降低每个输入的点积的精度,因此不再需要全范围的 32 位浮点值。
整个推理可以用整数或者定点浮点数来实现,即整数乘法。放在一起,下图(摘自一篇博文)将PTQ相关的技术内容结合在一起,可以更好的总结。
训练后量化进一步阅读TinyML实践-1:什么和为什么TinyML?TinyML实践-2:TinyML如何工作?TinyML实践-3:牛运动姿势识别的落地实现TinyML-4:(量化)int8足以用于MLEdxHarvardXTinyML2 -1.4:移动和边缘物联网设备上的机器学习 - 第 2 部分如何通过量化加速和压缩神经网络8 位量化和 TensorFlow Lite:以低精度加速移动推理 TF-Lite 中的量化:acob、Benoit 等人。 “神经网络的量化和训练,以实现高效的纯整数算术推理。
” arXiv 预印本 arXiv:.7 ()。量化训练Gupta、Suyog 等人。
“深度学习的数值精度有限。”国际机器学习会议。
.Courbariaux、Matthieu、Yoshua Bengio 和 Jean-Pierre David。 “用低精度乘法训练深度神经网络。
” arXiv 预印本 arXiv:.().Wu, Shuang, et al. “深度神经网络中整数的训练和推理。”arXiv预印本arXiv:.0().极低比特量化Zhu, Chenzhuo, et al. “经过训练的三元量化。
” arXiv 预印本 arXiv:.4 ().Courbariaux、Matthieu 等人。 “二值化神经网络:训练深度神经网络,其权重和激活被限制为 + 1 或 -1。
” arXiv 预印本 arXiv:.0 ().Rastegari, Mohammad 等人。 “Xnor-net:使用二进制卷积神经网络进行 Imagenet 分类。
”欧洲计算机视觉会议。 Springer,Cham,压缩量化Han、Song、Huizi Mao 和 William J. Dally。
“深度压缩:通过修剪、训练量化和霍夫曼编码来压缩深度神经网络。” arXiv 预印本 arXiv:.9 ()。
版权声明:本文内容由互联网用户自发贡献,本站不拥有所有权,不承担相关法律责任。如果发现本站有涉嫌抄袭的内容,欢迎发送邮件 举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。
标签:
相关文章
06-17
06-17
06-17
06-18
06-18
06-06
06-18
06-18
最新文章
【玩转GPU】ControlNet初学者生存指南
【实战】获取小程序中用户的城市信息(附源码)
包雪雪简单介绍Vue.js:开学
Go进阶:使用Gin框架简单实现服务端渲染
线程池介绍及实际案例分享
JMeter 注释 18 - JMeter 常用配置组件介绍
基于Sentry的大数据权限解决方案
【云+社区年度征文集】GPE监控介绍及使用