資料參考
- jkjung-avt/tensorrt_demos
- Ubuntu18.04安装CUDA10.2+cuDNN8(已備份到 archive.is 跟 web.archive.org 上)
- 在Ubuntu18.04上编译和测试TensorRT(已備份到 archive.is 跟 web.archive.org 上)
環境準備
- Ubuntu 18.04
- Python 3.6.9
- CUDA-10.2
- GNU Make 4.1
- cuDNN-8.0.3
- TensorRT 7.1.3.4
- pycuda 2019.1.2
- Python 套件:onnx 1.4.1
Ubuntu18.04 安装CUDA10.2+cuDNN8.0.3
參考:Ubuntu18.04安装CUDA10.2+cuDNN8
通常Nvidia 會要求登入。
安裝 CUDA 10.2
下载地址:CUDA Toolkit 10.2 Download
也可以直接執行下面的命令,不用登入。
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-ubuntu1804.pin
sudo mv cuda-ubuntu1804.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/10.2/Prod/local_installers/cuda-repo-ubuntu1804-10-2-local-10.2.89-440.33.01_1.0-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu1804-10-2-local-10.2.89-440.33.01_1.0-1_amd64.deb
sudo apt-key add /var/cuda-repo-10-2-local-10.2.89-440.33.01/7fa2af80.pub
sudo apt-get update
sudo apt-get -y install cuda-10-2
安裝 cuDNN8.0.3
下载地址:cuDNN Archive
下載時必須要登入。
如下圖:
也可以去鏡像站下載會比較快:Index of /nvidia-machine-learning/ubuntu1804/x86_64/
如下圖:
下載完成後一次安裝這兩個文件就可以了(先安裝runtime library,再安裝developer library)。
指令如下:
sudo dpkg -i libcudnn8_8.0.3.33-1+cuda10.2_amd64.deb
sudo dpkg -i libcudnn8-dev_8.0.3.33-1+cuda10.2_amd64.deb
安裝完CUDA10.2和cuDNN8後,需要將cuda目錄下的bin目錄加入到PATH環境變量中。
vim ~/.bashrc
在最後一行,加入:
export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH="/usr/local/cuda/lib64:$LD_LIBRARY_PATH"
然後輸入指令:source ~/.bashrc
在正確的設置了PATH變量後,在命令行中執行 nvcc --version 有應該類似下面的輸出
>> nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2019 NVIDIA Corporation
Built on Wed_Oct_23_19:24:38_PDT_2019
Cuda compilation tools, release 10.2, V10.2.89
至此,CUDA10.2+cuDNN8就成功的在Ubuntu18.04上安裝成功了。
Ubuntu 18.04 安装配置TensorRT 7.1
下載地址:NVIDIA TensorRT 7.x Download
選擇 TensorRT 7.1.3.4 for Ubuntu 18.04 and CUDA 10.2 TAR package ,如下圖:
下載結束後解壓:
sudo tar -xvzf TensorRT-7.1.3.4.Ubuntu-18.04.x86_64-gnu.cuda-10.2.cudnn8.0.tar.gz
安装pip:
sudo apt-get install python3-dev python3-pip
切換到 TensorRT 的 python 目錄下,安裝對應 Python 版本的 python 套件,因為是 python 3.6 選 cp36的那個:
cd TensorRT-7.1.3.4/python/
sudo pip3 install tensorrt-7.1.3.4-cp36-none-linux_x86_64.whl
加入環境變數(這邊要看你的 TensorRT 放在哪):
vim ~/.bashrc
export LD_LIBRARY_PATH="/mnt/c/Users/p2330/Desktop/yolov3_onnx/TensorRT-7.1.3.4/targets/x86_64-linux-gnu/lib:$LD_LIBRARY_PATH"
source ~/.bashrc
驗證 TensorRT 的 python 套件安裝,如下圖:
安裝 uff:
cd ../uff
sudo pip3 install uff-0.6.9-py2.py3-none-any.whl
安裝 graphsurgeon:
cd ../graphsurgeon/
sudo pip3 install graphsurgeon-0.4.5-py2.py3-none-any.whl
安裝 pycuda 2019.1.2 & onnx 1.4.1
如下圖,雖然 tensorrt_demos 專案中有提供作者自己寫的 pycuda 安裝腳本,但執行之後,報出了奇怪的錯誤,所以這裡會用 pip 安裝。
(因為 pycuda 安裝時,會需要用到 cuda 和 TensorRT,所以才需要安裝前面那些,不然安裝過程會報錯)
安裝 pycuda 2019.1.2:
sudo pip3 install pycuda==2019.1.2
安裝 onnx 1.4.1:
sudo pip3 install onnx==1.4.1
yolov3 tiny 轉 onnx
參考:tensorrt_demos Demo #5: YOLOv4
取得 tensorrt_demos 專案:
git clone https://github.com/jkjung-avt/tensorrt_demos.git
切換到 tensorrt_demos/plugins 目錄下,修改 Makefile 中的TENSORRT_INCS 跟
TENSORRT_LIBS 的路徑(用 vim 或 nano 皆可),如下圖:
修改為 TensorRT-7.1.3.4 所在位置,如下圖(我放在了一個神奇的位置,不要在意):
然後執行 make:
會多出兩個檔案(會噴一堆警告,不用管它):
切換到 tensorrt_demos/yolo/ 目錄下,執行作者寫的 yolo 下載腳本,指令如下:
cd ../yolo/
./download_yolo.sh
執行 yolo_to_onnx.py
yolov3 tiny 轉 onnx :
python3 yolo_to_onnx.py -m yolov3-tiny-416
除了 yolov3 tiny ,還支援很多 model ,如下圖: