FastDeploy icon indicating copy to clipboard operation
FastDeploy copied to clipboard

模型量化压缩

Open xiaotailang opened this issue 3 years ago • 9 comments

请问下把其他模型转换为padddle模型之后用fastdeploy做部署时,还需要提前使用ACT做量化压缩吗?还是说内部已经自动做了量化和压缩。 比如把yolov5模型用xpaddle转换为paddle模型部署模型时。需要自己使用act做量化压缩吗?

xiaotailang avatar Dec 02 '22 12:12 xiaotailang

请问下把其他模型转换为padddle模型之后用fastdeploy做部署时,还需要提前使用ACT做量化压缩吗?还是说内部已经自动做了量化和压缩。 比如把yolov5模型用xpaddle转换为paddle模型部署模型时。需要自己使用act做量化压缩吗?

Hi, 如果你想部署量化模型,就需要用做量化压缩. 否则是一个FP32的模型

yunyaoXYY avatar Dec 04 '22 03:12 yunyaoXYY

@yunyaoXYY 好的,谢谢

xiaotailang avatar Dec 05 '22 01:12 xiaotailang

@yunyaoXYY 我按照自动压缩教程输入fastdeploy compress --config_path=./configs/detection/ppyoloe_plus_withNMS_quant.yaml --method='PTQ' --save_dir='./test_ptq_model/'其中的路径改为了我自己的,配置文件里面的模型和参数文件也指定的我自己的,运行时提示下面这个 fastdeploy compress --config_path=./configs/detection/ppyoloe_plus_withNMS_quant.yaml --method='PTQ' --save_dir='./test_ptq_model/' usage: fastdeploy [-h] --recipe RECIPE --mode MODE [--queue_dir QUEUE_DIR] [--base BASE] [--docker_args DOCKER_ARGS] fastdeploy: error: the following arguments are required: --recipe, --mode 其中错误是fastdeploy: error: the following arguments are required: --recipe, --mode 请问下这个是什么原因呢?

xiaotailang avatar Dec 05 '22 09:12 xiaotailang

@yunyaoXYY 我按照自动压缩教程输入fastdeploy compress --config_path=./configs/detection/ppyoloe_plus_withNMS_quant.yaml --method='PTQ' --save_dir='./test_ptq_model/'其中的路径改为了我自己的,配置文件里面的模型和参数文件也指定的我自己的,运行时提示下面这个 fastdeploy compress --config_path=./configs/detection/ppyoloe_plus_withNMS_quant.yaml --method='PTQ' --save_dir='./test_ptq_model/' usage: fastdeploy [-h] --recipe RECIPE --mode MODE [--queue_dir QUEUE_DIR] [--base BASE] [--docker_args DOCKER_ARGS] fastdeploy: error: the following arguments are required: --recipe, --mode 其中错误是fastdeploy: error: the following arguments are required: --recipe, --mode 请问下这个是什么原因呢?

Hi, 你用 pip show fastdeploy , 看看是不是单独装了一个这个:https://github.com/notAI-tech/fastDeploy 是的话,把他删了,再重新试试

yunyaoXYY avatar Dec 05 '22 09:12 yunyaoXYY

@yunyaoXYY 好的,谢谢

xiaotailang avatar Dec 05 '22 13:12 xiaotailang

@yunyaoXYY 你好! 我按照你说的删掉额外的fastdeploy能正常压缩模型了,但是通过部署示例部署时出现以下错误: paddle_det/lib/python3.9/site-packages/fastdeploy/vision/detection/ppdet/init.py", line 78, in init self._model = C.vision.detection.PPYOLOE( RuntimeError: Check 'read_succeed' failed at frontends/paddle/src/input_model.cpp:295: FrontEnd API failed with GeneralFailure: : File containing constant with name conv2d_0.w_0.quantized.dequantized@zero_point wasn't successfully read.

部署示例参考的

import cv2 import fastdeploy.vision as vision

model = vision.detection.PPYOLOE("ppyoloe_crn_l_300e_coco/model.pdmodel", "ppyoloe_crn_l_300e_coco/model.pdiparams", "ppyoloe_crn_l_300e_coco/infer_cfg.yml") im = cv2.imread("000000014439.jpg") result = model.predict(im.copy()) print(result)

vis_im = vision.vis_detection(im, result, score_threshold=0.5) cv2.imwrite("vis_image.jpg", vis_im)

