《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 業界動態 > RTX 2080時代,如何打造屬于自己的深度學習機器

RTX 2080時代,如何打造屬于自己的深度學習機器

2018-12-17

深度學習計算密集型的領域,搭建深度學習系統時,最糟糕的事情之一就是把錢浪費在并非必需的硬件上。本文中,華盛頓大學博士生 Tim Dettmers 將一步步帶你了解搭建一個高性能經濟系統所需的硬件。


作者曾在 2015 年寫過一版深度學習硬件推薦的文章,但如今計算機硬件的迭代速度非常快,因此作者在近期將原來的文章進行了大幅改動,寫出了第二版深度學習硬件推薦。


參見:深度 | 史上最全面的深度學習硬件指南


以下是博客原文的編譯,機器之心摘取了 GPU、RAM、CPU、硬盤、主板部分的全部內容,并簡單總結了剩余部分(包括電源、散熱、機箱和顯示器),同時在最后給出了結論清單,具體細節還請參閱原文。


深度學習硬件推薦第二版:研究并行化深度學習過程中,我搭建了 7 個深度學習工作站,為此,我需要仔細挑選硬件。盡管經過了仔細的研究和邏輯推理,但是,挑選硬件時,我還是會犯相當多的錯誤,當我在實踐中應用集群時,錯誤就會顯現出來。下面就是我想分享的所得,希望你們不會再掉入同樣的陷阱。


GPU


在這篇博文中,我們假設你會利用 GPU 來進行深度學習。如果你正在構建或升級你的深度學習系統,忽視 GPU 是不理智的。GPU 正是深度學習應用的核心要素——計算性能提升,收獲巨大,不可忽視。


我在另一篇博客中討論了 GPU 選擇推薦,對于深度學習系統而言,GPU 的選擇可能是最關鍵的部分。在選擇 GPU 的時候,人們最可能犯的三個錯誤是:(1)性價比低;(2)沒有足夠內存;(3)散熱效果差。


博客地址:http://timdettmers.com/2018/11/05/which-gpu-for-deep-learning/


對于性價比高的 GPU,我一般推薦 RTX 2070 或 RTX 2080 Ti。如果你使用了這些顯卡,你應該使用 16 位的模型。否則,在 eBay 上購買 GTX 1070、GTX 1080 和 GTX 1080 Ti 會更合適,你可以在這些顯卡上使用 32 位模型(但不能是 16 位模型)。


在選擇 GPU 的時候,要注意內存需求問題。RTX 顯卡可以運行 16 位模型,相比 GTX 顯卡,可以用相同的內存訓練兩倍大的模型。由于其內存優勢,學會如何使用 RTX 顯卡高效運行 16 位模型可以帶給你很多好處。一般而言,內存需求狀況如下所示:


追求當前最佳結果(SOTA)的 AI 實驗研究:≥11GB;

探究有趣架構的 AI 實驗研究:≥8GB;

任何其它研究:8GB;

Kaggle:4-8GB;

初創公司:8GB(但需根據模型尺寸的具體用例做調整);

公司:8GB 用于原型設計,11GB 用于訓練。


另一個需要注意的問題是冷卻,尤其當你購買 RTX 顯卡的時候。如果你想將 GPU 放入 PCIe 插槽中,讓它們彼此相鄰放置,確保能為 GPU 提供鼓風式風扇。否則你可能會遇到溫度問題,你的 GPU 將變慢(約 30%),而且會更早報廢。

 

微信圖片_20181217185250.jpg


你能否識別出因性能不佳而出現故障的硬件部分?是其中一個 GPU?或者其實是 CPU 出現故障?


RAM


選擇 RAM 時會犯的最大錯誤是 RAM 的時鐘頻率太高。第二個錯誤是選擇的 RAM 不夠,導致不能獲得連續的原型設計經驗。


所需 RAM 時鐘頻率


RAM 時鐘頻率只是一種營銷手段,RAM 生產公司想以此誘惑你購買「更快的」RAM,但實際上這并不能帶來多少性能增益。可以在「Does RAM speed REALLY matter?」這個視頻中看到最佳的解釋。此外,你要知道 RAM 速度與快速 CPU RAM->GPU RAM 傳輸幾乎無關。這是因為(1)如果你使用了固定內存,模型的樣本批量不需要 CPU 參與就可以被轉移到 GPU,以及(2)如果你不使用固定內存,快速 RAM 相對于慢速 RAM 的性能提升約為 0-3%,所以把錢花在別的地方!


RAM 大小


RAM 大小不會影響深度學習性能。但是,它可能會阻礙你輕松運行 GPU 代碼(無需交換到磁盤)。你需要有足夠的內存來使用 GPU。這意味著你應該至少擁有與最大 GPU 匹配的 RAM 量。例如,如果你有一個 24 GB 內存的 Titan RTX,你應該至少有 24 GB 的 RAM。但是,如果你有多塊 GPU,則不一定需要更多 RAM。


