准备工作:
-
确认驱动版本以及cuda版本
nvidia-smi #nvidia-smi -L可列出驱动当前可访问的显卡设备
-
确认驱动运行时cuda版本,不一定要有,运行环境存在即可,用于加速计算
nvcc -V
确认cudnn版本、不一定要有,运行环境存在即可,用于加速计算
1、启动容器
sudo docker run -p 9292:9292 --gpus all --name test -dit paddlepaddle/serving:0.7.0-cuda10.1-cudnn7-devel bash
其中--gpus all 需要提前安装nvidia-container-toolkit(即nvidia-docker的升级版)表示允许容器访问使用所有gpu(或指定gpu设备序列id,如--gpus 0或--gpus 0,1,2)
-e NVIDIA_DRIVER_CAPABILITIES=compute,utility -e NVIDIA_VISIBLE_DEVICES=all 等docker容器启动参数可能在部分场景下需要使用但本次部署未使用到
2、拉取代码
容器已经预安装python 3.5、3.7、3.8等常用版本,默认python3为3.5
git clone https://github.com/PaddlePaddle/Serving
cd Serving
pip3.7 install -r python/requirements.txt -i https://mirror.baidu.com/pypi/simple
3、环境依赖
pip3.7 install paddle-serving-client==0.7.0 -i https://mirror.baidu.com/pypi/simple
pip3.7 install paddle-serving-app==0.7.0 -i https://mirror.baidu.com/pypi/simple
pip3.7 install paddle-serving-server-gpu==0.7.0.post101 -i https://mirror.baidu.com/pypi/simple # GPU with CUDA10.1 + TensorRT6
4、安装python版本对应paddle的whl,这里使用gpu版本
pip3.7 install https://paddle-inference-lib.bj.bcebos.com/2.2.0/python/Linux/GPU/x86-64_gcc8.2_avx_mkl_cuda10.1_cudnn7.6.5_trt6.0.1.5/paddlepaddle_gpu-2.2.0.post101-cp37-cp37m-linux_x86_64.whl
5、配置模型
python3.7 -m paddle_serving_app.package --get_model ocr_rec && tar -xzvf ocr_rec.tar.gz
python3.7 -m paddle_serving_app.package --get_model ocr_det && tar -xzvf ocr_det.tar.gz
// 或者获取服务端模型进行转换,(测试ch_ppocr_server_v2.0_rec和ch_ppocr_server_v2.0_det发现无效且返回错误码err_no:5)
获取用于测试的数据集(可选)
wget --no-check-certificate https://paddle-serving.bj.bcebos.com/ocr/test_imgs.tar && tar xf test_imgs.tar
6、启动单server、单client
启动服务并将日志输出至log.txt(在同级目录下的./Pipelinexxxx/pipeline.log也记录有一部分启动运行的日志)
python3.7 web_service.py &>log.txt &
运行客户端访问服务测试
python3.7 pipeline_http_client.py
关于坐标,直接读取如下中的dt_boxes_list或dt_boxes_list[0]都可获得正常的坐标,但需要自己做格式处理(直接用str()函数处理示例图片结果得到的文本字符如dt_boxes_list将得到 [array([[[292, 298], [332, 298], [345, 848], [305, 848]], [[345, 298], [377, 298], [382, 660], [350, 660]]], dtype=int16)] ):
在尝试部署环境前未确认各版本对应关系就进行安装容易出问题,目前我使用PaddleOCR部署GPU的pdserving和hubserving识别环境均失败,异常为
UserWarning: You are using GPU version Paddle, but your CUDA device is not set properly.
通过各种命令查询版本未发现有误,除了我病急乱投医自己去直接pip3.7 install torch 的版本打印需求为cuda10.2(PaddleOCR环境没有这个包,且后来发现根据网文介绍还需要安装指定torch版本的基础上进行测试)
部分文章提到可能是paddle版本对不上,这个暂未尝试
2021/12/02
发现确实是paddle版本对不上,docker_hub上的镜像容器已经携带配套的paddle,但我按文档来一步步安装时,文档中安装paddle的步骤会把镜像容器中的版本卸载掉;