TensorRT7 + Onnx_TensorRT 安裝過程記錄

依照CUDA版本下載相對應的CUDNN

下載對應cuda版本的cudnn

tar -xvzf cudnn-10.0-linux-x64-v7.6.5.32.tgz -C 目的path

#解壓縮出來會是一個cuda資料夾

cdcuda

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
source ~/.bashrc

例如: export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/你安裝的路徑/TensorRT-7.0.0.11/lib

進入 TensorRT-7.x.x.x/python 到TRT目錄下的python文件夾

pip install tensorrt-6.0.1.5-cp36-none-linux_x86_64.whl 依照python環境選擇相應的安裝
中途遇見的問題
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 環境對應的 tensorrt 的版本選錯了

注意如果使用conda可能會遇到該問題, 在conda下安裝請使用pip install, 不要用pip3

ONNX_tensorrt 安裝步驟

確認環境爲 TensorRT7

依照以下官方步驟下載到本地

git clone --recurse-submodules https://github.com/onnx/onnx-tensorrt.git

cd onnx-tensorrt
mkdir build
cd 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"

sudo make -j8 (記得是在 build 目錄下執行)
sudo make install

之後再安裝一下 onnx

pip install onnx==1.6.0

安裝完成後指令輸入 onnx2trt 確認一下,輸出以下內容則安裝成功

ONNX to TensorRT model parser
Usage: onnx2trt onnx_model.pb
                [-o engine_file.trt]  (output TensorRT engine)
                [-t onnx_model.pbtxt] (output ONNX text file without weights)
                [-T onnx_model.pbtxt] (output ONNX text file with weights)
                [-m onnx_model_out.pb] (output ONNX model)
                [-b max_batch_size (default 32)]
                [-w max_workspace_size_bytes (default 1 GiB)]
                [-d model_data_type_bit_depth] (32 => float32, 16 => float16)
                [-O passes] (optimize onnx model. Argument is a semicolon-separated list of passes)
                [-p] (list available optimization passes and exit)
                [-l] (list layers and their shapes)
                [-g] (debug mode)
                [-F] (optimize onnx model in fixed mode)
                [-v] (increase verbosity)
                [-q] (decrease verbosity)
                [-V] (show version information)
                [-h] (show help)

確認python接口正常調用:

python >>
import onnx
import onnx_tensorrt.backend as backend

如果不報錯 ~ 那麼恭喜 !!!

問題總結

1 python 導入 tensorrt 的時候出現的問題

python >> 
import tensorrt

ImportError: libnvinfer.so.7: cannot open shared object file: No such file or directory

原因:沒有修改 ~./bashrc

2 sudo make -j8 的時候出現的和 protobuf 有關問題

 fatal error: google/protobuf/port_def.inc: 沒有那個文件或目錄

解決辦法:重新安裝protobuf

3 有關cudalib庫引用問題
會報一大串這樣的問題

對‘cudaMalloc@libcudart.so.10.0’未定義的引用
.......

解決辦法:
sudo vim ~/.bashrc 修改環境變量

修改後如下,保存文件

export CUDA_HOME=/usr/local/cuda
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:"$LD_LIBRARY_PATH:/usr/loacl/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64"
export PATH=/usr/local/cuda/bin:$PATH

激活環境變量 source ~/.bashrc

這個時候如果還沒有好的話:

sudo vi /etc/profile.d/cuda.sh

把以下內容複製進去並保存

export PATH=$PATH:/usr/local/cuda/bin
export CUDADIR=/usr/local/cuda

這一個位置也要新建一個文件,如果你裝了10.1可能裏面會已經有一個cuda10.1.conf不用管它

sudo vi /etc/ld.so.conf.d/cuda.conf

文件裏面有這一句

/usr/local/cuda/lib64

應用設置

sudo ldconfig

4 出現 onnx_utils.hpp文件的報錯

報錯如下

numeric_limits’ is not a member of ‘std’

原因:表示出錯的onnx_utils.hpp頭文件沒有包含

解決方案:在文件的開頭添加如下include

#include <stdexcept>
#include <limits>

REFERENCE

https://github.com/onnx/onnx-tensorrt

TensorRT7 + Onnx_TensorRT 安裝過程記錄

解決Could not load dynamic library 'libcudart.so.10.0’的問題

linux升級cmake

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章