Skip to content

Commit 5255f08

Browse files
authored
Merge branch 'develop' into nlp
2 parents 1191414 + 9a00cbb commit 5255f08

File tree

2 files changed

+26
-18
lines changed

2 files changed

+26
-18
lines changed

example/auto_compression/nlp/paddle_inference_eval.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,7 @@ def create_predictor(cls, args):
210210
config = paddle.inference.Config(
211211
os.path.join(args.model_path, args.model_filename),
212212
os.path.join(args.model_path, args.params_filename))
213-
# config.switch_ir_debug(True)
213+
214214
# 适用于ERNIE 3.0-Medium模型
215215
# config.exp_disable_tensorrt_ops(["elementwise_add"])
216216
# config.exp_disable_tensorrt_ops(["fused_embedding_eltwise_layernorm"])

example/post_training_quantization/pytorch_yolo_series/README.md

+25-17
Original file line numberDiff line numberDiff line change
@@ -40,23 +40,25 @@
4040
## 3. 离线量化流程
4141

4242
#### 3.1 准备环境
43-
- PaddlePaddle >= 2.3 (可从[Paddle官网](https://www.paddlepaddle.org.cn/install/quick?docurl=/documentation/docs/zh/install/pip/linux-pip.html)下载安装)
44-
- PaddleSlim > 2.3版本
43+
- PaddlePaddle ==2.5 (可从[Paddle官网](https://www.paddlepaddle.org.cn/install/quick?docurl=/documentation/docs/zh/install/pip/linux-pip.html)下载安装)
44+
- PaddleSlim == 2.5
4545
- X2Paddle >= 1.3.9
4646
- opencv-python
4747

4848

4949
(1)安装paddlepaddle:
5050
```shell
5151
# CPU
52-
pip install paddlepaddle
52+
python -m pip install paddlepaddle==2.5.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
5353
# GPU
54-
pip install paddlepaddle-gpu
54+
python -m pip install paddlepaddle-gpu==2.5.0.post116 -f https://www.paddlepaddle.org.cn/whl/linux/mkl/avx/stable.html
5555
```
5656

5757
(2)安装paddleslim:
58+
注意,PaddleSlim这里setup.py需要更改 slim_version='2.5'
5859
```shell
59-
pip install paddleslim
60+
git clone -b release/2.5 https://github.com/PaddlePaddle/PaddleSlim.git & cd PaddleSlim
61+
python setup.py install
6062
```
6163

6264
#### 3.2 准备数据集
@@ -122,7 +124,7 @@ python eval.py --config_path=./configs/yolov5s_ptq.yaml
122124
#### 3.6 提高离线量化精度
123125

124126
###### 3.6.1 量化分析工具
125-
本节介绍如何使用量化分析工具提升离线量化精度。离线量化功能仅需使用少量数据,且使用简单、能快速得到量化模型,但往往会造成较大的精度损失。PaddleSlim提供量化分析工具,会使用接口```paddleslim.quant.AnalysisPTQ```,可视化展示出不适合量化的层,通过跳过这些层,提高离线量化模型精度。```paddleslim.quant.AnalysisPTQ```详解见[AnalysisPTQ.md](https://github.com/PaddlePaddle/PaddleSlim/blob/develop/docs/zh_cn/tutorials/quant/post_training_quantization.md)
127+
本节介绍如何使用量化分析工具提升离线量化精度。离线量化功能仅需使用少量数据,且使用简单、能快速得到量化模型,但往往会造成较大的精度损失。PaddleSlim提供量化分析工具,会使用接口```paddleslim.quant.AnalysisPTQ```,可视化展示出不适合量化的层,通过跳过这些层,提高离线量化模型精度。```paddleslim.quant.AnalysisPTQ```详解见[离线量化](https://github.com/PaddlePaddle/PaddleSlim/blob/develop/docs/zh_cn/tutorials/quant/post_training_quantization.md)
126128

127129

128130
由于YOLOv6离线量化效果较差,以YOLOv6为例,量化分析工具具体使用方法如下:
@@ -208,23 +210,24 @@ python fine_tune.py --config_path=./configs/yolov6s_fine_tune.yaml --simulate_ac
208210
## 4.预测部署
209211
预测部署可参考[YOLO系列模型自动压缩示例](https://github.com/PaddlePaddle/PaddleSlim/tree/develop/example/auto_compression/pytorch_yolo_series)
210212
量化模型在GPU上可以使用TensorRT进行加速,在CPU上可以使用MKLDNN进行加速。
211-
| 参数名 | 含义 |
212-
| model_path | inference模型文件所在路径,该目录下需要有文件model.pdmodel和params.pdiparams两个文件 |
213+
| 参数名 | 含义 |
214+
|:------:|:------:|
215+
| model_path | inference 模型文件所在目录,该目录下需要有文件 model.pdmodel 和 model.pdiparams 两个文件 |
213216
| dataset_dir | 指定COCO数据集的目录,这是存储数据集的根目录 |
214217
| image_file | 如果只测试单张图片效果,直接根据image_file指定图片路径 |
215218
| val_image_dir | COCO数据集中验证图像的目录名,默认为val2017 |
216219
| val_anno_path | 指定COCO数据集的注释(annotation)文件路径,这是包含验证集标注信息的JSON文件,默认为annotations/instances_val2017.json |
217220
| benchmark | 指定是否运行性能基准测试。如果设置为True,程序将会进行性能测试 |
218-
| device | 使用GPU或者CPU预测,可选CPU/GPU/XPU,默认设置为GPU |
219-
| use_trt | 是否使用TensorRT进行预测|
220-
| use_mkldnn | 是否使用MKL-DNN加速库,注意use_mkldnn与use_gpu同时为True时,将忽略enable_mkldnn,而使用GPU预测|
221-
| use_dynamic_shape | 是否使用动态形状(dynamic_shape)功能 |
222-
| precision | fp32/fp16/int8|
221+
| device | 使用GPU或者CPU预测,可选CPU/GPU/XPU,默认设置为GPU |
222+
| use_trt | 是否使用 TesorRT 预测引擎 |
223+
| use_mkldnn | 是否启用```MKL-DNN```加速库,注意```use_mkldnn``````use_gpu```同时为```True```时,将忽略```enable_mkldnn```,而使用```GPU```预测 |
224+
| cpu_threads | CPU预测时,使用CPU线程数量,默认10 |
225+
| precision | 预测精度,包括`fp32/fp16/int8` |
223226
| arch | 指定所使用的模型架构的名称,例如YOLOv5 |
224227
| img_shape | 指定模型输入的图像尺寸 |
228+
| use_dynamic_shape | 是否使用动态shape,如果使用动态shape,则设置为True,否则设置为False |
225229
| batch_size | 指定模型输入的批处理大小 |
226-
| use_mkldnn | 指定是否使用MKLDNN加速(主要针对CPU)|
227-
| cpu_threads | 指定在CPU上使用的线程数 |
230+
228231

229232
首先,我们拥有的yolov6.onnx,我们需要把ONNX模型转成paddle模型,具体参考使用[X2Paddle迁移推理模型](https://www.paddlepaddle.org.cn/documentation/docs/zh/guides/model_convert/convert_with_x2paddle_cn.html#x2paddle)
230233
- 安装X2Paddle
@@ -242,7 +245,7 @@ python setup.py install
242245
```shell
243246
x2paddle --framework=onnx --model=yolov6s.onnx --save_dir=yolov6_model
244247
```
245-
- TensorRT Python部署
248+
#### 4.1 TensorRT Python部署
246249
使用[paddle_inference_eval.py](https://github.com/PaddlePaddle/PaddleSlim/blob/develop/example/auto_compression/pytorch_yolo_series/paddle_inference_eval.py)部署
247250
```shell
248251
python paddle_inference_eval.py --model_path=yolov6_model/inference_model --dataset_dir=datasets/coco --use_trt=True --precision=fp32 --arch=YOLOv6
@@ -251,7 +254,11 @@ python paddle_inference_eval.py --model_path=yolov6_model/inference_model --data
251254
```shell
252255
python paddle_inference_eval.py --model_path=yolov6s_ptq_out --dataset_dir==datasets/coco --use_trt=True --precision=int8 --arch=YOLOv6
253256
```
254-
- C++部署
257+
#### 4.2 MKLDNN Python部署
258+
```shell
259+
python paddle_inference_eval.py --model_path=yolov6_model/inference_model --dataset_dir=/work/GETR-Lite-paddle-new/inference/datasets/coco --device=CPU --use_mkldnn=True --precision=fp32 --arch=YOLOv6
260+
```
261+
#### 4.3 C++部署
255262
具体可参考[运行PP-YOLOE-l目标检测模型样例](https://github.com/PaddlePaddle/Paddle-Inference-Demo/tree/master/c%2B%2B/gpu/ppyoloe_crn_l)
256263
将compile.sh中DEMO_NAME修改为yolov6_test,并且将ppyoloe_crn_l.cc修改为yolov6_test.cc,根据环境修改相关配置库
257264
运行bash compile.sh编译样例。
@@ -272,5 +279,6 @@ python paddle_inference_eval.py --model_path=yolov6s_ptq_out --dataset_dir==data
272279
```shell
273280
./build/yolov6_test --model_file yolov6s_infer/model.pdmodel --params_file yolov6s_infer/model.pdiparams --run_mode=trt_int8
274281
```
282+
275283
## 5.FAQ
276284
- 如果想对模型进行自动压缩,可进入[YOLO系列模型自动压缩示例](https://github.com/PaddlePaddle/PaddleSlim/tree/develop/example/auto_compression/pytorch_yolo_series)中进行实验。

0 commit comments

Comments
 (0)