当前位置:   article > 正文

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

ubuntu安装tensorrt

一、参考资料

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

三、准备工作

TensorRT下载
TensorRT文档
TensorRT 7.1.3.4 TAR压缩包下载
TensorRT 7.1.3.4文档
TensorRT 7.1.3.4安装文档

四、重要说明

  1. 先确定需要安装的TensorRT版本,再确定对应的CUDA和cuDNN版本;
  2. 如果用deb方式安装CUDA、cuDNN,则TensorRT也需要deb方式安装,否则报错;
  3. 如果CUDA已经安装好了,找到对应版本的TensorRT版本安装即可;
  4. 本文采用 Tar File Installation方式安装;
  5. 本文使用Anaconda虚拟环境;

五、关键步骤

  1. 安装前的准备:
1. 安装CUDA 11.0,安装cuDNN 8.0.5;
参考资料
[Ubuntu下CUDA的安装及配置(run方式)](https://blog.csdn.net/m0_37605642/article/details/114059682)
[Ubuntu下CUDA的卸载以及安装(deb方式和run方式)](https://blog.csdn.net/m0_37605642/article/details/119637836)

2. 安装python 3.7.3;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  1. 下载 TensorRT 7.1.3.4 TAR压缩包,解压到安装目录:
tar xzvf TensorRT-7.1.3.4.Ubuntu-16.04.x86_64-gnu.cuda-11.0.cudnn8.0.tar.gz
  • 1
  1. 添加 TensorRT lib 到环境变量:
gedit ~/.bashrc

# 添加
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/yichao/360Downloads/TensorRT-7.1.3.4/lib

# 更新
source ~/.bashrc
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  1. 安装python API
cd /home/yichao/360Downloads/TensorRT-7.1.3.4/python

# 根据版本安装,博主的是python3.7版本,选择cp3.7
pip install tensorrt-7.1.3.4-cp37-none-linux_x86_64.whl
  • 1
  • 2
  • 3
  • 4
  1. 安装 Python UFF 包,支持tensorflow模型转化
cd /home/yichao/360Downloads/TensorRT-7.1.3.4/uff

pip install uff-0.6.9-py2.py3-none-any.whl

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

# 输出:
/home/yichao/miniconda3/envs/tensorRT-tensorflow/bin/convert-to-uff
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  1. 安装 graphsurgeon,支持自定义结构
cd /home/yichao/360Downloads/TensorRT-7.1.3.4/graphsurgeon
pip install graphsurgeon-0.4.5-py2.py3-none-any.whl
  • 1
  • 2
  1. 卸载 tensorRT python API
pip uninstall tensorrt

pip uninstall uff

pip uninstall graphsurgeon
  • 1
  • 2
  • 3
  • 4
  • 5

六、测试是否安装成功

1. 查看tensorRT python api 版本

python
import tensorrt as trt
print(trt.__version__)

如果安装成功,输出:
7.1.3.4
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

2. 测试 tensorRT python API

# 测试 Python API 的demo, 简单的手写字符识别模型lenet,采用tensorflow网络训练
# 1. 安装tensorflow,版本对齐 
# [Tensorflow安装教程](https://blog.csdn.net/m0_37605642/article/details/119720949)

pip install tensorflow-gpu==2.4.0

# 2 训练模型
cd /home/yichao/360Downloads/TensorRT-7.1.3.4/samples/python/end_to_end_tensorflow_mnist

python model.py

# 2.1 训练完,在models目录下,生成lenet5.pb文件

# 3. 模型转换
convert-to-uff lenet5.pb

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

# 4. 测试
python sample.py
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

3. 测试tensorRT C++ API

  • 下载pgm文件
python /home/yichao/360Downloads/TensorRT-7.1.3.4/data/mnist/download_pgms.py
  • 1
  • make编译
cd /home/yichao/360Downloads/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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 测试成功
&&&& 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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46

七、可能存在的问题

导包错误,找不到文件

./sample_mnist: error while loading shared libraries: libcublas.so.10.0: cannot open shared object file: No such file or directory
  • 1
[ImportError: libnvinfer.so.6/libcublas.so.10.0: cannot open shared object file:问题解决](https://blog.csdn.net/Q1u1NG/article/details/109336403)

解决办法:
# 修改配置
sudo gedit /etc/ld.so.conf

# 添加下面两行:
# 添加cuda路径
/usr/local/cuda/lib64

# 添加TensorRT lib 路径
/home/yichao/360Downloads/TensorRT-7.1.3.4/lib

# 更新配置
sudo ldconfig
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

找不到 libnvinfer.so.8

from .tensorrt import *
ImportError: libnvinfer.so.8: cannot open shared object file: No such file or directory
  • 1
  • 2
错误原因:
找不到 tensorRT lib 路径

解决办法:
# 修改配置
sudo gedit /etc/ld.so.conf

# 添加 TensorRT lib 路径
/home/yichao/360Downloads/TensorRT-8.0.1.6/lib

# 更新配置
sudo ldconfig
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

软链接错误

sudo ldconfig
  • 1
/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 不是符号连接
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
解决办法:
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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
错误原因:
没有pgm文件

解决办法:
下载pgm文件

python /home/yichao/360Downloads/TensorRT-7.1.3.4/data/mnist/download_pgms.py
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

安装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: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
错误原因:
如果安装tensorRT采用deb包安装,那么CUDA也必须采用deb包安装。

解决办法:
卸载CUDA,重新安装CUDA
  • 1
  • 2
  • 3
  • 4
  • 5
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/449688
推荐阅读
相关标签
  

闽ICP备14008679号