本文档将介绍如何使用Paddle Inference工具进行问题生成应用高性能推理推理部署。
目录
Paddle inference和主框架的Model.predict均可实现推理预测,Paddle Inference 是飞桨的原生推理库, 作用于服务器端和云端,提供高性能的推理能力,主框架的Model 对象是一个具备训练、测试、推理的神经网络。相比于Model.predict,inference可使用MKLDNN、CUDNN、TensorRT进行预测加速。Model.predict适用于训练好的模型直接进行预测,paddle inference适用于对推理性能、通用性有要求的用户,针对不同平台不同的应用场景进行了深度的适配优化,保证模型在服务器端即训即用,快速部署。由于 Paddle Inference 能力直接基于飞桨的训练算子,因此它支持飞桨训练出的所有模型的推理。
Paddle Inference Python端预测部署主要包含两个步骤:
- 导出预测部署模型
- 基于Python预测
部署时需要使用预测格式的模型(即动态图转静态图操作)。预测格式模型相对训练格式模型而言,在拓扑上裁剪掉了预测不需要的算子,并且会做特定部署优化。具体操作详见FasterTransformer加速及模型静态图导出。
在终端输入以下命令可在GPU上进行预测:
python deploy/paddle_inference/inference.py \
--inference_model_dir ./export_checkpoint \
--model_name_or_path "unimo-text-1.0" \
--predict_file predict_file_name \
--output_path output_path_name \
--device gpu \
经静态图转换,FastTransformer性能优化,Paddle Inference加速后的部署模型在dureader_qg devset的预测时间为27.74秒,相较于未优化前169.24秒,耗时缩减为原来的16.39%。 关键参数释义如下:
inference_model_dir
:用于高性能推理的静态图模型参数路径,默认为"./export_checkpoint"。model_name_or_path
:tokenizer对应模型或路径,默认为"unimo-text-1.0"。dataset_name
:数据集名称,默认为dureader_qg
。predict_file
:本地预测数据地址,数据格式必须与dataset_name
所指数据集格式相同,默认为None,当为None时默认加载dataset_name
的dev集。output_path
:表示预测结果的保存路径。device
:推理时使用的设备,可选项["gpu"],默认为"gpu"。batch_size
:进行推理时的批大小,默认为16。precision
:当使用TensorRT进行加速推理时,所使用的TensorRT精度,可选项["fp32", "fp16"],默认为"fp32"。