学无先后,达者为师

网站首页 编程语言 正文

TensorRT之mmdeploy使用

作者:Clark_小花猫 更新时间: 2022-07-21 编程语言

服务器配置

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-fp32 trt_fp32 trt_fp16 trt_int8
trt加速 18.67 31.74 61.35 71.80
trt加速+后处理 9-10 15-16 17-19 17-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–

原文链接:https://blog.csdn.net/caobin_cumt/article/details/125882499

栏目分类
最近更新