作者 |稚暉@知乎(已授權)來源丨https://zhuanlan.zhihu.com/p/336429888本文記錄了稚暉大佬組裝深度學習工作站過程中的自己組裝自己組裝裝系超詳細操作流程,可謂是電腦電腦手把手教學、堪稱保姆級教程。統和本
.jpg)
作者 |稚暉@知乎(已授權)
來源丨https://zhuanlan.zhihu.com/p/336429888
本文記錄了稚暉大佬組裝深度學習工作站過程中的驅動超詳細操作流程,可謂是自己組裝自己組裝裝系手把手教學、堪稱保姆級教程。電腦電腦
本章分為硬件、統和系統、驅動DL開發環境配置以及工作站的自己組裝自己組裝裝系維護幾個章節,希望能幫到大家,電腦電腦給大家做個參考。統和
1
前言
工作原因一直想配置一臺自己的驅動深度學習工作站服務器,之前自己看完paper想做一些實驗或者復現模型的自己組裝自己組裝裝系時候只能用自己的日常PC來跑很麻煩...一方面電腦得裝雙系統,干活的電腦電腦時候就不能用作其他用途了;另一方面,即使是統和沒有使用流程的問題,GTX1080的性能也還是弱了一些,更何況我用的是一個A4迷你機箱,長時間高負載的訓練任務也不太可靠。
以前在公司的時候還可以用公司的DGX訓練集群做一些實驗,但是我現在的開發環境已經切換到了昇騰的NPU架構芯片之上了,昇騰平臺算力方面雖然是比肩甚至可以超越英偉達,但是目前暫時很多學術界的生態都還是基于GPU服務器的(主要是指開源代碼),且我們這兒昇騰服務器對個人也不好買(且買不起),所以有一臺這樣的GPU工作站還是會方便一些。
那么本文是我在組裝工作站過程中記錄的詳細操作流程,供有類似需求的同學參考~
首先我們來看一下配置完后最終效果的視頻:
2
硬件篇
2.1 工作站配置選型
配件全家福
服務器的配置以個人使用性價比為主,同時考慮到以后的擴展性像是主板和機箱這些配件配置設置一些冗余。首先是CPU平臺的選擇,雖然AMD這兩年實在是香,但是作為生產力工具考慮到軟件庫的兼容性問題,還是決定選擇intel平臺里十代X系列CPU+X299主板,算是比較穩的方案,而且某東上CPU搭配主板套裝一起買也性價比也很高。GPU方面今年的30系顯卡都比較良心,使用兩塊3080或者一塊3090都是很給力的,24G的顯存也已經跟TITAN RTX持平了(價格卻只要一半)...這里考慮到主板上只能插兩塊PCIEx16的卡,為了以后可能的提升性能還需要再加一塊卡,所以3090是最佳選擇。
最后選定的配置如下:
CPU:i9-10920X
顯卡GPU:七彩虹RTX3090 Advance
內存:芝奇幻光戟16G x 4共64G
主板:華碩X299-DELUXE PRIME
固態硬盤:1TB西數NVME SSD + 1TB三星870QVO SATA SSD
機械硬盤:希捷EXOS 12TB氦氣盤
電源:海盜船AX1200i 1200W模組電源
散熱器:海盜船H100X240水冷 + 若干120機箱風扇
機箱:海盜船AIR540 E-ATX機箱
其中硬盤的設計是這樣的:1T的NVME固態做系統盤,12T的機械盤作為數據集倉庫,另外一個1T SATA固態作為訓練時的數據集緩存,因為IO讀寫速度也是會影響訓練效率的,所以相比于直接從機械盤里面讀取數據,加一塊SSD做cache效果會好很多。
2.2 電腦組裝
總之就是快樂的玩具拼裝過程~
機箱尺寸比較大,預留的空間非常足所以不會出現像是在裝A4機箱時那種考驗走線和裝配順序的技巧問題;而且服務器嘛,安靜地塞在某個角落就好了,也不用過于考慮什么美觀問題,所以走線就很隨意了:
這個機箱設計還是很科學的,預留了足夠多的擴展接口比如:2個 3.5寸可快拆盤位、5個2.5寸可快拆盤位、光驅位(用不到,后期改造了)、前后頂部一堆風扇位等等。線材基本都可以塞到機箱的另一個側面,前面板安裝了三個進風風扇,背部安裝了一個出風風扇,水冷的冷排和風扇在頂端。
這里值得一提的是,正面的光驅位屬于用不上的老古董,所以我改造了一下準備裝一個小型的LCD屏幕上去,這樣偶爾需要進圖形桌面或者BIOS界面的時候,就不用再抱個顯示器插在機箱上了;此外以后也可以寫個軟件把這個屏幕作為系統狀態監視器來使用~
后面會3D打印一個外殼把屏幕固定住。
這個屏幕也是我前陣子剛設計的,項目已經開源了叫做,感興趣的可以去倉庫看看:
https://github.com/peng-zhihui/PocketLCDgithub.com
3
系統篇
系統選擇DL開發里面最常用的Ubuntu,最新的穩定版本是20.04,安裝過程需要準備一個U盤作為系統啟動盤。
3.1 安裝Ubuntu 20.04系統
在官網下載Ubuntu鏡像:Ubuntu 20.04.1 LTS (Focal Fossa)(http://releases.ubuntu.com/20.04/),選擇Desktop Image版本,得到.iso的鏡像文件。
Windows下使用UltraISO工具打開.iso鏡像文件,并將其寫入到一個U盤,得到系統啟動盤:
將U盤插到服務器上,開機按del鍵(具體什么鍵跟主板型號有關)選擇啟動項進入臨時的Ubuntu系統,在圖形界面中選擇Install Ubuntu,所有配置都可以使用默認的,改一下用戶名和密碼即可。這里建議使用英文作為默認語言,省得給自己日后開發找麻煩哈。
安裝過程中會聯網下載一些軟件包更新,可以直接點skip掉,在安裝好系統之后再手動更新也是一樣的。
2. 進入系統后設置一下root賬戶密碼:
3.2 配置國內鏡像軟件源
為了提升后續安裝軟件時的幸福感,第一步當然先要替換一下軟件源。
1. 備份原來的源:
2. 將源的內容設置為阿里云鏡像:
內容改為:
3. 更新軟件列表:
也可以去網上搜其他鏡像,在我這邊經測試阿里云是最快的。另外也可以在圖形桌面環境下打開軟件,在里面也有網速測試并選擇最佳源的功能。
3.3 安裝Python和pip
1. Ubuntu系統默認自帶python,有版本需求的話也可以自己安裝一下(不安裝也行因為后面會安裝conda環境):
2. 不管是不是自己安裝的python,替換python的pip源建議是一定操作一下的,pip安裝速度會快很多:
直接新建并編輯pip.conf:
改為以下內容(這里用的清華源,也可以試一下阿里、豆瓣等源):
3. 更改默認python版本,python目錄默認鏈接的是python2,而現在基本都是用python3開發了,每次都輸入python3很麻煩所以這里直接更換默認的python命令鏈接。
把原來的python軟鏈接刪掉:
新建一個軟鏈接:
現在輸入python就會進入python3環境了。
3.4 配置SSH & 遠程桌面
純凈安裝的系統里面默認沒有開啟SSH,我們手動安裝一下。
安裝ssh:
會自動安裝好很多依賴包并啟動服務,完成之后用XShell等軟件就可以SSH登錄服務器了。
2. 安裝xrdp
Xrdp 是一個微軟遠程桌面協議(RDP)的開源實現,它允許我們通過圖形界面控制遠程系統。這里使用RDP而不是VNC作為遠程桌面,是因為Windows自帶的遠程桌面連接軟件就可以連接很方便,另外RDP在Windows下的體驗非常好,包括速度很快(因為壓縮方案做得比較好),可以直接在主機和遠程桌面之間復制粘貼等等。
有的Xwindow軟件是不太兼容xrdp的(比如ubuntu 18.04的默認桌面),但是ubuntu 20.04使用的Gnome是完全ok的。
安裝過程如下:
安裝完成xrdp 服務將會自動啟動,可以輸入下面的命令驗證它:
默認情況下,xrdp 使用,它僅僅對ssl-cert用戶組成語可讀,所以需要運行下面的命令,將xrdp用戶添加到這個用戶組:
然后使用Windows自帶的遠程桌面軟件連接服務器IP地址或者域名就行了。
2.5 安裝frp進行內網穿透
前面介紹的SSH和遠程桌面都是需要在局域網下通過IP地址進行連接的,而我們配置一臺服務器最重要的訴求,應該是可以隨時隨地去訪問服務器。
那在家里面,網絡運營商提供的網絡服務通過路由器路由到各個設備,此時路由器會同時具備內網地址(路由器之內,局域網,LAN,也就是192.168.x.x)和外網地址(路由器之外,互聯網,WAN)。但是其實這個WAN口的IP并不是真正的公網IP,而時經過了多層的NAT轉換之后的地址,外網的設備是不能通過這個地址訪問到路由器的。這個問題的原因是ipv4地址池緊張,如果運營商給每家的路由器都安排一個公網ip的話,那ip地址早就不夠用了呀。
因此為了能讓外網訪問到我們局域網內的設備,就需要跟中國電信等運營商申請公網ip(現在能申請到的概率也已經不大了,而且即使申請到也不是所有端口都可以使用的),或者我們自己動手做一些操作來達到同樣的目的。
有幾種方法:
可以直接用類似花生殼(https://hsk.oray.com/)這樣的DDNS服務平臺做轉發實現內網穿透,優點是比較簡單穩定,缺點是需要持續付費,而且速度和延遲效果一般,而且每加一個端口都要額外付費。
也可以像我一樣使用frp之類的軟件做反向代理來實現內網穿透,這個方案也是需要你有一臺帶公網IP的云服務器的,優點就是完全可控,自己想配置多少個端口的穿透都可以,速度跟你的云服務器帶寬有關。
為什么需要多個端口?是因為不同應用占用的端口不同,比如我們的SSH走的是22號端口,而遠程桌面的rdp走的是3389號端口,如果需要自建Web服務的話則是走80/443端口、想把工作站作為上外網的代理服務器的話會需要1080端口等等...所以用上面第二個方案顯然會方便很多,而且云服務器也不貴,我在騰訊云上購買一年只要200左右。
下面介紹如何安裝配置frp:
frp分為frps(server)和frpc(client)兩個包 ,其中前者安裝到我們的云服務器上,后者安裝在需要被外網訪問到的各個設備上,這里就是指我們的深度學習工作站。
云服務器端:
去https://github.com/fatedier/frp/releases下載適合你服務器系統的frp軟件,我這里是用的是騰訊云64位Ubuntu16.04所以選擇frp_0.34.3_linux_amd64.tar.gz,下好之后解壓:
我們需要編輯的文件是frps.ini :
內容改為:
保存配置后,使用該命令啟動:
在瀏覽器輸入 即可訪問到 frp的web管理界面。
注意,可能需要去云服務器控制臺配置安全組規則 開放以上涉及到的端口,否則無法訪問。
本地的深度學習服務器端:
下載相應版本的frpc軟件包(跟剛剛一樣的):Releases · fatedier/frp (github.com),這里選amd64的,下好之后解壓到一個臨時文件夾。
修改frpc.ini配置文件,內容如下:
通過上面的腳本就可以把對于云服務器特定端口的訪問給重定向到本地服務器的某個端口了,簡單地講就是:假如我用SSH客戶端訪問 ,就可以經過反向代理直接訪問到;同理需要連接遠程桌面的話,只需要訪問就可以了。
當然你也可以修改腳本添加更多映射~
3. 添加開機自動啟動的腳本,新建一個文件內容如下:
文件名,注意修改其中的路徑:
然后執行以下命令啟用腳本:
通過下面的命令查看服務狀態,如果是running的話就說明可以了:
這里順便提一下,按照習慣一般把上面的frp軟件解壓防止在目錄下。Linux 的軟件安裝目錄是也是有講究的,理解這一點,在對系統管理是有益的
:系統級的目錄,可以理解為
:可以理解為
在洗碗水中放幾片檸檬皮和橘子皮,或滴幾滴醋,能消除碗碟等餐具上的異味。同時,它還能使硬水軟化,同時增加瓷器的光澤感。
:用戶級的程序目錄,可以理解為,用戶自己編譯的軟件默認會安裝到這個目錄下
:用戶級的程序目錄,可以理解為,opt有可選的意思,這里可以用于放置第三方大型軟件(或游戲),當你不需要時,直接掉即可。在硬盤容量不夠時,也可將單獨掛載到其他磁盤上使用
剛買的水果和非葉類蔬菜,不宜立即放入冰箱冷藏,因為低溫會抑制果菜酵素活動,無法分解殘毒,應先放一兩天,使殘毒有時間被分解掉。
源碼放哪里?
:系統級的源碼目錄
:用戶級的源碼目錄。
3.6 安裝SAMBA服務
如果能把服務器上的磁盤直接掛載到我們使用的Windows個人PC上是不是很爽?
如開頭的視頻里面演示的,可以通過建立局域網SAMBA服務來實現這個效果:
1.安裝 和
1.配置/etc/samba/smb.conf文件
在最后一行后面加入:
可以把配置文件中你不需要的分享名稱刪除,例如 [homes], [printers] 等。
運行這個命令測試一下配置文件是否有錯誤,根據提示做相應修改:
3. 添加登陸賬戶并創建密碼
必須是 linux 已存在的用戶:
然后重啟服務即可:
接下來可以在Windows的網絡中發現設備了:
但是可能會出現無法點開的情況,這里需要在Windows的憑據管理器中添加賬戶信息(開始菜單里搜索憑據管理器即可打開),點擊添加Windows憑據,輸入你的服務器名稱和賬戶密碼:
接下來就可以點進去看到服務器上的文件了。為了更加方便地進行文件交互,我們添加對應的磁盤到Windows資源管理器的此電腦中:
選擇剛剛服務器的網絡路徑即可添加:
4
DL開發環境配置篇
配置這臺服務器的主要作用就是做深度學習訓練,所以GPU相關的驅動和環境時肯定要安排好的,網上資料很多很雜,這里梳理出了最便捷可靠的安裝方法供大家參考~
4.1 安裝Nvidia顯卡驅動
最簡單的方式是通過系統的軟件與更新來安裝:
進入系統的圖形桌面,打開軟件,可以看到標簽欄有一個:
選擇第一個安裝Nvidia官方驅動(第二個是開源驅動)即可,根據網絡情況稍等大概十分鐘,安裝完重啟服務器。
重啟完之后更新一下軟件:
這里會連帶Nvidia的驅動一起升級一遍,更新到最新的驅動;更新完可能會出現nvidia-smi命令報錯,再重啟一下就解決了。
4.2 安裝CUDA
如果之前安裝了舊版本的cuda和cudnn的話,需要先卸載后再安裝:
然后按照前面的方法重新安裝顯卡驅動,安裝好了之后開始安裝CUDA:
去官網下載cuda安裝包:CUDA Toolkit 11.0 Download | NVIDIA Developer(https://developer.nvidia.com/cuda-11.0-download-archive),相關選項如下(根據實際情況選擇):
運行下面的命令進行安裝:
可能會報一個警告:
前面已經卸載過舊版本了直接Continue就好。然后根據提示選擇安裝選項,注意不要勾選第一個安裝顯卡驅動的,因為之前已經安裝過了。安裝完成后提示
2. 根據上圖提示需要配置環境變量:
再文件最后加入以下語句:
然后使其生效:
3. 可以使用命令查看安裝的版本信息:
也可以編譯一個程序測試安裝是否成功,執行以下幾條命令:
正常的話會有相應輸出,打印顯卡的信息。
4.3 安裝CuDNN
進入到CUDNN的下載官網:cuDNN Download | NVIDIA Developer(https://developer.nvidia.com/rdp/cudnn-download),然點擊Download開始選擇下載版本,當然在下載之前還有登錄,選擇版本界面如下:
我們選擇和之前cuda版本對應的cudnn版本:
下載之后是一個壓縮包,對它進行解壓,命令如下:
使用以下兩條命令復制這些文件到CUDA目錄下:
拷貝完成之后,可以使用以下命令查看CUDNN的版本信息:
可以看到版本信息如下,為:
4.4 安裝Conda環境
不同的訓練框架和版本可能會需要不同的python版本相對應,而且有的包比如numpy也對版本有要求,所以比較優雅的方法是給每個配置建立一個虛擬的python環境,在需要的時候可以隨時切換,而不需要的時候也能刪除不浪費磁盤資源,那在這方面conda是做得最好的。
下面介紹怎么安裝conda:
在Anaconda官網下載Linux安裝包:Anaconda | Individual Edition(https://www.anaconda.com/products/individual)
運行下面的命令安裝:
一路按ENTER確認,然后根據提示輸入yes,這里我為了目錄整潔不安裝在默認路徑,設置為下面的路徑:
然后會詢問你是否要初始化conda,輸入yes確認,重開終端窗口之后,就可以看到conda環境可用了(base代表默認環境):
conda的使用方法網上搜一下有很多,這里就不贅述了。
4.5 安裝Nvidia-Docker
Docker也是虛擬化環境的神器,前面說的conda雖然可以提供python的虛擬環境并方便地切換,但是有的時候我們的開發環境并不只是用到python,比如有的native庫需要對應gcc版本的編譯環境,或者進行交叉編譯時喲啊安裝很多工具鏈等等。如果這些操作都在服務器本地上進行,那時間久了就會讓服務器的文件系統非常雜亂,而且還會遇到各種軟件版本沖突問題。
Docker就可以很好地解決這些問題,它其實可以理解為就是一個非常輕量化的虛擬機,我們可以在宿主服務器上新建很多個這種被稱為的虛擬機,然后在里面配置我們的開發環境,且這些配置好的環境是可以打包成的,方便隨時做分享和重用;不需要的時候,我們直接刪除容器就好了,其資源是和我們的服務器宿主機完全隔離的。
Docker的具體使用可以自己搜索一下很多教程,這里主要介紹如何把GPU暴露給Docker的容器(因為大家都知道像是VMware這種虛擬機里面都是無法共享宿主機的GPU的),是通過實現的。
以前為了配置nvidia-docker,需要安裝完docker之后再安裝單獨的nvidia docker2,而現在只需要安裝nvidia container toolkit即可,更加方便了。
docker安裝 官網上有詳細的介紹:Install Docker Engine on Ubuntudocs.docker.com(https://docs.docker.com/engine/install/ubuntu/) 或者運行下面的命令安裝:
可以運行這條命令檢查是否安裝成功:
2. 安裝NVIDIA Container Toolkit
官網安裝步驟:NVIDIA/nvidia-docker: Build and run Docker containers leveraging NVIDIA GPUs (github.com)(https://github.com/NVIDIA/nvidia-docker) 或者直接運行下面的命令:
安裝完成后可以新建一個容器測試一下:
其中最后的參數 是Nvidia官方的鏡像,需要根據工作站主機中實際安裝的cuda版本進行修改,版本可以用查看。
進入容器之后可以跑一下命令看看:
現在可以在docker里面正常使用GPU啦~
4.6 測試
這里通過一個簡單的python腳本測試一下GPU訓練是否一切正常,跑一個DL里面的Hello World程序,通過兩種方法測試:本地conda和docker虛擬機。
以后的開發過程中一般還是使用Docker的方式來進行更為優雅。
1. 本地Conda環境方式:
先用conda新建一個python3.8+pytorch1.7+cuda11.0的虛擬環境:
創建完成后進入環境:
檢查一下是否切換到所需環境了:
如果看到使用的確實是我們設置的環境目錄中的pip的話說明就ok。
接下來在環境中安裝pytorch,可以參考官網的安裝命令:Start Locally | PyTorch(https://pytorch.org/get-started/locally/)
輸入以下命令進行安裝:
環境配置就完成了,下面新建一個簡單的測試腳本驗證功能,新建,內容如下:
運行腳本,正常的話就可以看到訓練輸出了:
2. Docker環境方式:
首先還是新建一個Docker鏡像,運行下面的命令:
就進入到了帶gpu的ubuntu20.04容器中,效果可以參考文章開頭的視頻。按照前面的配置方法同樣配置好pytorch和其他軟件包,然后運行同樣的腳本,也可以得到上述輸出,說明gpu在docker中正常工作。
5
工作站維護篇
5.1 工作站系統備份還原
備份
由于Linux本身萬物皆文件的設計理念,加上root用戶對幾乎全部的系統文件都有訪問和更改的權限,因此Linux系統的備份和還原其實非常簡單,我們直接打包整個根文件系統就可以了。
我們可以使用tar命令來打包并壓縮文件系統,不過這里在打包的過程中需要排除一些不需要文件,或者與新系統文件沖突的文件,包括、、 等目錄。
找一個你想保存備份文件的目錄,運行下面的命令:
我們會得到一個名為的壓縮文件,這個文件包含我們需要備份的系統的全部內容。
2. 還原
如果系統沒有出問題可以正常啟動的話,那直接在剛剛的壓縮包找找到想還原的文件替換就好了。而如果系統無法啟動了,或者說想換一塊硬盤克隆一樣的系統,那么可以按一下步驟操作:
重裝干凈的Ubuntu系統。跟上面介紹的一樣,使用U盤給目標磁盤重裝一個干凈的系統,這一步是為了省去自己分配存儲空間和掛載的麻煩,如果你會自己配置的話那也可以不做這一步。
再次使用U盤進入系統,這次選擇,然后可以看到掛載好的剛剛安裝了干凈系統的另一個盤,我們在這里對盤里的根文件系統進行一些文件的提?。?/p>
這一步完成后,在用我們在新系統中備份的及重啟后就發現系統已經恢復到備份時的狀態,包括各種框架,環境,系統設置~
以上,后面有更新的話還會繼續補充,希望對大家有幫助~
菜板有異味:菜板有異味,可浸在淘米水中,再用鹽或堿擦洗,或用生姜擦幾遍,然后用熱水沖洗刷凈。干凈后在菜板上灑點醋,放在太陽下曬干,再用清水洗凈。
免責聲明:本站所有信息均搜集自互聯網,并不代表本站觀點,本站不對其真實合法性負責。如有信息侵犯了您的權益,請告知,本站將立刻處理。聯系QQ:1640731186

2015中超恒大VS魯能賽事戰報

電影《封神三部曲》場景細節精致 呈現商周恢弘氣概

冬季皮膚太干燥?不如聽聽抖音主播韓國媳婦大璐璐的護膚秘訣

千面人生王一博:從一張點卡到為夢營業

我國船企獲全球首艘氨燃料動力集裝箱船訂單

電影《封神三部曲》首曝預告片 神仙陣容演繹氣勢磅礴的中國神話史詩

嗖秀樂空降魔盒音樂節,助力選手實現音樂夢想

霍思燕談生產時大出血 堅韌勇敢亦不失少女心性

5年期以上貸款市場報價利率降至3.95%

MENEO牽手Emily IP打造新年時尚周,掀起潮流狂歡熱潮

中國球王力挽狂瀾 海瀾之家全新代言人武磊攻破歐洲豪門

《陌路情徒》京津地區新聞發布會1.7日圓滿舉行

魅力梅州丨瞧“橋”梅城!梅江上的一步一景

2019抖音年度盛典頒獎典禮 季軍得主網紅主播野小馬獻唱《海闊天空》

《閃光少女》真青春高燃收官 愛奇藝青春劇多元布局
Copyright © 2017-now 國際動態傳媒 版權所有