【Ubuntu版】TensorRT安装教程(tar包方式)

一、参考资料

TensorRT文档
Tar File Installation
TensorRT介绍、安装和测试
Ubuntu16.04 安装 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. 以tar 方式安装TensorRT,支持多版本管理
  2. 如果已经安装了CUDA,则根据当前CUDA和cuDNN版本,再确定需要安装的TensorRT版本。不推荐安装最新的CUDA版本,可能导致TensorRT不支持。
  3. 如果未安装CUDA,则先确定需要安装的TensorRT版本,再确定对应的CUDA和cuDNN版本。

1. 准备工作

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

下载TensorRT: https://developer.nvidia.com/nvidia-tensorrt-download

本文以 TensorRT 7.1.3.4 为例,以tar包方式安装 tensorrt。

下载TensorRT并解压tar软件包。

tar -xvzf TensorRT-7.1.3.4.Ubuntu-16.04.x86_64-gnu.cuda-11.0.cudnn8.0.tar.gz

3. 设置环境变量

gedit ~/.bashrc

# 添加
export PATH=/PATH/TO/TensorRT-7.1.3.4/bin:${PATH}
export LD_LIBRARY_PATH=/PATH/TO/TensorRT-7.1.3.4/lib:${LD_LIBRARY_PATH}

# 更新
source ~/.bashrc

4. 安装 TensorRT python

4.1 安装tensorrt

cd /PATH/TO/TensorRT-7.1.3.4/python

# 根据版本安装,博主的是python3.7版本,选择cp3.7
pip install tensorrt-7.1.3.4-cp37-none-linux_x86_64.whl

4.2 (可选)安装 UFF

UFF 支持tensorflow模型转化,TensorFlow 训练后的网络通过 UFF 编码方式转换给 TensorRT 运行。

cd /PATH/TO/TensorRT-7.1.3.4/uff
pip install uff-0.6.9-py2.py3-none-any.whl

# 测试 Python UFF 是否安装成功
which convert-to-uff

# 输出:
/home/yoyo/miniconda3/envs/tensorRT-tensorflow/bin/convert-to-uff

4.3 (可选)安装 graphsurgeon

graphsurgeon 支持自定义结构。graphsurgeon 是对UFF编码网络进行定制化操作的库,支持自定义结构,例如插入或删除神经网络某一层layer。

cd /PATH/TO/TensorRT-7.1.3.4/graphsurgeon
pip install graphsurgeon-0.4.5-py2.py3-none-any.whl

4.4 卸载 TensorRT python

pip uninstall tensorrt

pip uninstall uff

pip uninstall graphsurgeon

5. 验证安装

5.1 查看python api 版本

python
import tensorrt as trt
print(trt.__version__)

如果安装成功,输出:
7.1.3.4

5.2 测试 Python API

测试 Python API 的demo, 简单的手写字符识别模型lenet,采用tensorflow网络训练。

安装tensorflow,注意版本对齐,请参考: TensorFlow相关教程(经验版)

pip install tensorflow-gpu==2.4.0

训练模型:

cd /PATH/TO/TensorRT-7.1.3.4/samples/python/end_to_end_tensorflow_mnist
python model.py
# 模型训练完,将在models目录下生成 `lenet5.pb` 模型文件

模型转换:

convert-to-uff lenet5.pb
# 将pb文件转换为uff文件,打印出了模型转换的一些信息,生成了 `lenet5.uff` 文件

模型推理:

python sample.py

5.3 测试 C++ API

下载pgm文件:

python /PATH/TO/TensorRT-7.1.3.4/data/mnist/download_pgms.py

make编译:

cd /PATH/TO/TensorRT-7.1.3.4
sudo cp ./data/mnist/lenet5.uff ./python/data/mnist/lenet5.uff
cd ./samples/sampleMNIST
make clean
make
cd ../../bin(转到bin目录下面,make后的可执行文件在此目录下)
./sample_mnist

测试成功:

&&&& RUNNING TensorRT.sample_mnist # ./sample_mnist
[09/07/2021-13:45:35] [I] Building and running a GPU inference engine for MNIST
[09/07/2021-13:45:46] [I] [TRT] Detected 1 inputs and 1 output network tensors.
[09/07/2021-13:45:46] [I] Input:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@%%+      -@@@@@@@
@@@@@@@@@%=..        -@@@@@@
@@@@@@@@@:            #@@@@@
@@@@@@@@@+   ====:    #@@@@@
@@@@@@@@@@%%%@@@@@.  -@@@@@@
@@@@@@@@@@@@@@@@@*   =@@@@@@
@@@@@@@@@@@@@@@@*:   @@@@@@@
@@@@@@@@@@@@@@*.    .@@@@@@@
@@@@@@@@@%+:::     +%@@@@@@@
@@@@@@@@%.        -@@@@@@@@@
@@@@@@@@%.         *@@@@@@@@
@@@@@@@@@%+#%%%%=  *@@@@@@@@
@@@@@@@@@@@@@@@@@  *@@@@@@@@
@@@@@@@@@@@@@@@@*  *@@@@@@@@
@@@@@@@*@@@@@@@*   *@@@@@@@@
@@@@@#: %@@@@@*    #@@@@@@@@
@@@@@.  =====:   :*@@@@@@@@@
@@@@@.          -@@@@@@@@@@@
@@@@@#-     ..=%@@@@@@@@@@@@
@@@@@@@+  -+%@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@

