TensorRT + Onnx_TensorRT 安装步骤
我个人是将TRT和Onnx_TensorRT安装在docker的container中, 因为云都是提供的docker环境, 实际使用起来跟一般没有区别
安装TensorRT
依照CUDA版本下载相对应的CUDNN
-
下载对应cuda版本的cudnn
tar -xvzf cudnn-10.0-linux-x64-v7.6.5.32.tgz -C 目的path #解压缩出来会是一个cuda资料夹 cd 到cuda下 sudo cp include/cudnn.h /usr/local/cuda/include/ sudo cp lib64/lib* /usr/local/cuda/lib64/ cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2 #测试
-
下载适合环境的TensorRT版本以及安装
-
官方 https://developer.nvidia.com/tensorrt
-
解压缩
tar -xzvf TensorRT-7.0.0.11.Ubuntu-16.04.x86_64-gnu.cuda-10.0.cudnn7.6.tar.gz -C /指定你要的路径
-
添加环境变量
vim ~/.bashrc
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:<eg:TensorRT-6.x.x.x/lib
例如
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/你安装的路径/TensorRT-7.0.0.11/lib
之后记得
source ~/.bashrc
一下 -
cd TensorRT-7.x.x.x/python
到TRT目录下的python文件夹 -
pip install tensorrt-6.0.1.5-cp36-none-linux_x86_64.whl
依照python环境选择相应的安装
-
中途遇见的问题
问题1
pip install tensorrt-6.0.1.5-cp36-none-linux_x86_64.whl 的时候出问题
报错如下
ERROR: tensorrt-6.0.1.5-cp36-none-linux_x86_64.whl is not a supported wheel on this platform
这通常只会有两个原因, 但大部分是第一个原因, 也就是python环境选错了, 例如python3.5 则安装3.6的
注意如果使用conda可能会遇到该问题, 在conda下安装请使用pip install, 不要用pip3
ONNX_tensorrt 安装步骤
确认环境
TensorRT7
- 依照以下官方步骤下载到本地
-
git clone --recurse-submodules https://github.com/onnx/onnx-tensorrt.git
-
cd onnx-tensorrt
-
mkdir build
-
cmake .. -DTENSORRT_ROOT=<tensorrt_install_dir>
或是
cmake .. -DTENSORRT_ROOT=<tensorrt_install_dir> -DGPU_ARCHS="61"
例如:
cmake .. -DTENSORRT_ROOT=/path/to/TensorRT-7.x.x.x -DGPU_ARCHS="61"
-
make -j8
(记得是在onnx-tensorrt目录下执行) -
sudo make install
-
安装完成后指令输入 onnx2trt 确认一下
中途遇见的问题
问题1
Tensorrt 装在DL的conda环境中, 但是要编译onnx的时候遇到 /usr/bin/cmake: 没有那个文件或目录
必须退出当前的conda 环境才能使用cmake 但是用cmake的时候又找不到tensorrt环境,因为装在conda dl的环境中
问题2
cmake的时候会找不到TensorRT library
报错如下
-- Found TensorRT headers at /input/TensorRT-6.0.1.5/include
-- Find TensorRT libs at /input/TensorRT-6.0.1.5/lib/libnvinfer.so;/input/TensorRT-6.0.1.5/lib/libnvinfer_plugin.so;TENSORRT_LIBRARY_MYELIN-NOTFOUND
-- Could NOT find TENSORRT (missing: TENSORRT_LIBRARY)
ERRORCannot find TensorRT library.
CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
TENSORRT_LIBRARY_MYELIN
linked by target "nvonnxparser_static" in directory /input/onnx-tensorrt
linked by target "nvonnxparser" in directory /input/onnx-tensorrt
-- Configuring incomplete, errors occurred!
See also "/input/onnx-tensorrt/build/CMakeFiles/CMakeOutput.log".
See also "/input/onnx-tensorrt/build/CMakeFiles/CMakeError.log".
解决2
只是因为onnx1.6只支持tensorrt7的版本, 碰到这个问题是安装成6.0的TensorRT
问题3
make -j8 的时候 出现 onnx_utils.hpp文件的报错
报错如下
numeric_limits’ is not a member of ‘std’
表示出错的onnx_utils.hpp头文件没有包含
#include <stdexcept>
#include <limits>
解决
只要vim 进去加上两个头文件就可以
无法pip install 的方式 可以进入python shell import pip查看
import pip or import pip._internal
print(pip._internal.pep425tags.get_supported())
[('cp36', 'cp36m', 'manylinux1_x86_64'),
('cp36', 'cp36m', 'linux_x86_64'),
('cp36', 'abi3', 'manylinux1_x86_64'),
('cp36', 'abi3', 'linux_x86_64'),
('cp36', 'none', 'manylinux1_x86_64'),
('cp36', 'none', 'linux_x86_64'),
('cp35', 'abi3', 'manylinux1_x86_64'),
('cp35', 'abi3', 'linux_x86_64'), ('cp34', 'abi3', 'manylinux1_x86_64'), ('cp34', 'abi3', 'linux_x86_64'), ('cp33', 'abi3', 'manylinux1_x86_64'), ('cp33', 'abi3', 'linux_x86_64'), ('cp32', 'abi3', 'manylinux1_x86_64'), ('cp32', 'abi3', 'linux_x86_64'), ('py3', 'none', 'manylinux1_x86_64'), ('py3', 'none', 'linux_x86_64'), ('cp36', 'none', 'any'), ('cp3', 'none', 'any'), ('py36', 'none', 'any'), ('py3', 'none', 'any'), ('py35', 'none', 'any'), ('py34', 'none', 'any'), ('py33', 'none', 'any'), ('py32', 'none', 'any'), ('py31', 'none', 'any'), ('py30', 'none', 'any')]