本文档介绍使用Paddle Inference的Python接口在服务器端(Nvidia GPU或者X86 CPU)部署分割模型。
飞桨针对不同场景,提供了多个预测引擎部署模型(如下图),更多详细信息请参考文档。
下载样例模型用于测试。
如果要使用其他模型,大家可以参考文档导出预测模型,再进行测试。
wget https://paddleseg.bj.bcebos.com/dygraph/demo/bisenet_demo_model.tar.gz
tar zxvf bisenet_demo_model.tar.gz
下载cityscapes验证集中的一张图片用于演示效果。
如果模型是使用其他数据集训练的,请自行准备测试图片。
wget https://paddleseg.bj.bcebos.com/dygraph/demo/cityscapes_demo.png
Paddle Inference是飞桨的原生推理库,提供服务端部署模型的功能。使用Paddle Inference的Python接口部署模型,只需要根据部署情况,安装PaddlePaddle。即是,Paddle Inference的Python接口集成在PaddlePaddle中。
在服务器端,Paddle Inference可以在Nvidia GPU或者X86 CPU上部署模型。Nvidia GPU部署模型计算速度快,X86 CPU部署模型应用范围广。
如果在X86 CPU上部署模型,请参考文档准备环境、安装CPU版本的PaddlePaddle(推荐版本>=2.1)。详细阅读安装文档底部描述,根据X86 CPU机器是否支持avx指令,选择安装正确版本的PaddlePaddle。
Paddle Inference在Nvidia GPU端部署模型,支持两种计算方式:Naive方式和TensorRT方式。TensorRT方式有多种计算精度,通常比Naive方式的计算速度更快。
如果在Nvidia GPU使用Naive方式部署模型,同样参考文档准备CUDA环境、安装GPU版本的PaddlePaddle(请详细阅读安装文档底部描述,推荐版本>=2.1)。比如:
# CUDA10.1的PaddlePaddle
python -m pip install paddlepaddle-gpu==2.1.2.post101 -f https://www.paddlepaddle.org.cn/whl/linux/mkl/avx/stable.html
如果在Nvidia GPU上使用TensorRT方式部署模型,同样参考文档准备CUDA环境(只支持CUDA10.1+cudnn7或者CUDA10.2+cudnn8.1)、安装对应GPU版本(支持TensorRT)的PaddlePaddle(请详细阅读安装文档底部描述,推荐版本>=2.1)。比如:
python -m pip install paddlepaddle-gpu==[版本号] -f https://www.paddlepaddle.org.cn/whl/stable/tensorrt.html
在Nvidia GPU上使用TensorRT方式部署模型,大家还需要下载TensorRT库。
CUDA10.1+cudnn7环境要求TensorRT 6.0,CUDA10.2+cudnn8.1环境要求TensorRT 7.1。
大家可以在TensorRT官网下载。这里只提供Ubuntu系统下TensorRT的下载链接。
wget https://paddle-inference-dist.bj.bcebos.com/tensorrt_test/cuda10.1-cudnn7.6-trt6.0.tar
wget https://paddle-inference-dist.bj.bcebos.com/tensorrt_test/cuda10.2-cudnn8.0-trt7.1.tgz
下载、解压TensorRT库,将TensorRT库的路径加入到LD_LIBRARY_PATH,export LD_LIBRARY_PATH=/path/to/tensorrt/:${LD_LIBRARY_PATH}
在PaddleSeg根目录,执行以下命令进行预测:
python deploy/python/infer.py \
--config /path/to/model/deploy.yaml \
--image_path /path/to/image/path/or/dir
参数说明如下:
参数名 | 用途 | 是否必选项 | 默认值 |
---|---|---|---|
config | 导出模型时生成的配置文件, 而非configs目录下的配置文件 | 是 | - |
image_path | 预测图片的路径或者目录或者文件列表 | 是 | - |
batch_size | 单卡batch size | 否 | 1 |
save_dir | 保存预测结果的目录 | 否 | output |
device | 预测执行设备,可选项有'cpu','gpu' | 否 | 'gpu' |
use_trt | 是否开启TensorRT来加速预测(当device=gpu,该参数才生效) | 否 | False |
precision | 启动TensorRT预测时的数值精度,可选项有'fp32','fp16','int8'(当device=gpu,该参数才生效) | 否 | 'fp32' |
enable_auto_tune | 开启Auto Tune,会使用部分测试数据离线收集动态shape,用于TRT部署(当device=gpu、use_trt=True、paddle版本>=2.2,该参数才生效) | 否 | False |
cpu_threads | 使用cpu预测的线程数(当device=cpu,该参数才生效) | 否 | 10 |
enable_mkldnn | 是否使用MKL-DNN加速cpu预测(当device=cpu,该参数才生效) | 否 | False |
benchmark | 是否产出日志,包含环境、模型、配置、性能信息 | 否 | False |
with_argmax | 对预测结果进行argmax操作 | 否 | 否 |
使用说明如下:
(InvalidArgument) some trt inputs dynamic shape inof not set
,可以设置enable_auto_tune参数为True。此时,使用部分测试数据离线收集动态shape,使用收集到的动态shape用于TRT部署。(注意,少部分模型暂时不支持在Nvidia GPU上使用TensorRT方式部署)。--benchmark
的话需要安装auto_log,请参考安装方式。测试样例的预测结果如下。
Dear OpenI User
Thank you for your continuous support to the Openl Qizhi Community AI Collaboration Platform. In order to protect your usage rights and ensure network security, we updated the Openl Qizhi Community AI Collaboration Platform Usage Agreement in January 2024. The updated agreement specifies that users are prohibited from using intranet penetration tools. After you click "Agree and continue", you can continue to use our services. Thank you for your cooperation and understanding.
For more agreement content, please refer to the《Openl Qizhi Community AI Collaboration Platform Usage Agreement》