這種「在 RAM 中匹配最大 GPU 內存」策略的問題在于,如果處理大型數據集,你的 RAM 可能仍然不夠。所以最好的策略是匹配你的 GPU,如果覺得 RAM 不夠,再買多些就是了。


心理學告訴我們,注意力是一種隨著時間推移而耗盡的資源。RAM 是為數不多的可以讓你節省集中資源以解決更困難的編程問題的硬件之一。如果你有更多的 RAM,你可以將注意力集中在更緊迫的問題上,而不是花費大量時間來解決 RAM 瓶頸。有了足夠的 RAM,你可以避免這些瓶頸,節省時間并提高效率,解決更緊迫的問題。特別是在 Kaggle 比賽中,我發現額外的 RAM 對于特征工程非常有用。因此,如果你有錢并需要進行大量預處理,那么額外的 RAM 可能是一個不錯的選擇。因此,根據此策略,你需要現在就購買更多、更便宜的 RAM,而不是等以后。


CPU


人們通常犯的主要錯誤是將太多的注意力放在了 CPU 的 PCIe 通道上。你不用太在意 PCIe 通道。你應該查看 CPU 和主板的組合能否支持你想要安裝的 GPU 數量。第二個常見錯誤是選擇太強大的 CPU。


CPU 和 PCI-Express


人們對 PCIe 通道過于執著。然而,事實上它對深度學習的性能幾乎沒有影響。如果你有單個 GPU,PCIe 通道只是用來快速把數據從 CPU RAM 轉移到 GPU RAM。用 16 個通道傳輸批量為 32 張圖像(32x225x225x3)的 ImageNet 到 32 位模型需要 1.1 毫秒,用 8 個通道需要 2.3 毫秒,用 4 個通道需要 4.5 毫秒。這些都只是理論數字,在實踐中 PCIe 通道傳輸數據的速度通常只有一半,但這仍然很快!PCIe 通道的延遲通常在納秒范圍內,因此可以忽略不計。


綜合起來,將批量為 32 的 ImageNet 圖像傳輸到 ResNet-152 的時間如下所示:


正向傳遞和反向傳遞:216 毫秒


16 個 PCIe 通道的 CPU->GPU 傳輸:大約 2 毫秒(理論上為 1.1 毫秒)

8 個 PCIe 通道的 CPU->GPU 傳輸:大約 5 毫秒(理論上為 2.3 毫秒)

4 個 PCIe 通道的 CPU->GPU 傳輸:大約 9 毫秒(理論上為 4.5 毫秒)


因此,將 PCIe 通道從 4 個增加到 16 個將會帶來大約 3.2% 的性能提升。但是,如果你使用固定內存來運行 PyTorch 的數據加載器,那你將獲得 0% 的性能提升。所以,如果你使用的是單個 GPU,就不要把錢浪費在 PCIe 通道上了。


當你選擇 CPU PCIe 通道和主板 PCIe 通道時,確定你選擇的組合能夠支持你想要安裝的 GPU 數量。如果你買的主板支持 2 個 GPU,而你最終也想安裝 2 個 GPU,那就確保你買的 CPU 支持你安裝 2 個 GPU,但無需查看 PCIe 通道數。


PCIe 通道和多 GPU 并行化


如果你使用數據并行化在多 GPU 上訓練網絡,PCIe 通道是否重要?關于這個我在 ICLR2016 年發表過論文《Title:8-Bit Approximations for Parallelism in Deep Learning》。我可以告訴你,如果你有 96 個 GPU,那 PCIe 通道數真的很重要。但是,如果你有不超過 4 個 GPU,那 PCIe 通道數就沒那么重要了。如果在 2-3 個 GPU 上進行并行化處理,那你完全不必在意 PCIe 通道。如果你有 4 個 GPU,則每個 GPU 需要 8 個 PCIe 通道的支持(總共需要 32 個 PCIe 通道)。根據以往的經驗,幾乎沒有人會運行超過 4 個 GPU,所以完全沒必要額外花錢獲得更多的 PCIe 通道,那不值當!


所需 CPU 核心數


為了更好地選擇 CPU,首先要了解它以及它與深度學習的關系。CPU 能為深度學習做什么?當你在 GPU 上運行深度網絡時,CPU 幾乎不做計算。它主要干兩件事:1)啟動 GPU 函數調用;2)執行 CPU 函數。


到目前為止,CPU 最有用的應用是數據預處理。有兩種不同的通用數據處理策略,它們有不同的 CPU 需求。


第一種策略是在訓練網絡時進行預處理:


