1. 程式人生 > >ubuntu14.04.5 + 1080ti + CUDA8.0 深度學習伺服器配置折騰手記

ubuntu14.04.5 + 1080ti + CUDA8.0 深度學習伺服器配置折騰手記

       本人末流211自動化系菜雞小博一枚,因組內是研究機器學習的,所以一直想整臺伺服器提升工作效率。本系不是主幹專業,比較窮,系裡並不想給配一臺深度學習伺服器。但經過本人不斷的找系主任,導師哭訴,最終還是申請了一臺低配的伺服器。倒騰了四天,參考了網上無數大神的部落格,終於將深度學習環境搭建起來了,遂將配置過程記錄,與廣大未踩坑的同行分享一下經驗。

1、伺服器配置

        平臺:LT-7084GR-TR

        CPU:Intel(R)Xeon(R) CPU E5-2630 v3 @ 2.40GHz * 2

        記憶體:16GBDDR4 2133 * 2

        硬碟:希捷2T

        SSD:240G

        顯示卡:GTX1080TI* 2

2、安裝順序

        Ubuntu系統 + CUDA + 顯示卡驅動 + Anaconda + 各種深度學習框架

3、安裝方法

       (1) Ubuntu系統安裝:

本機安裝的是Ubuntu14.04.5版本,建議不使用Ubuntu16.04.3版本,本機安裝這個版本後出現莫名卡頓,其他版本未知,根據安裝後的實際效果決定是否選用。

       本機通過U盤啟動安裝,系統從Ubuntu官網(http://www.ubuntu.org.cn)下載即可,檔案下載下來是iso的映象檔案,準備一個空U盤,將其做成U盤啟動盤。然後,將U盤插到伺服器上,在啟動時按F11(只是針對本伺服器,其餘裝置看開機時的提示)進入BIOS介面,用U盤啟動,接下來,將進入系統安裝介面。

       安裝系統時,語言選成英文,易於在遠端終端定址,其餘選項像時區,安裝第三方軟體什麼的都可以隨意,對於本伺服器而言,不用刻意分割槽,直接選擇將原來的資料抹去直接預設安裝即可(若不是新機還是查詢網上的自定義安裝教程,因為這樣會將硬碟中的資料抹去),但系統要選擇安裝在固態硬碟中。另外要注意的是,安裝的時候需要填寫使用者名稱與密碼,填寫完後要記住,登入介面要用。總的來說,系統安裝過程每一步都有提示,按部就班來就行。

       (2) 配置一些東西:

先獲取root許可權,這樣可以不用頻繁的輸入sudo來申請安裝許可權:若是後文的一些安裝指令執行不了,如果不是拼寫錯誤,就是沒有開啟

root許可權,可以在語句前加sudo再執行,或者使用下文我提到的方法。

       登入設定的賬戶,輸入Ctrl+Alt+T開啟一個命令終端,在終端輸入:sudo passwd root,這時命令中會提示設定密碼,根據需要設定一個即可。注意,linux系統在輸入密碼時不會出現字元,跟沒輸入一樣,輸完密碼直接回車就行。這樣我們以後就能隨時開啟root許可權了。

       之後,我們接著在這個終端輸入su root,輸入剛才設定的密碼後root許可權開啟(注意,這是你新設定的密碼,不是登入密碼,當然,設定成一樣的密碼也可以)。我們安裝一下SSH Server,以便以後遠端連線,通過別的電腦控制這個電腦。輸入apt-get installopenssh-server,等待安裝完畢即可。

       接下來還是在這個終端下,更換一下Ubuntu的源。先找到源的地址,輸入:cd/etc/apt/,然後給以前的源做一個備份,輸入:cpsources.list sources.list.bak,最後通過文字編輯器開啟原始檔,輸入:geditsources.list。開啟檔案後,將檔案中http://....../ubuntu/省略號中的內容刪去,替換成mirrors.163.com(源的選擇有很多,有中科大的,阿里雲的等等,選一個就行,總之就是為了更新提速)。但注意的是,檔案最後的幾條保持不變,保持不變的我列在了下文:       

deb http://security.ubuntu.com/ubuntutrusty-security main restricted

deb-srchttp://security.ubuntu.com/ubuntu trusty-security main restricted

deb http://security.ubuntu.com/ubuntutrusty-security universe

deb-srchttp://security.ubuntu.com/ubuntu trusty-security universe

deb http://security.ubuntu.com/ubuntutrusty-security multiverse

deb-srchttp://security.ubuntu.com/ubuntu trusty-security multiverse

deb http://extras.ubuntu.com/ubuntutrusty main

deb-src http://extras.ubuntu.com/ubuntutrusty main

替換好了以後,點選儲存檔案。然後更新源和更新已經安裝的包:       

sudo apt-get update

sudo apt-get upgrade

緊接著,再安裝一些之後需要的包:  

apt-getinstall vim ssh g++ freeglut3-dev libxmu-dev libxi-dev

到此為止,一些基本的配置工作結束了。
       (2) CUDA與顯示卡驅動的安裝(重中之重,完全按照步驟來,不要隨意發揮)

       首先,根據你的顯示卡選擇合適的驅動版本,這個可以通過NVIDIA的官方網站提供的http://www.nvidia.cn/Download/index.aspx?lang=cn進行驅動型號查詢與下載,下載.run格式的驅動,我們下載的是NVIDIA-Linux-x86_64-384.69.run。

       接著,網上搜索合適的CUDA版本,這個版本主要是根據深度學習框架的要求來選擇,例如目前Tensorflow官網要求CUDA8.0,那麼我們就下這個版本。過幾年,這個應該會改變,到時候再更新。這次下載的CUDA的檔名是cuda_8.0.61_375.26_linux-run。再就是要下載cudnn,直接百度搜索cudnn,官網會給出對應不同的CUDA匹配什麼版本的cundnn,選一個合適的即可,我們選的檔名是cudnn-8.0-linux-x64-v5.1.tgz(這個版本的cudnn只支援到tensorflow1.2,若要用最新的tensorflow,請下載cudnn6.0系列)。

      下載工作準備好了,我們再次確認一下,是不是以下三個檔案,並將這三個檔案放到Downloads檔案下:

      cuda_8.0.61_375.26_linux-run

      NVIDIA-Linux-x86_64-384.69.run

      cudnn-8.0-linux-x64-v5.1.tgz

確認無誤後進行下一步。

       按ALT+CTRL+F1,進命令列,在login出輸入root,回車後再輸入你的root密碼。接著輸入:servicelightdm stop,關閉圖形介面。再輸入:

       apt-get--purge remove nvidia-*,刪除自帶的顯示卡驅動。

接下來的這一步很關鍵,要禁用自帶的顯示卡驅動,新建黑名單,禁止系統自帶驅動:nanoetc/modprobe.d/blacklist-nouveau.conf,注意,nano是在命令端開啟檔案,用上下左右將游標移動到檔案末尾,加上兩行:

       blacklistnouveau

       optionsnouveau modset=0

然後按Ctrl+O儲存,再按回車,然後再按Ctrl+X,退出這個文件。接著,再輸入:update-initramfs-u,然後再輸入:reboot以重啟電腦。等待片刻,開機後,不要登入,直接在登入介面按ALT+CTRL+F1,直接進入命令列。在login出輸入root,回車後再輸入你的root密碼。輸入lspci| grep nouveau,如果啥都沒顯示的話,那就說明自帶的顯示卡驅動禁用成功了。如果不成功,再試試,一定要禁用成功才能進入下一步。

       輸入servicelightdm stop,關閉圖形介面。先後輸入三句,安裝CUDA:

       cd/home/automation/Downloads  # automation是我設定的賬戶名,讀這個路徑是因為我把下載的東西都放這裡了

       chmoda+x cuda_8.0.61_375.26_linux-run

       ./cuda_8.0.61_375.26_linux-run

安裝開始有個說明,很長,按q跳過,之後有許多選項,都是接受,但是是否安裝自帶的375.26版本的驅動一定要選no。等待安裝,安裝完成後安裝NVIDIA顯示卡驅動,輸入:

       chmod a+x NVIDIA-Linux-x86_64-384.69.run

       ./ NVIDIA-Linux-x86_64-384.69.run --no-opengl-files

不安裝opengl因為可能會影響桌面登入,會陷入登入介面無限迴圈的境地,進入安裝後一樣會提示很多東西,提示是否升級X config配置檔案選yes,其他都預設。

       安裝完成,下面開始給CUDA配置環境變數:

       nano /etc/profile

開啟文字,將游標移動到末尾,加上兩句話:

       export PATH=$PATH:/usr/local/cuda-8.0/bin

       exportLD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-8.0/lib64

然後按Ctrl+O儲存,再按回車,然後再按Ctrl+X,退出這個文件。緊接著,輸入:source /etc/profile,使文件生效。輸入:which nvcc,看看環境變數生效沒有。最後,編譯一些算例可以驗證安裝是否成功:

       cd /usr/local/cuda-8.0/samples/1_Utilities/deviceQuery

       make

       ./deviceQuery

至此,CUDA和顯示卡驅動安裝完成,若是算例驗證報錯了,最後將這兩個全部刪除重新安裝,解除安裝CUDA:
       sudo/usr/local/cuda-8.0/bin/uninstall_cuda_8.0.pl

解除安裝NVIDIA驅動:

       sudo/usr/bin/nvidia-uninstall

最後,我們再安裝一下CUDNN:

       cd/home/automation/Downloads

       tar -zxvfcudnn-8.0-linux-x64-v5.1.tgz

       cd cuda

       cp lib64/lib*/usr/local/cuda/lib64/

       cp include/cudnn.h/usr/local/cuda/include/

       cd /usr/local/cuda/lib64/

       chmod +r libcudnn.so.5.1.10

       ln -sf libcudnn.so.5.1.10libcudnn.so.5

       ln -sf libcudnn.so.5libcudnn.so

       ldconfig

       至此為止,深度學習需要的gpu加速工具差不多裝好了,重啟下電腦:reboot。稍等片刻後或許會發現解析度怎麼這麼低!趕緊登陸下賬號,看看能不能進系統,要是能進,好,那還有救。要是螢幕黑了一下,又回到登陸介面,那麼你一定是在安裝顯示卡驅動時沒有嚴格執行:

       ./NVIDIA-Linux-x86_64-384.69.run --no-opengl-files

如果陷入無限迴圈,那隻能Alt+Ctrl+F1進入命令列把CUDA和顯示卡驅動解除安裝了重新安裝一遍。要是能進入系統,只是解析度低,那麼沒問題,馬上給出解決方案。

       按Alt+Ctrl+F1進入命令列,root登入後(之前已經講兩遍了),輸入:

       nano /etc/X11/xorg.conf

開啟這個檔案,對照以下內容修改(只修改標紅了的註釋了的地方)

    Section"Monitor"

    Identifier "Monitor0"

    VendorName "Unknown"

    ModelName "Unknown"

    HorizSync31.5 - 61.0 %這個地方修改

    VertRefresh 50.0 - 75.0 %這個地方修改

    Option "DPMS"

EndSection

Section"Device"

    Identifier "Device0"

    Driver "nvidia"

    VendorName "NVIDIA Corporation"

EndSection

Section"Screen"

    Identifier "Screen0"

    Device "Device0"

    Monitor "Monitor0"

    DefaultDepth 24

    SubSection "Display"

        Depth 24

    Modes"1024×768" %原先沒有這一句新增進去的

    EndSubSection

EndSection

       好的,改好後檢查下Ctrl+O,回車,Ctrl+X退出文件編輯。輸入:reboot,在重啟一下電腦,這次,重啟後分辨率就應該正常了。

       (2) Anaconda以及各個深度學習框架配置

       python就不要用自帶的了,去Anaconda上下載一個Linux版本,python2還是python3自己選擇,其實兩個可以同時配置,具體方法網上很多。安裝好了以後再安裝一些深度學習框架,例如tensorflow,caffe,caffe2,pytorch,theano,mxnet等等,這些相比於之前安系統與CUDA簡單太多,自己根據需要搜尋吧,這裡就不一一列舉了,唯一要提示的是安裝這些框架的gpu版本。