TensorRT安装&环境配置
环境:
ubuntu14.04, Tesla P4, Python3.4, Cuda8.0, Cudnn7.1.3
概述:
从装有Ubuntu14.04和Python3.4的服务器上实现环境的配置。本文记录了在配置各个必要组件的环节中遇到的问题。
1. 配置Nvidia驱动
服务器显卡是Tesla的P4显卡,在2019.6.13这一天Nivida官网适用Linux-64bit,cuda tookit 8.0的对应驱动(这里指的只有runfile方式)
也只有一个可以下载,即NVIDIA-Linux-x86_64-384.66.run。在下载安装过程中遇到了以下几个问题。
- 第一个问题是下载问题。
Nvidia-Linux-~.run文件下载下来后,显示的文件大小和官网那个上标识的97m不同,我下载了两次都是95.55m和103m,在安装的时候都遇到了错误。
这里的解决办法就是重新下载驱动,这里的问题就是驱动受损,我重新下载第三次后成功。- 第二个问题是意外。
如果lspci | grep NVIDIA 没有显示NVIDIA卡,又确定把卡插在了电脑里,那就说明,插卡的卡槽出了问题或者卡出了问题。- 第三个问题是驱动瓦特问题
如果前面的步骤都没有问题,就是驱动瓦特了,重装一遍即可。#卸载原来的驱动(残留在服务器里,还没办法用)
$sudo apt-get remove --purge nvidia*
# 到指定位置寻找Nvidia驱动
cd /root/yanxu/runner/
# 执行安装(要改为x权限)
./NVIDIA-Linux-x86_64-384.66.run -no-opengl-files
# 检测
nvidia-smi
打印了显卡信息,成功。
我使用的服务器,不用考虑图形界面问题。另外,服务器本身就已经禁止了nouveau,所以看了其他教程后觉得我不用做nouveau的禁用。
#2.配置Cuda8.0
驱动配置好了之后,根据需要配置cuda和cudnn,在cuda8.0的基础上安装最低版本的cudnn。
- cudnn的版本选择很重要,看了官网的Support Matrix Guide
之后,发现cudnn最低也要使用7.x。尝试安装果cudnn5.x,在使用的时候会报错提示找不到lib~.so.7 ,所以还是要安装cudnn7.x.- cuda8.0安装没什么问题,跟着网上教程,记得更改环境变量即可。(不太了解linux使用root或者各个用户安装有什么不同,我安装到了/usr/local/cuda-8.0里面)
#3. 安装tensorrt
官方的安装有两种主流方法,基于debian的安装方法和基于tar的安装方法。
- Debian方法安装
前提:
- 要利用root权限才能安装
- TensorRT只能安装到固定的路径下
- CUDA也要用debian package来安装
- Tar方法可以安装到任何路径下,但是需要提前自己安装好所有的依赖(cuda,cudnn等)
#####具体的命令参考Installation-Guide的第四章,介绍了C++和Python两种接口的tensorRT安装。
#4. 安装pycuda
暂时选择python接口,需要安装对应版本的pycuda。按照网上教程直接安装了pycuda,然后跑demo代码,遇到了一些问题,下面简单介绍遇到的问题。
- 跑caff_mnist.py的时候,pycuda报错
Traceback (most recent call last):
File “caffe_mnist.py”, line 74, in
import pycuda.driver as cuda
File “/usr/local/lib/python3.4/dist-packages/pycuda/driver.py”, line 5, in
from pycuda._driver import * # noqa
ImportError: libnvidia-fatbinaryloader.so.367.57: cannot open shared object file: No such file or directory
就是提示找不到这个.so文件,但是,首先我前一天晚上装好的是Nvidia.384的驱动,并不是367。我就考虑到这个报错可能有两个原因:
- 服务器上安装过其他版本的Nvidia367驱动,在我自动pip3 install pycuda==2018.1的时候,pycuda配置的那个版本。
- 我在反复安装pycuda的过程中误删了相关的.so文件,可能也会导致显卡驱动瓦特掉(不能用了)。
果然,检查了nvidia-smi之后,出现了错误,输入命令lspci | grep NVIDIA发现显卡还在,所以就是驱动挂了。决定重装一下驱动,https://blog.csdn.net/weixin_38570251/article/details/80001291. 后来装完驱动重启之后,跑脚本就解决了这个问题。
#5. Pillo安装过程中的一个小问题
因为第一个demo要使用PIL,所以要在python3.4上安装Pillow,发现直接pip3 install Pillow之后会报错,具体返回 AttributeError parallel,
然后查阅资料发现可能最新版本的Pillow和python3.4不兼容,偷懒费大事实锤了,最后 pip3 install Pillow==4.0.0,然后跑demo发现能跑通了。