diff --git a/tutorials/mobilenetv3_prod/Step6/test_tipc/configs/mobilenet_v3_small/serving_infer_cpp.txt b/tutorials/mobilenetv3_prod/Step6/test_tipc/configs/mobilenet_v3_small/serving_infer_cpp.txt index 7636991ee33b7f11148f0247327a1de4f7727310..69043465c4d9ca0025986c3ba4030dc2ebf7981b 100644 --- a/tutorials/mobilenetv3_prod/Step6/test_tipc/configs/mobilenet_v3_small/serving_infer_cpp.txt +++ b/tutorials/mobilenetv3_prod/Step6/test_tipc/configs/mobilenet_v3_small/serving_infer_cpp.txt @@ -12,4 +12,5 @@ serving_dir:./deploy/serving_cpp --op:GeneralClasOp --port:9997 --gpu_id:"0"|null -cpp_client:serving_client.py \ No newline at end of file +cpp_client:serving_client.py +proto_path:deploy/serving_cpp/preprocess/serving_client_conf.prototxt diff --git a/tutorials/mobilenetv3_prod/Step6/test_tipc/test_serving_infer_cpp.sh b/tutorials/mobilenetv3_prod/Step6/test_tipc/test_serving_infer_cpp.sh index 5b825d76600d6ce4e453ac41f34534cae5477d96..118f3f5a5fa30a8f31766b4da98e378ad0938b65 100644 --- a/tutorials/mobilenetv3_prod/Step6/test_tipc/test_serving_infer_cpp.sh +++ b/tutorials/mobilenetv3_prod/Step6/test_tipc/test_serving_infer_cpp.sh @@ -33,6 +33,8 @@ port_value=$(func_parser_value "${lines[12]}") gpu_key=$(func_parser_key "${lines[13]}") gpu_value=$(func_parser_value "${lines[13]}") cpp_client_value=$(func_parser_value "${lines[14]}") +proto_path=$(func_parser_value "${lines[15]}") + LOG_PATH="./log/${model_name}/${MODE}" mkdir -p ${LOG_PATH} @@ -55,7 +57,7 @@ function func_serving(){ trans_model_cmd="${python} ${trans_model_py} ${set_dirname} ${set_model_filename} ${set_params_filename} ${set_serving_server} ${set_serving_client}" eval $trans_model_cmd last_status=${PIPESTATUS[0]} - cp "deploy/serving_cpp/preprocess/serving_client_conf.prototxt" ${serving_client_value} + cp ${proto_path} ${serving_client_value} cd ${serving_dir_value} status_check $last_status "${trans_model_cmd}" "${status_log}" "${model_name}" echo $PWD diff --git a/tutorials/tipc/serving_cpp/serving_cpp.md b/tutorials/tipc/serving_cpp/serving_cpp.md index 3aaf28013190747fc8a778c1cbfb4aaa69dbc37d..3756f63fcd5b151c5508d54b68f072db86e6af77 100644 --- a/tutorials/tipc/serving_cpp/serving_cpp.md +++ b/tutorials/tipc/serving_cpp/serving_cpp.md @@ -156,7 +156,7 @@ cp -r ./template/code/* ./ * [preprocess_op.*](../../mobilenetv3_prod/Step6/deploy/serving_cpp/preprocess/preprocess_op.cpp) 是可能会用到的工具类函数,复用 cpp_infer 中的代码; -* [serving_client_conf.prototxt](../../mobilenetv3_prod/Step6/deploy/serving_cpp/preprocess/serving_client_conf.prototxt) 由于clint端输入的是原始图像,可能与推理时需要的输入数据类型不同,建议将输入数据类型统一修改成string,tipc测试时每次copy该文件,覆盖自动生成的`serving_client_conf.prototxt`。 具体将 feed_var 中的 feed_type 修改为20,shape修改为1。 +* [serving_client_conf.prototxt](../../mobilenetv3_prod/Step6/deploy/serving_cpp/preprocess/serving_client_conf.prototxt) 由于clint端输入的是原始图像,可能与推理时需要的输入数据类型不同,建议将输入数据类型统一修改成string,tipc测试时每次copy该文件,覆盖自动生成的`serving_client/serving_client_conf.prototxt`。 具体在Clas将 feed_var 中的 feed_type 修改为20,shape修改为1。按模型实际需要修改,可参考[prototxt 字段说明](https://github.com/PaddlePaddle/Serving/blob/v0.9.0/doc/Save_CN.md) ``` feed_var { diff --git a/tutorials/tipc/serving_cpp/test_serving_cpp.md b/tutorials/tipc/serving_cpp/test_serving_cpp.md index e9123c95132f54d76c1881bd85337f4d9c766923..d2c9f3d849036dc78dc5a9a8bc376d7f2b7bc8cf 100644 --- a/tutorials/tipc/serving_cpp/test_serving_cpp.md +++ b/tutorials/tipc/serving_cpp/test_serving_cpp.md @@ -52,9 +52,10 @@ python run_script ## 2.2 配置文件和运行命令映射解析 -完整的 `serving_infer_cpp.txt` 配置文件共有13行,包含2个方面的内容。 -- Serving 部署模型转换:第4~10行 -- Serving 启动部署服务:第10~13行 +完整的 `serving_infer_cpp.txt` 配置文件共有13行,包含3个方面的内容。 +- Serving 部署模型转换:第4~9行 +- Serving 启动部署服务:第10~14行 +- Serving 启动客户端:第15行 具体内容见 `serving_infer_cpp.txt`。 @@ -91,13 +92,54 @@ python3.7 -m paddle_serving_client.convert --dirname=./inference/resnet50_infer/ - pdmodel文件名:`--model_filename=inference.pdmodel`,则需要修改第6行 - 其他参数以此类推 + + ### 2.2.2 C++ 服务部署配置参数 +C++ 服务的服务端使用命令行启动。 + +``` +python3.7 -m paddle_serving_server.serve --model ./deploy/serving_cpp/serving_server/ --op GeneralClasOp --port 9997 --gpu_id "0" +``` +
+服务端启动配置参数(点击以展开详细内容或者折叠) + + +serving_dir:./deploy/serving_cpp +--model:serving_server +--op:GeneralClasOp +--port:9997 +--gpu_id:"0"|null + +| 行号 | 参考内容 | 含义 | key是否需要修改 | value是否需要修改 | 修改内容 | +|----|-------------------------------------|---------------|-----------|-------------|----------------------------------| +| 10 | serving_dir:./deploy/serving_cpp | serving服务执行路径 | 否 | 是 | value修改实际路径 | +| 11 | --model:serving_server | 部署模型名称 | 否 | 是 | value修改为实际部署模型名称 | +| 12 | --op:GeneralClasOp | 自定义OP名称 | 否 | 是 | value修改自定义模型的名称 | +| 13 | --port:9997 | 端口号 | 否 | 是 | value修改为实际使用的端口号 | +| 14 | --gpu_id:"0"|null | 是否使用gpu | 否 | 否 | 默认在"0"号gpu卡和cpu卡上运行 | + +
+ + C++ 服务的客户端采用 PYTHON 语言编写。 ```python python3.7 serving_client.py ``` +
+服务端启动配置参数(点击以展开详细内容或者折叠) + + +| 行号 | 参考内容 | 含义 | key是否需要修改 | value是否需要修改 | 修改内容 | +|----|-------------------------------------|---------------|-----------|-------------|----------------------------------| +| 15 | cpp_client:serving_client.py | 客户端服务执行路径 | 否 | 是 | value修改实际路径 | +| 16 | proto_path:deploy/serving_cpp/preprocess/serving_client_conf.prototxt | 准备好的prototxt路径 | 否 | 是 | value修改为实际的prototxt文件路径 | + + +
+ + # 3. C++ 服务化部署功能测试开发 @@ -133,7 +175,7 @@ python3.7 -m paddle_serving_client.convert --serving_client=./deploy/serving_cpp/serving_client/ # 部署 -python3.7 -m paddle_serving_server.serve --model ./deploy/serving_cpp/serving_server/ --port 9993 +python3.7 -m paddle_serving_server.serve --model ./deploy/serving_cpp/serving_server/ --op GeneralClasOp --port 9997 --gpu_id "0" python3.7 serving_client.py ```