前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >TinyML-5:TFLite Quantization背后的运行机制

TinyML-5:TFLite Quantization背后的运行机制

原创
作者头像
flavorfan
修改2021-01-17 16:01:05
2.4K0
修改2021-01-17 16:01:05
举报
文章被收录于专栏:范传康的专栏

引文

上一篇文章描述了为什么quantization 量化的int8足够运行推理,以及Quantization量化对TinyML的重要性,但是没有深入说明Quantization的实现机制,本篇博文打算从TFlite的案例代码切入,从代码的Optimize选项展开讲TFLite背后Quantization的PTQ,QAT技术等。

TF-Lite example: Optimize Options

tflite exmaple
tflite exmaple

众所周知,使用TFLite转换TF model的Quantization量化技术可以缩小weights、提高推理的速度,它背后的机理? 上图代码典型应用场景,使用TFLite的converter对saved model进行转换,converter的optimizations的tf.lite.Optimize的有三个可选参数(DEFAULT, OPTIMIZE_FOR_SIZE, OPTIMIZE_FOR_LATENCY),它们都有哪些不同?望文生义,“FOR_SIZE"应该是着重优化模型的大小,"FOR_LATENCY"应该是优化推理的速度;那么问题来了,同样是QUANTIZATION,两个方向实现机制有什么不同?

Quantization 技术分类

高层次来看,TFLite的Quantization技术有两个大类:

  • Post-training Quantization (PTQ) 训练后量化:
    • Quantized Weight Compression(for size) 量化权重压缩
    • Quantized Inference Calculation (for latency) 量化推理计算
  • Quantization-aware Training (QAT)量化意识训练:

QAT量化意识训练:在训练过程中量化权重。在此,即使是梯度也针对量化的权重进行计算。通俗的说,训练过程在每层的输出进行量化,让网络习惯精度下降的训练,最终达到在推理部署时候获得更小的精度下降损失。本文着重讲PTQ,以后有机会再展开阐述。

Post-training Quantization (PTQ) 训练后量化

PTQ所做的都是把TF model的weights的float32转换为合适的int8,存储在tflite model中,运行时把它转换为浮点数。不过在压缩和运行转换时候不同策略造成二者的不同,

Quantized Weight Compression(for size)algo

quantized weight compression for size
quantized weight compression for size

decompress解压把模型保存的weights的int8转换回去float32,并将范围缩放回其原始值,然后执行标准的浮点乘法;获得的好处是压缩网络,模型的尺寸小了。

Quantized Inference Calculation (for latency)

摆脱浮点计算以加快推理是量化的另外一个选择,具体来说,把输出的浮点计算转换为整数乘法。这里要扯开话题,谈下背景关联知识:floating point vs Fixed point.

Floating point vs Fixed Point

浮点数使用尾数和指数表示实际值,并且两者都可以变化。指数允许表示范围广泛的数字,尾数给出精度。小数点可以“浮动”,即出现在相对于数字的任何位置。

Floating point vs Fixed point
Floating point vs Fixed point

如果用固定比例因子替换指数,则可以使用整数表示相对于此常数(即该常数的整数倍)的数字值。小数点的位置现在由比例因子“固定”。回到数字行示例,比例因子的值确定行上2个刻度之间的最小距离,此类刻度的数量取决于我们用来表示整数的位数(对于8位固定点) ,256或28)。我们可以使用它们在范围和精度之间进行权衡。任何不是常数的整数倍的值都将四舍五入到最接近的点。

Pseudocode

quantized inference calculation for latency
quantized inference calculation for latency

比如我们手动降低每个输入的点积的精度,因此就不再需要32位浮点值的全部范围,可以用整数或者定点浮点,也就是整数乘法来实现整个推理。

put it togeter

下图(摘自一个博文)把PTQ相关技术内容组合在一起,较好的总结。

post-training quantization
post-training quantization

Further Reading

Quantization in TF-Lite:

acob, Benoit, et al. “Quantization and training of neural networks for efficient integer-arithmetic-only inference.” arXiv preprint arXiv:1712.05877 (2017).

Quantized training

Extremely low-bit quantization

Quantization for compression

Han, Song, Huizi Mao, and William J. Dally. “Deep compression: Compressing deep neural networks with pruning, trained quantization and huffman coding.” arXiv preprint arXiv:1510.00149 (2015).

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 引文
  • TF-Lite example: Optimize Options
  • Quantization 技术分类
  • Post-training Quantization (PTQ) 训练后量化
  • Quantized Weight Compression(for size)algo
  • Quantized Inference Calculation (for latency)
    • Floating point vs Fixed Point
    • Pseudocode
    • put it togeter
    • Further Reading
      • Quantization in TF-Lite:
        • Quantized training
          • Extremely low-bit quantization
            • Quantization for compression
            相关产品与服务
            腾讯云 TI 平台
            腾讯云 TI 平台(TencentCloud TI Platform)是基于腾讯先进 AI 能力和多年技术经验,面向开发者、政企提供的全栈式人工智能开发服务平台,致力于打通包含从数据获取、数据处理、算法构建、模型训练、模型评估、模型部署、到 AI 应用开发的产业 + AI 落地全流程链路,帮助用户快速创建和部署 AI 应用,管理全周期 AI 解决方案,从而助力政企单位加速数字化转型并促进 AI 行业生态共建。腾讯云 TI 平台系列产品支持公有云访问、私有化部署以及专属云部署。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档