本文接上一篇《2020 年 10 月的單 GPU 深度學習工作站配置指南》,探討多 GPU 工作站的搭建。很多在單 GPU 工作站中不甚重要的因素在多 GPU 工作站中變得舉足輕重。
本文主要參考了以下文章:
Which GPU(s) to Get for Deep Learning: My Experience and Advice for Using GPUs in Deep Learning[1]A Full Hardware Guide to Deep Learning[2]Deep Learning Hardware Deep Dive – RTX 3090, RTX 3080, and RTX 3070[3]What’s the Difference Between a Blower and an Open-Air GPU Cooler?[4]搭建多 GPU 工作站的要點是避免顯卡過熱與電源過載,其它很多方面與單 GPU 工作站的原則相似,沒有提到的方面(包括顯卡的選擇)請參考《2020 年 10 月的單 GPU 深度學習工作站配置指南》。
雙 GPU 工作站PCI-E 帶寬隨著 GPU 的增加,模型訓練的並行程度和 GPU 之間的數據傳輸增加,PCI-E 帶寬變得越來越重要。然而對於雙 GPU 工作站來說,PCI-E 帶寬的重要性仍然有限。已經有人對 PCI-E 3.0 下 x16 和 x8 通道進行過測試[5],結論是影響非常小。那麼在 x4 甚至 x2 或 x1 時帶寬對深度學習有影響嗎?目前還不清楚。
一個現實是 CPU 擁有的 PCI-E 通道是有限的:
CPU支持 PCI-E 等級通道數Ryzen 3000/50004.024Core3.020而有限的通道中至少要給 NVME 存儲器分配 4~8 個通道。既然 x8 通道對深度學習沒什麼影響,雙 GPU 完全可以使用雙 x8 通道。這裡支持 PCI-E 4.0 的優勢顯示出來了,一個 x8 PCI-E 4.0 通道相當於一個 x16 PCI-E 3.0 通道(30 系列顯卡才支持 PCI-E 4.0)。雙 x8 PCI-E 通道並聯被 NVIDIA 稱為 SLI 技術,高端晶片組 X570 和 Z490 都支持 SLI,所以在買主板的時候留意是否支持 SLI 就可以了。根據我的經驗,只要主板上的兩個 PCI-E 插槽都有金屬包裝,很可能就支持 SLI:
GIGABYTE X570 AORUS PRO:請注意上面兩個 PCI-E x16 插槽有金屬包裝支持 SLI 的主板上如果還有第三個 PCI-E x16 插槽,這個插槽的通道要麼走主板晶片要麼與第二個插槽平分通道。比如上圖,如果在最上面的兩個插槽的任意一個中插一張卡,則為 x16 通道;在上面兩個插槽插兩張卡,則為 8-8 通道;三個插槽都插卡,則為 8-8-4 或 8-4-4 通道。
X570 主板中支持雙路 x8 PCI-E 的型號有:
ASRock X570 Phantom Gaming XASUS AMD AM4 ROG Crosshair VIII HeroASUS ROG Strix X570-E GamingASUS ROG Strix X570-F GamingGIGABYTE X570 AORUS ULTRAGIGABYTE X570 AORUS MASTERGIGABYTE X570 AORUS XTREMEMSI MEG X570 GODLIKE 有 4 個 x16 PCI-E 插槽,前三個可以以 8-4-4 通道數連接;第四個 PCI-E 插槽走主板晶片以 4 條通道連接(8-4-4-4)。
MSI MEG X570 GODLIKEZ490 主板中支持雙路 x8 PCI-E 的型號有:
ASUS ROG STRIX Z490-E GAMINGASUS ROG MAXIMUS XII APEXASUS ROG MAXIMUS XII FORMULAGIGABYTE Z490 AORUS PRO AXGIGABYTE Z490 AORUS ULTRAGIGABYTE Z490 AORUS MASTERGIGABYTE Z490 AORUS ULTRAMSI MPG Z490 GAMING CARBONX570 和 Z490 晶片組是最高端的晶片組,比 B550 和 B460 貴一些;支持 SLI 的功能算是進階設計,價格要更貴一些。
CPU、內存、電源的選擇理論上 4 核 CPU 足夠,如果有很多預處理任務也可以買 6 核的 3600 和 10400F 或者 8 核的 3700x 和 10700F,再多就沒有必要。內存的大小看實際需求和 pipeline 設計,要麼不小於單卡顯存 + 6~8G,要麼不小於顯存之和 + 6~8G。如果使用 4 核 CPU 配兩張 3070 顯卡,可選 750W 或 850W 電源;如果使用 6 核 CPU 配兩張 3080/3090 顯卡,至少要使用 1000W 電源。散熱如果安裝兩塊 3070,發熱與兩塊 2080 Ti 差不多,散熱應該不是大問題;如果安裝兩塊 3080 或 3090,請參考下面的散熱部分。
三 GPU 工作站PCI-E 帶寬如果希望三張卡都有至少 x8 帶寬,Core 和 Ryzen 就不能滿足了,必須是 Core X-Series,Xeon,Threadripper 或者 EPYC。我對 Xeon 和 EPYC 完全不了解,此處略。
CPU支持 PCI-E 等級通道數Threadripper4.06410 代 Core X-Series3.048若主板上有三個 PCI-E 插槽,Intel X299 和 AMD sTRX40 主板都支持 16-8-16 分配;若有第四個插槽,sTRX40 可以支持 16-8-16-8 分配,而 X299 支持 8-8-8-8 分配。此處 AMD 的優勢又體現出來了,不要說 Threadripper 支持更多的 PCI-E 通道,而且 PCI-E 4.0 x8 已經相當於全速 PCI-E 3.0 x16。Threadripper 唯二的缺點是貴和功耗大(然而未必比 Core X-Series 的滿載功耗更大)。
ASRock TRX40 TAICHI 主板支持 16-16-16 通道分配,是 Threadripper 的最佳搭配。
供電常見的 CPU 與 GPU 的熱設計功率(TDP)為:
CPUTDPThreadripper280WCore X-Series165W新 30 系列 GPU 的熱設計功率為:
GPUTDPRTX 3090350WRTX 3080320WRTX 3070220W如果使用 Core 10920X 搭配三塊 3070,推薦 1000W 電源;其它搭配推薦 1500W 電源。
散熱GPU 到了三塊,散熱開始需要重視,不然顯卡會因為過熱自動降頻。顯卡的散熱方式有風冷和水冷兩種,風冷又分渦輪式散熱(blower)和開放式兩種(open-air)兩種。
開放式散熱:由風扇吸入冷空氣,冷空氣在散熱片上進行熱交換,熱空氣在 GPU 的周圍排出。渦輪式散熱:整個 PCB 板被包裹起來,冷空氣被風扇吸入後在散熱片上進行熱交換後在 GPU 後擋板處排出。水冷散熱:冷水被水泵抽到晶片上吸收晶片的熱量,熱水隨後被抽到散熱片與冷空氣進行熱交換。使用開放式散熱的顯卡會面臨熱空氣被其它顯卡吸收的問題,會降低散熱的效果,極端情況下會造成顯卡過熱自動降頻,從而降低性能。如果顯卡之間有超過 1 個 PCI-E 空位,則基本不會存在散熱的問題,但是這樣由於空間的限制可能僅可以使用雙卡;對於三卡工作站而言,渦輪式散熱顯卡或水冷散熱顯卡是必需的,然而是否可行仍需實踐。
風道與機箱的選擇當使用了 3 塊以上的 GPU 以後,機箱的風道變得很重要,否則熱空氣會在機箱內積累,一樣會造成顯卡過熱。一款合適的深度學習伺服器機箱應該有充足的內部空間和足夠多放風扇的位置。我推薦兩款機箱:
Thermaltake Core X71這個機箱的優點是可以裝下足夠多的風扇(上面 3 個,前面 2 個,下面 3 個,後面 1 個),非常適合多個水冷設備。
Corsair Carbide Series Air 540這個機箱的優點是內部空間非常充足,可以安裝風扇的位置也不少(上面 3 個,前面 2 個,後面 1 個)。
顯卡選擇如果顯卡之間有足夠的空間,那麼可以使用開放式散熱顯卡;3 塊以上顯卡空間有限,需要使用渦輪式散熱顯卡或水冷顯卡。現在各個廠商只發布了開放式散熱設計的顯卡,下面的型號可能還沒有公開發布:
GIGABYTE MSI GeForce RTX 3090 TURBO 24GColorful iGame Neptune GeForce RTX 30 系列EVGA GeForce RTX 3080 10GB HYDRO COPPEREVGA GeForce RTX 3090 KINGPIN Hybrid四 GPU 工作站供電如果使用四張顯卡,應該把主機放在專業機房內;在普通民用環境中目前只可能使用四張 3070 顯卡,推薦 1500W 電源。
美國電腦供應商 Puget Systems 近期發表了一篇研究搭建一臺擁有 1~4 張 GIGABYTE MSI GeForce RTX 3090 TURBO 24G 顯卡的工作站[6]的可能性的博客。當使用 4 塊 3090 顯卡時,使用了雙 1600W 供電。在美國,3 塊 3090 已經接近了普通民用電路的供電極限。
主板的選擇如果使用四張顯卡,最好每張顯卡都有 8 條通道。對於 Threadripper 來說,目前唯一的選擇是 Gigabyte TRX40 DESIGNARE Motherboard:
而對於 Core X-Series 來說,可以選擇以下主板:
GIGABYTE X299X AORUS MASTER(8-8-8-8 通道)MSI Creator X299 LGA(8-8-16-8 通道)MSI MEG X299 CREATION(8-8-16-8 通道)EVGA X299 DARK(8 x 3 + 16 x 2 通道)還有兩張主板有 7 個 PCI-E 插槽,因為有橋接晶片,支持 4 路 x16 PCI-E 通道:
GIGABYTE X299-WU8ASUS WS X299 SAGECPU 與內存Threadripper 是 24 核起,Core X-Series 是 12 核起,配 4 張 GPU 足夠用了。
內存請參考雙 GPU 部分。
現在是購買 RTX 30 系列顯卡的好時候嗎?我認為不是。
深度學習框架對新 CUDA 和 CuDNN 的支持還不夠;NVIDIA 已經說了,目前的缺貨會延續到 2021 年。我們還是耐心等待吧。另外也希望 Big Navi 的性能和供貨給力,讓本來打算買 N 卡的人去買 A 卡,給我們深度學習民工一條生路啊。
參考資料[1]Which GPU(s) to Get for Deep Learning: My Experience and Advice for Using GPUs in Deep Learning: https://timdettmers.com/2020/09/07/which-gpu-for-deep-learning/
[2]A Full Hardware Guide to Deep Learning: https://timdettmers.com/2018/12/16/deep-learning-hardware-guide/
[3]Deep Learning Hardware Deep Dive – RTX 3090, RTX 3080, and RTX 3070: https://lambdalabs.com/blog/deep-learning-hardware-deep-dive-rtx-30xx/#blower-gpus
[4]What’s the Difference Between a Blower and an Open-Air GPU Cooler?: https://www.howtogeek.com/365215/what’s-the-difference-between-a-blower-and-an-open-air-gpu-cooler/
[5]PCIe X16 vs X8 with 4 x Titan V GPUs for Machine Learning: https://www.pugetsystems.com/labs/hpc/PCIe-X16-vs-X8-with-4-x-Titan-V-GPUs-for-Machine-Learning-1167/
[6]Quad GeForce RTX 3090 in a desktop - Does it work?: https://www.pugetsystems.com/labs/articles/Quad-GeForce-RTX-3090-in-a-desktop---Does-it-work-1935/