天天看點

自己動手打造深度學習伺服器

注意:本文主要關注伺服器設定和與多個使用者同時工作,部件組裝和軟體安裝過程是 Slav Ivanov

關于建立自己的DL Box的文章的簡化版本。

我剛剛開始閱讀fast.ai課程的第1部分

“編碼器的實用深度學習

,我想建構自己的伺服器,通過使用AWS p2執行個體和存儲對模型進行更新。意識到我将使用更大的資料集并且不想因為缺乏足夠的處理能力以緻等待數小時來訓練我的模型,建構自己的DL平台是一個好的選擇,因為從長遠來看它将節省我大量的時間和金錢,也給了我很好的把伺服器放在一起的經驗。

建構

建立部件清單

在将任何部件清單放在一起之前,你需要确定你真正想要從你的機器中得到什麼。對我來說,我想要的是:

  • 比亞馬遜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作業系統,那麼

這裡

有一個合适的教程。

設定SSH

第1步:端口轉發

你必須對所有路由器執行類似的過程,但由于我有一個蘋果路由器,我按照

本指南

執行以下操作:1.為你的伺服器設定靜态IP,以便每次關閉時它都不會更改關閉。2.使用Apple Airport Utility登入路由器3.映射伺服器的端口。你需要為此部分找到伺服器的MAC位址,是以請參閱

,了解如何在Ubuntu上找到它。

第2步:建立動态IP位址

我曾經為伺服器建立一個動态IP位址,允許我在終端遠端連接配接它。你可以使用

此網站

來驗證它是否正常工作。

當我想連接配接到我的伺服器時,我輸入一個如下所示的指令:

自己動手打造深度學習伺服器

我的伺服器在端口8888上運作,我的jupyter notebook在8889上運作(-L選項将指定的本地端口重定向到不同的主機和端口)。 這樣我就可以在我的機器上本地運作筆記本,以便與我的伺服器同時進行測試以便進行訓練。但是,如果你不想這樣,你可以在-L部分之前輸入所有内容。我将在下一節中解釋如何更改運作jupyter筆記本的端口。

安裝DL / ML庫

現在安裝深度學習/機器學習所需的所有庫。我将逐節介紹安裝腳本,以便你了解可以在

找到的内容。它主要基于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會話的文檔。總之,這裡讓我們配置我們的環境:

自己動手打造深度學習伺服器

因為我們不再需要它們,讓我們删除安裝檔案:

自己動手打造深度學習伺服器

就是這樣!在編寫本文時,我的伺服器一直全天候運作,完全沒有任何問題,完全無聲,并且通過訓練輕松完成。

我還參考了一些作品:

https://www.digitalocean.com/community/tutorials/how-to-set-up-ssh-keys--2 https://towardsdatascience.com/building-your-own-deep-learning-box-47b918aea1eb https://medium.com/impactai/setting-up-a-deep-learning-machine-in-a-lazy-yet-quick-way-be2642318850 數十款阿裡雲産品限時折扣中,趕緊點選領劵開始雲上實踐吧!

本文由北郵

@愛可可-愛生活

 老師推薦,

阿裡雲雲栖社群

組織翻譯。

文章原标題《Making a Deep Learning Server》

作者:Wayde Gilliam

譯者:董昭男,審校:。

文章為簡譯,更為詳細的内容,請檢視

原文

繼續閱讀