Ubuntu在Docker中安装TensorRT7
本文以TensorRT7.2.3.4为例。
Environment
- 硬件环境:CPU:英特尔X86处理器 GPU:GeForce 2080Ti
- 软件环境:Ubuntu16.04/Ubuntu18.04
- 虚拟环境:Docker 19.03以上版本
NVIDIA Driver
参考TensorRT7.2.3安装准备,TensorRT7最低需要CUDA10.2以上版本,所以要求你的驱动所支持的CUDA最高版本要不低于10.2。
宿主机下
1. 卸载原驱动:
$ sudo apt remove --purge nvidia-*
2. 安装新驱动:
进入英伟达驱动下载,按类型搜索下载驱动安装包。
本文选用支持CUDA11.2的460.91.03版本
运行$ sudo sh NVIDIA-Linux-x86_64-460.91.03.run
按提示安装即可。
3. 更新docker
若使用容器,还需相应更新nvidia-docker-runtime
,运行命令:
$ sudo apt install nvidia-docker-runtime
注: 若apt未能索引到nvidia-docker-runtime,可以尝试更换为:
$ sudo apt install nvidia-container-runtime
Docker
$ docker run -itd --name=tensorrt_test -h tensorrt_test -v /home/nas:/home/data nvidia/cuda:10.2-devel-ubuntu16.04 bash
--name
:容器名-h
:容器的host名-v
:目录映射。主机目录:容器目录nvidia/cuda:10.2-devel-ubuntu16.04
:公共镜像,可自行到docker-hub中拉取需要的镜像。
进入容器$ docker exec -it tensorrt_test bash
CUDA
TensorRT7.2.3.4支持10.2, 11.0 update 1, 11.1 update 1, and 11.2 update 1,自己选择合适版本下载安装。本文使用11.0update1。
1. 下载CUDA安装包
Installer Type推荐选择runfile(local)
$ wget https://developer.download.nvidia.com/compute/cuda/11.0.3/local_installers/cuda_11.0.3_450.51.06_linux.run
2. 安装cuda
$ sudo sh cuda_11.0.3_450.51.06_linux.run
#..一堆协议说明...
accept/decline/quit: accept #接受协议
Install NVIDIA Accelerated Graphics Driver for Linux-x86_64?
(y)es/(n)o/(q)uit: n #是否安装显卡驱动,由于已经安装显卡驱动,选择n
Install the CUDA 11.0 Toolkit?(y)es/(n)o/(q)uit: y #是否安装CUDA工具包,选择y
Enter Toolkit Location
[ default is /usr/local/cuda-11.0 ]: #工具包安装路径,默认回车即可,也可根据自己情况修改路径
Do you want to install a symbolic link at /usr/local/cuda?
(y)es/(n)o/(q)uit: y #添加软链接,如果你之前安装过另一个版本的cuda,除非你确定想要用这个新版本的cuda,否则这里建议选no,因为指定该链接后会将cuda指向这个新的版本。
Install the CUDA 11.0 Samples?
(y)es/(n)o/(q)uit: n #安装样例,这里看自己情况
Enter CUDA Samples Location
[ default is /root ]: #如果上面选择n则无需管该项,否则样例安装地址自己选择
# ***安装信息***
Installing the CUDA Toolkit in /usr/local/cuda-11.0 ...
Finished copying samples.
===========
= Summary =
===========
Driver: Not Selected
Toolkit: Installed in /usr/local/cuda-11.0
Samples: Not Selected
Please make sure that
- PATH includes /usr/local/cuda-11.0/bin
- LD_LIBRARY_PATH includes /usr/local/cuda-11.0/lib64, or, add /usr/local/cuda-11.0/lib64 to /etc/ld.so.conf and run ldconfig as root
To uninstall the CUDA Toolkit, run the uninstall script in /usr/local/cuda-11.0/bin
Please see CUDA_Installation_Guide_Linux.pdf in /usr/local/cuda-11.0/doc/pdf for detailed information on setting up CUDA.
***WARNING: Incomplete installation! This installation did not install the CUDA Driver.
To install the driver using this installer, run the following command, replacing <CudaInstaller> with the name of this run file:
sudo <CudaInstaller>.run -silent -driver
Logfile is /tmp/cuda_install_6388.log
# ***安装完成***
若安装过程中出现Missing recommended library
错误,运行下面命令安装相关依赖:
$ sudo apt install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev
3. 配置CUDA环境变量
修改~/.bashrc文件在文件末尾添加环境变量:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64
export PATH=$PATH:/usr/local/cuda/bin
export CUDA_HOME=$CUDA_HOME:/usr/local/cuda
保存后还需使其生效: $ source ~/.bashrc
注意: 上面在设置环境变量时,使用的是cuda,而不是cuda-11.0,这主要是为了方便我们切换cuda版本,可以让我们不用每次都去该环境变量的值。当我们想使用其他版本时,只需要删除该软链接,然后重新建立指向另一版本CUDA的软链接即可(注意软连接名称还是cuda,因为要与~/.bashrc
文件里设置的保持一致)
$ sudo rm -rf cuda
$ sudo ln -s /usr/local/cuda-10.2 /usr/local/cuda
4. 安装cudnn
- 进入cudnn下载选择8.1版本安装包下载。
- 解压
$ tar -xzvf cudnn-x.x-linux-x64-v8.x.x.x.tgz
- 将cudnn库文件复制到cuda相应目录:
$ sudo cp cuda/include/cudnn*.h /usr/local/cuda/include
$ sudo cp -P cuda/lib64/libcudnn* /usr/local/cuda/lib64
$ sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*
注意: 命令里使用的软链接地址,如果软链接指向的不是所需目标路径请修改命令为具体的绝对路径。
TensorRT
1. 下载TensorRT7安装包
进入TensorRT7.2.3下载选择合适版本下载安装包,推荐选择TAR package。本文选择TensorRT-7.2.3.4.Ubuntu-16.04.x86_64-gnu.cuda-11.0.cudnn8.1.tar.gz
2. 解压
$ version=7.2.3.4
$ os=Ubuntu-16.04
$ arch=$(uname -m)
$ cuda=cuda-11.0
$ cudnn=cudnn8.1
$ tar xzvf TensorRT-${version}.${os}.${arch}-gnu.${cuda}.${cudnn}.tar.gz
3. 配置环境变量
在~/.bashrc末尾增加export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:TensorRT-7.2.3.4/lib
使其生效$ source ~/.bashrc
4. 安装python包
$ cd TensorRT-${version}/python
$ sudo pip3 install tensorrt-*-cp3x-none-linux_x86_64.whl
5. 安装graphsurgeon
$ cd TensorRT-${version}/graphsurgeon
$ sudo pip3 install graphsurgeon-0.4.5-py2.py3-none-any.whl
6. 安装onnx-graphsurgeon
$ cd TensorRT-${version}/onnx_graphsurgeon
$ sudo pip3 install onnx_graphsurgeon-0.2.6-py2.py3-none-any.whl
7. 安装UFF(可选)
如果你需要使用带有转换tensorflow模型的tensorrt还需安装UFF
$ cd TensorRT-${version}/uff
$ sudo pip3 install uff-0.6.9-py2.py3-none-any.whl
检查安装which convert-to-uff
8. 安装pycuda并验证tensorrt
$ sudo pip3 install pycuda==2020.1
进入python环境
import tensorrt
import pycuda
如果均能正常导入则安装成功