非root用户安装tensorrt


环境

linux版本:ubuntu16.04

nvidia驱动版本(可通过nvidia-smi命令查看):430.64

系统已预装的CUDA版本:cuda-9.0


一、查阅官方文档

tensorrt官方安装文档
由官方文档我们得到以下信息:

TensorRT是个C++库,他依赖于CUDA Toolkit。如果需要结合Tensorflow、Pytorch使用,则需要安装python前端,也就是安装pycuda这个库,TensorRT的samples目录下有和不同平台配合使用的示例代码。

二、根据官方提供的安装方式尝试安装。

由于非root环境,直接排除前三种。

1.pip安装

最一开始尝试pip安装,然而根据该方式安装的tensorrt版本依赖cuda>=10.2。
pip安装
于是放弃。

2.tar压缩包安装

采用tar文件安装的方式,注册账号并下载对应CUDA版本的tensorrt压缩包。

2.1安装CUDA10.1

cuda-9.0看着比较老旧了,于是决定在自己主目录下安装新的CUDA,查阅CUDA文档
cuda版本与驱动对应关系
由于本人所用的服务器nvidia驱动版本是430.64,可见最高只支持CUDA10.1版本。接下来就是安装CUDA10.1的环节,详情请看这篇博客:非root用户在服务器上安装CUDA10.1和cudnn到指定目录 - thronsbird - 博客园

2.2安装tensorrt

下载tensorrt压缩包,一定要下载与CUDA对应的版本。最终选择了6.0.1.5版本。
tensorrt
接着就是跟随官方安装文档的4.5 Tar File Installation一步步安装即可。

python3
>>> import tensorrt
>>> print(tensorrt.__version__)
>>> assert tensorrt.Builder(tensorrt.Logger())

如果上述代码不报错,则表示安装成功。

或者按官方文档的提示运行samples目录下的sampleMNIST来验证是否安装成功。

三、安装pycuda

根据文档的提示:

To install PyCUDA first make sure nvcc is in your PATH, then issue the following command:

pip install 'pycuda<2021.1'

其实只要在第三步正常安装好了CUDA,并且把cuda的bin目录加入到了path路径,就满足了安装条件,执行上述命令即可。

安装好pycuda后,可以测试TensorRT-6.0.1.5/samples/python下的示例程序。以下是我运行pytorch示例的输出,表明tensorrt以及pycuda已正确安装。
pytorch测试

四.在jupyter中使用tensorrt遇到的问题


import tensorrt as trt

---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
<ipython-input-1-0a87b2689341> in <module>
----> 1 import tensorrt as trt

~/anaconda3/envs/trt_tensorflow/lib/python3.7/site-packages/tensorrt/__init__.py in <module>
----> 1 from .tensorrt import *
      2 from ._deprecated import *
      3 __version__ = "6.0.1.5"
      4 
      5 # Provides Python's `with` syntax

ImportError: libnvinfer.so.6: cannot open shared object file: No such file or directory

由提示可知缺少库文件,然而我们已经通过官方文档的指引将库环境变量添加到了.bashrc文件中。

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:<TensorRT-${version}/lib>

在jupyter中输入如下magic命令。

%env

发现LD_LIBRARY_PATH环境变量中并没有TensorRT库的路径。也就是说在jupyter内核启动时,.bashrc文件并没有被执行。

我们知道,在用户登录linux的时候,首先会启动/etc/profile文件,然后再启动用户目录下的 ~/.bash_profile、 ~/.bash_login或 ~/.profile文件中的其中一个,一般还会执行 ~/.bashrc文件。查看.profile文件:

# ~/.profile: executed by the command interpreter for login shells.
# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
# exists.
# see /usr/share/doc/bash/examples/startup-files for examples.
# the files are located in the bash-doc package.

# the default umask is set in /etc/profile; for setting the umask
# for ssh logins, install and configure the libpam-umask package.
#umask 022

# if running bash
if [ -n "$BASH_VERSION" ]; then
    # include .bashrc if it exists
    if [ -f "$HOME/.bashrc" ]; then
        . "$HOME/.bashrc"
    fi
fi

也就是说只有启动bash的时候才会执行.bashrc文件。我们在.bashrc中对环境变量的更改在jupyter内核中并没有起作用,于是将对环境变量的移到.profile文件中,以上问题得以解决。

参考文献

1.非root用户在服务器上安装CUDA10.1和cudnn到指定目录 - thronsbird - 博客园.
2.Linux 启动时profile、bashrc、/.bash_profile、/.bashrc、~/.bash_profile执行顺序以及文件说明 - 整合侠 - 博客园.
3.python - How to set env variable in Jupyter notebook - Stack Overflow.
4.Installation Guide :: NVIDIA Deep Learning TensorRT Documentation.
5.Release Notes :: CUDA Toolkit Documentation.

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值