From 7eec82b87e52085b3e0b8909d3d00c18ef7dd904 Mon Sep 17 00:00:00 2001 From: stephon Date: Fri, 17 Dec 2021 07:56:54 +0000 Subject: [PATCH] update paddle serving on dev branch --- deploy/paddleserving/README.MD | 1 - deploy/paddleserving/imgs/results.png | Bin 8974 -> 8983 bytes deploy/paddleserving/readme.md | 236 ++++++++++++++++++ .../paddle_serving_deploy.md | 14 +- 4 files changed, 243 insertions(+), 8 deletions(-) delete mode 120000 deploy/paddleserving/README.MD create mode 100644 deploy/paddleserving/readme.md diff --git a/deploy/paddleserving/README.MD b/deploy/paddleserving/README.MD deleted file mode 120000 index a2fdec2de..000000000 --- a/deploy/paddleserving/README.MD +++ /dev/null @@ -1 +0,0 @@ -../../docs/zh_CN/inference_deployment/paddle_serving_deploy.md \ No newline at end of file diff --git a/deploy/paddleserving/imgs/results.png b/deploy/paddleserving/imgs/results.png index 4d6db757a19cb0355ca8e8e8675a6d5d7671b022..ad44083c4f2c021855b4422f98f32fcbcee01af0 100644 GIT binary patch delta 8396 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 NrS!QAyN{9(T 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 diff --git a/deploy/paddleserving/readme.md b/deploy/paddleserving/readme.md new file mode 100644 index 000000000..56b8a9bf6 --- /dev/null +++ b/deploy/paddleserving/readme.md @@ -0,0 +1,236 @@ +# 模型服务化部署 +- [1. 简介](#1) +- [2. Serving 安装](#2) +- [3. 图像分类服务部署](#3) + - [3.1 模型转换](#3.1) + - [3.2 服务部署和请求](#3.2) +- [4. 图像识别服务部署](#4) + - [4.1 模型转换](#4.1) + - [4.2 服务部署和请求](#4.2) +- [5. FAQ](#5) + + +## 1. 简介 +[Paddle Serving](https://github.com/PaddlePaddle/Serving) 旨在帮助深度学习开发者轻松部署在线预测服务,支持一键部署工业级的服务能力、客户端和服务端之间高并发和高效通信、并支持多种编程语言开发客户端。 + +该部分以 HTTP 预测服务部署为例,介绍怎样在 PaddleClas 中使用 PaddleServing 部署模型服务。目前只支持 Linux 平台部署,暂不支持 Windows 平台。 + + +## 2. Serving 安装 + +Serving 官网推荐使用 docker 安装并部署 Serving 环境。首先需要拉取 docker 环境并创建基于 Serving 的 docker。 + +```shell +docker pull paddlepaddle/serving:0.7.0-cuda10.2-cudnn7-devel +nvidia-docker run -p 9292:9292 --name test -dit paddlepaddle/serving:0.7.0-cuda10.2-cudnn7-devel bash +nvidia-docker exec -it test bash +``` + +进入 docker 后,需要安装 Serving 相关的 python 包。 + +```shell +pip3 install paddle-serving-client==0.7.0 +pip3 install paddle-serving-server==0.7.0 # CPU +pip3 install paddle-serving-app==0.7.0 +pip3 install paddle-serving-server-gpu==0.7.0.post102 #GPU with CUDA10.2 + TensorRT6 +# 其他GPU环境需要确认环境再选择执行哪一条 +pip3 install paddle-serving-server-gpu==0.7.0.post101 # GPU with CUDA10.1 + TensorRT6 +pip3 install paddle-serving-server-gpu==0.7.0.post112 # GPU with CUDA11.2 + TensorRT8 +``` + +* 如果安装速度太慢,可以通过 `-i https://pypi.tuna.tsinghua.edu.cn/simple` 更换源,加速安装过程。 +* 其他环境配置安装请参考: [使用Docker安装Paddle Serving](https://github.com/PaddlePaddle/Serving/blob/v0.7.0/doc/Install_CN.md) + +* 如果希望部署 CPU 服务,可以安装 serving-server 的 cpu 版本,安装命令如下。 + +```shell +pip install paddle-serving-server +``` + + +## 3. 图像分类服务部署 + +### 3.1 模型转换 +使用 PaddleServing 做服务化部署时,需要将保存的 inference 模型转换为 Serving 模型。下面以经典的 ResNet50_vd 模型为例,介绍如何部署图像分类服务。 +- 进入工作目录: +```shell +cd deploy/paddleserving +``` +- 下载 ResNet50_vd 的 inference 模型: +```shell +# 下载并解压 ResNet50_vd 模型 +wget https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/inference/ResNet50_vd_infer.tar && tar xf ResNet50_vd_infer.tar +``` +- 用 paddle_serving_client 把下载的 inference 模型转换成易于 Server 部署的模型格式: +``` +# 转换 ResNet50_vd 模型 +python3 -m paddle_serving_client.convert --dirname ./ResNet50_vd_infer/ \ + --model_filename inference.pdmodel \ + --params_filename inference.pdiparams \ + --serving_server ./ResNet50_vd_serving/ \ + --serving_client ./ResNet50_vd_client/ +``` +ResNet50_vd 推理模型转换完成后,会在当前文件夹多出 `ResNet50_vd_serving` 和 `ResNet50_vd_client` 的文件夹,具备如下格式: +``` +|- ResNet50_vd_server/ + |- inference.pdiparams + |- inference.pdmodel + |- serving_server_conf.prototxt + |- serving_server_conf.stream.prototxt +|- ResNet50_vd_client + |- serving_client_conf.prototxt + |- serving_client_conf.stream.prototxt +``` +得到模型文件之后,需要修改 `ResNet50_vd_server` 下文件 `serving_server_conf.prototxt` 中的 alias 名字:将 `fetch_var` 中的 `alias_name` 改为 `prediction` + +**备注**: Serving 为了兼容不同模型的部署,提供了输入输出重命名的功能。这样,不同的模型在推理部署时,只需要修改配置文件的 alias_name 即可,无需修改代码即可完成推理部署。 +修改后的 serving_server_conf.prototxt 如下所示: +``` +feed_var { + name: "inputs" + alias_name: "inputs" + is_lod_tensor: false + feed_type: 1 + shape: 3 + shape: 224 + shape: 224 +} +fetch_var { + name: "save_infer_model/scale_0.tmp_1" + alias_name: "prediction" + is_lod_tensor: false + fetch_type: 1 + shape: 1000 +} +``` + +### 3.2 服务部署和请求 +paddleserving 目录包含了启动 pipeline 服务和发送预测请求的代码,包括: +```shell +__init__.py +config.yml # 启动服务的配置文件 +pipeline_http_client.py # http方式发送pipeline预测请求的脚本 +pipeline_rpc_client.py # rpc方式发送pipeline预测请求的脚本 +classification_web_service.py # 启动pipeline服务端的脚本 +``` + +- 启动服务: +```shell +# 启动服务,运行日志保存在 log.txt +python3 classification_web_service.py &>log.txt & +``` +成功启动服务后,log.txt 中会打印类似如下日志 +![](./imgs/start_server.png) + +- 发送请求: +```shell +# 发送服务请求 +python3 pipeline_http_client.py +``` +成功运行后,模型预测的结果会打印在 cmd 窗口中,结果示例为: +![](./imgs/results.png) + + +## 4.图像识别服务部署 +使用 PaddleServing 做服务化部署时,需要将保存的 inference 模型转换为 Serving 模型。 下面以 PP-ShiTu 中的超轻量图像识别模型为例,介绍图像识别服务的部署。 + +## 4.1 模型转换 +- 下载通用检测 inference 模型和通用识别 inference 模型 +``` +cd deploy +# 下载并解压通用识别模型 +wget -P models/ https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/rec/models/inference/general_PPLCNet_x2_5_lite_v1.0_infer.tar +cd models +tar -xf general_PPLCNet_x2_5_lite_v1.0_infer.tar +# 下载并解压通用检测模型 +wget https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/rec/models/inference/picodet_PPLCNet_x2_5_mainbody_lite_v1.0_infer.tar +tar -xf picodet_PPLCNet_x2_5_mainbody_lite_v1.0_infer.tar +``` +- 转换识别 inference 模型为 Serving 模型: +``` +# 转换识别模型 +python3 -m paddle_serving_client.convert --dirname ./general_PPLCNet_x2_5_lite_v1.0_infer/ \ + --model_filename inference.pdmodel \ + --params_filename inference.pdiparams \ + --serving_server ./general_PPLCNet_x2_5_lite_v1.0_serving/ \ + --serving_client ./general_PPLCNet_x2_5_lite_v1.0_client/ +``` +识别推理模型转换完成后,会在当前文件夹多出 `general_PPLCNet_x2_5_lite_v1.0_serving/` 和 `general_PPLCNet_x2_5_lite_v1.0_client/` 的文件夹。修改 `general_PPLCNet_x2_5_lite_v1.0_serving/` 目录下的 serving_server_conf.prototxt 中的 alias 名字: 将 `fetch_var` 中的 `alias_name` 改为 `features`。 +修改后的 serving_server_conf.prototxt 内容如下: +``` +feed_var { + name: "x" + alias_name: "x" + is_lod_tensor: false + feed_type: 1 + shape: 3 + shape: 224 + shape: 224 +} +fetch_var { + name: "save_infer_model/scale_0.tmp_1" + alias_name: "features" + is_lod_tensor: false + fetch_type: 1 + shape: 512 +} +``` +- 转换通用检测 inference 模型为 Serving 模型: +``` +# 转换通用检测模型 +python3 -m paddle_serving_client.convert --dirname ./picodet_PPLCNet_x2_5_mainbody_lite_v1.0_infer/ \ + --model_filename inference.pdmodel \ + --params_filename inference.pdiparams \ + --serving_server ./picodet_PPLCNet_x2_5_mainbody_lite_v1.0_serving/ \ + --serving_client ./picodet_PPLCNet_x2_5_mainbody_lite_v1.0_client/ +``` +检测 inference 模型转换完成后,会在当前文件夹多出 `picodet_PPLCNet_x2_5_mainbody_lite_v1.0_serving/` 和 `picodet_PPLCNet_x2_5_mainbody_lite_v1.0_client/` 的文件夹。 + +**注意:** 此处不需要修改 `picodet_PPLCNet_x2_5_mainbody_lite_v1.0_serving/` 目录下的 serving_server_conf.prototxt 中的 alias 名字。 + +- 下载并解压已经构建后的检索库 index +``` +cd ../ +wget https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/rec/data/drink_dataset_v1.0.tar && tar -xf drink_dataset_v1.0.tar +``` + +## 4.2 服务部署和请求 +**注意:** 识别服务涉及到多个模型,出于性能考虑采用 PipeLine 部署方式。Pipeline 部署方式当前不支持 windows 平台。 +- 进入到工作目录 +```shell +cd ./deploy/paddleserving/recognition +``` +paddleserving 目录包含启动 pipeline 服务和发送预测请求的代码,包括: +``` +__init__.py +config.yml # 启动服务的配置文件 +pipeline_http_client.py # http方式发送pipeline预测请求的脚本 +pipeline_rpc_client.py # rpc方式发送pipeline预测请求的脚本 +recognition_web_service.py # 启动pipeline服务端的脚本 +``` +- 启动服务: +``` +# 启动服务,运行日志保存在 log.txt +python3 recognition_web_service.py &>log.txt & +``` +成功启动服务后,log.txt 中会打印类似如下日志 +![](./imgs/start_server_shitu.png) + +- 发送请求: +``` +python3 pipeline_http_client.py +``` +成功运行后,模型预测的结果会打印在 cmd 窗口中,结果示例为: +![](./imgs/results_shitu.png) + + +## 5.FAQ +**Q1**: 发送请求后没有结果返回或者提示输出解码报错 + +**A1**: 启动服务和发送请求时不要设置代理,可以在启动服务前和发送请求前关闭代理,关闭代理的命令是: +``` +unset https_proxy +unset http_proxy +``` + +更多的服务部署类型,如 `RPC 预测服务` 等,可以参考 Serving 的[github 官网](https://github.com/PaddlePaddle/Serving/tree/v0.7.0/examples) diff --git a/docs/zh_CN/inference_deployment/paddle_serving_deploy.md b/docs/zh_CN/inference_deployment/paddle_serving_deploy.md index 7c9d6b8dd..58a7eacc2 100644 --- a/docs/zh_CN/inference_deployment/paddle_serving_deploy.md +++ b/docs/zh_CN/inference_deployment/paddle_serving_deploy.md @@ -75,8 +75,8 @@ python3 -m paddle_serving_client.convert --dirname ./ResNet50_vd_infer/ \ ResNet50_vd 推理模型转换完成后,会在当前文件夹多出 `ResNet50_vd_serving` 和 `ResNet50_vd_client` 的文件夹,具备如下格式: ``` |- ResNet50_vd_server/ - |- __model__ - |- __params__ + |- inference.pdiparams + |- inference.pdmodel |- serving_server_conf.prototxt |- serving_server_conf.stream.prototxt |- ResNet50_vd_client @@ -100,9 +100,9 @@ feed_var { fetch_var { name: "save_infer_model/scale_0.tmp_1" alias_name: "prediction" - is_lod_tensor: true + is_lod_tensor: false fetch_type: 1 - shape: -1 + shape: 1000 } ``` @@ -157,7 +157,7 @@ python3 -m paddle_serving_client.convert --dirname ./general_PPLCNet_x2_5_lite_v --serving_server ./general_PPLCNet_x2_5_lite_v1.0_serving/ \ --serving_client ./general_PPLCNet_x2_5_lite_v1.0_client/ ``` -识别推理模型转换完成后,会在当前文件夹多出 `general_PPLCNet_x2_5_lite_v1.0_serving/` 和 `general_PPLCNet_x2_5_lite_v1.0_serving/` 的文件夹。修改 `general_PPLCNet_x2_5_lite_v1.0_serving/` 目录下的 serving_server_conf.prototxt 中的 alias 名字: 将 `fetch_var` 中的 `alias_name` 改为 `features`。 +识别推理模型转换完成后,会在当前文件夹多出 `general_PPLCNet_x2_5_lite_v1.0_serving/` 和 `general_PPLCNet_x2_5_lite_v1.0_client/` 的文件夹。修改 `general_PPLCNet_x2_5_lite_v1.0_serving/` 目录下的 serving_server_conf.prototxt 中的 alias 名字: 将 `fetch_var` 中的 `alias_name` 改为 `features`。 修改后的 serving_server_conf.prototxt 内容如下: ``` feed_var { @@ -172,9 +172,9 @@ feed_var { fetch_var { name: "save_infer_model/scale_0.tmp_1" alias_name: "features" - is_lod_tensor: true + is_lod_tensor: false fetch_type: 1 - shape: -1 + shape: 512 } ``` - 转换通用检测 inference 模型为 Serving 模型: