NVIDIA TensorRT--Installation Guide | NVIDIA Docs

一、概述

TensorRT输入网络和参数,然后生成一个优化后的运行时引擎,用于对该网络执行推理。

TensorRT有C++和python的接口。

TensorRT应用了graph optimizations图优化、layer fusion层融合以及other optimizations其他优化,同时还利用各种hily optimized kernels高度优化的内核来寻找该模型的最快实现。

TensorRT支持混合精度。

二、入门指南

安装TensorRT之前需要安装以下内容:

  • 不使用python,可以不安装,包括tensorrt里面的whl文件。
  • 如要要在python中使用tensorrt,还需要安装pycuda
  • 安装CUDA
  • 如果需要导出模型的话还需要TensorFlow或者是pytorch。如果想要TensorFlow中导出uff,则需要安装TensorRT包中的uff对应的whl。
  • tensorrt支持onnx。
  • tensorrt和cudnn版本最好能对应。

三、下载tensorRT

四、安装

需要安装CUDA和CUDNN

4.1、Debian安装

    1、下载与ubuntu和CPU对应的tensorrt版本

    2、修改以下命令以执

os="ubuntuxx04"
tag="cudax.x-trt8.x.x.x-yyyymmdd"
sudo dpkg -i nv-tensorrt-repo-${os}-${tag}_1-1_amd64.deb
sudo apt-key add /var/nv-tensorrt-repo-${os}-${tag}/7fa2af80.pub
sudo apt-get update
sudo apt-get install tensorrt

如果使用python中使用的话

python3 -m pip install numpy
sudo apt-get install python3-libnvinfer-dev
python3-libnvinfer
  •   如果tensorflow中使用的话
python3 -m pip install protobuf
sudo apt-get install uff-converter-tf

python中查看例子

python3 -m pip install numpy onnx
sudo apt-get install onnx-graphsurgeon

3、查看安装的tensorrt版本信息

dpkg -l | grep TensorRT

输出:NVIDIA TensorRT--Installation Guide | NVIDIA Docs_第1张图片

 4.4.1、在Debian使用rpm (network)的方式安装

1、安装CUDA

2、安装tensorrt

仅运行tensorrt c++应用

sudo yum install libnvinfer8 libnvparsers8 libnvonnxparsers8 libnvinfer-plugin8

还需要构建tensorrt c++ 应用

sudo yum install libnvinfer-devel libnvparsers-devel libnvonnxparsers-devel
libnvinfer-plugin-devel

在python中运行tensorrt

sudo yum install python3-libnvinfer

3、安装libnvinfer8

version="8.x.x-1.cudax.x"
sudo yum downgrade libnvinfer8-${version} libnvparsers8-${version} libnvonnxparsers8-${version} libnvinfer-plugin8-${version} libnvinfer-devel-${version} libnvparsers-devel-${version} libnvonnxparsers-devel-${version} libnvinfer-plugin-devel-${version} python3-libnvinfer-${version}

sudo yum install yum-plugin-versionlock
sudo yum versionlock libnvinfer8 libnvparsers8 libnvonnxparsers8 libnvinfer-plugin8
libnvinfer-devel libnvparsers-devel libnvonnxparsers-devel libnvinfer-plugin-devel
python3-libnvinfer

假如想要升级tensorrt或者CUDA,就需要先对libnvinfer8解除绑定。

sudo yum versionlock delete libnvinfer8 libnvparsers8 libnvonnxparsers8 libnvinferplugin8 libnvinfer-devel libnvparsers-devel libnvonnxparsers-devel libnvinfer-plugindevel python3-libnvinfer

4.5 pip 安装

pip-installable nvidia-tensorrt

nvidia-tensorrt支持python3.6~3.9 和CUDA 11.x。Linux系统和x86_64 CPUx架构,wheel文件支持centos 7、ubuntu 18.04。

在安装之前先安装NVIDIA -pyindex,也许还需要更新一下python里面的安装包

