摘要: 本文介紹如何本身構建深度學習服務器
注意:本文主要關注服務器設置和與多個用戶同時工做,部件組裝和軟件安裝過程是Slav Ivanov關於建立本身的DL Box的文章的簡化版本。linux
我剛剛開始閱讀fast.ai課程的第1部分「編碼器的實用深度學習」,我想構建本身的服務器,經過使用AWS p2實例和存儲對模型進行升級。意識到我將使用更大的數據集而且不想由於缺少足夠的處理能力以至等待數小時來訓練個人模型,構建本身的DL平臺是一個好的選擇,由於從長遠來看它將節省我大量的時間和金錢,也給了我很好的把服務器放在一塊兒的經驗。api
建立部件清單bash
在將任何部件列表放在一塊兒以前,你須要肯定你真正想要從你的機器中獲得什麼。對我來講,我想要的是:服務器
比亞馬遜p2實例更強大網絡
能夠添加額外的GPU,RAM,存儲和自定義液體冷卻的空間框架
多年來不會過期的硬件機器學習
將成本下降到3000美圓的預算工具
我使用pcpartpicker.com來指出全部內容,由於它比較容易比較其餘部分和組織全部內容,以及它們很是好的部件兼容性檢查器(稍後將詳細介紹)。我將詳細介紹爲何我選擇每一個部件以及它如何與整個系統一塊兒工做。做爲參考,能夠在此處找到個人服務器構建的連接。性能
GPU: GTX 1080 Ti Hybrid學習
當你使用顯卡訓練模型時,這是構建中最重要的部分,所以GPU越強大,你處理大量數據集的速度就越快。更高的GPU內存等同於更高的處理能力(例如,更快的訓練,更大的批量大小等......)。我爲個人服務器選了兩張這樣的卡,由於個人預算有足夠的空間,它讓我能夠在其中一張卡上訓練個人模型,並讓另外一個用戶在第二張卡上訓練他們的模型。你能夠縮小你購買的GPU的類型,以適應你的預算(1070、1060等),同時防止其餘部件遇到瓶頸。Hybrid 1080 GPU也很不錯,由於除了大多數gpu所具備的普通風扇冷卻系統以外,它們還預裝了aio水冷系統。1080 Ti在滿載時發熱,所以在訓練模型時,必須保持高質量的冷卻以延長卡的使用壽命並保持其性能。關於選擇圖形卡的更多信息,這篇文章真的幫助我真正理解了在深度學習環境中工做時應該作哪些選擇。
CPU: AMD Threadripper 1900x
當你使用顯卡來訓練神經網絡時,你的CPU仍然很重要,由於它被用於諸如數據準備之類的操做,因此這些高核心計數將有助於加速進程。我使用了Treadripper,由於它是市場上很是新的CPU,有很高的核數(TR2的32核!),它們的價格遠低於英特爾的同類產品。1900x是第一個得到TR的最低層,只有8個內核,不過我對這臺服務器的總體目標是保持它的可升級性。
須要注意的一點是,當你選擇CPU時,請確保你的顯卡有8或16個pcie槽可用,由於這是顯卡在負載下表現最好的時候,不然你的系統可能會遇到瓶頸。在高端cpu上,若是服務器上有4張顯卡,那麼幾乎能夠保證有足夠的pcie槽。
主板: MSI X399 SLI Plus
選擇這塊主板,由於它是一個完整的ATX板,有4個gpu的空間,以及最大128GB的RAM。如前所述,此服務器的主要目標之一是使其保持高度可升級性。
內存: 32GB Corsair Vengeance LPX DDR4 (2 x 16GB)
內存越多,處理大型數據集就越容易。我計劃升級的下一件事是再增長2根16GB的RAM,這就是爲何我沒有獲得四通道ram (4x8gb的RAM),儘管這會使個人性能提升一些。
存儲:256GB三星SSD和2TB硬盤
我把Ubuntu,我全部的庫,以及我在SSD上使用的當前數據,以及我儲存在2TB機械硬盤上的全部其餘數據。
冷卻器:Corsair H100i v2液體冷卻器
Threadrippers沒有庫存冷卻器(並且若是您有30美圓的備用費,您應該常常升級到至少一個便宜的售後冷卻器),因此我但願使用可靠的、全天候使用的、廉價的、易於維護的工具。這種一體式冷卻器很是容易安裝,並且很是可靠(幾十萬個機組中可能有一到兩個發生泄漏冷卻液的狀況),並且很是安靜。
電源:EVGA SuperNOVA 1000w 80+金牌認證
必定要用比你技術所需的更多的功率。PCPartpicker的wattage計算器很好,它能讓你大概知道你要拉動多少(在個人例子裏是824w),儘管它常常是不許確的,由於它的數量是不一樣的,因此最好確保你的電腦不會打開。「黃金認證」僅僅是指PSU的效率(多少能量做爲熱量被浪費)。
箱子:Corsair 760T全塔
我選擇這個箱子是由於它裏面有多少空間以及它的價格。雖然這並不能讓你的模型訓練得更快,但清晰的側板和紅色的led確實能讓你看起來更酷。
一年的積蓄和畢業獎金在一張照片上
把部件組裝在一塊兒
若是你是電腦新手,這就像組裝一套很是昂貴的樂高玩具。任何人都能作到這一點,儘管它比你想象的更難搞糟。我將很快地介紹如何構建個人組裝,儘管我強烈建議你在構建本身的時遵循完整構建的視頻,好比這個!這些說明適用於幾乎全部你正在使用的部件的組合,就像我在上面連接的視頻指南同樣。
第1步:安裝CPU
這多是構建計算機最可怕的部分,由於你必須遵循特定的步驟順序而且你可能會意外地當即銷燬大約價值430美圓的 cpu(就像粉碎單個cpu引腳),這是很容易的事情。
第2步:安裝電源
作事沒有正確或錯誤的順序,但根據我我的的經驗,我喜歡將PSU做爲我放入箱子的第一部分,由於有些狀況要求你將PSU滑入一個使你「經過主板」移動的插槽,若是它在那裏。
第3步:將全部東西放在一塊兒
這是一個很大的步驟,但一旦主板在其餘一切都很容易安裝。我會按順序安裝:
1.安裝的RAM。這很簡單,只要把你的內存棒滑動到正確的方向,並在你的主板上插入正確的插槽(請參閱手冊,由於有特定的槽使用取決於你有多少棒)。
2.安裝CPU冷卻器。惟一的小麻煩是我不得不更換安裝支架,以便與TR兼容,只是須要很大的力量來改變。安裝散熱器用了8個螺栓而且我完成了。
3.安裝顯卡。只需將它們滑入主板上各自的插槽(如內存,請參閱手冊中有哪些插槽可插入)並將散熱器固定在你的機箱中。確保你的散熱器高於你的gpu。 我在上面的圖片中犯了這個錯誤,不得不從新安裝在箱子的前面板上。
4.安裝存儲。我卸下了其中一個驅動器托架以得到更多氣流,所以我將SSD和HDD放在右下方的單個驅動器托架中。
第4步:成功?
是時候開機了。起初我沒有,由於個人箱子的電源按鈕的正負電纜線顛倒了,但以後我看到了我所但願的明亮的白色和紅色。若是一切順利,你應該看到你的計算機發布,而後搜索一個啓動設備。
安裝操做系統
下一步是安裝您的操做系統。我正在使用Linux,由於這是大多數DL框架的設計目標。我使用Ubuntu Desktop v16.04 LTS並安裝了USB驅動器中的全部內容。 有許多免費工具,如UNetbootin或Rufus(僅限Windows),你能夠下載這些工具來準備你的u盤。這裏有一個很是有用的教程,介紹如何在Mac電腦上建立一個可引導的USB,若是你使用的是Windows操做系統,那麼這裏有一個合適的教程。
第1步:端口轉發
你必須對全部路由器執行相似的過程,但因爲我有一個蘋果路由器,我按照本指南執行如下操做:1.爲你的服務器設置靜態IP,以便每次關閉時它都不會更改關閉。2.使用Apple Airport Utility登陸路由器3.映射服務器的端口。你須要爲此部分找到服務器的MAC地址,所以請參閱本指南,瞭解如何在Ubuntu上找到它。
第2步:建立動態IP地址
我曾經爲服務器建立一個動態IP地址,容許我在終端遠程鏈接它。你可使用此網站來驗證它是否正常工做。
當我想鏈接到個人服務器時,我輸入一個以下所示的命令:
個人服務器在端口8888上運行,個人jupyter notebook在8889上運行(-L選項將指定的本地端口重定向到不一樣的主機和端口)。 這樣我就能夠在個人機器上本地運行筆記本,以便與個人服務器同時進行測試以便進行訓練。可是,若是你不想這樣,你能夠在-L部分以前輸入全部內容。我將在下一節中解釋如何更改運行jupyter筆記本的端口。
如今安裝深度學習/機器學習所需的全部庫。我將逐節介紹安裝腳本,以便你瞭解能夠在此處找到的內容。它主要基於Jeremy Howard的install-gpu.sh腳本,所以這裏的不少內容不只僅是由於它們是有用的工具,並且由於這是咱們在Fastai中使用的。
首先,咱們將確保咱們的系統是最新的,並安裝咱們須要的全部基本工具:
下一步是下載並安裝全部CUDA GPU驅動程序:
如今咱們將驗證咱們是否正確安裝了全部CUDA內容:
從這裏咱們將把CUDA(Nvidia Deep Learning api)添加到咱們的PATH變量中:
以後,下一步是安裝CuDNN庫(建立神經網絡所需):
咱們如今將爲當前用戶安裝Anaconda:
接下來,咱們將安裝Tensorflow和Keras:
接下來,咱們將爲Fastai安裝Python依賴項:
如下幾節將配置jupyter notebook:
要更改默認端口以運行Jupyter notebook(端口8888),請取消註釋此行並輸入所需的端口。這容許你同時在你的服務器和本地運行你的筆記本,同時讓多個用戶在你使用你的筆記本時使用他們的筆記本:
如今咱們將配置tmux,這個工具可讓咱們在終端窗口中建立多個「窗格」,並在斷開鏈接後保持程序運行。查看此文檔,由於它幫助我理解了tmux的全部功能。它很是有用,由於你能夠在一個窗格中運行筆記本,監視另外一個窗口中的gpu使用狀況,並在另外一個窗格中打開一個linux終端:
接下來,咱們將建立tmuxp配置文件,該文件將在一個命令中設置咱們的開發環境,而無需每次咱們想要處理某件事情時配置窗格、啓動jupyter notebook等。對於咱們的fastai環境,咱們將使用tmuxp load fastai啓動它。請參見使用tmuxp的連接,這裏是bash腳本中的文檔以及保存服務器從新啓動之間的tmux會話的文檔。總之,這裏讓咱們配置咱們的環境:
由於咱們再也不須要它們,讓咱們刪除安裝文件:
就是這樣!在編寫本文時,個人服務器一直全天候運行,徹底沒有任何問題,徹底無聲,而且經過訓練輕鬆完成。
本文做者:【方向】
本文爲雲棲社區原創內容,未經容許不得轉載。