選自L7,做者:Curtis Northcutt,機器之心編譯。python
若是想要進行深度學習訓練,在英偉達的新一代 GPU 中,RTX 2080Ti 是性價比最高的顯卡(參見:首個 Titan RTX 深度學習評測結果出爐:2019 年你該選擇哪款 GPU?)。但即便不上泰坦,9000 元一塊的 GPU 也是很貴的。在本文中,來自 MIT 的 Curtis Northcutt 爲咱們找到了組建一臺三 2080Ti 深度學習工做站的最簡方式。bash
在他的配置下,整個系統需花費 6200 美圓(約合 41700 元人民幣),相比 AI 硬件供應商 Lambda Labs 提供的整機要便宜一半。如何爲實驗室組裝一臺最強大的計算機,讓咱們來看看他是怎麼作到的。網絡
我在 MIT 量子計算實驗室和數字學習實驗室構建了一臺多 GPU 深度學習工做站。在網絡中搜索時我發現,並無一篇文章詳細介紹了全部裝機細節。多線程
不過我仍是發現了像 Lambda GPU 工做站這樣的整機供應商。惟一的問題是:一臺這樣的機器須要花費 12,500 美圓。這是進行頂級前沿深度學習研究的最佳配置,但若是買不起的話什麼都無從談起了。在這篇文章中,我將介紹一個本身版本的裝機配置——使用相同或更好的配置,並且節省一半以上資金:只需 6200 美圓。爲了能讓全部研究者得到幫助,在這篇文章中我會分享全部配置細節。架構
若是你正在構建一臺較小的深度學習機器,你會發現本文一樣有用。在正文中,我加入了可進一步下降成本的一些示例。tcp
在文章最後,我給出了自組建機器與谷歌計算引擎(GCE)深度學習 VM 的時間/成本對比。我使用 PyTorch ImageNet/ResNet50 訓練做爲基準。分佈式
完美配置?ide
完美配置是不存在的,由於每一個人的需求都不盡相同。即便過去曾經出現過,最佳配置也會隨着新硬件的不斷推出而改變。因此,本文試圖給出儘量好的配置。性能
深度學習工做站的全部組件學習
如下就是清單的所有了。
我訂購的全部組件都是在 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,以免過熱降頻。