前幾天的GPU機器終于到貨,配置了3張1080Ti顯卡,詳細配置清單文章可以看這里5700刀打造3卡1080Ti深度學習機器。本文為配置GPU深度學習機器的詳細教程,包括顯卡驅動安裝,GUDA、CUDNN安裝,深度學習框架安裝等等,請按此教程從頭一步一步設置,過程中遇到所有問題都可以在這些步驟中找到解決方案,最折磨人的就是環境配置,這次因為secure boot的問題導致驅動失效,郁悶了兩三天……因此分享自己的經歷,讓大家少走彎路。
總體流程
安裝Ubuntu16.04及顯卡驅動
安裝CUDA、CUDNN 英偉達GPU加速框架
安裝深度學習環境
一、安裝Ubuntu16.04及顯卡驅動
安裝ubuntu16.04系統就不詳細解釋,網上有相關教程,可以點這里,建議選擇語言為英文。
這里詳細說明顯卡驅動安裝流程:
安裝顯卡驅動的大致流程為:進入命令行終端 --> 禁用lightdm桌面服務 --> 安裝驅動 --> 啟用lightdm桌面服務 --> 重啟進入BIOS關閉secure boot --> 重啟電腦
最重要的步驟為:重啟進入BIOS關閉secure boot,此步若不操作,驅動將不會起效!
ubuntu系統安裝完畢后,啟動時會進入X桌面,可以用U盤將所有提前下載好的驅動、CUDA安裝文件、CUDNN安裝文件、anaconda3安裝包等等文件拷貝到電腦中。
鍵盤上按下
ctrl + alt + F1
,進入命令行模式。ubuntu有命令行模式和X桌面模式,安裝驅動必須在命令行模式進行。禁用X桌面服務,命令行輸入:
sudo service lightdm stop
,此命令將關閉桌面服務,現在已經不能進入桌面模式(重啟電腦會重啟桌面服務)。禁用nouveau驅動。ubuntu默認使用自帶的nouveau驅動,在安裝NVIDIA驅動前,要先禁止nouveau驅動,詳細命令教程請點擊這里,參考當中的“禁用nouveau驅動”部分。
教程截圖:
5.添加ppa庫,通過ppa安裝顯卡驅動,注意不要從NVIDIA官網下載顯卡驅動,直接通過ppa安裝即可:
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update
sudo apt-get install nvidia-381
由于本機顯卡為GTX 1080Ti,截止到2017年7月7日,該顯卡最新穩定版驅動版本為381.22,因此安裝nvidia-381驅動。
安裝驅動過程中,若提示各種操作,一般都按accept同意。如果某一步提示你是否Disable Secure Boot,選擇ok,進行禁用secure boot。這時會要求你設置密碼,直接輸入12345678,再輸一次確認。安裝成功后,再次輸入sudo apt-get install nvidia-381
,會提示已經安裝驅動。
但此時輸入nvidia-smi
會提示無此命令,驅動沒有安裝好。這個提示是正常的,因為我們實際上還沒正式在BIOS禁用secure boot,現在先可以忽略這個警告。
二、安裝CUDA
緊接著上一部分,我們可以預先下載好CUDA安裝文件在桌面模式時放進電腦,下載地址點這里,請務必下載runfile文件(后綴為.run),不能是其它文件。
或者可以用wget進行下載:
wget https://developer.nvidia.com/compute/cuda/8.0/Prod2/local_installers/cuda_8.0.61_375.26_linux-run
下載完畢后,輸入:
sudo sh cuda_8.0.61_375.26_linux.run
,進行CUDA安裝。
安裝過程中會提示你進行一些確認操作,首先是接受服務條款,輸入accept確認,然后會提示是否安裝cuda tookit、cuda-example等,均輸入Y進行確定。但請注意,當詢問是否安裝附帶的驅動時,一定要選N!我們在第一部分已經安裝好最新的驅動,附帶的驅動是舊版本的而且會有問題,所以不要選擇安裝驅動。
稍等片刻等待安裝完成,這個時候可以使用此鏈接的教程,測試CUDA是否安裝成功。截圖如下:
最后是配置環境變量,此步很重要,不配置環境變量系統將無法知道CUDA是否被安裝:
輸入:sudo vi /etc/profile
,在底部插入以下兩句話:
export PATH=/usr/local/cuda-8.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:$LD_LIBRARY_PATH
然后按esc鍵,按下“:wq”(注意不包含雙引號,記得要包括冒號),然后回車退出。
最后輸入:source /etc/profile
,使設置生效。
以上步驟可以參考這篇文章:安裝配置 Ubuntu 14.04 + CUDA8.0 + cuDNN v5 + caffe
三、安裝CUDNN
CUDNN是NVIDIA用于加速深度學習的模塊,裝完CUDA之后就要裝這個,可以預先在其它電腦下載完畢,然后復制到本機中解壓。下載地址為:NVIDIA cudnn
注意要先注冊NVIDIA賬號,按確認條款后才能下載。
進入CUDNN存放的文件夾,輸入:
tar -xzf cudnn-8.0-linux-x64-v5.1.tgz
cd cuda
sudo cp lib64/* /usr/local/cuda/lib64/
sudo cp include/* /usr/local/cuda/include/
CUDNN就這樣安裝完畢,現在重啟lightdm服務,可重啟桌面模式:
sudo service lightdm start
最后可以重啟電腦了,馬上進入第四步,禁用Secure Boot!
四、禁用Secure Boot【重要!】
ubuntu16.04有個重要的特性,就是如果需要安裝第三方顯卡驅動(NVIDIA的就是第三方顯卡驅動),就必須在BIOS中禁用“安全啟動”模式(secure boot),否則第三方顯卡驅動將無法被啟動!
當第三部分結束后,輸入sudo reboot
重啟電腦,電腦重啟的那一刻,按下F2或者DEL鍵進入華碩的BIOS,這里只以華碩X99-E WS主板為例,其它主板請參考各自進入BIOS的方式。
此步驟可以直接觀看YouTube上的視頻,Disabiling ASUS Bios Secure Boot,國內的朋友請翻墻觀看,這里截了部分圖用于說明過程。
1.進入BIOS,點擊BOOT(啟動)菜單欄,往下選擇“Secure Boot”:
2.進入Secure Boot界面后,光標移動至“OS type”,選擇為“Other OS”:
然后點擊“Key Management”,進入界面。
3.選擇“Clear Secure Root Keys”,刪除安全啟動密鑰,刪除后就能禁止secure boot。
按下yes或comfirm,確認刪除:
4.按下F10,確認保存設置并重啟電腦:
成功禁用secure boot之后,重啟就能回到X桌面,Ctrl + Alt + T,調出命令行,輸入nvidia-smi
就能看見驅動信息:
恭喜你!已經成功安裝顯卡驅動和CUDA!你還可以輸入nvcc -V
來查看CUDA版本。
五、安裝Anaconda
anaconda是一款python集成安裝軟件,里面包含了所有機器學習所需要用到的庫,而且各種設置都自動設置妥當,無需人工安裝其它依賴,請務必使用anaconda,否則手動配置環境的過程將會相當漫長痛苦!
anaconda的歷史版本安裝包可以在以下鏈接找到:Anaconda installer archive,這里選擇Anaconda3-4.2.0-Linux-x86_64.sh,在本文寫成(2017年7月7日)之時,tensorflow最高只支持python3.5和python2.7,因此選擇此版本。
命令行cd到安裝包存放地址,輸入:Anaconda3-4.3.1-Linux-x86_64.sh
安裝anaconda,一路輸入Y,確認操作就行。
配置環境變量,命令行中輸入:sudo vi ~/.bashrc
在底部插入以下這一句:
export PATH=/home/ubuntu/anaconda3/bin:$PATH
然后輸入:source ~/.bashrc
,使設置生效。
可以輸入conda list python
查看python版本,其它詳細命令可以查看以下鏈接:Anaconda使用總結
六、更換pip源、conda源和apt-get源
在使用apt-get安裝ubuntu系統軟件,或者使用pip或conda命令安裝第三方python包時,由于鏡像都在國外服務器,國內的朋友使用這些命令安裝時會相當慢,因此需要更換這些鏡像為國內鏡像。
1.更換pip源:
cd到根目錄,命令行輸入:sudo mkdir .pip
,新建一個名為“.pip”的文件夾。
創建pip配置文件:sudo vi ~/.pip/pip.conf
,在vi界面中插入以下這句話:
[global]
index-url = https://pypi.douban.com/simple
然后按esc鍵,按下“:wq”(注意不包含雙引號,記得要包括冒號),然后回車退出。
即可把pip源更新為國內豆瓣鏡像,可參考這篇文章:pip 更換軟件鏡像源。
2.更換conda源
除了可以pip安裝之外,也可以使用conda install xxx
來安裝第三方python包,要更換為國內鏡像,創建配置文件:
sudo vi ~/.condarc
加入以下幾句:
channels:
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
- defaults
show_channel_urls: true
然后按esc鍵,按下“:wq”(注意不包含雙引號,記得要包括冒號),然后回車退出。
3.更換apt-get源
直接看這里:Ubuntu 14.04 更換阿里云源
備份舊版本:
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak #備份
修改文件:
sudo vim /etc/apt/sources.list
在底部加入以下語句:
deb http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse
保存退出。
七、安裝深度學習框架
1.安裝keras:
pip install keras
2.安裝tensorflow-gpu版本
pip install tensorflow-gpu
3.安裝ssh
我們使用其他windows電腦來連接這臺服務器,就要通過ssh進行連接,教程可以看這里:Ubuntu16.04安裝openssh
安裝ssh服務:
sudo apt-get install openssh-server
編輯配置文件:
sudo vi /etc/ssh/sshd_config
找到:PermitRootLogin prohibit-password,注釋掉此項
添加:PermitRootLogin yes
執行命令:sudo service ssh restart
4.配置jupyter notebook
jupyter notebook是一個基于web的編程交互界面,我們主要使用jupyter來進行算法測試、模型建模,jupyter notebook在安裝anaconda的時候就已經安裝了,這里我們需要配置一些參數,使得我們用其它電腦連接這臺主機的時候,可以在網頁上打開這臺主機的jupyter notebook。
詳細教程可以看這篇文章:遠程訪問jupyter notebook
這里提醒一點,如果發現用Xshell或putty連接到GPU主機后,命令行輸入:jupyter notebook
,然后在瀏覽器上輸入:“GPU主機的IP地址:8888”,若發現無法打開,則有可能是防火墻問題,禁止了jupyter的端口,可以在防火墻中通過端口,點擊看這篇教程:Ubuntu默認防火墻安裝、啟用、配置、端口、查看狀態相關信息
安裝防火墻:
sudo apt-get install ufw
開啟端口:
sudo ufw allow 8888
重啟后若發現還是不行,那就有可能是因為你設置了網絡代理,這時候要在你的瀏覽器設置取消全局代理:
上面的所有教程能解決jupyter notebook的設置問題,若還出現問題,請從頭再查看一遍此部分教程。
八、設置開機啟動進入命令行模式
我們要使用其他電腦來遠程連接這臺主機,就要設置開機進入命令行模式,設置只需一句命令,網上其它有關修改gurb的教程都不適用于ubuntu16.04:
sudo systemctl set-default multi-user target
重啟后就能直接進入命令行模式了。
九、所有下載鏈接總結
十、常見問題解答(TODO)
后面會寫出一些在配置過程中出現的一些問題,請關注或收藏本文,后面會補全此部分。