一、参考资料

TensorRT下载TensorRT文档Debian Installation使用 deb 包的方式安装 TensorRT

二、测试环境

Environment
Operating System + Version: Ubuntu + 16.04
TensorRT Version: 7.1.3.4
GPU Type: GeForce GTX1650,4GB
Nvidia Driver Version: 470.63.01
CUDA Version: 11.0.207
CUDNN Version: 8.0.5
TensorRT:7.1.3.4
Python Version (if applicable): 3.7.3
PyTorch Version (if applicable): 1.3.0+cu100
torchvision:0.4.1+cu100
Anaconda Version:4.10.3
gcc:7.5.0
g++:7.5.0

三、安装 TensorRT

0. 重要说明

  1. 如果TensorRT以deb方式安装,则CUDA、cuDNN也需要以deb方式安装,否则报错。
  2. 以deb方式安装TensorRT,不支持多版本管理,推荐使用tar方式安装TensorRT。详细步骤,请参考另一篇博客:【Ubuntu版】TensorRT安装教程(tar包方式)

1. 准备工作

本文以 TensorRT 7.1.3.4 为例,详细介绍以deb方式安装 tensorrt。

1.1 安装Python

推荐安装anconda虚拟环境,通过conda管理python版本。详细步骤,请参考另一篇博客:Anaconda在Ubuntu下的安装与简单使用

conda create -n xxx python=3.7.0
conda activate xxx

1.2 安装CUDA和cuDNN

安装CUDA 11.0,安装cuDNN 8.0.5。

注意CUDA与cuDNN版本对齐。详细步骤,请参考以下博客:
Ubuntu下CUDA的安装及配置(run方式)Ubuntu下CUDA的卸载以及安装(deb方式和run方式)

2. 下载TensorRT

根据CUDA版本,下载对应版本的TensorRT deb软件包,以 nv-tensorrt-repo-ubuntu1604-cuda11.0-trt7.1.3.4-ga-20200617_1-1_amd64.deb 为例。

3. 安装deb软件包(本地)

解压deb包,默认解压路径为 /var

sudo dpkg --install nv-tensorrt-repo-ubuntu1604-cuda11.0-trt7.1.3.4-ga-20200617_1-1_amd64.deb

添加本地仓库源密钥:

sudo cp /var/nv-tensorrt-local-repo-ubuntu1604-cuda11.0/*-keyring.gpg /usr/share/keyrings/
或者
sudo apt-key add /var/nv-tensorrt-local-repo-ubuntu1604-cuda11.0/7fa2af80.pub

# 更新源信息:
sudo apt-get update

添加本地仓库的源秘钥,我们安装的时候会把刚刚解包好的目录作为一个本地源,从那里安装,就不是像一般用 apt 命令安装的时候一样,从网络源下载了。添加完成后可以从图形界面的 “软件和更新” -> “其他软件”里面看到,弄错了可以从这里删掉。

安装tensorrt:

sudo apt-get install tensorrt

4. 安装 TensorRT Python

4.1 安装tensorrt

python3 -m pip install numpy
sudo apt-get install python3-libnvinfer-dev

4.2 安装 onnx-graphsurgeon

onnx-graphsurgeon 用于修改 onnx 图。

python3 -m pip install numpy onnx
sudo apt-get install onnx-graphsurgeon

5. 验证安装

dpkg-query -W tensorrt
或者
dpkg --list | grep tensorrt

输出结果:

ii  graphsurgeon-tf          8.2.4-1+cuda11.4    amd64    GraphSurgeon for TensorRT package
ii  libnvinfer-bin           8.2.4-1+cuda11.4    amd64    TensorRT binaries
ii  libnvinfer-dev           8.2.4-1+cuda11.4    amd64    TensorRT development libraries and headers
ii  libnvinfer-doc           8.2.4-1+cuda11.4    all      TensorRT documentation
ii  libnvinfer-plugin-dev    8.2.4-1+cuda11.4    amd64    TensorRT plugin libraries
...
...

四、FAQ

Q:安装CUDA的方式和安装TensorRT的方式不同

乌班图 18.04 tensorRT安装踩坑

下列软件包有未满足的依赖关系:
 tensorrt : 依赖: libnvinfer7 (= 7.0.0-1+cuda10.0) 但是它将不会被安装
            依赖: libnvinfer-plugin7 (= 7.0.0-1+cuda10.0) 但是它将不会被安装
            依赖: libnvparsers7 (= 7.0.0-1+cuda10.0) 但是它将不会被安装
            依赖: libnvonnxparsers7 (= 7.0.0-1+cuda10.0) 但是它将不会被安装
            依赖: libnvinfer-bin (= 7.0.0-1+cuda10.0) 但是它将不会被安装
            依赖: libnvinfer-dev (= 7.0.0-1+cuda10.0) 但是它将不会被安装
            依赖: libnvinfer-plugin-dev (= 7.0.0-1+cuda10.0) 但是它将不会被安装
            依赖: libnvparsers-dev (= 7.0.0-1+cuda10.0) 但是它将不会被安装
            依赖: libnvonnxparsers-dev (= 7.0.0-1+cuda10.0) 但是它将不会被安装
            依赖: libnvinfer-samples (= 7.0.0-1+cuda10.0) 但是它将不会被安装
            依赖: libnvinfer-doc (= 7.0.0-1+cuda10.0) 但是它将不会被安装
E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。

错误原因:如果安装tensorRT采用deb包安装,那么CUDA也必须采用deb包安装。
解决方法:卸载CUDA,以deb方式安装CUDA。

Q:python版本与tensorRT不匹配

ERROR: tensorrt-7.2.3.4-cp37-none-linux_x86_64.whl is not a supported wheel on this platform

错误原因:python版本不一致。
解决方法:创建新的虚拟环境,指定python版本,重新安装tensorRT Python API。