python3 -m pip install --upgrade setuptools pip
python3 -m pip install nvidia-pyindex

如果使用requirements.txt,需要在requirements.txt中添加。

--extra-index-url https://pypi.ngc.nvidia.com

步骤

1、安装tensorrt 

python3 -m pip install --upgrade nvidia-tensorrt

2、验tensorrt是否安装成功

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

4.6. tar文件压缩

  • 安装cuda、CUDNN、python
  • 下载tensorrt的tar
  • 解压
version="8.x.x.x"
arch=$(uname -m)
cuda="cuda-x.x"
cudnn="cudnn8.x"
tar xzvf TensorRT-${version}.Linux.${arch}-gnu.${cuda}.${cudnn}.tar.gz
  • 查看解压包的文件
ls TensorRT-${version}
bin data doc graphsurgeon include lib onnx_graphsurgeon python samples targets
TensorRT-Release-Notes.pdf uff
  • 将tensorrt的lib文件夹的绝对路径加入到环境变量LD_LIBRARY_PATH:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:
  • 安装tensorrt解压包中的wheel文件
cd TensorRT-${version}/python
python3 -m pip install tensorrt-*-cp3x-none-linux_x86_64.whl
  • 假如需要在TensorFlow中使用tensorrt
cd TensorRT-${version}/uff
python3 -m pip install uff-0.6.9-py2.py3-none-any.whl
  • 检查安装的uff
which convert-to-uff
  • 安装graphsurgeon的wheel文件。
cd TensorRT-${version}/graphsurgeon
python3 -m pip install graphsurgeon-0.4.5-py2.py3-none-any.whl
  • 验证安装成功
    • 确保文件安装在正确的位置。使用tree -d命令,查看lib、include、data、etc...文件夹
    • 构建和运行简单的例子。比如sampleMNIST。
    • python的例子在samples/python

4.7 zip文件安装

开始安装之前:cuda、cuDNN

步骤:

  • 下载tensorRT 的zip
  • 解压tensorrt-8.x.x.x.windows10.x86_64.cuda-x.x.cudnn8.x.zip
  • 加入到环境变量path
  • tensorRT安装有两种方式:

        a)、加入到解压的/lib到系统环境变量

               假如CUDNN没有拷贝到CUDA中,那么也需要将CUDNN的bin路径加入环境变量。

        b)、将TensorRT中/lib拷贝到CUDA的安装目录。例如C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\vX.Y\bin。。但是CUDA路径要设置成环境变量。

  • 安装tensorrt的/lib路径中的wheel:
python.exe -m pip install tensorrt-*-cp3x-none-win_amd64.whl
  • 为了验证安装的有效性,直接在VS中运行sampleMNIST,并确保能用build和run。
  • 加入需要在其他项目中运行tensorrt,请设置以下项:
  1. 确保dll,/lib已经加入到path中,确保VC++ Directories->Excutable Directores。
  2. /include设置在C/C++->General-->AdditionalDirectories。
  3. 将nvinfer.lib和其他的LIB文件设置到Linker->Input->Additional Dependencies。
  • 如果要使用TensorFlow或PyTorch,安装uff、graphsurgeon和onnx_graphsurgen的wheel
python3 -m pip install \graphsurgeon\graphsurgeon-0.4.5-py2.py3-none-any.whl
python3 -m pip install \uff\uff-0.6.9-py2.py3-none-any.whl
python3 -m pip install \onnx_graphsurgeon\onnx_graphsurgeon-0.3.12-py2.py3-
none-any.whl

4.8 附加安装方法

TensorRT container、NVIDIA JetPack™、NVIDIA DRIVE®
 

五、TensortRT升级

5.1在ubuntu和windows上

5.1.1 从TensorRT 8.0.x升级到 TensorRT 8.4.x

使用一个Debian文件

  • Debian包可以直接升级,并且其他的依赖文件都会直接升级
