依照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
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 有關cuda
的lib
庫引用問題
會報一大串這樣的問題
對‘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 安裝過程記錄