配置服務器
本文是爲了解決如下問題而寫的:
硬件:帶有獨立nvidia顯卡的計算機
系統:Ubuntu 18.04
目標:通過Anaconda創建Python深度學習虛擬環境
但是,本文包括了從硬件組裝、安裝系統、安裝顯卡驅動到配置深度學習實驗環境的內容,可以幫助讀者從零開始搭建一臺實驗室用於深度學習的服務器。
注意:安裝任何環境時,如果按照官方的installation guide能夠安裝成功,就請不要參考任何博客的內容!官方的指引文件一般是不會出錯的!
硬件選擇和組裝
硬件選擇
對於個人開發者,想要搞深度學習,建議租個雲主機。當然如果你想組個機子,可以往下看。
對於科研工作者,比如某研究生拿到一筆老闆的經費,想要配一個初步做深度學習的單機給做服務器,建議買整機,省心還保修。具體操作是買一臺遊戲主機,然後跟賣家確定主板支持Ubuntu,拿回來直接裝系統就可。
無論買整機還是組裝機,筆者推薦這樣的配置:
- 顯卡:一塊靠譜能用的顯卡,個人推薦N卡。
- 內存:至少32G.
- 硬盤:512固態+4T機械,固態視情況可以不要,機械的大小根據需求決定。
- 主板:確定能安裝Ubuntu;CPU型號有核顯;至少4核8線程。
注:
- 爲什麼推薦N卡:雖然Ubuntu不直接提供N卡驅動,但是作爲大廠,正確安裝並使用N卡的教程比較多,能更好地發揮性能。
- 爲什麼推薦有核顯的CPU:一開始裝系統的時候可以直接默認用核顯顯示,然後裝cuda的時候再一起安裝顯卡驅動和cuda,而不是像本文這樣先驅動後cuda。如果一起一起安裝顯卡驅動和cuda,按照installation guide一步一步操作,基本上不會失敗。
- 以上給出的配置屬於乞丐配置,可以按照工作需求往上加。另外對於有條件的實驗室,建議多卡/機羣。
以上給出的配置參考1。
硬件組裝
這個應該很好學,可以找到很多相關博客。
安裝Ubuntu系統
裝系統的教程很多,網上去查,或者參考我本人的博客也可。
爲了後續工作,安裝完需要做這樣幾件事:
1.保證網絡沒有問題,尤其是如果作爲服務器,需要安裝ssh server,確定其他機子能連的上。文件傳輸推薦使用軟件winscp.
2.保證目前軟件包爲全新: sudo apt update
, sudo apt gpgrade
3.安裝必要的軟件包:sudo apt install build-essential
,其中包括了gcc.
筆者這裏拿到的機子已經安裝好了系統,所以在這裏不多講了。
安裝顯卡驅動
檢測nvidia顯卡的存在
執行lspci | grep -i nvidia
,觀察輸出信息中有沒有你的nvidia設備。
01:00.0 VGA compatible controller: NVIDIA Corporation Device 1e82 (rev a1)
01:00.1 Audio device: NVIDIA Corporation Device 10f8 (rev a1)
01:00.2 USB controller: NVIDIA Corporation Device 1ad8 (rev a1)
01:00.3 Serial bus controller [0c80]: NVIDIA Corporation Device 1ad9 (rev a1)
注意到NVIDIA Corporation Device 1e82
就是我的GPU。然後去CUDA的官網查看自己的GPU版本是否在CUDA的支持列表中。
安裝顯卡驅動
首先需要保證,在設置-詳細信息-關於
中,你可以在圖形
一欄看到自己的顯卡型號。
運行ubuntu-drivers devices
查看設備和推薦安裝的顯卡驅動類型。1
== /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0 ==
modalias : pci:v000010DEd00001E82sv00007377sd00000000bc03sc00i00
vendor : NVIDIA Corporation
driver : nvidia-driver-430 - distro non-free
driver : nvidia-driver-435 - distro non-free recommended
driver : xserver-xorg-video-nouveau - distro free builtin
運行sudo ubuntu-drivers autoinstall
自動安裝所有驅動。在這一步,需要保證已經apt upgrade
,所有軟件包均爲最新。
新建用戶
參考2,新建用戶並按需要賦予sudo權限(我的建議是不賦予),這裏就不多贅述了。
在下面的介紹中,我的用戶名爲Chong。
安裝Anaconda
爲什麼要使用虛擬環境?因爲開發不同的項目可能需要不同的運行環境,所以不能總是重新配置環境。具體參考3
下載並安裝anaconda
以下所有操作請在自己的用戶下執行。
來到清華Anaconda鏡像站,在這裏找到所需版本的安裝包,下載並運行腳本進行安裝。安裝過程中一路yes就可以,除了最後是否安裝vscode那裏選no.
安裝完成之後,執行conda config --set show_channel_urls yes
,生成/home/Chong/.condarc
文件,之後編輯文件內容爲鏡像站頁面的那一堆文字:
channels:
- defaults
show_channel_urls: true
channel_alias: https://mirrors.tuna.tsinghua.edu.cn/anaconda
default_channels:
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/pro
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
custom_channels:
conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
然後運行conda clean -i
清除索引緩存,保證用的是鏡像站提供的索引。之後就可以創建虛擬環境了。
創建和配置虛擬環境
安裝完conda之後會有一個默認的base環境,如果不新建環境而直接conda activate
,就會進入base環境。
使用如下命令創建名爲myenv
的虛擬環境
conda create -n myenv python=3.7
使用如下命令進入和退出該環境:
conda activate myenv
conda deactivate
進入該環境之後可以通過conda
命令來安裝各種包。
參考4
管理虛擬環境
用conda info -e
確定現在有哪些環境。
# conda environments:
#
base /home/Chong/anaconda3
myenv * /home/Chong/anaconda3/envs/myenv
其他相關操作參考5
安裝cuda
安裝cuda是對於所有的用戶都有效,但是注意以下的某些操作(比如增添環境變量)是在自己的用戶下進行,如果是其他的用戶,還要單獨做一遍。
請首先遵從官方教程進行安裝,如果有不懂再看下面的解釋。
安裝
上官網安裝CUDA Toolkit x.x,按照官網的指示輸入自己的系統信息,獲得可執行指令,然後執行指令。以下根據我自己的情況舉一個例子。
我的需求是在不重新安裝驅動的情況下安裝9.x或者10.x的cuda.因爲我目前的驅動版本是435,所以參考這個網址,我無法安裝10.2及以上的cuda版本,所以選擇安裝10.1版本。6於是,在這裏獲得了我想安裝的版本,按照網站指使的步驟安裝。
我選擇通過.run腳本進行安裝,於是下載了.run腳本並在管理員權限下運行腳本(sudo sh *.run
),選擇安裝除了顯卡驅動之外的全部東西,運行腳本,完成安裝。
然後在/home/Chong/.bashrc
添加如下內容:
# ZC: cuda init
export PATH=$PATH:/usr/local/cuda-10.1/bin:/usr/local/cuda-10.1/NsightCompute-2019.1
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-10.1/lib64
export CUDA_HOME=$CUDA_HOME:/usr/local/cuda-10.1
即對於上述幾個環境變量添加鏈接到cuda-10.1
的硬鏈接。
我遇到的坑:我一開始沒有使用上面的“冒號追加”的語法,而使用下面這樣“字符串連接”的語法:
export PATH=/usr/local/cuda-10.1/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-10.1/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
使用這樣的語法,PATH顯示正常,但是找不到位於/usr/local/cuda-10.1/bin
的nvcc
指令。
一些額外信息
如果要多個cuda版本共存,可以參考7,以及8解決了一些稀奇古怪的問題。
如果要安裝的cuda版本低,有的時候還需要gcc的版本滿足要求,這方面的博客網上可以找到,大概就是安裝低版本gcc,然後把gcc命令軟鏈接到低版本gcc上去。
測試cuda的安裝
在/usr/local/cuda-10.1/samples
裏面sudo make
(需要很久)
然後進入/usr/local/cuda-10.1/samples/bin/x86_64/linux/release
,執行./deviceQuery
和./bandwidthTest
,看結果是否能pass.9
或者,按照官方文檔的7.2.3.3,應該進入~/NVIDIA_CUDA-10.1_Samples
,直接make
,然後進入對應位置執行./deviceQuery
進行測試。
如果不想耽誤時間全部make一遍,可以挑一個例子驗證:進入/usr/local/cuda/samples/1_Utilities/deviceQuery
,執行sudo make
,然後執行./deviceQuery
觀察是否可以pass.10
安裝cudnn
註冊+冗長填表,選擇適合自己的cudnn版本:比如我是cuda10.1,所以根據需要下載對應的文件。然後按照官方installation guide進行安裝即可。
建議使用debian方式安裝,因爲這是唯一一個提供了官方驗證安裝的方式。筆者使用tar方式安裝,使用10的方式自己檢驗安裝,雖然能通過但是心裏還是很虛。
我遇到的坑:註冊賬戶的時候不知道爲什麼網站陷入永久error,試了很久也沒有解決,只好換一臺電腦重新註冊賬戶並下載安裝包。
安裝pytorch
按照官網指示即可。
裝好之後運行torch.cuda.is_available()
,如果True
,恭喜!可以參考11進行更多的測試。
安裝python包
(僅作爲個人參考)
- pytorch numpy tensorflow-gpu jupyter
- matplotlib xlrd xlwt openpyxl
- docopt tqdm
- scipy pandas
- sklearn gensim nltk
安裝方式:conda install *
And done! 和實驗室小夥伴們一起開心地跑代碼吧(誤)