最“全”深度學習的完整硬體指南!

人工智慧頻道發表於2018-12-26

深度學習是計算密集型的,搭建硬體環境很重要。因此您需要具有多個核心的快速CPU,對吧?在構建深度學習系統時,最糟糕的事情之一就是在沒有必要的硬體上浪費錢。在這裡,我將逐步指導您使用廉價高效能系統所需的硬體。

多年來,我總共建立了7個不同的深度學習工作站,儘管經過了仔細的研究和推理,但我還是在選擇硬體部分時犯了一些錯誤。在本指南中,我想分享一下我多年來積累的經驗,這樣你就不會再犯同樣的錯誤了。

這篇文章是按錯誤嚴重程度排序的。這意味著人們通常浪費最多錢的錯誤首先出現。

GPU

本博文假設您將使用GPU進行深度學習。如果您正在構建或升級系統以進行深度學習,那麼不考慮GPU是不明智的。 GPU正是深度學習應用程式的核心 - 處理速度的提高太大了,不容忽視。

我在GPU推薦部落格文章中詳細討論了GPU的選擇,而GPU的選擇可能是深度學習系統最關鍵的選擇。選擇GPU時可能會出現三個主要錯誤:(1)成本/效能不佳,(2)記憶體不足,(3)散熱不良。

為了獲得良好的價效比,我通常推薦使用RTX 2070或RTX 2080 Ti。如果使用這些卡,則應使用16位模型。否則,來自eBay的GTX 1070,GTX 1080,GTX 1070 Ti和GTX 1080 Ti才是好的選擇,您可以使用這些具有32位(但不是16位)的GPU。

選擇GPU時要留意記憶體的要求。 RTX卡可以以16位執行,可以訓練相比GTX卡使用相同記憶體大兩倍的型號。因此,RTX卡具有記憶體優勢,並且選擇RTX卡並學習如何有效地使用16位模型將帶您走很長的路。通常,對記憶體的要求大致如下:

  • 正在尋找最先進分數的研究:> = 11 GB
  • 正在尋找有趣架構的研究:> = 8 GB
  • 其他研究:8 GB
  • Kaggle:4 - 8 GB
  • 初創公司:8 GB(但檢查特定應用領域的型號尺寸)
  • 企業專案:8 GB用於原型設計,> = 11 GB用於訓練

需要注意的另一個問題是,如果您購買多個RTX卡,則需要冷卻系統。如果您想將GPU固定在彼此相鄰的PCIe插槽中,您應該確保使用鼓風機式風扇獲得GPU。否則,您可能會遇到溫度問題,您的GPU會變得更慢(大約30%)並且更快死亡。

最“全”深度學習的完整硬體指南!

懷疑陣容您能否識別出因效能不佳而出現故障的硬體部分?其中一個GPU?或者也許這畢竟是CPU的錯

記憶體

RAM的主要錯誤是購買時脈頻率過高的RAM。第二個錯誤是購買不夠的RAM以獲得平滑的原型製作體驗。

所需的RAM時鐘速率

RAM時鐘速率是市場營銷的一種情況,RAM公司會引誘你購買“更快”的RAM,實際上幾乎沒有產生效能提升。

此外,重要的是要知道RAM速度與快速CPU RAM-> GPU RAM傳輸幾乎無關。這是因為(1)如果您使用固定記憶體,您的迷你批次將轉移到GPU而不涉及CPU,以及(2)如果您不使用固定記憶體,快速與慢速RAM的效能提升是關於0-3% - 把錢花在別的地方!

RAM大小

RAM大小不會影響深度學習效能。但是,它可能會阻礙您輕鬆執行GPU程式碼(無需交換到磁碟)。你應該有足夠的記憶體來舒適地使用你的GPU。這意味著您應該至少擁有與最大GPU匹配的RAM量。例如,如果你有一個24 GB記憶體的Titan RTX,你應該至少有24 GB的RAM。但是,如果您有更多的GPU,則不一定需要更多RAM。

這種“在RAM中匹配最大GPU記憶體”策略的問題在於,如果處理大型資料集,您可能仍然無法使用RAM。這裡最好的策略是匹配你的GPU,如果你覺得你沒有足夠的RAM,只需購買更多。

