GPU服务器上的tensorrt环境搭建


文章目录

  • GPU服务器上的tensorrt环境搭建
  • 1.拉取docker服务器上的支持cuda、cudnn的镜像文件
  • 2.设置环境变量并下载相关依赖
  • 2.1安装cuda和cudnn
  • 2.2 pytorch和torchvision安装
  • 2.3 编译安装opencv4.4
  • 2.4 安装pycuda
  • 2.5 tensorrt安装
  • 2.6 添加系统环境变量



在生产实际中,我们通常通过在GPU服务器上docker镜像环境搭建用于加速深度学习图像识别推理的tensorrt的环境。

1.拉取docker服务器上的支持cuda、cudnn的镜像文件

Docker Hub上拉取适合服务器的镜像

docker pull nvidia/cuda:10.2-cudnn7-devel-ubuntu18.04

运行拉取的镜像并将GPU挂载到该容器上:

docker run --name tensorrt --gpus all -v $PWD:/home -it nvidia/cuda:10.2-cudnn7-devel-ubuntu18.04 /bin/bash

2.设置环境变量并下载相关依赖

更新环境源变量:

apt-get update
apt-get upgrade
apt-get install software-properties-common
apt-get upgrade

设置python3为默认python执行器:

update-alternatives --install /usr/bin/python python /usr/bin/python2 100
update-alternatives --install /usr/bin/python python /usr/bin/python3 150
update-alternatives --config python

也可以通过建立软连接的方式将输入python指令为调用python3:

首先查找python3 的位置, 然后通过软连接将python和python3连接,当存在其他软连接时,可以将其先删除,如图,在/usr/bin查看所有文件:

GPU服务器的测试用例 gpu服务器搭建_深度学习

whereis python3
# 软连接
ln -s /usr/bin/python3.6 /usr/bin/python

修改后:

GPU服务器的测试用例 gpu服务器搭建_pytorch_02


安装相关依赖:

apt-get install -y python3-pip
apt-get install -y vim
apt-get install -y wget
apt-get install unzip
pip3 install pyyaml
apt-get install -y build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
apt-get install -y libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
apt-get install -y python2.7-dev python3.6-dev python-dev python-numpy python3-numpy
apt-get install -y libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libdc1394-22-dev
apt-get install -y libv4l-dev v4l-utils qv4l2 v4l2ucp
apt-get install -y curl
apt-get install -y libgtk-3-dev

2.1安装cuda和cudnn

查看自己显卡可支持的版本:

nvidia-smi

GPU服务器的测试用例 gpu服务器搭建_pytorch_03


Nvidia官网下载像对应的cuda版本,可以下载低于自己系统支持的版本,下载之前可以看看pytorch官网中历史版本中对应的cuda和cudnn所需要的版本,以免后续安装pytorch时出现版本不符合的情况。在cuda下载选项中选择自己系统合适的版本,建议选择cuda的runfile[local]安装包。

安装cuda,将下载好的cuda文件复制到镜像挂载目录下,执行sh命令进行安装。

sh cuda_*.run

安装过程中输入 accept 接受条款,再通过上下键进行选择安装。
安装cudnn,该步骤需要注册Nvidia账号,再在cudnn下载地址中选择所安装的cuda所对应的cudnn,我安装的为cuda10.2,建议选择对应的cudnn8.0.4
注:在配置tensorrt7.*版本时,建议配置为cuda10.2和cudnn8.0.4,配置8.0.2会出现一下的警告,虽然可以依旧能够完成推理,但建议安装配套的版本。

[TensorRT] WARNING: TensorRT was linked against cuDNN 8.0.4 but loaded cuDNN 8.0.2

cudnn建议下载对应版本的Runtime 、Developer 、Code Samples 这三个文件,下载完成后复制到容器挂载的目录下,在分别执行以下指令:

dpkg -i libcudnn8_8.0.4.*+cuda10.2_amd64.deb
dpkg -i libcudnn8-dev_8.0.4.*+cuda10.2_amd64.deb
dpkg -i libcudnn8-doc_8.0.4.*+cuda10.2_amd64.deb

2.2 pytorch和torchvision安装

