深度学习机器配置 装机指南:从GPU到显示器,全套硬件推荐
1、GPU
顯卡(GPU)是深度學習的重要部件,甚至比CPU更重要。做深度學習不用GPU只用CPU顯然是不明智的,慢的如烏龜,跑個模型等幾天,難熬,但適合摸魚
?
使用16bit的RTX 2070或者RTX 2080 Ti性價比更高。另外購買二手的32bit GTX 1070、GTX 1080或者1080 Ti也是不錯的選擇。
除了GPU核心,顯存(GPU RAM)也是不可忽視的部分。RTX比GTX系列顯卡在顯存方面更具優勢,在顯存相同的情況下,RTX能夠訓練兩倍大的模型。
通常對顯存的要求如下:
-
如果想在研究中追求最高成績:顯存>=11 GB;
-
在研究中搜尋有趣新架構:顯存>=8 GB;
-
其他研究:8GB;
-
Kaggle競賽:4~8GB;
-
創業公司:8GB(取決于具體應用的模型大小)
-
公司:打造原型8GB,訓練不小于11GB
需要注意的是,如果你購買了多個RTX顯卡,一定不要忽視散熱。兩個顯卡堆疊在相鄰PCI-e插槽,很容易令GPU過熱降頻,可能導致性能下降30%。
2、內存
選擇內存(RAM)有兩個參數:時鐘頻率、容量
?
2.1、時鐘頻率
內存頻率和數據轉移到顯存的速度無關,提高頻率最多只能有3%的性能提升
2.2、內存容量
內存大小不會影響深度學習性能,但是它可能會影響你執行GPU代碼的效率。內存容量大一點,CPU就可以不通過磁盤,直接和GPU交換數據。
所以用戶應該配備與GPU顯存匹配的內存容量。如果有一個24GB顯存的Titan RTX,應該至少有24GB的內存。但是,如果有更多的GPU,則不一定需要更多內存。
內存關系到你能不能集中資源,解決更困難的編程問題。如果有更多的內存,你就可以將注意力集中在更緊迫的問題上,而不用花大量時間解決內存瓶頸。
額外的內存對特征工程非常有用。
3、CPU
過分關注CPU的性能和PCIe通道數量,是常見的認知誤區。用戶更需要關注的是CPU和主板組合支持同時運行的GPU數量。
3.1、CPU和PCIe
PCIe通道對深度學習性能幾乎沒有影響。
如果只有一個GPU,PCIe通道的作用只是快速地將數據從內存傳輸到顯存。
ImageNet里的32張圖像(32x225x225x3)在16通道上傳輸需要1.1毫秒,在8通道上需要2.3毫秒,在4通道上需要4.5毫秒。
這些只是是理論數字,實際上PCIe的速度只有理論的一半。PCIe通道通常具有納秒級別的延遲,因此可以忽略延遲。
用32張ImageNet圖像的mini-batch,訓練ResNet-152模型所需要的傳輸時間:
-
前向和后向傳輸:216毫秒
-
16個PCIe通道CPU-> GPU傳輸:大約2毫秒(理論上為1.1毫秒)
-
8個PCIe通道CPU-> GPU傳輸:大約5毫秒(2.3毫秒)
-
4個PCIe通道CPU-> GPU傳輸:大約9毫秒(4.5毫秒)
因此,在總用時上,從4到16個PCIe通道,性能提升約3.2%。但是,如果PyTorch的數據加載器有固定內存,則性能提升為0%。因此,如果使用單個GPU,請不要在PCIe通道上浪費金錢。
在選擇CPU PCIe通道和主板PCIe通道時,要保證你選擇的組合能支持你想要的GPU數量。如果買了支持2個GPU的主板,而且希望用上2個GPU,就要買支持2個GPU的CPU,但不一定要查看PCIe通道數量。
?
3.2、PCIe通道和多GPU并行計算
如果GPU數量少于4個,則根本不必關心PCIe通道。幾乎很少有人同時運行超過4個GPU,所以不要在PCIe通道上花冤枉錢,大型的數據模型例外,真有8卡GPU就可以考慮PCIe通道問題
3.3、CPU核心數
為了選擇CPU,首先需要了解CPU與深度學習的關系。
CPU為深度學習中起到什么作用?當在GPU上運行深度網絡時,CPU幾乎不會進行任何計算。CPU的主要作用有:(1)啟動GPU函數調用(2)執行CPU函數。
到目前為止,CPU最有用的應用是數據預處理。有兩種不同的通用數據處理策略,具有不同的CPU需求。
第一種策略是在訓練時進行預處理,第二種是在訓練之前進行預處理。
對于第一種策略,高性能的多核CPU能顯著提高效率。建議每個GPU至少有4個線程,即為每個GPU分配兩個CPU核心。
對于第二種策略,不需要非常好的CPU。建議每個GPU至少有2個線程,即為每個GPU分配一個CPU核心。用這種策略,更多內核也不會讓性能顯著提升。
3.4、CPU時鐘頻率
4GHz的CPU性能是否比3.5GHz的強?對于相同架構處理器的比較,通常是正確的。但在不同架構處理器之間,不能簡單比較頻率。CPU時鐘頻率并不總是衡量性能的最佳方法。
在深度學習的情況下,CPU參與很少的計算:比如增加一些變量,評估一些布爾表達式,在GPU或程序內進行一些函數調用。所有這些都取決于CPU核心時鐘率。
4、硬盤/固態硬盤(SSD)
通常,硬盤不會限制深度學習任務的運行,但如果小看了硬盤的作用,可能會讓你追、悔、莫、及。
想象一下,如果你從硬盤中讀取的數據的速度只有100MB/s,那么加載一個32張ImageNet圖片構成的mini-batch,將耗時185毫秒。
相反,如果在使用數據前異步獲取數據,將在185毫秒內加載這些mini-batch的數據,而ImageNet上大多數神經網絡的計算時間約為200毫秒。所以,在計算狀態時加載下一個mini-batch,性能將不會有任何損失。
推薦固態硬盤(SSD),SSD在手,舒適度和效率皆有。和普通硬盤相比,SSD程序啟動和響應速度更快,大文件的預處理更是要快得多。
頂配的體驗就是NVMe SSD了,比一般SSD更流暢。
?
5、電源裝置(PSU)
一個程序員對電源最基礎的期望,首先得是能滿足各種GPU所需能量吧。隨著GPU朝著更低能耗發展,一個質量優秀的PSU能陪你走很久。
應該怎么選?計算方法:將電腦CPU和GPU的功率相加,再額外加上10%的功率算作其他組件的耗能,就得到了功率的峰值。
舉個例子,如果你有4個GPU,每個功率為250瓦,還有一個功率為150瓦的CPU,則需電源提供4×250+150+100=1250瓦的電量。
通常會在此基礎上再額外添加10%確保萬無一失,那就總共需要1375瓦。所以這種情況下,電源性能需達1400瓦。
還有一點得注意,即使一個PSU達到了所需瓦數,也可能沒有足夠的PCIe 8-pin或6-pin的接頭,所以買的時候還要確保電源上有足夠多的接頭接GPU。
?
另外,買一個能效等級高的電源,特別是當你需要連很多GPU并且可能運行很長時間的時候,原因你懂的。
6、CPU和GPU的冷卻
對于產熱大戶CPU和GPU來說,散熱性不好會降低它們的性能。對CPU來說,則標配的散熱器,或者AIO水冷散熱器都是不錯的選擇。但GPU該用哪種散熱方案,卻是個復雜的事。
6.1、風冷散熱
如果只有單個GPU,風冷是安全可靠的,但若你GPU多達3-4個,靠空氣冷卻可能就不能滿足需求了。
目前的GPU會在運行算法時將速度提升到最大,所以功耗也達到最大值,一旦溫度超過80℃,很有可能降低速度,無法實現最佳性能。
對于深度學習任務來說這種現象更常見了,一般的散熱風扇遠達不到所需效果,運行幾秒鐘就達到溫度閾值了。如果是用多個GPU,性能可能會降低10%~25%。
怎么辦?目前,英偉達GPU很多是針對游戲設計的,所以對于Windows系統進行了專門的優化,也可以輕松設置風扇方案。
但在Linux系統中這招就不能用了,麻煩的是,很多深度學習庫也都是針對Linux編寫的。
這是一個問題,但也不是無解。
在Linux系統中,你可以進行Xorg服務器的配置,選擇“coolbits”選項,這對于單個GPU還是很奏效。
若你有多個GPU, 就必須模擬一個監視器,如果你想在空氣冷卻的環境中運行3-4個小時,則最應該注意風扇的設計。
目前市場上的散熱風扇原理大致有兩種:鼓風式的風扇將熱空氣從機箱背面推出,讓涼空氣進來;非鼓風式的風扇是在GPU中吸入空氣達到冷卻效果。
所以,如果你有多個GPU彼此相鄰,那么周圍就沒有冷空氣可用了,所以這種情況,一定不要用非鼓風式的散熱風扇了。
6.2、水冷散熱
水冷散熱雖然比風冷法成本略高,但很適用于多個GPU相鄰的情況,它能hold住四個最強勁的GPU保持周身涼爽,是風冷無法企及的效果。
另外,水冷散熱可以更安靜地進行,如果你在公共區域運行多個GPU,水冷的優勢更為凸顯了。
6.3、結論
對于單個GPU,風冷便宜也夠用;多個GPU情況下,鼓風式的空氣冷卻比較便宜,可能會帶來10%~15%的性能損失。如果想追求散熱極致,水冷散熱安靜且效果最好。
所以,風冷or水冷都合理,看你自己的實際情況和預算了。通常情況下,還是考慮下低成本的風冷吧。
7、主板
主板應該有足夠的PCIe插槽來支持所需的GPU數量。但需要注意的是,大多數顯卡寬度需要占用兩個PCIe插槽。
如果打算使用多個GPU,就要購買PCIe插槽之間有足夠空間的主板,確保顯卡之間不會相互遮擋。
?
8、機箱
選機箱的時候,必須保證機箱能裝下主板頂部的全長GPU,雖然大部分機箱是沒問題的,但是萬一你買小了,那就得看商家給不給你七天無理由了……
所以,買之前最好確認一下機箱的尺寸規格,也可以搜一下機箱裝著GPU的圖,有別人的成品圖的話就能買得放心一些。
另外,如果你想用定制水冷的話,保證你的機箱能裝得下散熱器,尤其是給GPU用定制水冷的時候,每個GPU的散熱器都需要占空間。
9、顯示器
作為一個成熟的技術人員,用多臺顯示器是基本配置了。
10、太長不看版
GPU:
RTX 2070、RTX 2080 Ti、GTX 1070、GTX 1080、GTX 1080,這些都不錯。
?
CPU:
1.給每個GPU配1-2個CPU核心,具體要看你預處理數據的方式;
2.頻率要大于2GHz,CPU要能支持你的GPU數量;
3.PCIe通道不重要。
?
內存:
1.時鐘頻率無關緊要,內存買最便宜的就行了;
2.內存 ≥ 顯存最大的那塊GPU的RAM;
3.內存不用太大,用多少買多少;
4.如果你經常用大型數據集,買更多內存會很有用。
?
硬盤/SSD:
1.給你的數據集準備足夠大的硬盤(≥3TB);
2.有SSD會用的舒坦一些,還能預處理小型數據集。
?
PSU:
1.需要的功率最大值≈(CPU功率+GPU功率)×110%;
2.買一個高能效等級的電源,特別是當你需要連很多GPU并且可能運行很長時間的時,這樣可以節省很多電費;
3.買之前請確保電源上有足夠多的接頭(PCIe 8-pin或6-pin)接GPU。
?
散熱:
CPU:
標準配置的CPU散熱器或者AIO水冷散熱器;
GPU:
1.單個GPU,風冷散熱即可;
2.若用多個GPU,選擇鼓風式風冷散熱或水冷散熱。
?
主板:
準備盡可能多的鏈接GPU的PCle插槽,一個GPU需要兩個插槽,每個系統最多4個GPU,不過你也要考慮GPU的厚度。
?
顯示器:
為了提高效率,多買幾塊屏幕吧。
?
總結
以上是生活随笔為你收集整理的深度学习机器配置 装机指南:从GPU到显示器,全套硬件推荐的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OSError: [WinError 1
- 下一篇: Python OpenCV 图片拆分与拼