一種不同的策略受到心理學的影響:心理學告訴我們,注意力是一種隨著時間推移而耗盡的資源。 RAM是為數不多的硬體之一,可以讓您節省集中資源,解決更困難的程式設計問題。如果你有更多的RAM,你可以將注意力集中在更緊迫的問題上,而不是花費大量時間來環繞RAM瓶頸。有了大量的RAM,您可以避免這些瓶頸,節省時間並提高生產率,解決更緊迫的問題。特別是在Kaggle比賽中,我發現額外的RAM對於特徵工程非常有用。因此,如果您有錢並進行大量預處理,那麼額外的RAM可能是一個不錯的選擇。因此,使用此策略,您希望現在擁有更多、更便宜的RAM而不是以後。

中央處理器

人們犯的主要錯誤是人們過分關注CPU的PCIe通道。您不應該太在意PCIe通道。相反,只需檢視您的CPU和主機板組合是否支援您要執行的GPU數量。第二個最常見的錯誤是獲得一個太強大的CPU。

CPU和PCI-Express

人們對PCIe通道位數極為痴迷!然而,事實是它對深度學習表現幾乎沒有影響。如果您只有一個GPU,則只需要PCIe通道即可快速將資料從CPU RAM傳輸到GPU RAM。然而,ImageNet批次的32個影像(32x225x225x3)和32位需要1.1毫秒,16個通道,2.3毫秒,8個通道,4.5毫秒,4個通道。這些是理論數字,實際上你經常會看到PCIe的速度是它的兩倍 - 但這仍然是閃電般快速的! PCIe通道通常具有納秒範圍內的延遲,因此可以忽略延遲。

下面是用ResNet-152進行ImageNet32點陣圖像迷你批次傳輸測試的實際結果與理論資料的對比:

  • 前向和後向傳遞總用時:216毫秒(ms)
  • 16個PCIe通道CPU-> GPU傳輸:大約2 ms(理論上為1.1 ms)
  • 8個PCIe通道CPU-> GPU傳輸:大約5毫秒(2.3毫秒)
  • 4個PCIe通道CPU-> GPU傳輸:大約9毫秒(4.5毫秒)

因此,從4到16個PCIe通道將使效能提升約3.2%。但是,如果你使用帶有固定記憶體的PyTorch資料載入器,你可以獲得0%的效能。因此,如果您使用單個GPU,請不要在PCIe通道上浪費資金!

選擇CPU PCIe通道和主機板PCIe通道時,請確保選擇支援所需GPU數量的組合。如果您購買支援2個GPU的主機板,並且您希望最終擁有2個GPU,請確保購買支援2個GPU的CPU,但不一定要檢視PCIe通道。

PCIe通道和多GPU並行

如果您在具有資料並行性的多個GPU上訓練網路,PCIe通道是否重要?我已經在ICLR2016上發表了一篇論文,我可以告訴你,如果你有96個GPU,那麼PCIe通道非常重要。但是,如果你有4個或更少的GPU,這並不重要。如果您在2-3個GPU之間並行化,我根本不關心PCIe通道。有了4個GPU,我確保每個GPU可以獲得8個PCIe通道的支援(總共32個PCIe通道)。因為幾乎沒有人執行超過4個GPU的系統作為經驗法則:不要花費額外的錢來獲得每GPU更多的PCIe通道 - 這沒關係!

CPU核心數量很重要

為了能夠為CPU做出明智的選擇,我們首先需要了解CPU以及它與深度學習的關係。 CPU為深度學習做了什麼?當您在GPU上執行深度網路時,CPU幾乎不會進行任何計算。主要是它(1)啟動GPU函式呼叫,(2)執行CPU函式。

到目前為止,CPU最有用的應用程式是資料預處理。有兩種不同的通用資料處理策略,它們具有不同的CPU需求。

第一個策略是在訓練時進行預處理:

迴圈:

  • 載入小批次
  • 預處理小批次
  • 小批次訓練

第二種策略是在訓練之前進行預處理:

  • 預處理資料
  • 迴圈:1.載入預處理的小批次