[09/07/2021-13:45:46] [I] Output:
0: 
1: 
2: 
3: **********
4: 
5: 
6: 
7: 
8: 
9: 

&&&& PASSED TensorRT.sample_mnist # ./sample_mnist

四、FAQ

Q:error while loading shared libraries: libcublas.so.10.0: cannot open shared object file: No such file or directory

ImportError: libnvinfer.so.6/libcublas.so.10.0: cannot open shared object file:问题解决

./sample_mnist: error while loading shared libraries: libcublas.so.10.0: cannot open shared object file: No such file or directory

错误原因:找不到 libcublas.so.10.0 文件。
解决方法:修改 /etc/ld.so.conf 文件。

# 修改配置
sudo gedit /etc/ld.so.conf

# 添加cuda路径
/usr/local/cuda/lib64

# 更新配置
sudo ldconfig

Q:找不到 libnvinfer.so.8

from .tensorrt import *
ImportError: libnvinfer.so.8: cannot open shared object file: No such file or directory

错误原因:找不到 tensorRT lib 路径。
解决方法:修改 /etc/ld.so.conf 文件。

sudo gedit /etc/ld.so.conf

# 添加 TensorRT lib 路径
/PATH/TO/TensorRT-7.1.3.4/lib

# 更新配置
sudo ldconfig

Q:软链接错误

sudo ldconfig
/sbin/ldconfig.real: /usr/local/cuda-11.0/targets/x86_64-linux/lib/libcudnn.so.8 不是符号连接

/sbin/ldconfig.real: /usr/local/cuda-11.0/targets/x86_64-linux/lib/libcudnn_adv_infer.so.8 不是符号连接

/sbin/ldconfig.real: /usr/local/cuda-11.0/targets/x86_64-linux/lib/libcudnn_adv_train.so.8 不是符号连接

/sbin/ldconfig.real: /usr/local/cuda-11.0/targets/x86_64-linux/lib/libcudnn_cnn_train.so.8 不是符号连接

/sbin/ldconfig.real: /usr/local/cuda-11.0/targets/x86_64-linux/lib/libcudnn_ops_train.so.8 不是符号连接

/sbin/ldconfig.real: /usr/local/cuda-11.0/targets/x86_64-linux/lib/libcudnn_ops_infer.so.8 不是符号连接

/sbin/ldconfig.real: /usr/local/cuda-11.0/targets/x86_64-linux/lib/libcudnn_cnn_infer.so.8 不是符号连接

解决方法:libcudnn.so.8 是一个文件,它本应是一个软连接,由此需要创建软链接。

sudo ln -sf /usr/local/cuda-11.0/targets/x86_64-linux/lib/libcudnn.so.8.0.5 /usr/local/cuda-11.0/targets/x86_64-linux/lib/libcudnn.so.8

sudo ln -sf /usr/local/cuda-11.0/targets/x86_64-linux/lib/libcudnn_adv_infer.so.8.0.5 /usr/local/cuda-11.0/targets/x86_64-linux/lib/libcudnn_adv_infer.so.8

sudo ln -sf /usr/local/cuda-11.0/targets/x86_64-linux/lib/libcudnn_adv_train.so.8.0.5 /usr/local/cuda-11.0/targets/x86_64-linux/lib/libcudnn_adv_train.so.8

sudo ln -sf /usr/local/cuda-11.0/targets/x86_64-linux/lib/libcudnn_cnn_train.so.8.0.5 /usr/local/cuda-11.0/targets/x86_64-linux/lib/libcudnn_cnn_train.so.8

sudo ln -sf /usr/local/cuda-11.0/targets/x86_64-linux/lib/libcudnn_ops_train.so.8.0.5 /usr/local/cuda-11.0/targets/x86_64-linux/lib/libcudnn_ops_train.so.8

sudo ln -sf /usr/local/cuda-11.0/targets/x86_64-linux/lib/libcudnn_ops_infer.so.8.0.5 /usr/local/cuda-11.0/targets/x86_64-linux/lib/libcudnn_ops_infer.so.8

sudo ln -sf /usr/local/cuda-11.0/targets/x86_64-linux/lib/libcudnn_cnn_infer.so.8.0.5 /usr/local/cuda-11.0/targets/x86_64-linux/lib/libcudnn_cnn_infer.so.8

Q:sampleMNist测试失败

&&&& RUNNING TensorRT.sample_mnist # ./sample_mnist
[09/07/2021-12:03:21] [I] Building and running a GPU inference engine for MNIST
[09/07/2021-12:03:32] [I] [TRT] Detected 1 inputs and 1 output network tensors.
Could not find 0.pgm in data directories:
	data/mnist/
	data/samples/mnist/
&&&& FAILED

错误原因:没有pgm文件。
解决方法:下载pgm文件。

python /PATH/TO/TensorRT-7.1.3.4/data/mnist/download_pgms.py
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

花花少年

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

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

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

打赏作者

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

抵扣说明:

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

余额充值