一文搞定實驗室服務器配置:硬件+Ubuntu+CUDA/cuDNN+Python/Anaconda深度學習環境配置

配置服務器

本文是爲了解決如下問題而寫的:

硬件:帶有獨立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/binnvcc指令。

一些額外信息

如果要多個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! 和實驗室小夥伴們一起開心地跑代碼吧(誤)

參考


  1. 真實機下 ubuntu 18.04 安裝GPU +CUDA+cuDNN 以及其版本選擇(親測非常實用) ↩︎ ↩︎

  2. Ubuntu 18.04下用戶的創建、修改權限及刪除用戶的方法 ↩︎

  3. 什麼是虛擬環境、爲什麼使用虛擬環境、Anaconda創建、激活、退出、刪除虛擬環境 ↩︎

  4. conda 創建新環境 ↩︎

  5. Anaconda創建、激活、退出、刪除虛擬環境 ↩︎

  6. CUDA driver version is insufficient for CUDA runtime version ↩︎

  7. Ubuntu實現多版本CUDA切換——CUDA9.0與CUDA10.0切換 ↩︎

  8. Ubuntu16.04下安裝cuda和cudnn的三種方法(親測全部有效) ↩︎

  9. Ubuntu 16.04 上安裝 CUDA 9.0 詳細教程 ↩︎

  10. Ubuntu18.04安裝CUDA10、CUDNN ↩︎ ↩︎

  11. pytorch中查看gpu信息 ↩︎

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章