2.小批次訓練

對於第一種策略,具有多個核心的良好CPU可以顯著提高效能。對於第二種策略,您不需要非常好的CPU。對於第一個策略,我建議每個GPU至少有4個執行緒 - 通常每個GPU有兩個核心。我沒有對此進行過硬測試,但每增加一個核心/ GPU,你應該獲得大約0-5%的額外效能。

對於第二種策略,我建議每個GPU至少有2個執行緒 - 通常是每個GPU一個核心。如果您使用第二個策略,那麼當您擁有更多核心時,您將不會看到效能的顯著提升。

雖然這種推理似乎很明智,但是當我執行深度學習程式時,CPU有100%的使用率,那麼這裡的問題是什麼?我做了一些CPU核心速率的低頻實驗來找出答案。

最“全”深度學習的完整硬體指南!

MNIST和ImageNet上的CPU降頻:可以看出,不同主頻CPU在核心大幅降頻後對整個系統的效能影響不大。作為比較:從GTX 580升級到GTX Titan的效能約為+ 20%;從GTX Titan到GTX 980另外+ 30%的效能; GPU超頻可為任何GPU帶來約+ 5%的效能

請注意,這些實驗是在過時的硬體上進行的,但是,對於現代CPU / GPU,這些結果應該仍然相同。

硬碟/ SSD

硬碟通常不是深度學習的瓶頸。但是,如果你做了愚蠢的事情依然會對你造成傷害:如果你在需要時從磁碟讀取資料(阻塞等待),那麼一個100 MB / s的硬碟驅動器將花費大約185毫秒的時間用於32的ImageNet迷你批次!但是,如果您在使用資料之前非同步獲取資料(例如Torch視覺載入器),那麼您將在185毫秒內載入小批次,而ImageNet上大多數深度神經網路的計算時間約為200毫秒。因此,在當前仍處於計算狀態時載入下一個小批次,您將不會面臨任何效能損失。

但是,我推薦使用SSD來提高舒適度和工作效率:程式啟動和響應速度更快,使用大檔案進行預處理要快得多。如果您購買NVMe SSD,與普通SSD相比,您將獲得更加平滑的體驗。

因此,理想的設定是為資料集和SSD配備容量效能稍差的機械硬碟驅動器,以兼顧生產力和成本。

電源裝置(PSU)

通常,您需要一個足以容納所有未來GPU的PSU。 GPU隨著時間的推移通常會變得更加節能;因此,雖然需要更換其他元件,但PSU應該持續很長時間,因此良好的PSU是一項很好的投資。

您可以透過將CPU和GPU的功耗與其他元件的額外10%瓦特相加來計算所需的功率,並作為功率峰值的緩衝器。例如,如果您有4個GPU,每個250瓦TDP和一個150瓦TDP的CPU,那麼您將需要一個最小為4×250 + 150 + 100 = 1250瓦的PSU。我通常會新增另外10%,以確保一切正常,在這種情況下將導致總共1375瓦特。在這種情況下,我想要獲得一個1400瓦的PSU。

需要注意的一個重要部分是,即使PSU具有所需的功率,它也可能沒有足夠的PCIe 8針或6針聯結器。確保PSU上有足夠的聯結器以支援所有GPU!

另一個重要的事情是購買具有高功率效率等級的PSU - 特別是如果你執行許多GPU並將執行它們更長的時間。

以全功率(1000-1500瓦)執行4 GPU系統來訓練卷積網兩週將達到300-500千瓦時,在德國 - 相當高的電力成本為每千瓦時20美分 - 將達到60- 100歐元(66-111美元)。如果這個價格是100%的效率,那麼用80%的電源進行這樣的網路訓練會使成本增加18-26歐元 。對於單個GPU而言,這個問題要少得多,但重點仍然存在——在高效電源上投入更多資金是有道理的。

全天候使用幾個GPU將大大增加您的碳足跡,並將使運輸(主要是飛機)和其他有助於您的足跡的因素蒙上陰影。如果你想要負責,請考慮像NYU機器學習語言組(ML2)那樣實現碳中性 - 它很容易做到,價格便宜,應該成為深度學習研究人員的標準。

