PaddlePaddle / PaddleDetection

Object Detection toolkit based on PaddlePaddle. It supports object detection, instance segmentation, multiple object tracking and real-time multi-person keypoint detection.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

量化后的模型如何在Paddle Inference中发挥全部性能?

bittergourd1224 opened this issue · comments

问题确认 Search before asking

  • 我已经搜索过问题,但是没有找到解答。I have searched the question and found no related answer.

请提出你的问题 Please ask your question

PaddleSlim量化训练 中提到的:

PaddleSlim产出的量化模型文件,还是以float32的数值类型存储的权重,所以模型大小不会改遍。在用Paddle-Lite和Paddle Inference推理时,会按Int8进行计算

但是经过我的尝试,当使用GPU推理时,量化模型并没有更快。所执行的步骤是Linux平台编译指南,并且run_mode选择paddle,量化后的模型与量化前的模型的速度几乎没有差别,严重怀疑推理时仍然是采用float32的精度。
如果使用TensorRT推理,将run_model切换为trt_fp16或trt_int8,确实可以更快。但问题是,不经过量化训练的模型,也可以用trt_fp16或trt_int8模式推理,也可以加快推理速度,那量化训练的意义在哪里?

最后,我的诉求是将量化后模型用GPU推理且精度为int8来达到加速,具体该如何使用paddle inference实现?

还请指教,感谢!

那量化训练的意义在哪里?

精度不一样,

精度不一样,

@lyuwenyu 都用trt_int8推理,精度不一样在哪里?
另外还是想知道,如何将量化后模型用GPU推理且精度为int8?

精度不一样,

@lyuwenyu
你说的是不是准确率不同?但实测下来同样在trt_int8精度下,量化后模型的准确率还不如原始模型

另外终于找到了GPU下修改推理精度的方法,在
https://github.com/PaddlePaddle/Paddle-Inference-Demo/blob/master/c%2B%2B/gpu/gpu_fp16/resnet50_gpu_fp16.cc#L48
但实测下来,只支持float16,不支持int8

commented

应该是量化训练这一阶段没训练好

我很怀疑一般的模型,通过四舍五入以更低精度推理,真的会和专门进行一次量化训练,有很大差别吗?

算了就这样吧