目錄
1. 背景
爲了加速神經網絡的訓練,使用CPU訓練速度很慢,所以使用cuda和cudnn對神經網絡進行加速,在配置的過程中遇到了很多坑,大概配置了一兩天,各種坑,網上也有很多教程但是實現起來各種ERROR,真心覺得累。經過差不多兩天的時間終於把環境配置好。現將配置過程記錄如下。
2. 硬件與軟件版本
顯卡:GeForce GTX 1080ti
系統:Ubuntu 18.04
cuda:9.0版本
cuDNN: cuDNN v7.1.4
TensorFlow:1.12版本
Keras:默認安裝最新版
PyCharm:PyCharm2018專業版
3. 安裝NVIDIA驅動
我使用的是ppa源安裝的方式,因爲之前也從網上從官網上下載run文件進行安裝,但是但是後面出現崩潰,又得重新安裝,所以這裏只講解ppa源的安裝方式。
3.1 查看本機驅動版本
首先,確保機器在使用NVIDIA的顯卡,而非系統的nouveau驅動。
具體步驟:在軟件與更新->附加驅動中,不要選擇系統自帶的nouveau驅動,我們選擇帶有NVIDIA字樣的驅動選項,然後點擊應用更改,重啓。
並且我們可以看到顯卡驅動的版本,我這裏是390版本的驅動,下面我們來更新一下驅動。
3.2 添加Graphic Drivers PPA源
在終端輸入以下命令,添加PPA下載源,並更新源
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update
3.3 查找最新驅動
同樣,在終端輸入下面命令,檢測你的NVIDIA圖形卡和推薦的驅動程序的模型。
ubuntu-drivers devices
結果如下圖:
從圖中可以看到,這裏有一個設備是GTX 1080Ti ,對應的驅動是NVIDIA -390, 396, 410和415,而推薦是安裝415版本的驅動。
這裏要說明一下,410和415版本的驅動是支持CUDA10.0以上版本的,而我們要安裝的深度學習環境,比如Tensorflow需要CUDA9.0版本,所以根據我們的需求可以選擇安裝390或396版本的驅動。
3.4 安裝最新驅動
通過以下命令安裝驅動
sudo apt-get install nvidia-driver-396
安裝後重啓
sudo reboot
我本機裝的是390版本的驅動,,考慮到396是BETA版本,沒有更新到396版本的驅動。此處根據個人需求進行安裝。
3.5 檢測驅動是否安裝成功
安裝完後,通過如下命令檢測是否安裝成功。
nvidia-smi
nvidia-settings
如果安裝成功會分別顯示結果如下圖:
4. CUDA9.0安裝
4.1 下載文件
下載地址:https://developer.nvidia.com/cuda-90-download-archive
我們按照自己機器的配置選擇,這裏選擇的是CUDA9.0版本,如下圖所示
從上圖中可以看出,對於ubuntu系統cuda9.0支持17.04和16.04版本下載安裝,但實際上,有點類似於word一樣(高版本word能打開低版本的word文件)18.04版本的系統,能夠安裝16.04版本對應的CUDA。這裏我們選擇16.04版本,選擇安裝類型爲runfile(local),可發現有一個基礎安裝包,和四個補丁包,都下載下來,也可以就下一個基礎安裝包。
4.2 降低GCC版本
在安裝CUDA前,由於CUDA 9.0僅支持GCC 6.0及以下版本,而Ubuntu 18.04預裝GCC版本爲7.3,若gcc高於6.0版本,強行編譯則會出現error: #error – unsupported GNU version! gcc versions later than 6 are not supported!錯誤。故手動對gcc進行降級,這裏安裝gcc6版本,gcc-6和g++ -6,大家可以自行決定版本,只要比錯誤中提到的支持上限小就沒問題:
sudo apt-get install gcc-6
sudo apt-get install g++-6
通過命令替換掉之前的版本:
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-6 50
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++ -6 50
最後通過gcc --version命令再次查看版本是否修改成功,如圖所示,gcc安裝成功。
4.3 安裝CUDA
在我們安裝runfile之前,我們需要安裝一些依賴關係,否則安裝時出現類似Missing recommended library: libGLU.so這樣的警告。
運行下面的命令安裝缺少的依賴關係。
sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev
安裝後,找到剛纔下載的run文件,運行
sudo sh cuda_9.0.176_384.81_linux.run
注意:在安裝過程中會提示是否需要安裝顯卡驅動(Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 384.81?),由於之前已經安裝過顯卡驅動程序,在這裏要選擇n,其他的選擇y或者回車鍵進行安裝,正確安裝結果如下圖所示:
可以選擇繼續安裝下載的四個補丁文件,也可以不安裝,安裝命令如下:
sudo sh cuda_9.0.176.1_linux.run.1_linux-run
sudo sh cuda_9.0.176.2_linux.run.2_linux-run
sudo sh cuda_9.0.176.3_linux.run
sudo sh cuda_9.0.176.4_linux.run
安裝成功後,結果如下圖
4.4 配置CUDA環境變量
完成以上的步驟以後一定要進行環境的配置。按步驟輸入一下命令:
sudo gedit ~/.bashrc
會彈出一個可寫的配置文件,在末尾把以下配置寫入並保存。
export PATH=/usr/local/cuda-9.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
最後執行
source ~/.bashrc
有時候也需要重啓。最好重啓一下。
4.5 測試
在安裝cuda的時候也相應的安裝了cuda的一些例子,可以進入例子的文件夾然後使用make命令執行。
從網上找了兩個例子,例一:
# 第一步,進入例子文件
cd /usr/local/cuda-9.0/samples/1_Utilities/deviceQuery
# 第二步,執行make命令
sudo make
# 第三步
./deviceQuery
如果結果有GPU的信息,顯示Result=pass,則測試通過,說明安裝成功。
5. 安裝cuDNN
5.1 下載cuDNN
安裝好CUDA9.0後,接下來就安裝cuDNN,進入cuDNN下載頁面,地址:https://developer.nvidia.com/rdp/cudnn-archive
選擇Download cuDNN v7.1.4 (May 16, 2018), for CUDA 9.0 -> cuDNN v7.1.4 Library for Linux下載。下載需要註冊一個NIVDIA賬號。
5.2 安裝cuDNN
此處有兩種方法可以安裝,分別介紹一下:
方法1:
將cuDNN v7.1.4 Library for Linux鏈接的文件下載好後,進入下載的文件夾,解壓文件,複製cuDNN內容到CUDA相關文件夾內,具體操作命令如下:
tar -zxvf cudnn-9.0-linux-x64-v7.tgz
sudo cp cuda/include/cudnn.h /usr/local/cuda-9.0/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda-9.0/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda-9.0/lib64/libcudnn*
通過以上步驟就可以安裝好cuDNN了。
方法2:
下載如圖所示的三個文件,cuDNN v7.1.4 Runtime Library for Ubuntu16.04 (Deb)、cuDNN v7.1.4 Developer Library for Ubuntu16.04 (Deb)和cuDNN v7.1.4 Code Samples and User Guide for Ubuntu16.04 (Deb)
安裝命令如下:
sudo dpkg -i libcudnn7_7.1.4.18-1_cuda9.0_amd64.deb
sudo dpkg -i libcudnn7-dev_7.1.4.18-1_cuda9.0_amd64.deb
sudo dpkg -i libcudnn7-doc_7.1.4.18-1+cuda9.0_amd64.deb
以上方法選擇其中一個安裝就行。
5.3 測試
以下測試方法僅限於用上述方法2的安裝過程,上述方法1雖然可以安裝cudnn,但是卻不知道怎麼用官方樣例代碼測試cudnn是否安裝成功(感覺可以通過訓練的時間對比一下分析出是否安裝成功),cuDNN安裝成功後會在CUDA加速的基礎上再加速1.5倍左右。
安裝完以後需要進行測試是否安裝成功,測試的過程如下圖所示:
運行以下命令
cp -r /usr/src/cudnn_samples_v7/ $HOME
cd $HOME/cudnn_samples_v7/mnistCUDNN
make clean && make
./mnistCUDNN
最終如果有提示信息:“Test passed! ”,則說明安裝成功,如圖所示:
6. 安裝深度學習框架
6.1 安裝TensorFlow
TensorFlow官方文檔會指定每一個TensorFlow GPU版本所依賴的python、cuDNN、GPU顯卡驅動和CUDA的版本。在安裝的時候一定注意版本的對應關係,若Python、cuDNN、GPU顯卡驅動和CUDA的版本有低於TensorFlow GPU 要求的版本,在安裝和使用過程中會出現錯誤。下表是TensorFlow GPU在Linux系統下版本對應表。
TensorFlow GPU | python | cuDNN | CUDA |
---|---|---|---|
1.12 | 2.7、3.3-3.6 | >=7.2 | 9 |
1.11 | 2.7、3.3-3.6 | >=7.2 | 9 |
1.10 | 2.7、3.3-3.6 | 7 | 9 |
1.9.0 | 2.7、3.3-3.6 | 7 | 9 |
1.8.0 | 2.7、3.3-3.6 | 7 | 9 |
1.7.0 | 2.7、3.3-3.6 | 7 | 9 |
1.6.0 | 2.7、3.3-3.6 | 7 | 9 |
1.5.0 | 2.7、3.3-3.6 | 7 | 9 |
1.4.0 | 2.7、3.3-3.6 | 6 | 9 |
1.3.0 | 2.7、3.3-3.6 | 6 | 9 |
1.2.0 | 2.7、3.3-3.6 | 5.1 | 9 |
1.1.0 | 2.7、3.3-3.6 | 5.1 | 9 |
1.0.0 | 2.7、3.3-3.6 | 5.1 | 9 |
這裏我們安裝的是1.12版本,終端直接用pip3 install tensorflow-gpu命令安裝即可。
6.2 測試TensorFlow框架
寫一個hello, world,測試一下安裝的框架是否可以正常使用
import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()
print(sess.run(hello))
運行成功後如圖所示:
如果運行發現錯誤提示:ImportError: libcublas.so.9.0: cannot open shared object file: No such file or directory
錯誤原因及解決方法如下:
原因1:cuda9.0以及cudnn7未能安裝或正確安裝。
解決方案:安裝cuda及對應cudnn,已安裝情況下檢查路徑usr/local/cuda-9.0/lib64下是否有 libcublas.so.9.0文件
原因2:tensorflow版本與cuda不對應。
解決方案:檢查版本對應,並適當升級。
原因3:路徑未加入環境
解決方案:sudo gedit ~/.bashrc 在文檔尾部加上
export LD_LIBRARY_PATH=LD_LIBRARY_PATH:/usr/local/cuda-9.0/lib64/
如果之前添加過但寫法與此不同,仍然報錯,請按此格式添加,改成上邊的寫法就不報錯了。
添加完路徑之後別忘了執行source ~/.bashrc
6.3 安裝PyTorch
通過查閱pytorch官網,根據我們的系統環境,得知安裝方法如下圖所示
如果你是其他配置,可以進官網進行查看如何安裝,這裏我們執行以下命令安裝PyTorch,
pip3 install torch torchvision
6.4 測試PyTorch框架
安裝好後,我們寫個程序測試一下是否安裝成功
import torch as t
x = t.rand(5,3)
y = t.rand(5,3)
if t.cuda.is_available():
x = x.cuda()
y = y.cuda()
print(x+y)
運行後如果有下圖中的輸出,則代表成功調用GPU加速並且pytorch安裝成功,否則沒有成功調用。
6.5 安裝並配置PyCharm
此過程可以參考我之前寫的一篇博文:https://blog.csdn.net/IT_xiao_bai/article/details/79171703
在這裏就不贅述了。
總結
至此,深度學習的環境配置基本完成,接下來就開始進行深度學習之旅吧~
ps:歡迎大家轉載,轉載請註明出處https://blog.csdn.net/IT_xiao_bai/article/details/84782311