CPU和GPU冷卻

冷卻很重要,它可能是一個重要的瓶頸,與糟糕的硬體選擇相比,它會降低效能。對於CPU來說,使用標準散熱器或一體化(AIO)水冷卻解決方案應該沒問題,但是對於GPU來說,需要特別注意。

風冷GPU

對於單個GPU,空氣冷卻是安全可靠的,或者如果您有多個GPU之間有空間(在3-4 GPU情況下為2個GPU)。但是,當您嘗試冷卻3-4個GPU時,可能會出現最大的錯誤之一,在這種情況下您需要仔細考慮您的選項。

現代GPU在執行演算法時會將速度以及功耗提高到最大值,但一旦GPU達到溫度障礙 - 通常為80°C - GPU將降低速度,以便溫度閾值為沒有違反。這樣可以在保證GPU不過熱的情況下獲得最好的效能。

然而,對於深度學習程式而言,典型的預程式設計風扇速度排程設計非常糟糕,因此在開始深度學習程式之後幾秒內就達到了這個溫度閾值。結果是效能下降(0-10%),這對於GPU相互加熱的多個GPU(10-25%)而言可能很重要。

由於NVIDIA GPU首先是一個遊戲GPU,因此它們針對Windows進行了最佳化。您可以在Windows中點選幾下就更改粉絲計劃,但在Linux中不是這樣,並且因為大多數深度學習庫都是針對Linux編寫的,所以這是一個問題。

Linux下唯一的選擇是用於設定Xorg伺服器(Ubuntu)的配置,您可以在其中設定“coolbits”選項。這對於單個GPU非常有效,但是如果你有多個GPU,其中一些是無頭的,即它們沒有附加監視器,你必須模擬一個非常複雜的監視器。我嘗試了很長時間,並且使用實時啟動CD來恢復我的圖形設定讓我很沮喪 - 我無法讓它在無頭GPU上正常執行。

如果在空氣冷卻下執行3-4個GPU,最重要的考慮因素是注意風扇設計。 “鼓風機”風扇設計將空氣推出到機箱背面,以便將新鮮、涼爽的空氣推入GPU。非鼓風機風扇在GPU的虛擬性中吸入空氣並冷卻GPU。但是,如果你有多個GPU彼此相鄰,那麼周圍就沒有冷空氣了,帶有非鼓風機風扇的GPU會越來越多地加熱,直到它們自己降低溫度以達到更低的溫度。不惜一切代價避免在3-4個GPU設定中的非鼓風機風扇。

用於多個GPU的水冷GPU

另一種更昂貴且更加工藝的選擇是使用水冷卻。如果你有一個GPU,或者你的兩個GPU之間有空隙(3-4 GPU板中有2個GPU),我不推薦使用水冷。然而,水冷卻確保即使最強勁的GPU在4 GPU設定下也能保持涼爽,這在用空氣冷卻時是不可能的。水冷卻的另一個優點是它可以執行很安靜,如果你在其他人工作的區域執行多個GPU,這是一個很大的優勢。水冷卻每個GPU需要花費大約100美元和一些額外的前期成本(大約50美元)。水冷還需要一些額外的工作來組裝你的計算機,但有很多詳細的指南,它應該只需要幾個小時的時間。維護不應該那麼複雜或費力。

為了更好的冷卻效果購買大機箱?

我為我的深度學習叢集購買了大型塔式機箱,但我發現這在很大程度上是無關緊要的:大約2-5°C的下降,卻導致空間佔用和成本上的飆升,不值得投資。最重要的部分是直接在GPU上的冷卻解決方案 - 而不是為GPU冷卻功能選擇昂貴的外殼。

結論冷卻

所以最後很簡單:對於1 GPU,空氣冷卻是最好的。對於多個GPU,您應該獲得鼓風式空氣冷卻並接受微小的效能損失(10-15%),或者您需要額外支付水冷卻,這也更難以正確設定並且您沒有效能損失。在某些情況下,空氣和水冷卻都是合理的選擇。然而,我會建議空氣冷卻以簡化操作 - 如果您執行多個GPU,請使用鼓風機式GPU。如果您想用水冷卻,請嘗試為GPU找到一體化(AIO)水冷卻解決方案。

