工作需要,我就研究了飞浆,入坑无数,特总结一下,方便下次使用
1,安装号CUDA和CUDNN,参考
2,安装DOCKER参考
-1.
sudo snap install docker
-2.
sudo docker version
-3.
sudo docker run hello-world
3,开始安装NVIDIA-docker
参考
-1,
sudo apt install curl
-2.
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/ubuntu18.04/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt-get update
-3.安装nvidia-docker2软件包,重新加载docker守护程序配置
sudo apt-get install nvidia-docker2
sudo pkill -SIGHUP dockerd
sudo nvidia-docker run --rm nvidia/cuda:10.1-devel nvidia-smi
4,开始安装Paddle-Serving pipeline部署 python版本,注意CUDA版本CUDnn版本
-1.拉取镜像
sudo docker pull registry.baidubce.com/paddlepaddle/serving:0.9.0-cuda10.1-cudnn7-devel
-2.进入镜像内
sudo nvidia-docker run -it --entrypoint=/bin/bash registry.baidubce.com/paddlepaddle/serving:0.9.0-cuda10.1-cudnn7-devel
-3.下载paddlepaddle自由选择,下载地
python3.7 -m pip install paddlepaddle-gpu==2.3.0.post101 -f https://www.paddlepaddle.org.cn/whl/linux/mkl/avx/stable.html
-4.安装相关
pip3.7 install paddle-serving-client==0.9.0 paddle-serving-app==0.9.0 paddle-serving-server-gpu==0.9.0.post101 -i https://mirror.baidu.com/pypi/simple
-5.下载OCR repo
git clone https://github.com/PaddlePaddle/PaddleOCR
输出下面提示代表成功:
λ 6369441a8d06 /home git clone https://github.com/PaddlePaddle/PaddleOCR
Cloning into 'PaddleOCR'...
remote: Enumerating objects: 38719, done.
remote: Counting objects: 100% (695/695), done.
remote: Compressing objects: 100% (363/363), done.
remote: Total 38719 (delta 407), reused 563 (delta 332), pack-reused 38024
Receiving objects: 100% (38719/38719), 320.58 MiB | 18.54 MiB/s, done.
Resolving deltas: 100% (26948/26948), done.
Checking connectivity... done.
cd PaddleOCR/deploy/pdserving/
-6.下载并解压 OCR 文本检测模型
wget https://paddleocr.bj.bcebos.com/PP-OCRv3/chinese/ch_PP-OCRv3_det_infer.tar -O ch_PP-OCRv3_det_infer.tar && tar -xf ch_PP-OCRv3_det_infer.tar
wget https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_server_v2.0_det_infer.tar -O ch_ppocr_server_v2.0_det_infer.tar && tar -xf ch_ppocr_server_v2.0_det_infer.tar
-7.下载并解压 OCR 文本识别模型
wget https://paddleocr.bj.bcebos.com/PP-OCRv3/chinese/ch_PP-OCRv3_rec_infer.tar -O ch_PP-OCRv3_rec_infer.tar && tar -xf ch_PP-OCRv3_rec_infer.tar
wget https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_server_v2.0_rec_infer.tar -O ch_ppocr_server_v2.0_rec_infer.tar && tar -xf ch_ppocr_server_v2.0_rec_infer.tar
-8.转换检测模型
python3.7 -m paddle_serving_client.convert --dirname ./ch_PP-OCRv3_det_infer/ \
--model_filename inference.pdmodel \
--params_filename inference.pdiparams \
--serving_server ./ppocr_det_v3_serving/ \
--serving_client ./ppocr_det_v3_client/
python3.7 -m paddle_serving_client.convert --dirname ./ch_ppocr_server_v2.0_det_infer/ \
--model_filename inference.pdmodel \
--params_filename inference.pdiparams \
--serving_server ./ppocr_det_v2.0_serving/ \
--serving_client ./ppocr_det_v2.0_client/
-9.转换识别模型
python3.7 -m paddle_serving_client.convert --dirname ./ch_PP-OCRv3_rec_infer/ \
--model_filename inference.pdmodel \
--params_filename inference.pdiparams \
--serving_server ./ppocr_rec_v3_serving/ \
--serving_client ./ppocr_rec_v3_client/
python3.7 -m paddle_serving_client.convert --dirname ./ch_ppocr_server_v2.0_rec_infer/ \
--model_filename inference.pdmodel \
--params_filename inference.pdiparams \
--serving_server ./ppocr_rec_v2.0_serving/ \
--serving_client ./ppocr_rec_v2.0_client/
-10.0调整模型服务配置文件config.yml
#op资源类型, True, 为线程模型;False,为进程模型
is_thread_op: False
#并发数,is_thread_op=True时,为线程并发;否则为进程并发
concurrency: 8
调整 config.yml 中的并发个数获得最大的QPS, 一般检测和识别的并发数为2:1
det:
#并发数,is_thread_op=True时,为线程并发;否则为进程并发
concurrency: 8
...
rec:
#并发数,is_thread_op=True时,为线程并发;否则为进程并发
concurrency: 4
...
vim config.yml
i#进入编辑模式,修改后按下ESC
:wq
-10.01,http端口是4位数
#rpc端口, rpc_port和http_port不允许同时为空。当rpc_port为空且http_port不为空时,会自动将rpc_port设置为http_port+1
rpc_port: 18091
#http端口, rpc_port和http_port不允许同时为空。当rpc_port可用且http_port为空时,不自动生成http_port
http_port: 9998
#build_dag_each_worker, False,框架在进程内创建一条DAG;True,框架会每个进程内创建多个独立的DAG
build_dag_each_worker: True
-11.0启动服务端
python3.7 web_service.py &>log.txt &
-12.0启动客户端
python3.7 pipeline_http_client.py