1. 程式人生 > >環境配置錄——Ubuntu16.04下Anaconda+TensorFlow1.8+CUDA9.1+CuDNN7.0.5+Torch7的安裝

環境配置錄——Ubuntu16.04下Anaconda+TensorFlow1.8+CUDA9.1+CuDNN7.0.5+Torch7的安裝

首先,電腦的系統是Ubuntu 16.04硬體是GTX1080Ti,因為要用到GPU加速,所以要裝顯示卡驅動和CUDA。
打算安裝的東西和大概步驟按下面的來:
1. Anaconda(最容易裝,最先說其實是因為貧僧最先下載好了這個軟體的安裝包。。。)
2. 顯示卡驅動
3. CUDA9.1(目前TensorFlow官方不支援9.1版本,所以不想從原始碼開始編譯的話就裝9.0版的吧)和CuDNN
4. TensorFlow1.8.0(裝在Anaconda建立的虛擬環境裡面)
5. PyTorch(這個其實也不難裝)
6. Torch7

話說伺服器已經配置好了SSH和VNC,這個比較簡單就不多說了,網上大把的教程,夠用了。
話說回來最好不要想著跑虛擬機器裡面,因為nVidia大部分的民用卡(Geeforce那些卡,說白了就是不是專業卡的那些顯示卡,例如貧僧這臺伺服器的GTX 1080Ti)不支援顯示卡直通,而且就算支援也不怎麼穩定,所以。。。還是讓系統跑在物理機上吧。

然後就是如果懶的話還是用CUDA9.0吧,用別人已經編譯好了的比較方便,不然還要像貧僧一樣自己編譯原始碼來安裝。

安裝Anaconda

其實比較簡單,所以這裡隨便說一下就行,主要步驟就是從官網下載好對應的linux安裝包(.sh字尾的),然後直接跑,一路按回車或輸入yes就行了。
這裡寫圖片描述
選擇自己喜歡的版本就行了,貧僧通常都是選python3。。。
Anaconda安裝不難,實在不行可以參考後面附上的連結。
通常安裝路徑按照預設的就行了,如果要給機器上所有使用者安裝的話就安裝在/opt路徑下。

顯示卡驅動

通常的畫風是這樣的,先從官網手動下載對應自己顯示卡型號的驅動,然後直接裝就行了。
這裡寫圖片描述


這裡寫圖片描述
不過要注意的是CUDA對顯示卡驅動的版本要求:
這裡寫圖片描述
上傳到伺服器上面然後再那個資料夾下面直接輸入下面的指令執行指令碼:

sudo sh NVIDIA*

注意是要執行你剛剛上傳上去的指令碼,上面這行其實是運行當前目錄下NVIDIA開頭的指令碼,貧僧默認了當前目錄裡面沒有其他NVIDIA開頭的指令碼(除了剛剛上傳的),如果有就要把指令碼名字寫全一點。

在貧僧的伺服器上一路Accept和Yes就行了,不需要額外的設定,但是讀者最好先了解一下這些設定的影響,不同系統可能要的設定不一樣。

安裝完之後直接重啟圖形介面:

sudo service lightdm start

貧僧一時衝動直接重啟整臺機器了。。。其實沒必要這麼幹。
啟動之後試試nvidia-smi

看看有沒有輸出顯示卡資訊,有的話就成功了。
這裡寫圖片描述

安裝CUDA9.1

一時衝動就裝了這個版本的,其實用CUDA9.0更加方便,可以直接用別人編譯好了的tensorflow來安裝。
安裝依賴包:

sudo apt-get install g++ freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libglu1-mesa libglu1-mesa-dev

開始安裝:

sudo sh cuda*

然後除了Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 387.26選no之外其他都預設或者yes就可以了,這裡選no是因為前一個步驟已經裝過了一個比較新的驅動了,沒必要重新裝。

然後新增下面兩行到~/.bashrc

export PATH=/usr/local/cuda-9.1/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-9.1/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

不要把後面的${PATH:+:${PATH}}省略了。。。不然等等一堆命令找不到路徑(包括lsvim)。。。遇到這種情況看這個文章