循環:


1. 加載小批量

2. 預處理小批量

3. 在小批量上訓練


第二種策略是在開始任何訓練之前進行預處理:


1. 預處理數據

2. 循環:

  a. 加載預處理的小批量

  b. 在小批量上訓練


對于第一種策略,具有多核的高性能 CPU 可以顯著提升性能。對于第二種策略,你不需要非常好的 CPU。至于第一個策略,我推薦每個 GPU 至少 4 個線程——通常每個 GPU 兩個核心。對此我還沒有做硬件測試,但每增加一個核心/GPU,你估計會獲得 0-5% 的性能提升。


至于第二個策略,我建議每個 GPU 最少 2 個線程——通常每個 GPU 一個核心。如果你采用第二個策略,當你增加核心時,性能不會顯著提升。


所需 CPU 時鐘頻率(頻率)


當人們想到快速的 CPU 時,他們一般最先想到其時鐘頻率(clock rate)。4GHz 比 3.5GHz 快,是這樣嗎?在比較具有相同架構的處理器時,這一般是對的,例如「第三代酷睿處理器」(Ivy Bridge)。但在比較不同架構的處理器時,這個想法卻沒那么準確。而且這也并非一直是測量性能的最好指標。


在深度學習中,只有很少一部分的計算會用 CPU 來完成:增值幾個變量、評估幾個布爾表達式、在 GPU 或在編程里面調用幾個函數——所有這些會取決于 CPU 核的頻率。


這種推理似乎是合理的,但當我運行深度學習編程的時候,CPU 會有 100% 的使用率,那這是怎么回事兒?為了找出原因,我做了一些 CPU 核頻率降頻的實驗。

微信圖片_20181217185324.jpg


CPU 降頻后在 MNIST 及 ImageNet 的表現:使用不同的 CPU 核頻率,將 MNIST 數據集運行 200 遍或遍歷 1/4 的 ImageNet 數據集運行作為測量時間,我們測量 CPU 的性能,其中每個 CPU 的最高頻率被定為參照線。對于比較:在性能上,GTX Titan 比 GTX 680 提升了 15%;GTX 980 比 GTX Titan 提升了 20%;GPU 超頻比任何 GPU 提升了 5%。


請注意,這些實驗是在過時的硬件上進行的,但是,這些結果對現在的 CPU/GPU 來說應該同樣適用。


硬盤/SSD


硬盤通常不是深度學習的瓶頸。但是,也有例外:如果你在需要數據時直接從磁盤讀取,那么一個 100 MB / s 的硬盤驅動器在批量為 32 的 ImageNet 上花費大約 185 毫秒!但是,如果你在使用數據之前異步獲取數據(例如 torch vision loaders),那么你可以在 185 毫秒內加載批量,而在 ImageNet 上大多數深度神經網絡的計算時間約為 200 毫秒。因此,在當前仍處于計算狀態時加載下一個批量,你將不會面臨任何性能損失。


但是,我推薦使用 SSD 來提高舒適度和工作效率:程序啟動和響應速度更快,使用大文件進行預處理要快得多。你可以購買 NVMe SSD,與普通 SSD 相比,你將獲得更加流暢的體驗。


因此,理想的配置是為數據集提供大而緩慢的硬盤驅動器,并使用 SSD 提高生產率和舒適度。


主板


你的主板應該擁有足夠的 PCIe 端口來支持你想運行的 GPU 數量(通常最多 4 塊 GPU,即使你有更多的 PCIe 端口);記住大多數 GPU 有兩個 PCIe 端口的寬度,因此如果你想使用多塊 GPU,確保在 PCIe 端口之間有足夠的空間。確保你的主板不僅有 PCIe 端口,同時還支持你想運行的 GPU 的設置。如果你在 newegg 上搜索選擇的主板并查看規格頁面上的 PCIe 部分,通常可以找到相關信息。


其它設備


后面作者還介紹了供電單元、冷卻設備和機箱等,不過限于篇幅這里只做簡要的總結,更詳細的內容請查看 Tim Dettmers 的原博客。


1. 電源供應設備(PSU)


一般說來,你需要一個給你未來所有 GPU 充足供應的 PSU。隨著時間的推移,GPU 通常會更加高效節能;因此,盡管其它組件會需要更換,PSU 會用很久,一個好的 PSU 是一個好的投資。CPU 加上 GPU 所需瓦特,再加上其它組件額外所需的功率(約 10%),我們就能計算出電力峰值所需瓦特數,再加 10% 作為緩沖就行了。


例如如果你有 4 塊 GPU,每塊 250 瓦特,一塊 CPU 150 瓦特,那么我們至少需要 4×250 + 150 + 100 = 1250 瓦特的 PSU。而我們一般會再加 10% 左右以作為緩沖,即選擇 1400 瓦特 PSU。


