最近為公司搭建了一臺實驗用的深度學習主機,在網絡上參考了大量的資料,給出了目前最好的配置。本文首先會介紹所有硬件的選擇分析,然后介紹深度學習環境搭建流程,最后給出一些簡單的性能對比測試。
本文方案定位:適用于預算在5萬內,用于深度學習模型研究、開發,需要快速建模驗證調參的企業或實驗室用戶。
目錄
Chapter 1:配置方案選擇
Chapter 2:深度學習環境搭建
Chapter 3:簡單性能對比測試
Chapter 1 配置方案選擇
首先先上完整的配置清單:
部件 | 型號 | 價格 | 數量 | 合計 |
---|---|---|---|---|
GPU | 微星1080Ti公版 11G | 6400 | 3 | 19200 |
CPU | I7 6850K盒裝 | 4480 | 1 | 4480 |
主板 | 華碩X99-EWS | 4550 | 1 | 4550 |
內存 | 海盜船復仇者16G/2400 | 975 | 4 | 3900 |
SSD | 三星960EVO 500G | 1850 | 1 | 1850 |
電源 | 長城1250w | 945 | 1 | 945 |
散熱器 | 九州風神大霜塔至尊版 | 285 | 1 | 285 |
機械硬盤 | 希捷2TB/7200轉64M | 450 | 1 | 450 |
機箱 | 美商海盜船780T白色全塔機箱 | 1250 | 1 | 1250 |
總計 | 36910 RMB |
GPU
由于預算所限,就不必考慮NVIDIA Tesla那種專業計算卡了,一張基本的K80卡都要5萬以上起步,而且K80的性能還沒1080Ti的好,所以我們直接考慮英偉達消費級的卡,GeForce 10系列。
選購GPU之前先參考一下WIKI上有關Nvidia 10系列的顯卡參數對比,原網址請點擊這里:Nvidia GeForce 10 Series.
最重要的三個參數為:時鐘頻率(Clock speeds)、內存(Memory)和帶寬(Bandwidth)。從上圖可以看到,1080Ti是消費級性價比最高的GPU,擁有480GB/s的帶寬,單精度運算能力達到10.6TFPS,內存11GB,僅次于最新的Titan Xp,而且價格低,性價比最高。當然,如果你不差錢,選擇Titan Xp也是極好的。
這里選擇使用3張1080Ti,之所以不選擇4卡,與主板和電源有關,后面會解釋。使用多卡,最明顯的優勢是當你進行神經網絡調參的時候,可以同時使用多卡進行多個參數調整,也就是說每一個不同參數的模型對應使用一個GPU來訓練。以往我們每調一次參數,就只能等模型完全訓練完之后,才能再調參數進行下一次訓練,這樣等待的時間太長,不利于研究人員的思考。我曾經用AWS的P2實例(K80 GPU)復現李飛飛組的《Perceptual losses for real-time style transfer and super-resolution》一文,跑一輪需要3小時,跑出來之后發現結果不好,需要調整一些參數,又要等3小時才能出結果,這是在太慢了……如果能有多卡,時間就起碼縮短了3倍!
建議:如果不考慮成本問題,盡量用帶水冷的顯卡,因為在滿載運行的時候,顯卡溫度會上升到86度左右,而且默認的英偉達顯卡風扇速度設置最高不能超過70%,當然可以通過調節風扇速度來降溫,詳細教程請看我另一篇文章:深度學習訓練時GPU溫度過高?幾個命令,為你的GPU迅速降溫。
PS: 最近由于比特幣價格上漲,礦工不斷搜刮市面上的顯卡,導致顯卡價格不斷攀升,在上月給供應商發配置單時,公版1080Ti最低價只要RMB 5800,但過了幾周實際下單時,價格已經上漲到RMB 7000,而且不一定有貨,所以在購買GPU之前要問清你的供貨商有沒有貨。
主板
網絡上很多文章都建議使用Z170主板或X99系列的主板,Z170主板一般是個人用戶使用,價格較低,而且一般用于單卡。這里要使用3卡,因此選擇X99系列的高端主板,支持多卡。一開始選擇的是微星 X99A SLI PLUS主板,此款主板支持3 x PCIe x16,價格在2000左右。但后來發現了華碩X99-E WS這款主板,這簡直就是為深度學習所設計的,先看看參數:
我最看重的有三點:第一是支持4 x PCI-E x16,GPU若能工作在x16帶寬下工作,就能最大限度地發揮性能,雖然此款主板理論上支持4路x16,但實際上當插滿4卡時,實際帶寬會工作在x16/x8/x8/x8帶寬中,所以實際上沒有完全發揮4卡性能,因此本方案只選擇3卡,讓其工作在x16帶寬中(我沒找到能同時工作在4個x16帶寬的主板)。第二是其支持40 Lane的CPU,CPU核心多、線程多,這對于數據預處理非常有用!第三是能插8條內存,支持128GB內存,對于后面升級都是非常有利的。
這款主板是為工作站而生,沒有花俏的外觀,只有強大的性能,而且主板的結構大小適合同時插滿4張大顯卡,1080Ti這個尺寸的顯卡沒問題,要知道市面上有些說支持4路的主板是不一定有足夠位置插滿大顯卡的,可能只支持尺寸小一點的顯卡,大家在選購時要注意。
CPU
CPU對于深度學習的任務來說,重要性并沒有GPU那么高,所以一般個人用戶就選擇i5或e5-1620v4這類性價比較高的處理器。但為了不讓CPU成為性能提升的瓶頸,我把目光放在了i7和e5身上,選擇CPU個人認為需要考慮的是:核心架構、核心數線程數、主頻和PCIE通道數(lanes)。
主板限定了CPU必須為2011-v3或酷睿I7系列的處理器,其它就不必考慮了。重點提PCIE通道數,在深度學習的任務處理中,PCIE通道數lanes越高,數據處理得越快,可以理解為一個40車道的高速公路肯定比16車道的快!所以我們優先考慮Lanes為40的CPU,那么可以縮小范圍到以下幾款:(數據引用自維基百科)
注意上圖除了i7-6800K是28 lanes之外,其他都是40 lanes。Lanes數為40的除了上面幾款i7處理器之外,至強E5-1620v4同樣也是40 lanes的CPU,而且你能以千元價位買到,因此是個人用戶性價比首選!
考慮價格,6900k和6950x貴的有點離譜,6850K主頻高(雖然沒4.0GHz但我們又不用來玩游戲),6核12線程,應該能夠滿足處理imagenet這類大數據集了吧,因此最終敲定i7-6850K!
SSD
SSD選擇的是三星960EVO 500G,這型號的SSD是最新的NVME M.2固態,NVME M.2是下一代主流固態硬盤標準,用一個字概括就是:“快!”比傳統SSD還快,感受如何?請點擊這個鏈接感受下:使用PCI-E NVMe的SSD是什么樣的體驗?知乎
機箱
特別說一下機箱,機箱也是特別重要的部件,主要是因為要裝3張顯卡,除了主板的尺寸有要求之外,機箱也要盡可能大,這樣才有利于散熱。另外一個原因是假如后期想加裝分體式水冷,也有足夠的空間去安裝。
網絡上呼聲最高的當屬nvidia2014年推出的Deep learning Box同款機箱,美商海盜船 AIR540,某東鏈接:美商海盜船 AIR540 USB3.0 中塔側透。
但要注意的是此款機箱是中塔尺寸,所以一般個人用戶來說就足夠了,但由于要多卡,所以最好使用全塔式機箱。找了很久,確定用這款:美商海盜船780T,某東鏈接點這里。
這款機箱的特點就是:大!比大更大!
送過來的時候要兩個人一起搬才搬得方便,打開包裝放在地上,幾乎就頂到桌子了,高度達67.3厘米。
可以看到內部空間還有很多空余的地方,如果要加裝水冷還是可以的。
重量達幾十斤,可以對比一下旁邊我的工作用電腦,這體型差距實在是太大了!總體來說還是挺滿意的,而且顏值也高,因此我給它取名為:“DeepShark大白鯊”。
其它部件
機械硬盤來個1到2TB左右的就好,一般一線大廠差別都不大,選了希捷2TB。散熱器選了九州風神大霜塔,能壓住I7-6850K,體型還挺大的,不過對我的主板來說尺寸剛剛好,不會擋住顯卡。電源的功率一定要夠,粗略算了一下3張顯卡每張功率峰值250w,CPU150w左右,加起來不會超過1000w,所以選了個1250w的電源(另外供貨商也找不到現貨更大的電源了)。內存最低也要64GB,所以選了4個2400MHz/16GB的海盜船復仇者,注意主板和CPU支持你的內存頻率就最好,不然會被降頻使用。
Chapter 2:深度學習環境搭建
此部分由于篇幅太長,我已經寫在了另外一篇文章,上面有非常詳細的環境搭建過程,適用ubuntu16.04系統、1080Ti顯卡、華碩X99-E WS高端主板,搭建過程中由于是新顯卡新主板,遇到不少的坑,因此想寫出來分享給大家,以免大家走彎路,鏈接在此:Ubuntu16.04 + 1080Ti深度學習環境配置教程。
Chapter 3:簡單性能對比測試
由于手上正在復現李飛飛組的fast neural-style,因此就用這個項目來對AWS P2.xlarge實例和GTX 1080Ti進行性能對比,更多的性能對比可以參考medium上slav ivaniov的裝機及性能對比評測,他的性能對比更加全面,鏈接點這里:
數據集有兩個,分別是209MB的低分辨率圖片集和3GB的高分辨率圖片集,均是使用部分imagenet 的數據集ILSVRC2012處理而成,網絡模型完全根據Johnson, Justin Alahi, Alexandre,Fei-Fei, Li et al的《Perceptual losses for real-time style transfer and super-resolution》,網絡模型如下圖:
GPU參數對比:
|name|GPU|memory|band width|arcitecture|price|
|--|--|--|--|--|
|AWS P2.xlarge|K80|24 Gb|480 GB/s|Kepler|$ 0.9/h|
|Deep Shark|1080Ti|11 Gb|484 GB/s|Pascal|$ 850|
使用K80進行模型訓練,訓練一輪需要3小時:
使用1080TI進行模型訓練,每輪只需15分鐘:
足足快了15倍!不得不說,跨了幾代架構的顯卡性能不在同一個量級,其實不能拿來作比較,最好還是在同一個Pascal架構下作對比,但由于大多數人在沒有GPU的時候都是使用AWS的GPU服務器,作這個對比也可以讓大家分析下后面還要不要用AWS,租用AWS每小時0.9美元,但是速度慢,使用時間就更長,每個月的賬單因人而異,許多網友表示把這些賬單加起來都能買好一點的GPU了,本人在3個月使用里面花了差不多1000塊人民幣,的確長期來說還是自己買機器的實惠。
總結
組建GPU機器時,首先考慮的是定位,到底是企業、實驗室用還是個人用,到底是實驗用還是工業用,定好位后就要考慮各硬件參數,盡量把性能最大化。多卡永遠比單卡要方便,因為能同時運行多個模型,對研究人員的分析非常有利,成本允許的情況下盡量買當前性能最好的卡,后面還能持續使用幾年,這樣成本也就分攤開了。
如果你對上面的方案有不同的意見,歡迎在底部留言,我們共同來探討更好的方案。