主機板

您的主機板應該有足夠的PCIe埠來支援您要執行的GPU數量(通常限制為4個GPU,即使您有更多的PCIe插槽);請記住,大多數GPU的寬度都是兩個PCIe插槽,因此如果您打算使用多個GPU,請購買PCIe插槽之間有足夠空間的主機板。確保您的主機板不僅具有PCIe插槽,而且實際上支援您要執行的GPU設定。如果您在newegg上搜尋您選擇的主機板並檢視規格頁面上的PCIe部分,通常可以找到相關資訊。

電腦機箱

選擇外殼時,應確保它支援位於主機板頂部的全長GPU。大多數情況下都支援全長GPU,但是如果你購買一個小盒子,你應該懷疑。檢查其尺寸和規格;你也可以嘗試谷歌影像搜尋該模型,看看你是否找到了帶有GPU的圖片。

如果您使用自定義水冷卻,請確保您的外殼有足夠的空間放置散熱器。如果您為GPU使用水冷卻尤其如此。每個GPU的散熱器都需要一些空間 - 確保您的設定實際上適合GPU。

顯示器

顯示器貌似不應該出現在深度學習硬體的推薦列表裡,但出乎很多人的意料,顯示器對生產力的影響極為巨大。

我在3臺27英寸顯示器上花的錢可能是我用過的最好的錢。使用多臺顯示器時,生產力會大幅提升。如果我必須使用一臺顯示器,工作幾乎不能進行。如果您無法以有效的方式操作它,不要在這件事上做出改變。那麼快速深度學習系統有什麼用呢?

最“全”深度學習的完整硬體指南!

我的深度學習典型顯示器佈局:左:論文,谷歌搜尋,gmail,stackoverflow;中:程式碼;右:輸出視窗,R,資料夾,系統監視器,GPU監視器,待辦事項列表和其他小型應用程式。

關於構建PC的一些話

許多人害怕構建,因為硬體元件很昂貴,你不想做錯事。但它非常簡單,因為不屬於一起的元件不能組合在一起。主機板手冊通常非常具體描述如何組裝所有內容,並且有大量的指南和分步影片,如果您沒有經驗,它們將指導您完成整個過程。

構建計算機的好處在於,您知道在執行計算機時有關構建計算機的所有資訊,因為所有計算機都以相同的方式構建。

結論/ TL; DR

  • GPU :RTX 2070或RTX 2080 Ti。來自eBay的GTX 1070,GTX 1080,GTX 1070 Ti和GTX 1080 Ti也不
  • CPU :每GPU 1-2個核心,具體取決於您預處理資料的方式。 > 2GHz; CPU應該支援您要執行的GPU數量。 PCIe通道並不重要。
  • RAM
  • – 時脈頻率無關緊要 – 購買最便宜的RAM。
  • – 購買至少與最大GPU的RAM相匹配的CPU RAM。
  • – 僅在需要時購買更多RAM。
  • – 如果您經常使用大型資料集,則可以使用更多RAM。
  • 硬碟/ SSD
  • – 用於資料的硬碟驅動器(> = 3TB)
  • – 使用SSD來獲得舒適性並預處理小型資料集。
  • PSU
  • – 加上GPU + CPU的瓦數。然後將所需瓦數的總和乘以110%。
  • – 如果您使用多個GPU,請獲得高效率。
  • – 確保PSU有足夠的PCIe聯結器(6 + 8針)
  • 散熱
  • – CPU:獲得標準CPU散熱器或一體化(AIO)水冷解決方案
  • – GPU:
  • – 使用空氣冷卻
  • – 如果您購買多個GPU,則使用“鼓風式”風扇獲取GPU  
  • – 在您的Xorg中設定coolbits標誌配置控制風扇速度
  • 主機板
  • – 為您的(未來)GPU準備儘可能多的PCIe插槽(一個GPU需要兩個插槽;每個系統最多4個GPU)
  • 監視器
  • – 額外的監視器可能會比增加GPU更高效。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31545819/viewspace-2286439/,如需轉載,請註明出處,否則將追究法律責任。

相關文章