2.CPU 和 GPU 散熱


GPU 空氣散熱:對于單個 GPU 或者彼此之間具有空隙的多個 GPU(如可以安裝 3-4 個 GPU 的情況下安裝了 2 個)來說,空氣散熱既安全又穩定。但是,當你冷卻 3-4 個 GPU 時,可能會犯一個很大的錯誤。在這種情況下空氣散熱的冷卻效果不太好,你要仔細考慮自己的選擇。


GPU 水冷散熱:對于多塊 GPU,水冷能確保最強勁的 4 塊 GPU 集群設置中保持溫度。但相對而言更貴一些,水冷每塊 GPU 需要花費大約 100 美元和一些額外的前期成本(大約 50 美元)。水冷還需要一些額外的工作來組裝計算機,不過現在有很多詳細的指南。


所以最后的散熱策略很簡單,對于單塊 GPU,空氣散熱是最好的,當然也可以添加水冷以提升硬件性能。對于多塊 GPU,尤其是 GPU 間空隙比較小的設備,比較建議使用水冷,且你可以嘗試為 GPU 找到一體化(AIO)水冷解決方案。


3. 機箱


當你選擇機箱時,要確保它能滿足你 GPU 的長度要求,這樣它才能在主板上放穩。多數機箱都能滿足要求,但如果你選的是一個小機箱,就需要多加留心。要核查它的面積和規格,你也可以嘗試用 google 的圖片搜索引擎,看看能不能找到 GPU 放在上面的圖片。此外,如果你使用定制化的水冷設備,你需要確保機箱的空間足夠裝下散熱器。


4. 顯示器


我在我的 3'27 英寸顯示器上付出了可能是我從未有過的大代價,買了幾個顯示器后,效率提高了很多。如果我只能用一臺顯示器,那我的效率肯定會大打折扣。別在這上面和自己過不去,如果你不能有效的運轉一個快速的深度學習系統,那它又有什么用?


總結


GPU:RTX 2070 、RTX 2080 Ti、GTX 1070、GTX 1080 和 GTX 1080 Ti。


CPU:每個 GPU 1-2 核,這取決于你的數據預處理。只要主頻大于 2GHz,那 CPU 就應該支持我們想要運行的大量 GPU,PCIe 通道并不是太重要。


RAM:


時鐘頻率無關緊要,買更便宜的 RAM;

購入至少和你已有 GPU 內存大小相同的 CPU 內存;

只有更需要時才買更多的 RAM;

如果要使用超大規模的數據集,那么需要更多的內存。


硬盤驅動器/SSD:


用于存儲數據的硬盤驅動器至少需要 3TB;

使用 SSD 預處理小數據集。


PSU:


GPU+CPU+10% 就是你必需的電源供應量,再將總電量乘以 110% 而獲得最終所需要的電源功率;

如果使用多塊 GPU,還要增加一些額外的電源供應量;

確保 PSU 有足夠的 PCIe 連接器(6+8pins)。


散熱:


CPU,使用標準的 CPU 散熱器或一體化的水冷解決方案;

GPU,使用空氣散熱、使用鼓風機式的散熱器、配置風扇的速度。


主板:


盡可能獲得更多的 PCIe 插槽,為未來增加 GPU 做好準備。


本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
主站蜘蛛池模板: 中文字幕 日韩在线 | 韩国伦理片中文字幕 | 午夜日韩精品 | 94在线成人免费视频 | 日韩一区二三区无 | 99色吧| 欧美日韩精品一区二区在线线 | 香蕉茄子视频 | 最近更新中文字幕第一页 | 欧美性视频网站 | 我把寡妇日出水好爽视频 | 激情视频亚洲 | 97婷婷狠狠成为人免费视频 | 夜夜cao| 一级有奶水毛片免费看 | 免费在线观看成人 | 免费黄色片在线 | 日本韩国欧美三级 | 欧美成人午夜在线全部免费 | 在线免费激情视频 | 亚洲青青青网伊人精品 | 交video | 新版天堂中文资源官网 | 欧美青青 | 日韩亚洲人成网站在线播放 | 草久久网| 爱呦视频在线播放网址 | 狠狠色视频| 99视频精品免视3 | 亚洲视频一区二区三区 | 欧美视频免费一区二区三区 | 最近中文字幕在线播放 | 免费观看三级毛片 | 波多野结衣 在线资源观看 波多野结衣 一区二区 | 日日噜噜夜夜狠狠久久丁香七 | 青草午夜精品视频在线观看 | 夜夜操狠狠操 | 黄色国产一级片 | 色播视频在线播放 | 精品国产免费观看一区高清 | 嫩草影院永久在线一二三四 |