華碩超算伺服器Ubuntu+CUDA+cuDNN+Anaconda+Tensorflow/PyTorch環境搭建
【2018年8月3日更新】對於一些步驟進行了說明與調整,增加了一些可能遇到的問題。
目錄
實驗室新上的華碩超算伺服器,型號:華碩ESC8000G3,CPU為Intel至強E5系列,記憶體128G,八塊GeForce GTX TITAN X,Maxwell架構,CUDA核心3072個,28nm工藝,視訊記憶體位寬384bit,單個視訊記憶體12GB。
系統:Ubuntu16.04.0 Server(伺服器版,不要桌面版)
因為CUDA官網說16.04的核心需要是4.4(編譯版本5.3.1),所以裝的這個,16.04裝完以後gcc編譯器版本就是5.4了,沒什麼太大影響,唯一的影響可能是在裝驅動的時候提示CC版本不一致的問題。之前裝過一個Desktop版(16.04.4)的卡的要死。。。
從機器買回來一直在摸索,然後就在系統配置上算起來也搞了三四天了,好在終於搞好了。。。
但問題是這個機器還有一個集顯,所以驅動裝好以後集顯就掛了,獨顯還沒有影象顯示。。。
然後摸索了兩天依舊老樣子,氣的第二天裝了Windows Server。但是還得用Linux啊(畢竟有些GitHub程式碼復現的時候由於環境變數的原因可能會出錯,大公司用的都是Linux系統),然後又一次跳進了坑。。。
各種需要的軟體可以在這裡下:http://pan.baidu.com/s/1boDrpiJ (密碼:4xko),應有盡有,歡迎來取。
一、Ubuntu16.04 Server安裝(有坑注意)
安裝參考:http://www.360doc.com/content/17/0222/11/17572791_631069401.shtml
系統安裝沒有什麼大的問題,參考教程就可以了,建議英文版,因為中文版進命令列模式之後各種方片,提示資訊什麼的就相當於直接廢了。另外圖形介面可以選擇性安裝,因為後面裝驅動可能圖形介面就掛了。但是有圖形介面TeamViewer就可以遠端訪問,而且也能傳輸檔案,挺方便的(Ubuntu安裝TeamViewer參考:點選此處訪問)。
安裝圖形介面(可選):
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install ubuntu-desktop
★此過程可能存在的問題:
(1)可移動磁碟安裝完畢後重啟進入grub rescue模式。這個估計就是磁碟分割槽的時候/boot沒弄好,建議分的時候別自己分了,直接安裝在整個磁碟就行,出現這個問題還是重灌好了。。。
(2)安裝過程提示UEFI安裝可能存在問題。這個問題在開機之後進入BIOS,然後再Boot中選擇沒有UEFI啟動,再安裝就可以了,伺服器的Secure boot項我已經關了。
(3)下載的ISO安裝檔案不完整,安裝可能失敗。解決這個問題,就只能儘量從官網下載完整的安裝包了。我下了16.04.0、16.04.1、16.04.4,下了3個,只有16.04.0可以用。。。其他的在安裝過程會提示沒有插入CDROM或者提示安裝失敗。。。
(4)安裝好圖形介面之後切記不要更新核心!不要更新核心!不要更新核心!更新核心導致原來的顯示卡驅動崩潰,系統都進不去。。。這個問題已經崩潰了好幾次,記得進去圖形介面以後先把更新關掉吧。。。
二、安裝Nvidia 顯示卡驅動(重點大坑,嚴加防範)
安裝參考:http://blog.csdn.net/u012581999/article/details/52433609
http://blog.csdn.net/chaihuimin/article/details/71006654
http://blog.csdn.net/u012759136/article/details/53355781
1、解除安裝有關Nvidia的所有驅動:sudo apt-get remove --purge nvidia*
2、然後禁用nouveau驅動:
(1)建立一個檔案通過命令:sudo vim /etc/modprobe.d/blacklist-nouveau.conf
(2)並新增如下內容:
blacklist nouveau
options nouveau modeset=0
(3)再更新一下
sudo update-initramfs -u
(4)修改後需要重啟系統。確認下Nouveau是已經被你幹掉,使用命令: lsmod | grep nouveau
3、重啟之後進入文字模式(命令列)介面,用賬戶登入,然後關閉X-Window服務:sudo service lightdm stop
4、安裝顯示卡驅動:
(1)給run檔案賦予執行許可權(檔名可能由於版本不同而不同):sudo chmod a+x NVIDIA-Linux-x86_64-xxx.xx.run
(2)安裝,注意引數:sudo ./NVIDIA-Linux-x86_64-xxx.xx.run –no-opengl-files
【引數】
- –no-opengl-files 只安裝驅動檔案,不安裝OpenGL檔案。這個引數最重要
- –no-x-check 安裝驅動時不檢查X服務
- –no-nouveau-check 安裝驅動時不檢查nouveau
(後面兩個引數可不加)
5、重啟之後可能存在圖形介面無法進入的問題,需要關閉X-Window服務,然後進入文字模式之後。複製/etc/X11下的xorg.conf.failsafe檔案到該目錄下為xorg.conf即可。然後重啟X-Window服務。
★此過程可能存在的問題:
(1)關機之後驅動有時正常,有時崩掉需要重灌驅動。。。也不知道是系統的問題還是驅動的問題,崩潰。
(2)安裝驅動的時候會檢查核心編譯版本以及當前gcc版本是否一致,存在不一致會詢問是否繼續安裝。 可以選擇更換(更換gcc版本參考:點選此處訪問),也可以不更換。
(3)重點的大坑就是安裝完驅動之後可能有迴圈重啟的問題或者集顯掛掉的問題。解決問題可以參考第三個安裝參考或者上面的第5步。
(4)當/etc/X11下沒有xorg.conf.failsafe時,首先進入命令列模式,關閉X-Window服務,然後使用命令sudo Xorg -configure,會在家目錄下(即“~”)生成一個xorg.conf.new的檔案,可以將此檔案拷貝到/etc/X11下命名為xorg.conf。重啟X-Window服務即可。(參考:點選此處訪問)
三、安裝CUDA9/CUDA8
安裝參考:http://blog.csdn.net/u014595019/article/details/53732015
既然顯示卡驅動已經裝好了,所以CUDA安裝過程中就不要裝驅動了(第一個提示是否安裝nvidia driver什麼的選no即可,後面如果還有opengl選no,其他的yes、路徑預設即可)。切記:一定不要再裝顯示卡驅動!
基本上走到這一步就沒有坑了,後面安裝起來還是比較輕鬆的。
四、安裝cuDNN7/cuDNN6
安裝參考:http://blog.csdn.net/u014595019/article/details/53732015
這個就比較簡單了,從官網下載就好了,官網下載需要填一個類似調查問卷的東西。
主要就是解壓,然後將幾個檔案拷貝到相應位置。(下面以cuDNN6為例,cuDNN7過程一樣)
tar -xvf cudnn-8.0-linux-x64-v6.0.0.tgz
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
sudo chmod a+r /usr/local/cuda/lib64/libcudnn*
五、安裝Anaconda(Python3.6)
安裝參考:http://blog.csdn.net/gjq246/article/details/70848831
這個也好說,就是注意配置環境變數的地方一定寫上yes就好了。
另外,conda命令也是搭建環境中經常用到的,可以參考:http://blog.csdn.net/menc15/article/details/71477949
六、安裝Tensorflow(GPU版)/PyTorch
裝好Anaconda之後直接命令走起安裝Tensorflow(GPU版,2018年8月2日最新版本為1.9):
pip install tensorflow-gpu
安裝PyTorch(2018年8月2日最新版本為0.4.1):
(1)CUDA9:pip install torch torchvision
(2)CUDA8:pip install http://download.pytorch.org/whl/cu80/torch-0.4.1-cp36-cp36m-linux_x86_64.whl
pip install torchvision
★此過程可能存在的問題:
sudo pip命令提示不存在,原因是sudo預設只能使用系統命令,無法使用$PATH下命令,解決參考:點選此處訪問。
七、測試並行GPU
從《TensorFlow實戰Google深度學習框架》的第十章中找的程式碼進行執行,錯誤還是有(因為現在的TF版本已經到1.3了,各種API的改動也不在少數,所以還需要進行一定的修改),改了之後能跑,目前有一個程式碼錯誤還未解決。
程式碼錯誤目前已解決,程式碼:https://github.com/CNU105/GPU-Test。
執行過程中GPU狀態圖: