TensorRT之mmdeploy使用

本文详细指导了在服务器上使用2080Ti GPU和CUDA 11.3部署环境,包括拉取镜像、安装mmcv-full、torch、torchvision及TensorRT,配置TensorRT自定义算子,并进行FP32、FP16和INT8推理性能测试。遇到的问题与解决方案也一并分享,对CUDA+TensorRT编译和模型优化有实用价值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

服务器配置

GPU:2080Ti
CUDA版本:cuda:11.3
driver version:450.57

1、部署环境配置:

(1)拉取镜像并进入

docker pull adenialzz/mmdeploy

docker run --gpus all --name [镜像名称] -itd -p 物理机端口:容器端口 -v 本地地址:容器映射地址 --privileged=true --ipc=host  [容器id] /bin/bash

docker exec -it [容器id] /bin/bash

(2)下载对应cuda版本的mmcv-full\torch\torchvision 并安装

CUDA版本:11.3

mmcv-full: mmcv_full-1.4.8-cp38-cp38-manylinux1_x86_64.whl

TensorRT:TensorRT-8.4.1.5.Linux.x86_64-gnu.cuda-11.6.cudnn8.4.tar.gz

torch:torch-1.10.0+cu113-cp38-cp38-linux_x86_64.whl

torchvision:torchvision-0.11.1+cu113-cp38-cp38-linux_x86_64.whl
pip install torch-1.10.0+cu113-cp38-cp38-linux_x86_64.whl
pip install torchvision-0.11.1+cu113-cp38-cp38-linux_x86_64.whl
pip install mmcv_full-1.4.8-cp38-cp38-manylinux1_x86_64.whl

其余需要资源:

ppl.cv/onnxruntime-linux-x64-1.8.1.tgz/third_party/pybind11/ cmake>=3.14/mmdeploy-0.4.0/mmdetection-2.22.0/TensorRT

(3)安装和配置

安装mmdetection

pip install 
cd mmdetection-2.22.0
pip install -v -e .

安装TensorRT

tar -xvf TensorRT-8.4.1.5.Linux.x86_64-gnu.cuda-11.6.cudnn8.4.tar.gz
pip install TensorRT-8.4.1.5/python/tensorrt-8.4.1.5-cp38-none-linux_x86_64.whl 
pip install TensorRT-8.4.1.5/onnx_graphsurgeon/onnx_graphsurgeon-0.3.12-py2.py3-none-any.whl
pip install TensorRT-8.4.1.5/graphsurgeon/graphsurgeon-0.4.6-py2.py3-none-any.whl
pip install TensorRT-8.4.1.5/uff/uff-0.6.9-py2.py3-none-any.whl
并在bashrc中完成变量添加:
export TENSORRT_DIR=/root/workspace/TensorRT-8.4.1.5:$TENSORRT_DIR
export LD_LIBRARY_PATH=/root/workspace/TensorRT-8.4.1.5/lib/:$LD_LIBRARY_PATH

编译mmdeploy-0.4.0

  • TensorRT 自定义算子

    cd ${MMDEPLOY_DIR}
    mkdir -p build && cd build
    cmake -DCMAKE_CXX_COMPILER=g++-9 -DMMDEPLOY_TARGET_BACKENDS=trt -DTENSORRT_DIR=${TENSORRT_DIR} -DCUDNN_DIR=${CUDNN_DIR} ..
    make -j$(nproc)
    
  • 安装 Model Converter

    cd ${MMDEPLOY_DIR}
    pip install -e .
    
  • cuda + TensorRT编译

    cd ${MMDEPLOY_DIR}
    mkdir -p build && cd build
    cmake .. \
        -DCMAKE_CXX_COMPILER=g++-9\
        -DMMDEPLOY_BUILD_SDK=ON \
        -DMMDEPLOY_BUILD_SDK_PYTHON_API=ON \
        -DMMDEPLOY_TARGET_DEVICES="cuda;cpu" \
        -DMMDEPLOY_TARGET_BACKENDS=trt \
        -DMMDEPLOY_CODEBASES=all \
        -Dpplcv_DIR=${PPLCV_DIR}/cuda-build/install/lib/cmake/ppl \
        -DTENSORRT_DIR=${TENSORRT_DIR} \
        -DCUDNN_DIR=${CUDNN_DIR}
    
    make -j$(nproc) && make install
    

在这里插入图片描述
出现上述图片就是成功的标志

2、推理环境配置和测试

(1)加载mmdet2_5_tensorrt_inference.tar镜像

(2)重新安装TensorRT-8.4.1.5.Linux.x86_64-gnu.cuda-11.6.cudnn8.4.tar.gz

(3)运行测试代码

测试结果如下所示
FP32:
在这里插入图片描述
FP16:
在这里插入图片描述
INT8:
在这里插入图片描述

mmdet-fp32trt_fp32trt_fp16trt_int8
trt加速18.6731.7461.3571.80
trt加速+后处理9-1015-1617-1917-19

3、Trouble Shooting

1、直接运行,报了cuda error ,说是torch版本不兼容

2、更新torch版本为1.7后

ImportError: cannot import name ‘_get_tensor_dim_size’ from ‘torch.onnx.symbolic_helper’ (/opt/conda/lib/python3.8/site-packages/torch/onnx/symbolic_helper.py)

3、更新torch为1.11

ImportError: /opt/conda/lib/python3.8/site-packages/mmcv/_ext.cpython-38-x86_64-linux-gnu.so: undefined symbol: _ZNK2at6Tensor7is_cudaEv

1/2/3解决方式:登录torch官网,找到自己CUDA版本适配的torch/torchvision.
mmcv-full安装方式也需要去mmcv-full官网查询与之适配的cuda版本好,以防出错。

4、ImportError: libnvinfer.so.8: cannot open shared object file: No such file or directory

解决方式:配置TensorRT的环境变量
在这里插入图片描述

–END–

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI小花猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值