Linux上TensorRT环境配置【以YOLOX为例】

前言

以YOLOX的tensorrt环境配置为例,记录安装步骤以及过程中遇到的一些问题

  • Linux OS:Ubuntu 20.04
  • CUDA Toolkit(cuDNN):11.6
  • python:3.9.16
  • pytorch/torchvision

问题一:安装onnx

onnx==1.8.1
onnxruntime==1.8.0
onnx-simplifier==0.3.5

安装使用清华镜像源:

-i https://pypi.tuna.tsinghua.edu.cn/simple

按照onnx代码库的readme.txt执行

apt-get install python3-pip python3-dev libprotobuf-dev protobuf-compiler

export CMAKE_ARGS="-DONNX_USE_PROTOBUF_SHARED_LIBS=ON"

使用pip安装上面库时遇到AssertionError: Could not find "cmake" executable!
按照博文:【pip按照onnx报错:AssertionError】的说法,cmake需要安装在/usr/bin/这个目录下,经过检查,未安装Cmake!!!


安装Cmake
Linux下安装CMake,【2023-6-6】最新的版本为3.26.4,安装的方式一共有三种:

  • 通过软件包仓库安装
    Ubuntu安装命令为:

    sudo apt install cmake
    

    虽然能成功安装,但是版本较旧。
    卸载命令:

    sudo apt autoremove cmake
    
  • 通过编译好的版本进行安装
    从官网下载对应的tar.gz压缩包

    解压文件并将其移动到/usr/local目录下

    tar -xzvf cmake-3.26.4-Linux-x86_64.tar.gz
    sudo mv cmake-3.26.4-Linux-x86_64 /usr/local
    rm -rf cmake-3.26.4-Linux-x86_64.tar.gz
    

    将文件二进制目录添加至系统PATH

    sudo vim ~/.bashrc
    # 加入
    export PATH=/usr/local/cmake-3.26.4-Linux-x86_64/bin:$PATH
    # 保存退出,再执行下条指令让其生效
    source ~/.bashrc 
    

    注意:若是在~/.bashrc添加的PATH有误,则执行任意指令(如ls也会出现-bash: ls: command not find),此时需要运行下面的命令让bash暂时生效:

    export PATH=/bin:/usr/bin:/usr/sbin:$PATH
    

    然后再重新执行:sudo vim ~/.bashrc修改刚才错误的PATH

    验证是否成功安装:

    cmake --version
    

    optional:添加软链接

    sudo ln -s cmake /usr/local/cmake-3.26.4-Linux-x86_64
    
  • 从源码手动编译安装
    参考博文:【Linux安装Cmake】


问题二:安装apex

解决方案:安装apex遇到的问题解决办法

问题二:安装TensorRT

官方安装教程:https://docs.nvidia.com/deeplearning/tensorrt/install-guide/index.html

  1. 首先在https://developer.nvidia.com/nvidia-tensorrt-download下载TensorRTtar.gz压缩包
  2. 详细安装指令【以tar包安装为例】
    # 在home路径下新建文件夹 命名为tensorrt,然后将下载的压缩包解压缩至该目录
    tar xzvf TensorRT-8.6.1.6.Linux.x86_64-gnu.cuda-11.8.tar.gz 
    # 解压得到TensorRT-8.6.1.6的文件夹,将里边的lib绝对路径添加到环境变量
    gedit ~/.bashrc
    # 添加
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/jason/tensorrt/TensorRT-8.6.1.6/lib
    # 生效
    source ~/.bashrc
    
    # 进入conda虚拟环境
    source activate env_name
    
    #安装TensorRT
    cd TensorRT-8.6.1.6/python/
    pip install tensorrt-8.6.1.6-cp39-none-linux_x86_64.whl
    
    #安装UFF,这个与tensorflow相关,可以不装
    cd TensorRT-8.6.1.6/uff
    pip install uff-0.6.9-py2.py3-none-any.whl 
    
    #安装graphsurgeon
    cd TensorRT-8.6.1.6/graphsurgeon
    pip install graphsurgeon-0.4.6-py2.py3-none-any.whl
    
  3. 验证安装:
python 
>> import tensorrt as trt
>>

问题三:安装torch2trt

torch2trt仓库
在Linux下按照Readme成功安装
【进一步的安装需要以.zip下载代码仓库(包含Cmakelist.txt)】

Windows下安装失败:OSError: [WinError 127] Error loading cublas64_11.dll" or one of its dependencies.
参考torch2trt仓库的issue #698
三种可能的解决方案:

  1. Reinstall the correct CUDA version
  2. Directly download DLL file online
  3. Or make sure whether the CUDA path in environment variables settings is correct.

在使用torch2trt的Usage时,出现问题:ImportError: libnvinfer.so.8: cannot open shared object file: Nosuch file or directory

原因是/usr/loca/cuda/lib64【软链接】目录下不存在libnvinfer.so.8文件,这个文件存在于TensorRT-8.6.1.6/lib下,即使sudo gedit ~/.bashrc添加了LD_LIBRARY_PATH,仍需要将这些文件拷贝/usr/loca/cuda/lib64


注意:需要将/usr/loca/cuda/lib64添加进LD_LIBRARY_PATH;或者在Pycharm中编辑运行/调试配置,为环境变量添加PYTHONUNBUFFERED=1;LD_LIBRARY_PATH=/usr/loca/cuda/lib64

执行下面指令:

cd TensorRT-8.6.1.6/lib
sudo cp libnvinfer.so.8 /usr/local/cuda/lib64
sudo cp libnvonnxparser.so.8 /usr/local/cuda/lib64
sudo cp libnvparsers.so.8 /usr/local/cuda/lib64
sudo cp libnvinfer_plugin.so.8 /usr/local/cuda/lib64

sudo cp libnvinfer_builder_resource.so.8.6.1 /usr/local/cuda/lib64

plugins library支持更多原本的TensorRT不支持的算子

# 先执行
python setup.py install --plugins

# 再执行【编译出错-暂未解决】
cmake -B build . && cmake --build build --target install && ldconfig

你可能感兴趣的:(深度学习,linux,ubuntu,python)