相关版本可以在pytorch历史稳定版本查找自己安装对应的python、cuda和cudnn、系统为linux的版本,我安装的是(cu102/torch-1.7.1-cp36-cp36m-linux_x86_64.whl和cu102/torchvision-0.8.2-cp36-cp36m-linux_x86_64.whl),将下载好的文件复制到容器挂载的目录下,通过pip install …命令执行安装如:

pip install torch-1.7.1-cp36-cp36m-linux_x86_64.whl
pip install torchvision-0.8.2-cp36-cp36m-linux_x86_64.whl

2.3 编译安装opencv4.4

百度云链接 提取码:cb0s
执行下面命令,完成编译前准备工作:

# 解压相关文件
tar -zxvf opencv_contrib-4.4.0.tar.gz
unzip opencv-4.4.0.zip
unzip xfeatures2d.zip
mv opencv_contrib-4.4.0/ opencv_contrib/
# 将xfeatures2d中的文件复制到opencv_contrib/modules/xfeatures2d/src文件夹下
cp -r xfeatures2d/* opencv_contrib/modules/Xfeatures2d/src
# 进入opencv-4.4.0文件夹内,并创建build文件夹,并进入build文件夹内
cd opencv-4.4.0 && mkdir build
cd build
# 将 opencv-4.4.0文件夹内的modules/features2d/拷贝到build目录下
cp -r ../modules/features2d/ .

开始安装编译:

cmake -D WITH_CUDA=ON -D CUDA_ARCH_BIN="6.1" \ 
-D CUDA_ARCH_PTX=""  \ 
-D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules \ 
-D WITH_GSTREAMER=ON \ 
-D WITH_LIBV4L=ON \ 
-D BUILD_opencv_python2=ON -D BUILD_opencv_python3=ON \ 
-D BUILD_TESTS=OFF \ 
-D BUILD_PERF_TESTS=OFF \ 
-D BUILD_EXAMPLES=OFF \ 
-D CMAKE_BUILD_TYPE=RELEASE \  
-D CMAKE_INSTALL_PREFIX=/usr/local ..

make -j3
make instal

注:cmake最后一行中的CMAKE_INSTALL_PREFIX=为opencv编译安装的保存位置

2.4 安装pycuda

安装依赖:

apt-get install python-dev python-pip libxml2-dev libxslt1-dev zlib1g-dev libffi-dev libssl-dev

安装pycuda

pip3 install pyzmq==17.0.0
pip3 install pycuda

2.5 tensorrt安装

Nvidia官网选择下载的安装包,我下载的是 —> TensorRT-7.2.1.6.Ubuntu-18.04.x86_64-gnu.cuda-10.2.cudnn8.0.tar.gz,首先解压安装包,然后再选择合适的python版本进行安装:

tar -zxvf TensorRT-7.2.1.6.Ubuntu-18.04.x86_64-gnu.cuda-10.2.cudnn8.0.tar.gz
cd TensorRT-7.2.1.6/python
pip install tensorrt-7.2.1.6-cp36-none-linux_x86_64.whl

为避免在编译过程中找不相关库文件,建议将Tensorrt部分文件拷贝到系统路径下:

# TensorRT-7.2.1.6路径下
cp -r lib/* /usr/lib
cp -r include/* /usr/include

2.6 添加系统环境变量

将tensorrt 、 cuda 、 opencv4 的安装路径加入环境变量

vim ~/.bashrc
#添加以下在.bashrc文件的末尾
export PATH=/home/TensorRT-7.2.1.6/include:$PATH
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/TensorRT-7.2.1.6/lib

export CUDA_HOME=/usr/local/cuda-10.2
export PATH=$PATH:$CUDA_HOME/bin
export CUDA_INSTALL_DIR=/usr/local/cuda-10.2
export CUDNN_INSTALL_DIR=/usr/local/cuda-10.2
export LD_LIBRARY_PATH=/usr/local/cuda-10.2/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
export PATH=/usr/local/cuda-10.2/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-10.2/lib64:$LD_LIBRARY_PATH

export PATH=/usr/local/include/opencv4:$PATH

最后在source以下.bashrc

source ~/.bashrc