未验证 提交 ab146bf1 编写于 作者: X xiaoting 提交者: GitHub

add tipc doc (#5377)

上级 0c9b3bdd
**目录**
- [1、总览](#1---)
* [1.1 背景](#11---)
* [1.2 训推一体自动化测试](#12----------)
* [1.3 文本检测样板间概览](#13----------)
- [2. 训推一体规范接入 Paddle2ONNX 预测流程](#2----------paddle2onnx-----)
* [2.1 准备数据和环境](#21--------)
* [2.2 规范化输出预测日志](#22----------)
+ [2.2.1 预测日志规范](#221-------)
+ [2.2.2 接入步骤](#222-----)
* [2.3 编写自动化测试代码](#23----------)
- [3. 附录](#3---)
* [3.1 自动化测试脚本test_paddle2onnx.sh 函数介绍](#31--------test-paddle2onnxsh-----)
* [3.2 其他说明](#32-----)
# 1、总览
## 1.1 背景
训推一体 CI 机制,旨在监控框架代码更新可能导致的**模型训练、预测报错、性能下降**等问题。本文主要介绍训推一体中**Paddle2ONNX预测链条**的接入规范和监测点,是在[基础链条](http://agroup.baidu.com/paddlepaddle/md/article/4273691)上针对Paddle2ONNX链条的补充说明。
主要监控的内容有:
- 框架更新后,套件模型的 Paddle2ONNX 预测是否能正常走通;(比如 API 的不兼容升级)
为了能监控上述问题,希望把套件模型的 Paddle2ONNX 预测链条加到框架的 CI 和 CE 中,提升 PR 合入的质量。因此,需要在套件中加入运行脚本(不影响套件正常运行),完成模型的自动化测试。
可以建立的 CI/CE 机制包括:
1. 不训练,全量数据走通开源模型 Paddle2ONNX 预测,并验证模型预测精度是否符合设定预期;(单模型30分钟内) [保证] **
a. 保证 Paddle2ONNX 模型转化走通,可以正常通过onnxruntime部署,得到正确预测结果(QA添加中)
注:由于 CI 有时间限制,所以在测试的时候需要限制运行时间,所以需要构建一个很小的数据集完成测试。
## 1.2 训推一体自动化测试
本规范测试的链条如下,可以根据模型开发规范( http://agroup.baidu.com/paddlepaddle/md/article/3638870 )和套件需要,适当删减链条。
![图片](http://bos.bj.bce-internal.sdns.baidu.com/agroup-bos-bj/bj-6c2fa95d0fb01317a5858c81c53dfb1ba92a5f72)
上图各模块具体测试点如下:
- 服务化模型转换 (必选)
- 部署环境软硬件选型
- onnxruntime **(必选)**
- CPU(Linux **必选** ,MacOS 可选,Windows 可选)
- onnxruntime-gpu(可选)
- GPU (Linux 可选, MacOS 可选, Windows 可选)
本文档目前只支持了必选链条,可选模块后续完善。
## 1.3 文本检测样板间概览
在 PaddleOCR 中,以文本检测为例,提供了本规范的样板间,可以跑通1.2章节提到的**所有测试链条**,完成1.1背景部分提到的1种 CI/CE 机制。
Paddle2ONNX 链条测试工具已与基础链条测试集成到一起,位于 PaddleOCR dygraph 分支下的[test_tipc目录](https://github.com/PaddlePaddle/PaddleOCR/tree/dygraph/test_tipc),其关键结构如下:
```
test_tipc/
├── common_func.sh
├── configs
│ ├── ppocr_det_model
│ │ ├── model_linux_gpu_normal_normal_paddle2onnx_python_linux_gpu_cpu.txt # 测试OCR检测模型的参数配置文件
│ ├── xxx
├── docs # 各测试流程文档说明
│ ├── test_paddle2onnx.md # Paddle2ONNX 部署测试脚本运行说明
│ ├── xxx
├── output
├── prepare.sh # 完成训推一体运行所需要的数据和模型下载
├── readme.md # 飞桨训推一体认证说明
├── test_paddle2onnx.sh # Paddle2ONNX 部署启动脚本
├── xxx
...
```
# 2. 训推一体规范接入 Paddle2ONNX 预测流程
训推一体规范接入包含如下三个步骤,接下来将依次介绍这三个部分。
- 准备数据和环境
- 规范化输出日志
- 编写自动化测试代码
## 2.1 准备数据和环境
同标准训推一体测试流程一样,在 prepare.sh 中准备好所需数据和环境,包括:
- 少量预测数据
- inference 预测模型
- Paddle2ONNX 所需 whl 包
以 PaddleOCR 的检测模型为例,使用方式:
```
# 配置文件路径 运行模式
bash tests/prepare.sh ./tests/model_linux_gpu_normal_normal_paddle2onnx_python_linux_gpu_cpu 'paddle2onnx_infer'
```
prepare.sh 具体内容:
```
# 判断预测模式
#!/bin/bash
FILENAME=$1
# MODE be one of ['lite_train_infer' 'whole_infer' 'whole_train_infer', 'infer', 'cpp_infer', 'serving_infer', 'paddle2onnx_infer']
MODE=$2
.....
if [ ${MODE} = "paddle2onnx_infer" ];then
# 准备 paddle2onnx 环境
python_name=$(func_parser_value "${lines[2]}")
${python_name} -m pip install install paddle2onnx
${python_name} -m pip install onnxruntime==1.4.0
# 下载 paddle inference 模型
wget -nc -P ./inference https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_mobile_v2.0_det_infer.tar
wget -nc -P ./inference https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_mobile_v2.0_rec_infer.tar
wget -nc -P ./inference https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_server_v2.0_det_infer.tar
wget -nc -P ./inference https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_server_v2.0_rec_infer.tar
# 下载预测数据
wget -nc -P ./inference https://paddleocr.bj.bcebos.com/dygraph_v2.0/test/ch_det_data_50.tar
wget -nc -P ./inference/ https://paddleocr.bj.bcebos.com/dygraph_v2.0/test/rec_inference.tar
cd ./inference && tar xf ch_ppocr_mobile_v2.0_det_infer.tar && tar xf ch_ppocr_mobile_v2.0_rec_infer.tar && tar xf ch_ppocr_server_v2.0_rec_infer.tar && tar xf ch_ppocr_server_v2.0_det_infer.tar && tar xf ch_det_data_50.tar && tar xf rec_inference.tar && cd ../
fi
```
## 2.2 规范化输出预测日志
### 2.2.1 预测日志规范
(1)背景
类似于 python 预测等基础测试链条,Paddle2ONNX 预测链条也需要规范不同套件中 paddle inference 预测输出的格式,方便统一自动化测试。由于Paddle2ONNX启动的特殊性,该链条只监控预测正确性,性能数据暂不进行监控。
Paddle2ONNX 测试要求规范输出预测结果及以下信息:
- 运行的硬件,CPU、GPU、XPU、Lite
- 运行的模型名称
- 运行的数据信息,包括 batch size,数据量
- 图片的预测结果
### 2.2.2 接入步骤
Paddle2ONNX 测试链条无需接入 AutoLog 工具包,注意日志导出名称需符合规范,具体在编写自动化测试代码中说明。
## 2.3 编写自动化测试代码
如果已经完成 python 预测链条的接入,那么 Paddle2ONNX 链条接入是类似的。
自动化测试脚本包括三个部分,分别是运行脚本`test_paddle2onnx.sh`,参数文件`model_linux_gpu_normal_normal_paddle2onnx_python_linux_gpu_cpu.txt`,数据模型准备脚本`prepare.sh`。理论上只需要修改`model_linux_gpu_normal_normal_paddle2onnx_python_linux_gpu_cpus.txt``prepare.sh`就可以完成自动化测试,本节将详细介绍如何修改`model_linux_gpu_normal_normal_paddle2onnx_python_linux_gpu_cpu.txt`,完成 Paddle2ONNX 预测测试。运行脚本test_paddle2onnx.sh将会在附录中详细介绍。
按如下方式在参数文件`model_linux_gpu_normal_normal_paddle2onnx_python_linux_gpu_cpu.txt`中添加 Paddle2ONNX 预测部分参数:
![图片](http://bos.bj.bce-internal.sdns.baidu.com/agroup-bos-bj/bj-de608be2b7018147f4cceedeb325cf39f228a6e1)
参数说明:
|行号 | 参数 | 参数介绍 |
|---|---|---|
|1 | model_name | 模型名称 |
|2 | python | python版本 |
|3 | 2onnx: paddle2onnx | paddle2onnx 命令|
|4 | --model_dir:./inference/ch_ppocr_mobile_v2.0_det_infer/ | inference 模型保存路径 |
|5 | --model_filename:inference.pdmodel| pdmodel 文件名 |
|6 | --params_filename:inference.pdiparams | pdiparams 文件名 |
|7 | --save_file:./inference/det_mobile_onnx/model.onnx | 转换出的 onnx 模型目录|
|8 | --opset_version:10 | onnx op 版本 |
|9 | --enable_onnx_checker:True | 是否进行模型转换检测 |
|10 | inference:tools/infer/predict_det.py | 启动 inference 预测命令 |
|11 | --use_gpu:True\|False | 是否使用GPU |
|12 | --det_model_dir: | 检测模型地址(默认为空,表示与转换出的onnx模型目录一致) |
|13 | --image_dir:./inference/ch_det_data_50/all-sum-510/ | 预测图片路径 |
# 3. 附录
## 3.1 自动化测试脚本test_paddle2onnx.sh 函数介绍
Paddle2ONNX 预测核心函数:
- func_paddle2onnx():执行 Paddle2ONNX 预测的函数,由于主要测试的功能为模型转换是否正确,因此目前的测试环境仅有CPU。
以下 function 和 python 预测链条功能一致。
- func_parser_key() :解析params.txt中:前的部分
- func_parser_value() :解析params.txt中:后的部分
- func_set_params() :会返回 key=value 的字符串,用与组建参数命令,如果key或者value为null,则返回空字符,即这个参数不会生效
- func_parser_params() :为了解析和测试模式 MODE 相关的参数,目前只用来解析 epoch 和 batch size 参数
- status_check() :状态检查函数,获取上条指令运行的状态,如果是0,则运行成功,如果是其他则运行失败,失败和成功的指令都会存放在 results.log 文件中
## 3.2 其他说明
test_paddle2onnx.sh 是兼容性修改,理论上所有套件用一套代码,test_paddle2onnx.sh 中也做了很多兼容性的改动,如果还有哪些兼容性的问题需要改进,包括使用问题可以提交Issue。
**目录**
- [1、总览](#1)
* [1.1 背景](#11)
* [1.2 训推一体自动化测试](#12)
* [1.3 文本检测样板间概览](#13)
- [2. 训推一体规范接入 PaddleServing 预测流程](#2paddleserving)
* [2.1 准备数据和环境](#21)
* [2.2 规范化输出预测日志](#22)
+ [2.2.1 预测日志规范](#221)
+ [2.2.2 接入步骤](#222)
* [2.3 编写自动化测试代码](#23)
- [3. 附录](#3)
* [3.1 自动化测试脚本test_serving.sh 函数介绍](#31test-servingsh)
* [3.2 其他说明](#32)
# 1、总览
## 1.1 背景
训推一体 CI 机制,旨在监控框架代码更新可能导致的**模型训练、预测报错、性能下降**等问题。本文主要介绍训推一体中**PaddleServing预测链条**的接入规范和监测点,是在[基础链条](todo:add_basic_doc_link)上针对PaddleServing链条的补充说明。
主要监控的内容有:
- 框架更新后,代码仓库的 PaddleServing 预测是否能正常走通;(比如 API 的不兼容升级)
- 框架更新后,代码仓库的 PaddleServing 预测速度是否合理;
为了能监控上述问题,希望把代码仓库的 PaddleServing 预测链条加到框架的 CI 和 CE 中,提升 PR 合入的质量。因此,需要在代码仓库中加入运行脚本(不影响代码仓库正常运行),完成模型的自动化测试。
可以建立的 CI/CE 机制包括:
1. **不训练,全量数据走通开源模型 PaddleServing 预测,并验证模型预测速度和精度是否符合设定预期;(单模型30分钟内) [保证] **
a. 保证 Serving 各链条走通,可以正常部署,得到正确预测结果(QA添加中)
b. 预测资源占用合理(显存)(QA添加中)
注:由于 CI 有时间限制,所以在测试的时候需要限制运行时间,所以需要构建一个很小的数据集完成测试。
## 1.2 训推一体自动化测试
本规范测试的链条如下(其中相邻两个模块之间是两两组合关系),可以根据模型开发规范和模型库需要,适当删减链条。
![图片](images/serving_link.jpg)
上图各模块具体测试点如下:
- 服务化模型转换 (必选)
- 部署环境软硬件选型
- Paddle Inference **(必选)**
- CPU(Linux **必选** ,MacOS 可选,Windows 可选)
- GPU(Linux **必选** ,Windows 可选)
- PaddleLite(可选)
- XPU(可选)
- Clinet配置(各软硬件环境都要验证):
- Python **(必选)**
- C++ (可选)
- Linux GPU上不同batchsize,是否开启TensorRT,不同预测精度(FP32,FP16,INT8)的运行状态 **(必选)**
- Linux CPU上不同batchsize,是否开启MKLDNN,不同预测精度(FP32,FP16,INT8)的运行状态 **(必选)**
- 安全设置配置(可选,只支持C++部署)
- 是否启用安全设置
- 是否启用安全网管
- 是否启用模型加解密
- 安全网管+模型加解密
- 协议配置 **(必选)**
- 单模型服务,HTTP协议 (可选)
- Pipiline服务,HTTP协议(可选)
- Pipeline服务,RPC协议 **(必选)**
本文档目前只支持了必选链条,可选模块后续完善。
## 1.3 文本检测样板间概览
在飞桨模型中,以文本检测为例,提供了本规范的样板间,可以跑通1.2章节提到的**所有测试链条**,完成1.1背景部分提到的1种 CI/CE 机制。
PaddleServing 链条测试工具已与基础链条测试集成到一起,位于 PaddleOCR dygraph 分支下的[test_tipc目录](https://github.com/PaddlePaddle/PaddleOCR/tree/dygraph/test_tipc) ,其关键结构如下:
```
test_tipc/
├── common_func.sh
├── configs
│ ├── ppocr_det_model
│ │ ├── model_linux_gpu_normal_normal_serving_python_linux_gpu_cpu.txt # 测试OCR检测模型的参数配置文件
│ ├── xxx
├── docs # 各测试流程文档说明
│ ├── test_serving.md # PaddleServing 部署测试脚本运行说明
│ ├── xxx
├── output
├── prepare.sh # 完成训推一体运行所需要的数据和模型下载
├── readme.md # 飞桨训推一体认证说明
├── test_serving.sh # PaddleServing 部署启动脚本
├── xxx
...
```
# 2. 训推一体规范接入 PaddleServing 预测流程
训推一体规范接入包含如下三个步骤,接下来将依次介绍这三个部分。
- 准备数据和环境
- 规范化输出日志
- 编写自动化测试代码
## 2.1 准备数据和环境
同标准训推一体测试流程一样,在 prepare.sh 中准备好所需数据和环境,包括:
- 少量预测数据
- inference 预测模型
- Serving 所需 whl 包
以 PaddleOCR 的检测模型为例,使用方式:
```
# 配置文件路径 运行模式
bash tests/prepare.sh ./tests/model_linux_gpu_normal_normal_serving_python_linux_gpu_cpu.txt 'serving_infer'
```
prepare.sh 具体内容:
```
# 判断预测模式
#!/bin/bash
FILENAME=$1
# MODE be one of ['lite_train_infer' 'whole_infer' 'whole_train_infer', 'infer', 'cpp_infer', 'serving_infer']
MODE=$2
.....
if [ ${MODE} = "serving_infer" ];then
# 准备serving环境,后期可省略该步骤
python_name=$(func_parser_value "${lines[2]}")
wget https://paddle-serving.bj.bcebos.com/chain/paddle_serving_server_gpu-0.0.0.post101-py3-none-any.whl
${python_name} -m pip install install paddle_serving_server_gpu-0.0.0.post101-py3-none-any.whl
${python_name} -m pip install paddle_serving_client==0.6.1
${python_name} -m pip install paddle-serving-app==0.6.3
# 下载预测模型
wget -nc -P ./inference https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_mobile_v2.0_det_infer.tar
# 下载预测数据
wget -nc -P ./inference https://paddleocr.bj.bcebos.com/dygraph_v2.0/test/ch_det_data_50.tar
cd ./inference && tar xf ch_ppocr_mobile_v2.0_det_infer.tar && tar xf ch_det_data_50.tar && cd ../
fi
```
## 2.2 规范化输出预测日志
### 2.2.1 预测日志规范
(1)背景
类似于 python 预测等基础测试链条,PaddleServing 预测链条也需要规范不同代码仓库中 paddle inference 预测输出的格式,方便统一自动化测试。由于PaddleServing启动的特殊性,该链条只监控预测正确性,性能数据暂不进行监控。
Serving测试要求规范输出预测结果及以下信息:
- 运行的硬件,CPU、GPU、XPU、Lite
- 运行的基本配置信息,是否开启了IR 优化、TRT、MKLDNN,以及具体使用的线程数
- 运行的模型名称
- 运行的数据信息,包括 batch size,数据量
- 运行的模式信息,是否开启安全网管、模型加解密、协议配置、Client 配置
- 图片的预测结果
### 2.2.2 接入步骤
PaddleServing 测试链条无需接入 AutoLog 工具包,注意日志导出名称需符合规范,具体在编写自动化测试代码中说明。
## 2.3 编写自动化测试代码
如果已经完成 python 预测链条的接入,那么 PaddleServing 链条接入是类似的。
自动化测试脚本包括三个部分,分别是运行脚本`test_serving.sh`,参数文件`model_linux_gpu_normal_normal_serving_python_linux_gpu_cpu.txt`,数据模型准备脚本`prepare.sh`。理论上只需要修改`model_linux_gpu_normal_normal_serving_python_linux_gpu_cpus.txt``prepare.sh`就可以完成自动化测试,本节将详细介绍如何修改`model_linux_gpu_normal_normal_serving_python_linux_gpu_cpu.txt`,完成 PaddleServing 预测测试。运行脚本test_serving.sh将会在附录中详细介绍。
按如下方式在参数文件`model_linux_gpu_normal_normal_serving_python_linux_gpu_cpu.txt`中添加 PaddleServing 预测部分参数:
![图片](images/serving_params.jpg)
参数说明:
|行号 | 参数 | 参数介绍 |
|---|---|---|---|
|1 | model_name | 模型名称 |
|2 | python | python版本 |
|3 | trans\_model: -m paddle\_serving\_client.convert | serving 模型转化命令|
|4 | --dirname:./inference/ch\_ppocr\_mobile\_v2.0\_det\_infer/ | inference 模型保存路径 |
|5 | --model_filename:inference.pdmodel| pdmodel 文件名 |
|6 | --params_filename:inference.pdiparams | pdiparams 文件名 |
|7 | --serving\_server:./deploy/pdserving/ppocr\_det\_mobile\_2.0\_serving/ | 转换出的 serving 模型目录|
|8 | --serving_client:./deploy/pdserving/ppocr_det_mobile_2.0_client/ | 转换出的 client 模型目录 |
|9 | serving_dir:./deploy/pdserving | serving 部署的工作目录 |
|10 | web_service:web_service_det.py --config=config.yml --opt op.det.concurrency=1 | 启动serving服务,配置参数为通过工作目录下的config.yml |
|11 | op.det.local_service_conf.devices:null \| 0 | 设置Serving服务的启动设备,null:cpu启动,0:在0号gpu卡上启动 |
|12 | op.det.local_service_conf.use_mkldnn:True\|False | 设置是否开启mkldnn |
|13 | op.det.local_service_conf.thread_num:1\|6 | 设置CPU线程数 |
|14 | op.det.local_service_conf.use_trt:False\|True | 设置是否开启TensorRT|
|15 | op.det.local_service_conf.precision:fp32\|fp16\|int8 | 设置开启TRT后的预测精度 |
|16 | pipeline:pipeline_rpc_client.py \| pipeline_http_client.py | 启动pipeline预测命令 |
|17| --image_dir=../../doc/imgs | 预测图片路径 |
# 3. 附录
## 3.1 自动化测试脚本test_serving.sh 函数介绍
PaddleServing 预测核心函数:
- func_serving():执行 Serving 预测的函数,如果是 GPU 上,会测试是否开启 TRT 和不同精度下的情况;如果是 CPU,会测试是否开启 mkldnn,不同 CPU 线程数。另外,如果是量化模型,则仅测试 CPU+mkldnn 和 GPU+trt+int8 的组合。 由于 Serving 的特性,目前只支持bs=1的预测。
以下 function 和 python 预测链条功能一致。
- func_parser_key() :解析params.txt中:前的部分
- func_parser_value() :解析params.txt中:后的部分
- func_set_params() :会返回 key=value 的字符串,用与组建参数命令,如果key或者value为null,则返回空字符,即这个参数不会生效
- func_parser_params() :为了解析和测试模式 MODE 相关的参数,目前只用来解析 epoch 和 batch size 参数
- status_check() :状态检查函数,获取上条指令运行的状态,如果是0,则运行成功,如果是其他则运行失败,失败和成功的指令都会存放在 results.log 文件中
## 3.2 其他说明
test_serving.sh 是兼容性修改,理论上所有代码仓库用一套代码,test_serving.sh 中也做了很多兼容性的改动,如果还有哪些兼容性的问题需要改进,包括使用问题可以提交Issue。
\ No newline at end of file
## 背景
Paddle2ONNX 预测功能测试的主程序为 `test_paddle2onnx.sh`,可以测试基于 Paddle2ONNX 的部署功能。本文介绍 Paddle2ONNX 预测功能测试文档的撰写规范。
## 文档规范
本文档和[基础训练预测文档](todo:add_basic_link)大体结构类似,主要去掉了训练相关的部分,文档目录结构如下:
### 1.测试结论汇总
内容:基于训练是否使用量化,可以将训练产出的模型可以分为`正常模型``量化模型`,表格形式给出这两类模型对应的预测功能汇总情况,包含`模型类型``device`这2个字段。
- device:CPU 或 GPU,其他字段取值对应本字段指定的环境;
示例:
| 模型类型 |device |
| ---- | ---- |
| 正常模型 | GPU |
| 正常模型 | CPU |
| 量化模型 | GPU |
| 量化模型 | CPU |
### 2.测试流程
#### 2.1 功能测试
内容:给出 Paddle2ONNX 预测具体测试命令。
示例:
先运行`prepare.sh`准备数据和模型,然后运行`test_paddle2onnx.sh`进行测试,最终在```test_tipc/output```目录下生成`paddle2onnx_infer_*.log`后缀的日志文件。
```shell
bash test_tipc/prepare.sh ./test_tipc/configs/ppocr_det_mobile/model_linux_gpu_normal_normal_paddle2onnx_python_linux_cpu.txt "paddle2onnx_infer"
# 用法:
bash test_tipc/test_paddle2onnx.sh ./test_tipc/configs/ppocr_det_mobile/model_linux_gpu_normal_normal_paddle2onnx_python_linux_cpu.txt
```
#### 运行结果
各测试的运行情况会打印在 `test_tipc/output/results_paddle2onnx.log` 中:
运行成功时会输出:
```
Run successfully with command - paddle2onnx --model_dir=./inference/ch_ppocr_mobile_v2.0_det_infer/ --model_filename=inference.pdmodel --params_filename=inference.pdiparams --save_file=./inference/det_mobile_onnx/model.onnx --opset_version=10 --enable_onnx_checker=True!
Run successfully with command - python test_tipc/onnx_inference/predict_det.py --use_gpu=False --image_dir=./inference/ch_det_data_50/all-sum-510/ --det_model_dir=./inference/det_mobile_onnx/model.onnx 2>&1 !
```
运行失败时会输出:
```
Run failed with command - paddle2onnx --model_dir=./inference/ch_ppocr_mobile_v2.0_det_infer/ --model_filename=inference.pdmodel --params_filename=inference.pdiparams --save_file=./inference/det_mobile_onnx/model.onnx --opset_version=10 --enable_onnx_checker=True!
...
```
#### 2.2 精度测试
由于 Paddle2ONNX 调用了 onnx 预测,因此不做精度对比。
**目录**
- [背景](#--)
- [文档规范](#----)
* [1.测试结论汇总](#1------)
* [2.测试流程](#2----)
+ [2.1 功能测试](#21-----)
+ [2.2 精度测试](#22-----)
# 背景
PaddleServing 预测功能测试的主程序为 `test_serving.sh`,可以测试基于 PaddleServing 的部署功能。本文介绍 PaddleServing 预测功能测试文档的撰写规范。
# 文档规范
本文档和基础训练预测文档大体结构类似,主要去掉了训练相关的部分。
## 1.测试结论汇总
内容:基于训练是否使用量化,可以将训练产出的模型可以分为`正常模型``量化模型`,表格形式给出这两类模型对应的预测功能汇总情况,包含`模型类型``device``batchsize``tensorrt``mkldnn``cpu多线程`这6个字段。
- 算法名称:该模型对应的算法,可以是算法简称;
- device:CPU 或 GPU,其他字段取值对应本字段指定的环境;
- batchsize:一般包括1、6两种 batchsize,根据实际支持情况填写。
- tensorrt:开启 tensorrt 支持的精度,包括`fp32``fp16``int8`三种,当 device 为 CPU 时,本字段填`-`
- mkldnn:开启 mkldnn 支持的精度,包括`fp32``fp16``int8`三种,当 device 为 GPU 时,本字段填`-`
- cpu多线程:支持时填`支持`,不支持时留空即可,当 device 为 GPU 时,本字段填`-`
示例:
| 模型类型 |device | batchsize | tensorrt | mkldnn | cpu多线程 |
| ---- | ---- | ---- | :----: | :----: | :----: |
| 正常模型 | GPU | 1/6 | fp32/fp16 | - | - |
| 正常模型 | CPU | 1/6 | - | fp32 | 支持 |
| 量化模型 | GPU | 1/6 | int8 | - | - |
| 量化模型 | CPU | 1/6 | - | int8 | 支持 |
## 2.测试流程
### 2.1 功能测试
内容:给出 PaddleServing 预测具体测试命令。
示例:
![图片](images/tipc_serving_model.jpg)
### 2.2 精度测试
由于 PaddleServing 调用了 python inference 预测,因此不做精度对比。
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册