選自L7,作者:Curtis Northcutt,機器之心編譯。
如果想要進行深度學習訓練,在英偉達的新一代 GPU 中,RTX 2080Ti 是價效比最高的顯示卡(參見:首個 Titan RTX 深度學習評測結果出爐:2019 年你該選擇哪款 GPU?)。但即使不上泰坦,9000 元一塊的 GPU 也是很貴的。在本文中,來自 MIT 的 Curtis Northcutt 為我們找到了組建一臺三 2080Ti 深度學習工作站的最簡方式。
在他的配置下,整個系統需花費 6200 美元(約合 41700 元人民幣),相比 AI 硬體供應商 Lambda Labs 提供的整機要便宜一半。如何為實驗室組裝一臺最強大的計算機,讓我們來看看他是怎麼做到的。
我在 MIT 量子計算實驗室和數字學習實驗室構建了一臺多 GPU 深度學習工作站。在網路中搜尋時我發現,並沒有一篇文章詳細介紹了所有裝機細節。
不過我還是發現了像 Lambda GPU 工作站這樣的整機供應商。唯一的問題是:一臺這樣的機器需要花費 12,500 美元。這是進行頂級前沿深度學習研究的最佳配置,但如果買不起的話什麼都無從談起了。在這篇文章中,我將介紹一個自己版本的裝機配置——使用相同或更好的配置,而且節省一半以上資金:只需 6200 美元。為了能讓所有研究者獲得幫助,在這篇文章中我會分享所有配置細節。
如果你正在構建一臺較小的深度學習機器,你會發現本文同樣有用。在正文中,我加入了可進一步降低成本的一些示例。
在文章最後,我給出了自組建機器與谷歌計算引擎(GCE)深度學習 VM 的時間/成本對比。我使用 PyTorch ImageNet/ResNet50 訓練作為基準。
完美配置?
完美配置是不存在的,因為每個人的需求都不盡相同。即使過去曾經出現過,最佳配置也會隨著新硬體的不斷推出而改變。所以,本文試圖給出儘可能好的配置。
深度學習工作站的所有元件
以下就是清單的全部了。
我訂購的所有元件都是在 Newegg 上線上購買的,不過對於我們來說,亞馬遜等其他途徑都是可以的。如果你想去電子城找更便宜的,也可以嘗試。
在 2019 年 1 月 31 日,每個元件及其價格如下:
3 塊 EVGA 英偉達 RTX 2080 Ti GPU
EVGA GeForce 2080 Ti,3570 美元(每塊 1190 美元)
20 執行緒 CPU(中央處理器)
英特爾 Core i9 9820X Skylake X 10 核 3.3Ghz,850 美元
X299 主機板(所有其他元件都要連線主機板)
ASUS WS X299 SAGE LGA 2066 英特爾 X299,492 美元
機箱
海盜船 Carbide 系列 Air 540,130 美元
2TB M.2 SSD 固態硬碟
英特爾 660p 系列 M.2 2280 2TB PCI-Express,280 美元
3TB 機械硬碟(用於速度不敏感檔案的儲存)
希捷 BarraCuda ST3000DM008 3TB 7200 轉,85 美元
128G 記憶體
4 個海盜船 Vengeance LPX 32GB,740 美元(每個 185 美元)
1600W PSU 電源
EVGA SuperNOVA 1600W P2,347 美元(1300W 的電源在 ImageNet/ResNet50 基準測試時會出現斷電重啟)
散熱器
海盜船 Hydro 系列 H100i PRO 低噪音版,110 美元
在 Newegg 上使用會員賬戶購買的話,不算消費稅所有元件的總價為 6200 美元(升級後的電源另有 107 美元)。
每一個元件的考慮事項
在選擇 GPU、RAM、CPU 和主機板等元件時,需要牢記以下三個目標:
速度和容量最大化
避免元件間出現瓶頸
花費少
我列舉了構建工作站所需的所有元件以及每一元件的考慮事項。各元件以其對深度學習模型訓練的效能影響為序排列。
GPU
經基準測試,RTX 2080 Ti 是 2500 美元價位下最好的 GPU。
請購買 after-market GPU(如 EVGA 或 MSI),而不是英偉達 Founders Edition。
注意 RTX 2080 Ti 的過熱問題。
該工作站並未使用渦輪風扇式(blower-style)GPU(更便宜),但渦輪風扇式 GPU 的效能可能更好。
GPU 是深度學習機器中最為重要的元件,同時也是最昂貴的。你通常應該首先考慮使用哪種 GPU:裝配中的其他所有元件選擇將基於此。很多部落格都有介紹如何選擇滿足你需要的 GPU。
如果你想要一款高效能 GPU,我建議不要受市場營銷的干擾,直接購買 RTX 2080 Ti。如果你想自己做研究,並想要選擇一款價效比高的 GPU,則可以通過 videocardbenchmark.net 檢索,並在你的價格區間內選擇效能最佳的 GPU。除非你的預算在 2,500 美元以上,RTX 2080 Ti 是最佳選擇。如果效能降低 30%,你可以選擇購買更便宜的 RTX 2080 或者舊版 GTX 1080 Ti。為實現最佳的深度學習,我建議你購買至少 11GB 記憶體的 GPU,而這正是 RTX 2080 Ti 的記憶體容量。
在購買 RTX 2080 Ti 時,你會注意到市場上有大量相關品牌:EVGA、技嘉、華碩、微星等。這些都是所謂的 after-market GPU(非公版)。你也可以選擇直接購買英偉達的 Founders Edition。一般而言,如果你想追求最佳效能,不要購買 founders edition。為優化效能,EVGA 等公司會對 GPU 進行定製設計,有時會進行 GPU 超頻處理。Founders edition 是首次嘗試而非最佳嘗試。非公版 GPU 通常設計有一至三個風扇,大概風扇越多,效能越好。其中一些只是營銷噱頭罷了,兩個風扇通常就夠了。這裡的主要建議是:購買 EVGA、技嘉、華碩或微星的非公版 GPU。
請注意,after-market GPU 品牌眾多,價格不一。超頻 GPU 往往更貴,但通常會作出一些折中,因而實際上並不能提升效能。你通常只需購買最便宜的即可。
一些顧客已經抱怨過 RTX 2080 TI 的過熱問題。我在構建工作站時僅使用三個 GPU 就是為了增加冷卻氣流。如果沒有出現問題,我會另加第四個 RTX 2080 TI GPU。
我在構建工作站中使用了開放式風扇 GPU(風扇在每個 GPU 的底部),因為它們成本更低。渦輪風扇式 GPU 將氣流從機箱一側排出,使效能更佳。就我們使用的主機板而言,GPU 被壓縮得很緊,阻止開放式 GPU 風扇排出氣流。如果你購買了渦輪風扇式 GPU,風扇可直接將氣流從機箱一側排出。
固態硬碟 SSD
SSD <> GPU 資料遷移是深度學習訓練和預測的主要瓶頸。
m.2 SSD 比標準 SSD 快了 6 倍。
如果預算足夠,請購買 m.2 SSD。你需要與 m.2 相容的主機板。
從硬碟到 GPU 的資料遷移是深度學習的主要瓶頸,會極大降低訓練和測試時速。m.2 SSD 可以解決這個問題。最貴的 SSD 寫入速度為 3500 mb/s,而標準 SSD 寫入速度為 500 mb/s。
我購買了一個較便宜的 m.2 SSD 來構建工作站,其寫入速度約為 1800 mb/s,但容量較大,為 2 TB。你可能會覺得購買更小的 256MB m.2 SSD 更有用,因為它寫入速度更快且成本更低。這的確是以更少的成本獲得更好效能的好辦法。唯一需要注意的是,你要確保所有訓練資料都可以放在 m.2 SSD 上。
主機板
為了支援多 GPU,你需要足夠的 PCI-E 通道。
這意味著你需要 x299(英特爾 CPU)或 x399(AMD CPU)主機板。
你可以選擇便宜一點的,但如果預算足夠,可以考慮工作站(workstation)主機板。
主機板很難購買,因為選擇太多,很多人不清楚為什麼有的主機板會比其它主機板貴很多。對於深度學習來說,主機板最重要的方面是 PCI-E 通道的數量。在我構建的工作站中,主機板有 44 個 PCI-E 通道。這意味著如果有 3 個 GPU(每個需要 16 個通道),我可以在 32 個通道上執行兩個 GPU(每個 GPU16 個通道),在 8 個通道上執行 1 個 GPU(總共需要 40 個通道)。大多數基準測試表明,在 8 個通道和 16 個通道上執行 GPU 的效能差異可以忽略不計,但未來差別可能會大一些。至少,確保你的主機板有足夠的 PCI-E 通道,能夠滿足每個 GPU 所需的最少數量。所以對 3 塊 RTX 2080 TI GPU 來說,最少需要 24 個 PCI-E 通道。
另一個考量是選擇 x299(英特爾 CPU)還是 x399(AMD CPU)主機板。對每個處理執行緒來說,英特爾 CPU 更快,但對於相同數量的處理執行緒來說,AMD CPU 通常比英特爾 CPU 更便宜。我選擇用英特爾處理器(20 個執行緒和較快的處理速度),因此需要 x299 主機板。
更可靠(也更昂貴)的主機板通常被稱為工作站主機板。可靠性的提高是否值得如此高價仍有待商榷。我在自己的構建過程中選擇了工作站主機板,但如果你想選擇更便宜的,可以考慮 SUPERMICRO x299 主機板。它滿足了我的所有需求,但便宜了 100 美元。
CPU
選擇英特爾 X 系列(x299 主機板)或 AMD ThreadRipper(x399)。
對每個執行緒來說,英特爾 CPU 更快,但 AMD CPU 在相同的花費下支援更多執行緒。
通過考慮以下問題,基於你的計算需求選擇 CPU:
你是否需要執行大量多執行緒工作?
你需要每個執行緒執行很快嗎?
如果(1)回答「是」,而(2)回答(不需要),那麼你可以用更少的成本選擇支援 32 個執行緒的 AMD Ryzen Threadripper 2950X。如果第二個問題的答案是「需要」,那你可能想要選擇英特爾 CPU。
對於英特爾 CPU,你需要選擇核心的英特爾 X 系列 CPU 用於多 GPU 深度學習。只有 X 系列的 CPU 支援 x299 主機板,而只有 x299 主機板才具有足夠的 PCI-E 通道來支援多 GPU。如果你僅使用 2 個 GPU,那麼你可以減少主機板+CPU 的成本,選擇較便宜的 300 系列英特爾 CPU 和 LGA 1151 主機板(而非 x299)。這樣你就可以在 16 個 PCI-E 通道上執行一個 GPU,然後在另外 8 個通道上執行另一個 GPU(大部分 LGA 1151 主機板有 24 個 PCI-E 通道,但購買的時候請仔細確認)
機箱
選擇適合自己主機板的機箱(ATX 是標準尺寸,mini-ATX 較小)。
選擇具備氣流流通空間的機箱,以保持 GPU 低溫。
Carbide Series™ Air 540 High Airflow ATX Cube Case 比較適合深度學習工作站。
對於多 GPU 工作站,氣流和散熱是重中之重。選擇適合主機板的機箱。大部分使用多 GPU 的主機板是 ATX,因此你可以選擇一個適合 ATX 主機板的機箱。如果你不確定要買哪種機箱,Carbide Series™ Air 540 High Airflow ATX Cube Case 是不錯的選擇。
硬碟驅動器
如果 m.2 SSD 無法滿足儲存需求,購買 7200 RPM 的機械硬碟。
如果 m.2 SSD 太小,無法滿足你的儲存需求,你可以購買一個機械硬碟驅動器。它比較便宜,有兩種速度:5400 RPM(較慢)和 7200 RPM(較快)。RPM 表示每分鐘轉速,這些磁碟會在計算機內進行物理旋轉,所以會有噪音。不過機械硬碟驅動器比較便宜,你可以買一個 7200 RPM 的。
記憶體
購買低間隙記憶體(RAM),確保它適合你的機箱。
避免購買沒聽說過的牌子。
關於 RAM,你需要考慮它的容量、物理體積和延遲。我構建的工作站使用的是 128GB RAM,不過你可以根據資料集大小將容量減到 64GB 或 32GB。如果資金充足,我建議購買 128GB RAM,這樣在訓練深度學習模型時,你可以將整個資料集載入到記憶體中,避免每個 epoch 中出現 hard-drive <> RAM 瓶頸。
對於多 GPU 工作站,確保購買低間隙 RAM(較小機箱),間隙即 RAM 的高度。主機板上要安裝大量東西,有時候大機箱 RAM 會阻塞其他元件。海盜船 Vengeance 是一款不錯的低間隙 RAM。
如果你不使用全部 RAM 插槽的話,記得檢視主機板文件。將 RAM 放進合適的插槽中很重要!主機板和主機板文件通常會寫明放置 RAM 的位置。
PSU(電源供應器)
確保你的 PSU 可以提供充足的電量。參考 PSU 計算器:https://outervision.com/power-supply-calculator
每個 RTX 2080 Ti 需要大約 300W 能耗。
選擇全模組,因為電纜越少就意味著氣流越多。
我的 1300W PSU 導致最大負載時工作站會重啟,1600W 比較適合該工作站。
你可能會看到 gold PSU vs. platinum PSU。這指的是 PSU 所用的金屬,platinum > gold > silver > bronze > basic,它和 PSU 的效能有關。例如,同樣的計算量,bronze PSU 要比 platinum PSU 消耗更多電。如果你需要考慮省電的問題(同時也環保),可以考慮購買 platinum 或 gold PSU。
至於本文介紹的工作站,我原本買的是 Seasonic PRIME 1300W PSU,但是當我進行分散式 PyTorch ImageNet/ResNet50 訓練且最大化利用所有 GPU 時,工作站瀕臨重啟狀態。於是我換成了 EVGA SuperNOVA 1600 P2,這些問題解決了。注意,我使用 sudo nvidia-smi -pl 180 將 GPU 電量從 250W 降到 180W 時,1300W PSU 是可以使用的。不過我仍然推薦 1600W PSU,不然會限制 GPU 速度。
散熱系統
通常,不錯的氣流和適當的電纜管理對於 GPU 散熱來說足夠了。
高效能(i9 X-Series)CPU 散熱用海盜船 h100i 就可以了。
即使如此,如果可以請將機器放在陰涼、裝有空調的房間裡。
從散熱風扇到全系統水冷卻,你有很多選擇。通常,如果機箱很大且電纜管理合適,那麼你不用要太多華麗的東西。我構建的工作站中,CPU 沒有配備散熱器,我使用的是深度學習工作站中的標準配置海盜船 h100i。更低價的選擇是 Noctua NH-U9S CPU Cooler Fan。我沒買它的原因是它太大了,可能會阻塞部分 RAM 插槽。如果你只需要 32 GB RAM,你可以選擇這款散熱風扇。
基準測試 VS 谷歌計算引擎
我對這臺機器和谷歌計算引擎(GCE)深度學習虛擬機器進行了基準測試對比。這些虛擬機器據稱是專門為優化深度學習而預構建的。GCE 深度學習虛擬機器使用 CUDA 版本和基於原始碼構建的驅動程式,這些程式轉為其硬體架構而優化。GCE 虛擬機器沒有英偉達 RTX 2080 Ti GPU,所以我用 Tesla K40 來代替。根據不同的基準任務,英偉達 RTX 2080 Ti 的效能是 GPU Tesla K40 的 2 倍至 4 倍。所以為了公平起見,我將這臺裝置上的一個 RTX 2080 Ti 與 GCE 虛擬機器上的 4 個 Tesla K40 進行了對比。
為了做基準測試,我使用了 PyTorch 的 ImageNet 分散式案例。我下載了 ImageNet 2012 訓練和驗證集,並在我的個人機器和 GCE 深度學習虛擬機器上執行了以下程式碼:
python examples/imagenet/main.py -a resnet18 --lr 0.1 --dist-url 'tcp://127.0.0.1:FREEPORT' --dist-backend 'nccl' --multiprocessing-distributed --world-size 1 --rank 0 "/location/where/I/stored/imagenet/"複製程式碼
GCE 深度學習虛擬機器規格
我建立的虛擬機器規格如下:
架構:64 位,x86_64
K40 GPU 數量:8
記憶體:394 GB
RAM:172 GB
CPU 執行緒數量:24
ImageNet 訓練時間基準
訓練 1 個 epoch 所需時間對比:
我構建的工作站上 1 個 RTX 2080 TI 訓練 1 個 epoch 耗時:37.5 分鐘
GCE 虛擬機器上 4 個 Tesla K40 GPU 訓練 1 個 epoch 耗時:86.3 分鐘
這些值是經過 50 個 epoch 訓練後平均得到的。執行的程式碼和上面相同,沒有在任何一臺機器上展開其它程式。
訓練每個 epoch GCE 所需的花費
我使用的 GCE 架構並不是最具成本效應的設定,訓練花費為:
4 個 Tesla K40 GPU 訓練 1 個 epoch 所需花費為 12.77 美元
所以用 Tesla K40 GPU 對 ImageNet 進行 100 個 epoch 訓練將花費約 1277 美元。而對於整個虛擬機器來說,將花費約 21 美元/小時。
與 Lambda 的 4-GPU 工作站進行對比
我所構建的工作站旨在優化成本/效能權衡。如果你想構建與 Lambda 4-GPU 更加匹配的工作站,那麼可以看一下 Lambda CEO Stephen Balaban 在 reddit 上分享的幾條建議:
新增一塊額外的渦輪風扇式 GPU(1349 美元)
加 159 美元,將另外 3 塊 GPU 都升級成渦輪風扇式 GPU(共 477 美元)
加一個熱插拔式驅動器托架(50 美元)
加 1600W PSU(107 美元)
將 CPU 從 10 核升級到 12 核(189 美元)
上述原本工作站需花費 6200 美元
進行以上調整後,整個工作站的總花費大約是 8372 美元,比 Lambda 工作站少大概 4000 美元。
其他
我使用的作業系統是 Ubuntu Server 18.04 LTS,我使用 TensorFlow Cuda 10.1(從原始碼安裝)和 PyTorch。當我長時間以最大容量使用這三塊 GPU 時,我發現最上面的 GPU 出現過熱降頻,造成效能出現 5%-20% 的下降。這可能是雙風扇 GPU 設計的緣故。如果你擔心這個問題的話,推薦使用渦輪風扇式 GPU,以避免過熱降頻。