一台優秀的GPU伺服器是什麼樣子的?
- 2019 年 12 月 10 日
- 筆記
到年底了,又到了各大高校開始動手採購GPU伺服器的時候到了,最近不少學生在QQ上請我們幫忙看看配置
對此,我們覺得還是有必要寫個文章來說一下如何配置一台GPU伺服器。
用途要清晰
在配置一台GPU伺服器之前,你首先要明確一下: 我買這台GPU伺服器到底要幹什麼?
你是做研究?還是做生產(比如你是要拿來運營GPU數據中心的)?
關於集群
做生產用的,就是搭建GPU數據中心,一般都是上集群,有專門的機房,這類用戶一定需要機架伺服器,GPU卡一定是用Tesla卡。如果你用機架伺服器搭遊戲卡,我只能呵呵,從這配置上就不專業好吧(挖礦的用戶一定表示不服)。
既然是集群用,數據存儲、Infiniband網路基本一個都不能少,經費充足,又希望得到NVIDIA原廠技術支援,那麼顯然是採購NVIDIA DGX系列伺服器。目前一台DGX-1機架伺服器價格在70萬-90萬之間(注意有分教育價格和非教育價格)。具體規格我不在這裡說了,大家可以去NVIDIA官網搜索一下相關資料。
你的DGX集群規模越大,越能召喚NVIDIA工程師給你幹活!(一般人我都不告訴)
採購DGX系列伺服器需要向具備NVIDIA NPN資格的分銷商諮詢,比如浪潮、聯強、寶德、思騰創新等。他們相對應的NVIDIA銷售資源豐富一些。
如果預算不是那麼多,那麼我還是建議採購品牌伺服器為主,並且是向有豐富集群建設經驗的系統集成商採購,這樣你的負擔會小很多,我也經常在QQ 群里遇見採購個小集群,然後經銷商只管按照用戶列的配置賣,不幫你裝環境,什麼都不管,然後學生痛苦地配置集群環境。(弱弱吐槽一下一般經過學校招投標殺低價後,很多供應商都是只會按照配置賣,其它什麼都不懂的)——基本上我建議向浪潮、惠普、Dell等有集群經驗的供應商採購。採購之前要跟他們了解一下過去是否有集群搭建經驗 ,尤其是環境配置,所以最好是把這一條放到招標文件里。
再也不需要為配置Tesla 深度學習伺服器發愁了,NVIDIA早就為你準備好了…
一般來說高校研究單位買GPU伺服器是用來研究學慣用的。我們主要談談這一部分。
單精度or雙精度?
這個問題也很重要!
一般來說做科學計算的用戶對雙精度(FP64)計算要求高,
對深度學習或者神經網路的用戶來說對雙精度計算要求不那麼高,單精度(FP32)計算就可以了。
關於什麼是單精度、雙精度,可以看一下這個文章(科普 | 單精度、雙精度、多精度和混合精度計算的區別是什麼? )
如果你對雙精度計算要求高的話,那麼你就只能買Tesla卡了。目前市場上可以買到的具備雙精度計算能力的Tesla卡就是Tesla V100和Tesla P100:
(注意現在銷售的主要是32G顯示記憶體的Tesla V100)
有哪些主流的科學計算是可以利用GPU加速?這一篇讓你看明白!
NVIDIA Tesla V100在高性能應用中到底有多強?一文讓你知道
Q:預算夠買Tesla卡么?
經常遇到老師問能推薦一款2萬以內的支援雙精度的Tesla卡么?
——還真的沒有!32GB Tesla V100 行貨的市場價格在6萬左右,Tesla P100也要小3萬.
Q:Tesla Tesla K80如何?
有經銷售說還囤了點Tesla K80,但是Kepler架構過於舊了,你沒有辦法享受最新的CUDA功能給你帶來的各種好處,也不支援INT8/FP16,真的不建議搞研究的老師採購,況且這個卡已經退市很久了,質保售後也是問題。
另外,CUDA在逐漸淘汰老計算能力的卡,以前是1.x計算能力被淘汰了,2.x計算能力被淘汰了(Tesla C20系列),現在雖然K80是3.x計算能力,但想來繼續被支援也不會太久了。諸位老師難道要想辛苦的課題成果,很快就面臨老平台不能使用,必須針對新平台(7.x計算能力)升級遷移的痛苦嗎?
如果只是因為預算的問題要消費降級,真是不值得。
但是注意了!如果你選擇採購Tesla卡,就一定要用機架伺服器!這是正確的打開方式!
關注我們公眾號的很多用戶已經被我教育得知道散熱很重要!即使如此我們的QQ技術群還是三天兩頭地有人說在工作站上裝Tesla卡,跑著跑著就藍屏….
當然我也知道有人會說「我就是在工作站上裝Tesla卡,把散熱做好就沒問題「——確實如此,前提條件下是你確實做好了散熱。
好了,接下來說只需要單精度計算的用戶!
恭喜你,你選擇很多,Tesla卡,RTX遊戲卡你都可以選擇了。而且實際上RTX單精度計算能力還真是優於Tesla卡(希望NVIDIA銷售不跟老黃投訴我)。
工作站還是機架也隨你挑,只要你不嫌棄機架伺服器吵,你也可以任性地放辦公室里。
在這裡也不得不說我發現了一個奇怪的現象,就是Tesla的用戶總喜歡在工作站上裝,而RTX遊戲卡的用戶卻喜歡在機架伺服器上裝,還一裝裝8個…
機架伺服器不是不能裝RTX卡,但是還是一個散熱問題。我們不推薦用戶裝這種:
NVIDIA雙風扇GeForce RTX散熱器破壞多GPU性能,是真的么?
要裝就裝這種Turbo版本,可以裝在機架伺服器上,價格可以先去參考一下某東商城:
看ASUS ESC4000G4如何輕鬆裝進4片RTX2080ti
很多深度學習的用戶很喜歡用RTX2080ti、Titan RTX 。
這類的圖靈卡,我們還是需要對它們的特性有所了解,這樣在我們寫程式碼的時候才可以把他們的性能發揮到最大。
NVIDIA RTX2080ti不支援P2P Access,這是真的么?
原來你是這樣的GPU卡|NVIDIA發布新一代Titan系列:Titan RTX
例如這些卡具有新一代的互聯能力,卡間互相數據訪問的速度非常快的。但是卻並不是每個機器都會給你配上NVLink。所以需要上P2P Access高速互相訪問的程式碼,你在寫程式碼的時候,要去判斷能否卡間互相訪問成功的, 如果不能,往往都需去添加上fallback的備用路徑程式碼的。
接下來我們開始具體分析一下配置
CPU該如何選擇
目前我看到很多人的配置,尤其是科學計算的用戶,
基本上都是配置雙路CPU,而且CPU往往都是頻率最高,核數最多,
然後還上最大的記憶體條,插滿所有槽。
不在乎錢的話,顯然這樣配置好。
在乎錢的話,可以節省一點錢的。特別是CPU的錢。CPU提供的PCI-E通道數足夠即可。沒必要雙路,4路配滿,主頻最高型號的。因為實際應使用中的主力處理都是GPU,可能比你的CPU在特定問題上高出1-2個數量級的性能。此時是否升級到頂配CPU已經基本無意義了。除非你想糊弄老闆,自己減少在GPU上的工作量,此時則可以考慮頂配CPU上滿,從而減少自己往GPU移植的工作量。
有用戶說因為預算有限,我先配置一個雙路伺服器,就上一顆CPU,但以後有預算了,我再加一顆CPU。
—— 這樣做沒有什麼問題,但需要注意PCI-E的頻寬上的分配,和PCI-E的拓撲結構。
1.有的主板默認是2個CPU管下面各自的PCI-E槽的,如果只插入1個CPU的話,可能部分槽無法使用。(但是這種主板的總PCI-E頻寬高)。
2. 有的主板是默認1個CPU管所有的槽的,另外一個CPU只負責應用的運算。這種則沒有影響,但是可能總的PCI-E頻寬低。
此外,因為雙路CPU實際上是2個記憶體域,往往雙路的總記憶體頻寬高,特別是對於渣程式碼來說(不管是純CPU應用,還是CPU+GPU應用),可以有效的抵抗渣訪存/傳輸,記憶體瓶頸所影響的性能。
我建議總是上2個CPU,哪怕是渣一點的(以後可以更換成更好的2個CPU,CPU跌價非常快的),這樣總記憶體頻寬更大,而總的PCI-E lanes數量也更高,很多場合有更好的性能。
記憶體條插滿?
有個用戶他準備插4片Tesla V100,記憶體是插滿12根16GB的好,還是插6根32GB的好?
一般來說是是16G × 12好, 因為可以盡量利用所有的記憶體通道。只有6條的話,可能插不滿2個U的所有通道的,而且插的時候還需要技巧,同樣6條記憶體可能插出來高低不同的記憶體頻寬的。但如果你插12條,16條,24條這種, 往往可以都插滿, 此時無所謂插入的順序的(例如是連續插入,還是隔著一條或者2條插入?), 都插滿省心點。
只上少量的幾條記憶體的話,因為你插的不好,有的通道利用了,有的記憶體通道沒有利用,然後用戶就會抱怨說,怎麼同樣配置的機器,我這個記憶體慢這麼多。
我們曾經遇到一個用戶,很大的影像,就插了單通道的記憶體,我們當時說,你們這演算法卡訪存的,你不妨先再添加插一個通道的記憶體,看看性能變化。
良心的廠商給盡量高性能的配置,無良的商家給你能點亮就不管了。
硬碟要做RAID么?
這要看主板的支援情況,和用戶需要高性能,還是高穩定性了。 對於沒有raid卡的主板,顯然涼拌。而對於有raid卡的板子(不管是獨立插卡還是集成的硬體卡), 則需要考慮raid卡支援的硬碟類型了。普通raid卡往往只支援SATA的硬碟和SSD。而好點的raid卡支援SAS的硬碟和SSD。
用戶想高性能最好用後者,兩塊SSD做raid 0. 高可靠性我建議使用兩塊SAS機械硬碟。 此外,還應當考慮主板有無NVME硬碟的插卡地方。對io性能要求很高的,建議上nvme的ssd。
買的機器多的,或者一個小集群規模的,建議總是上專門的存儲節點/網路(例如NAS或者SAN之類的),本地則可以用一兩塊SSD做數據臨時目錄之類的存儲用途。其他數據全部放在存儲節點上。
基本上就這些了