然後就是喜聞樂見的測試了:
1. 轉移到你安裝的cuda目錄的samples目錄下,貧僧的是/usr/local/cuda-9.1/samples
2. 進入到samples目錄下的/1_Utilities/deviceQuery,記得複製備份一份,不要改動原檔案
3. 記得不要移動資料夾,不然要在make的時候另外配置引用庫的路徑,就在samples目錄下的你複製出來的新的deviceQuery目錄裡面進行make操作
4. 等編譯完成之後就可以執行生成的可執行檔案了,一切正常的話應該會輸出伺服器的配置的說
測試通過的話基本上CUDA就安裝好了。

CuDNN配置

其實這個不是安裝的,只需要配置一下。
先解壓從官網下載到的cudnn壓縮包(記得登陸,不然沒什麼下載選項,或者只能下載到老的cudnn檔案):

tar -zxvf cudnn*

然後用官方文件裡面的安裝方法就可以了:

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*

不過貧僧直接這麼做之後貌似用不了。。。應該是解壓縮或者移動的時候連結被破壞了。後來乾脆懶得用壓縮包了,直接從官網下了個libcudnn7_7.0.5.15-1+cuda9.1_amd64.deb,直接裝這個包,懶得自己配置。

安裝TensorFLow

最先做的必須是建立一個虛擬環境:

conda create -n tf1.8 python=3.6

tf1.8只是名字,可以改成自己喜歡的,python=3.6是python版本設定,這裡用了3.6的,也是可以改成自己喜歡的。。。

等建立好之後就可以直接source activate tf1.8來進入虛擬環境,然後安裝你想要的tensorflow版本,如果安裝了CUDA 9.0的話可以直接使用pip來安裝,就不用從原始碼開始編譯。

pip install *.whl

已經下載好了並且放在了執行命令時處在的目錄下,所以可以這麼做直接安裝。

上面的是CUDA9.0的時候的安裝方法,如果像貧僧一樣作死安裝了比較新的9.1或者更加新的9.2版本的話還是老老實實地按照這裡的教程來直接從原始碼進行編譯安裝吧。。。

測試
先進入虛擬環境:

source activate tf1.7

然後開始測試:

$ python
...
>>> import tensorflow as tf
>>> hello = tf.constant('Hello, TensorFlow!')
>>> sess = tf.Session()
>>> print(sess.run(hello))
Hello, TensorFlow!
>>> a = tf.constant(10)
>>> b = tf.constant(32)
>>> print(sess.run(a + b))
42

安裝PyTorch

直接用官方給的指令:

pip install http://download.pytorch.org/whl/cu91/torch-0.4.0-cp36-cp36m-linux_x86_64.whl
pip install torchvision

安裝Torch

git clone https://github.com/torch/distro.git ~/torch --recursive

然後在torch目錄裡:

bash install-deps

等指令跑完之後

./install.sh

結果遇到了錯誤:

lib/THC/CMakeFiles/THC.dir/build.make:4243: recipe for target 'lib/THC/CMakeFiles/THC.dir/THC_generated_THCTensorMathPairwise.cu.o' failed
make[2]: *** [lib/THC/CMakeFiles/THC.dir/THC_generated_THCTensorMathPairwise.cu.o] Error 1
/pkgbuild/torch/torch/extra/cutorch/lib/THC/generic/THCTensorMath.cu(393): error: more than one operator "==" matches these operands:
            function "operator==(const __half &, const __half &)"
            function "operator==(half, half)"
            operand types are: half == half

/pkgbuild/torch/torch/extra/cutorch/lib/THC/generic/THCTensorMath.cu(414): error: more than one operator "==" matches these operands:
            function "operator==(const __half &, const __half &)"
            function "operator==(half, half)"
            operand types are: half == half

貧僧選擇了在~/.bashrc裡面加上這一句:

export TORCH_NVCC_FLAGS="-D__CUDA_NO_HALF_OPERATORS__"

source ~/.bashrc後再重新用上一條指令,開始安裝,這樣就沒遇到什麼問題了。
凡是出現選項之類的就直接yes吧。

最後:

source ~/.bashrc

如果出了錯看這裡
搞定。

測試

th -e "require 'cutorch'; require 'cunn'; print(cutorch)"

和在~/torch下

./test.sh

測試結果可能會告訴你有一兩個測試沒通過,其實可以不用管。。。可能是誤差比較大而已,重新跑可能錯誤就消失了(沒必要重新跑,其實已經是通過了的)。

話說回來,能不用就別用了。。。這個框架都不更新了。。。

到時候要刪除torch的話直接把torch目錄刪了就貌似可以了。

參考: