使用 Python 后端的预处理示例#
本示例展示了如何在输入传递到 TensorRT 模型进行推理之前,使用 Python 后端预处理输入。此集成模型包含一个图像预处理模型 (preprocess) 和一个 TensorRT 模型 (resnet50_trt) 以进行推理。
1. 将 PyTorch 模型转换为 ONNX 格式
运行 onnx_exporter.py 将 ResNet50 PyTorch 模型转换为 ONNX 格式。宽度和高度尺寸固定为 224,但使用了用于动态批处理的动态轴参数。来自第 2 和第 3 小节的命令应在此 Docker 容器内执行。
docker run -it --gpus=all -v $(pwd):/workspace nvcr.io/nvidia/pytorch:xx.yy-py3 bash
pip install numpy pillow torchvision
python onnx_exporter.py --save model.onnx
2. 创建模型仓库
mkdir -p model_repository/ensemble_python_resnet50/1
mkdir -p model_repository/preprocess/1
mkdir -p model_repository/resnet50_trt/1
# Copy the Python model
cp model.py model_repository/preprocess/1
3. 为 ONNX 模型构建 TensorRT 引擎
设置参数以启用 fp16 精度 –fp16。要启用动态形状,请将 –minShapes、–optShapes 和 maxShapes 与 –explicitBatch 一起使用
trtexec --onnx=model.onnx --saveEngine=./model_repository/resnet50_trt/1/model.plan --explicitBatch --minShapes=input:1x3x224x224 --optShapes=input:1x3x224x224 --maxShapes=input:256x3x224x224 --fp16
4. 运行以下命令以启动服务器容器
在 python_backend/examples/preprocessing 下,运行此命令以启动服务器 Docker 容器
docker run --gpus=all -it --rm -p8000:8000 -p8001:8001 -p8002:8002 -v$(pwd):/workspace/ -v/$(pwd)/model_repository:/models nvcr.io/nvidia/tritonserver:xx.yy-py3 bash
pip install numpy pillow torchvision
tritonserver --model-repository=/models
5. 启动客户端进行测试
在 python_backend/examples/preprocessing 下,运行以下命令以启动客户端 Docker 容器
wget https://raw.githubusercontent.com/triton-inference-server/server/main/qa/images/mug.jpg -O "mug.jpg"
docker run --rm --net=host -v $(pwd):/workspace/ nvcr.io/nvidia/tritonserver:xx.yy-py3-sdk python client.py --image mug.jpg
The result of classification is:COFFEE MUG
在这里,由于我们输入了一张“mug”的图片,推理结果是“COFFEE MUG”,这是正确的。