测试过我自己的模型和默认提供的模型压缩之后都有这个问题,没有压缩时都能正常推理,模型用的ppyoloe_plus_crn_s 请问下这是什么原因呢?

xiaotailang avatar Dec 06 '22 09:12 xiaotailang

@yunyaoXYY 你好! 我按照你说的删掉额外的fastdeploy能正常压缩模型了,但是通过部署示例部署时出现以下错误: paddle_det/lib/python3.9/site-packages/fastdeploy/vision/detection/ppdet/init.py", line 78, in init self._model = C.vision.detection.PPYOLOE( RuntimeError: Check 'read_succeed' failed at frontends/paddle/src/input_model.cpp:295: FrontEnd API failed with GeneralFailure: : File containing constant with name conv2d_0.w_0.quantized.dequantized@zero_point wasn't successfully read.

部署示例参考的

import cv2 import fastdeploy.vision as vision

model = vision.detection.PPYOLOE("ppyoloe_crn_l_300e_coco/model.pdmodel", "ppyoloe_crn_l_300e_coco/model.pdiparams", "ppyoloe_crn_l_300e_coco/infer_cfg.yml") im = cv2.imread("000000014439.jpg") result = model.predict(im.copy()) print(result)

vis_im = vision.vis_detection(im, result, score_threshold=0.5) cv2.imwrite("vis_image.jpg", vis_im)

测试过我自己的模型和默认提供的模型压缩之后都有这个问题,没有压缩时都能正常推理,模型用的ppyoloe_plus_crn_s 请问下这是什么原因呢?

你好, 请问你用的什么后端来推理呢? 你完全按照https://github.com/PaddlePaddle/FastDeploy/tree/develop/examples/vision/detection/paddledetection/quantize/python 的例子来使用,也会出现上面的问题吗? 我刚按照example测试了一下,没有发现问题呢

yunyaoXYY avatar Dec 06 '22 09:12 yunyaoXYY

@yunyaoXYY 你好! 后端用的openvino,刚刚改成了ort测试了下是可以推理的,但是openvino就会报昨天提到的错误,后端为ort时还遇到了一些问题: 1.paddle模型导出之后不进行压缩量化直接用ort推理的时间和量化之后的模型推理时间,几乎是一样的。速度几乎没有提升 2.压缩量化之后的模型精度严重下降了,下降幅度很多。 我是用的ppyoloe+ s版本模型进行的离线压缩量化实验,相关配置是用的github提供的默认的,请问下这种现象可能有哪些原因导致的呢?

xiaotailang avatar Dec 07 '22 08:12 xiaotailang

@yunyaoXYY 你好! 后端用的openvino,刚刚改成了ort测试了下是可以推理的,但是openvino就会报昨天提到的错误,后端为ort时还遇到了一些问题: 1.paddle模型导出之后不进行压缩量化直接用ort推理的时间和量化之后的模型推理时间,几乎是一样的。速度几乎没有提升 2.压缩量化之后的模型精度严重下降了,下降幅度很多。 我是用的ppyoloe+ s版本模型进行的离线压缩量化实验,相关配置是用的github提供的默认的,请问下这种现象可能有哪些原因导致的呢?

1.测速之前建议先warm up, 然后可以跑多次后再求平均. 可以用GPU再测一下看看是否有加速 2.离线压缩的精度确实不能保证,可以使用量化蒸馏训练试试,可以提高精度. 3.这个配置是直接用的https://github.com/PaddlePaddle/FastDeploy/blob/develop/tools/common_tools/auto_compression/configs/detection/ppyoloe_plus_withNMS_quant.yaml 吗

yunyaoXYY avatar Dec 07 '22 08:12 yunyaoXYY

@yunyaoXYY 是的压缩配置默认是用的这个,warm up有相关的指导说明吗?

xiaotailang avatar Dec 08 '22 02:12 xiaotailang

1.paddle模型导出之后不进行压缩量化直接用ort推理的时间和量化之后的模型推理时间,几乎是一样的。速度几乎没有提升

Warm up就比如你先跑100次,之后再开始算时间. ORT没有加速的话,看看其他后端是否有加速,比如PaddleInference或者TRT.

yunyaoXYY avatar Dec 08 '22 02:12 yunyaoXYY

此ISSUE由于一年未更新,将会关闭处理,如有需要,可再次更新打开。

jiangjiajun avatar Feb 06 '24 04:02 jiangjiajun