首先這是一個不完美的配置,因為Cudnn版本和TensorRT的版本並沒有完全對上,運行的時候會報警告。
另:如果不做第四步TensorRT的配置大家可以將這篇文章視為一篇簡單的深度學習環境配置文。
列一下版本號
- Ubuntu 18.04
- Cuda:10.1
- Cudnn:7.6.0
- Miniconda3:4.7.10
- Pycharm:2019.2.3
- TensorRT:6.0.1.5
步驟:
- Nvidia驅動
- Cuda和Cudnn
- Miniconda和Pycharm
- 安裝並在環境中配置TensorRT
安裝Nvidia驅動
提到Ubuntu安裝Nvidia驅動大家應該會想起被nouveau支配的恐懼,因為需要各種命令去禁用nouveau才能順利安裝上Nvidia驅動。不過在這次配置中我並沒有手動禁用nouveau的操作,而是采用了官方源的方式把驅動自動安裝。
ubuntu-drivers devices sudo ubuntu-drivers autoinstall
上面一行查詢可用的驅動,下面一行進行自動安裝,然后重啟就好了。
Cuda和Cudnn
首先下載Cuda安裝包(.runfile格式),Cudnn(只下載cuDNN Library for Linux就好)。
進入下載目錄然后運行cuda安裝文件。
sudo sh cuda_10.1.243_418.87.00_linux.run
配置環境變量。在~/.bashrc中加入如下:
export CUDA_HOME=/usr/local/cuda export PATH=$PATH:$CUDA_HOME/bin export LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
解壓Cudnn包,得到的是一個名為cuda的文件夾。推薦大家用命令行,可是如果跟我一樣不愛用命令行可以直接右鍵Extract Here就好。
然后將include和lib64中的文件分別拷到/usr/local/cuda下的這兩個目錄中。還是推薦大家用命令行,如果不愛用命令行可以用sudo nautilus在GUI中進行拖拽。
sudo cp cuda/include/cudnn.h /usr/local/cuda/include sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64 sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*
Miniconda和Pycharm
首先下載Miniconda(推薦清華源,Anaconda功能全面帶界面,不過體積較龐大,看個人習慣)和Pycharm(有學生證的同學可以下專業版)。
然后進入安裝目錄運行Miniconda安裝包順着過程安裝就好。注意有個是否使用conda init,沒選的同學需要手動添加conda到環境變量中,選了就是使用conda初始化你的bash。
最后換源,修改conda源與pip源(yes,conda環境中也能使用pip安裝管理包),方法來自清華源
conda源修改~/.condarc文件:
channels: - defaults show_channel_urls: true default_channels: - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r custom_channels: conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
pip源
pip install pip -U pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
Pycharm的安裝其實就是解壓安裝包,然后進入目錄下的/bin中,運行pycharm.sh就好。但是每次都打開安裝目錄很不方便,下面介紹如何給pycharm創建一個桌面快捷方式。
首先在~/Desktop下新建一個Pycharm.desktop,輸入以下內容
[Desktop Entry] Type=Application Name=Pycharm GenericName=pycharm-2019.2.3 Comment=Pycharm3:The Python IDE Exec=sh /opt/pycharm-2019.2.3/bin/pycharm.sh Icon=/opt/pycharm-2019.2.3/bin/pycharm.png Terminal=false Categories=Pycharm;
其中/opt/pycharm-2019.2.3是我的安裝目錄,Exec就是運行pycharm的命令。
安裝並在環境中配置TensorRT
首先用conda新建一個環境
conda create -n tensorrt python=3.7
conda activate tensorrt
tensorrt是環境名,python版本為3.7
如果大家看到這里,並且不想配置TensorRT了,可以以一條Pytorch的安裝命令完美結束這次配置。
conda install pytorch torchvision cudatoolkit=10.0
如果大家還想繼續爬坑,先下載TensorRT安裝包。(我選的是Tar包,DEB試過但安裝libnvinfer那一步不成功,求大神指導)需要注意的是
進行解壓后進入目錄。
將lib目錄添加到環境變量LD_LIBRARY_PATH中:(大家如果不用python API到這里可以直接跳過看Sample)
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:<eg:TensorRT-6.x.x.x/lib>
用Python API的朋友看這邊)然后我們激活剛剛創建的conda環境,首先安裝cudatoolkit10.1和cudnn7.6.0
conda install cudatoolkit=10.1 conda install cudnn
進入python文件夾
pip install tensorrt-6.0.1.5-cp37-none-linux_x86_64.whl
進入uff文件夾安裝uff
pip install uff-0.6.5-py2.py3-none-any.whl
進入graphsurgeon安裝graphsurgeon
pip install graphsurgeon-0.4.1-py2.py3-none-any.whl
安裝onnx,numpy,Pillow,pycuda
pip install --no-binary onnx 'onnx==1.5.0' pip install numpy pip install Pillow pip install pycuda
配置基本完成,下面我們運行sample來驗證一下。
首先是C++ samples。進入samples文件夾,編輯Makefile.config,找到CUDA_INSTALL_DIR和CUDNN_INSTALL_DIR這一行,把問號去掉,保存關閉。在samples文件夾中make進行編譯。
/opt/TensorRT-6.0.1.5/samples$ sudo make
編譯成功打開bin目錄,運行想運行的程序(運行前先看一眼sample中對應的readme),我試的是sample_fasterRCNN。首先在/data/faster-rcnn中下載權重文件VGG16_faster_rcnn_final.caffemodel,然后回到/bin中運行./sample_fasterRCNN即可。測試用例一共4個下面給大家貼一個。
下面介紹Python sample。首先用Pycharm打開/samples/python文件夾。(我直接復制出來)
其中tensorflow和pytorch的sample需要對應框架支持,我只測試了caffe的int8_caffe_mnist。
在data/mnist/目錄中下載MNIST數據集,如果像我這樣把整個samples/python復制出來的需要在原目錄的data/mnist中拷貝文件過來。
然后運行sample.py,注意用pycharm直接運行會報錯找不到libnvinfer,需要在配置中加入環境變量LD_LIBRARY_PATH=/opt/TensorRT-6.0.1.5/lib。
下面是運行結果。
首先是一個警告三連(因為conda環境中最高的cudnn版本是7.6.0所以我也沒有辦法了,特別奇怪的是系統cudnn是7.6.3的時候會運行不下去,希望conda盡快更新cudnn的版本)。
好了這篇配置小白文就到這里,望大家多多指教。