tensorrt-int8量化介绍

0. 背景-为什么要做量化

尽管近几年来,模型的size在不断的压缩,但是计算量(通常几百MFLOPs左右)对于移动端还是很大。由于每个层的权重参数范围基本确定(BatchNorm),且波动不大,适合量化压缩。量化减少访存和计算量。

1. 量化的原理

1.1 量化本质 

 1.2 量化原理-最大值映射

1.3  饱和截断映射

 2. TensorRTINT8量化

2.1 模型选择

 2.2 工作流程

3. 基于TensorRT的Python API实例

3.1 需要注意的点

3.2 校准器类分析

 

4. 其他

4.1 参考文章

INT8量化介绍:https://zhuanlan.zhihu.com/p/58182172

INT8量化原理问题记录:https://www.cnblogs.com/deepllz/p/11672912.html

TensorRTmixed precisionhttps://docs.nvidia.com/deeplearning/tensorrt/archives/tensorrt-700/tensorrt-developer-guide/index.html#mixed_precision

讨论:

https://blog.csdn.net/yangjf91/article/details/92794182

4.2 相关项目

TensorRTsample:

Python版本: caffe_int8_mnist

C++版本: sampleINT8

Githubsample:

Yolov3-onnx-int8: https://github.com/mynotwo/yolov3_tensorRT_int8_calibration(这个项目的int8量化没跑通,自己改了一下)

Yolov3和v4: https://github.com/jkjung-avt/tensorrt_demos#int8_and_dla(重点推荐)

4.3 错误分析

Calibrator构建错误

https://forums.developer.nvidia.com/t/int8-calibration-meet-error-get-batch-takes-2-positional-arguments-but-3-were-given/75106

Yolov3Yolov4

https://forums.developer.nvidia.com/t/migrating-int8-calibration-from-tensorrt-6-to-tensorrt-7-in-yolov3-and-yolov4-failed/148950/3

目标检测推理-int8 vs float32精度

https://forums.developer.nvidia.com/t/tensorrt-4-0-1-int8-precision-vs-fp32-precision-objects-detections-inference-results/83864

Tensorrt5-C++

https://forums.developer.nvidia.com/t/how-to-do-int8-calibration-in-c-in-tensorrt-5/71556

以上是我做tensorrt的int8过程中的一些总结和资料,希望能有所帮助

  • 7
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 13
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值