os="ubuntuxx04"
tag="cudax.x-trt8.x.x.x-yyyymmdd"
sudo dpkg -i nv-tensorrt-repo-${os}-${tag}_1-1_amd64.deb
sudo apt-get update
sudo apt-get install tensorrt libcudnn8
sudo apt-get install python3-libnvinfer-dev
  • uff-converter 和 graphsurgeon也要升级
sudo apt-get install uff-converter-tf graphsurgeon-tf onnx-graphsurgeon
  • 升级后记得检查一下/usr/src/tensorrt和对应的版本是不是对应 dpkg -l tensorrt
  • 假如Debian安装方式是使用tar文件的话,更新的时候就不会将之前版本的信息删除掉。除非按照之前安装的方式删除,最好能把之前版本的删除掉以避免,出现冲突
  • 假如cuda是network安装的,那么更新的时候libcudnn8应该从tensorrt的资源包中更新到cuda版本当中
    version="8.4.x.x-1+cudax.x"
    sudo apt-get install libcudnn8=${version} libcudnn8-dev=${version}
    sudo apt-mark hold libcudnn8 libcudnn8-dev

使用tar文件

  • 直接一步步的安装,可以有多个版本。
  • 要替换之前Debian安装包方式安装的文件,那么tar方式安装不会删除以前安装的,可以自己移除掉libnvinfer8,libnvinfer-dev,libnvinfer-samples

使用zip文件

  • 直接一步步的安装,可以有多个版本
  • 设置环境变量,或者把文件直接拷贝到之前的cuda目录

5.2 ReadHat和CentOS

 六、卸载tensorRT

关于这个任务

  • 如果是tar或者是zip形式安装的,可以直接删除对应文件,如果有额外增加环境变量,那把相对的环境变量也删除掉。
  • 如果是Debian或者RPM安装方式,跟寻一下步骤删除。

步骤

  • 卸载libnvinfer8
sudo apt-get purge "libnvinfer*"
sudo apt-get purge "nv-tensorrt-repo*"
sudo yum erase "libnvinfer*"
sudo yum erase "nv-tensorrt-repo*"
  • 卸载uff-converter-tf, graphsurgeon-tf, and onnx-graphsurgeon
sudo apt-get purge graphsurgeon-tf onnx-graphsurgeon
sudo yum erase graphsurgeon-tf onnx-graphsurgeon

上面的命令会将uff-converter-tf一起删除掉,如果希望仅删除uff-converter-tf,则

sudo apt-get purge uff-converter-tf
sudo yum erase uff-converter-tf

如果想只删除graphsurgeon-tf

sudo apt-get autoremove
sudo yum autoremove
  • 卸载python Tensorrt
sudo pip3 uninstall tensorrt
  • 卸载python uff
sudo pip3 uninstall uff
  • 卸载python GraphSurgeon
sudo pip3 uninstall graphsurgeon
  • 卸载python ONNX GraphSurgeon
sudo pip3 uninstall onnx-graphsurgeon

七、安装PyCUDA

要记得首先升级CUDA,然后在安装PyCUDA。NumPy已经安装了。

PyCUDA不是必须安装的,它通过python调用CUDA接口,并且某些例子中可能用到。

PyCUDA的特性包括

  • 将CUDA映射到python
  • 启用运行时代码生成run-time code generation (RTCG),以生成灵活、快速、自动调优的代码。
  • 增加了健壮性:自动管理对象生存期,自动错误检查
  • 添加的便利:带有现成的on-GPU线性代数,简化,搜索。
  • 用于FFT和LAPACK的附加组件包。
  • 快。接近于零的包装开销。

安装pycuda之前首先确保nvcc在环境变量中

python -m pip install 'pycuda<2021.1'

7.1 更新CUDA

需要在CUDA安装或者更新之后再安装pycuda。

  1. 卸载PyCUDA
  2. 更新CUDA
  3. 安装pycuda
pip install 'pycuda<2021.1'

八、排错

你可能感兴趣的:(tensorRT)