當前位置:
首頁 > 新聞 > 深度學習選GPU,RTX 20系列值不值得?

深度學習選GPU,RTX 20系列值不值得?

新智元報道

來源:timdettmers.com

編譯:肖琴、大明

【新智元導讀】對於深度學習任務而言,NVIDIA GeForce RTX 20系列顯卡值不值得買?如何選擇最適合你的GPU?本文從多個角度分析了這個問題,並針對不同類型和計算強度的深度學習任務提供了GPU購買和使用建議,相信可以幫讀者做出最合適的選擇。

編者按:

本文是新智元8月23日編譯整理的文章《深度學習選GPU,RTX 20系列值不值得?》一文的後續,原載於作者Tim Dettmers的個人博客。

作者近日對文章進行了內容更新,增加了關於RTX 2070顯卡的性能對比圖和關於TPU的信息。

新智元現將此次更新內容一併補充至原文章中,相信可以為讀者提供關於選用深度學習任務GPU的更全面的參考意見。

深度學習常被戲謔為「煉丹術」,那麼,GPU於深度學習研究人員而言就是不可或缺的「煉丹爐」。

深度學習是一個計算要求很高的領域,選擇什麼 GPU、選擇多少個 GPU 將從根本上決定你的深度學習體驗。如果沒有 GPU,可能需要好幾個月等待實驗完成,或者實驗運行一整天下來只是看到失敗的結果。

憑藉良好、可靠的 GPU,煉丹師們可以快速迭代深度網路的設計和參數,運行實驗的時間只需幾天而不是幾個月,幾小時而不是幾天,幾分鐘而不是幾小時。 因此,在購買 GPU 時做出正確的選擇至關重要。

Tim Dettmers 的GPU選擇

那麼如何選擇適合你的 GPU 呢?本文作者 Tim Dettmers 是瑞士盧加諾大學信息學碩士,熱衷於開發自己的 GPU 集群和演算法來加速深度學習。這篇文章深入研究這個問題,並提供建議,幫你做出最合適的選擇。

本周 NVIDIA 震撼發布的 GeForce RTX 20 系列顯卡值不值得買?它的能力、性價比如何?本文也給出分析。

先放建議。對於深度學習,作者給出的GPU選擇建議如下:

目前,我的主要建議是,使用RTX 2070 GPU並使用16位計算訓練模型。我不推薦購買XP Titan,Titan V,任何Quadro顯卡或任何FounderEdition的GPU。

但是,一些特定的GPU也有它們的合適用途:

(1)為了獲得更多顯存,我建議使用RTX 2080 Ti。

(2)為了提高性能,我建議現在推薦使用(a)RTX 2080 Ti或(b)RTX2070,並在2019年第一/第二季度升級到RTX Titan。

(3)如果你缺錢,我會推薦去網上買Titan X(Pascal)或GTX1060(6GB)。如果還是覺得太貴,那就選購GTX 1050 Ti吧。

(4)如果你只是想對深度學習入門,GTX 1050 Ti(4GB)是個不錯的選擇。

(5)如果你確定願意繼續等等:GTX 1080 Ti和RTX 2080 Ti都是很棒的選擇,但現在價格太高。它們的價格可能在一兩個月內穩定下來。

(6)想快速學習如何進行深度學習:可以選用多塊GTX 1060(6GB)。

(7)如果已經擁有GTX 1080 Ti或GTX Titan(Pascal),你可能需要等到RTX Titan發布。你的GPU還是可以一戰的。

(8)我剛開始進行深度學習,並且我是認真的:可以先從 GTX 1060 (6GB) 開始,或者從便宜的 GTX 1070 或 GTX 1070 Ti 開始。這取決於你下一步想做什麼(去初創公司,參加 Kaggle 競賽,做研究,應用深度學習),然後賣掉最初的 GPU 再買更適合的

其實,我個人本想弄一塊RTX 2080 Ti,但自從RTX 2070發布以來,我發現RTX 2070的成本效益更高,加上虛擬顯存,實際上它相當於16GB的32位顯存,資源和性能足夠用。

全面對比:NVIDIA、AMD、Intel、Google、Amazon

NVIDIA: 絕對王者

NVIDIA 的標準庫使得在 CUDA 中建立第一個深度學習庫變得非常容易,而 AMD 的 OpenCL 卻沒有這樣強大的標準庫。這種領先優勢,再加上英偉達強大的社區支持,迅速擴大了 CUDA 社區的規模。這意味著,如果你使用 NVIDIA GPU,在遇到問題時可以很容易找到支持;如果你自己寫 CUDA 程序,也很容易找到支持和建議,並且你會發現大多數深度學習庫都對 NVIDIA GPU 提供最佳支持。對於 NVIDIA GPU 來說,這是非常強大的優勢。

另一方面,英偉達現在有一項政策,在數據中心使用 CUDA 只允許 Tesla GPU,而不允許使用 GTX 或 RTX 卡。「數據中心」 的含義模糊不清,但這意味著,由於擔心法律問題,研究機構和大學往往被迫購買昂貴而且成本效率低的 Tesla GPU。然而,Tesla 卡與 GTX 和 RTX 卡相比並無大的優勢,價格卻要高 10 倍。

英偉達能夠沒有任何大障礙地實施這些政策,這顯示出其壟斷力量——他們可以隨心所欲,我們必須接受這些條款。如果你選擇了 NVIDIA GPU 在社區和支持方面的主要優勢,你還需要接受他們的隨意擺布。

AMD:能力強大,但缺乏支持

HIP 通過 ROCm 將 NVIDIA 和 AMD 的 GPU 統一在一種通用編程語言之下,在編譯成 GPU 彙編代碼之前被編譯成各自的 GPU 語言。如果我們的所有 GPU 代碼都在 HIP 中,這將成為一個重要里程碑,但這是相當困難的,因為 TensorFlow 和 PyTorch 代碼基很難移植。TensorFlow 對 AMD GPU 有一些支持,所有的主要網路都可以在 AMD GPU 上運行,但是如果你想開發新的網路,可能會遺漏一些細節,這可能阻止你實現想要的結果。ROCm 社區也不是很大,因此要快速解決問題並不容易。此外,AMD 似乎也沒有太多資金用於深度學習開發和支持,這減緩了發展的勢頭。

但是,AMD GPU 性能並不比 NVIDIA GPU 表現差,而且下一代 AMD GPU Vega 20 將會是計算能力非常強大的處理器,具有類似 Tensor Core 的計算單元。

總的來說,對於那些只希望 GPU 能夠順利運行的普通用戶,我仍然無法明確推薦 AMD GPU。更有經驗的用戶應該遇到的問題不多,並且支持 AMD GPU 和 ROCm / HIP 開發人員有助於打擊英偉達的壟斷地位,從長遠來看,這將為每個人帶來好處。如果你是 GPU 開發人員並希望為 GPU 計算做出重要貢獻,那麼 AMD GPU 可能是長期產生良好影響的最佳方式。對於其他人來說,NVIDIA GPU 是更安全的選擇。

英特爾:仍需努力

我個人對英特爾 Xeon Phis 的經驗非常令人失望,我認為它們不是 NVIDIA 或 AMD 顯卡的真正競爭對手:如果你決定使用 Xeon Phi,請注意,你遇到問題時能得到的支持很有限,計算代碼段比 CPU 慢,編寫優化代碼非常困難,不完全支持 c++ 11 特徵,不支持一些重要的 GPU 設計模式編譯器,與其他以來 BLAS routine 的庫(例如 NumPy 和 SciPy))的兼容性差,以及可能還有許多我沒遇到的挫折。

我很期待英特爾 Nervana 神經網路處理器(NNP),因為它的規格非常強大,它可以允許新的演算法,可能重新定義神經網路的使用方式。NNP 計劃在 2019 年第三季度 / 第四季度發布。

谷歌:按需處理更便宜?

Google TPU 已經發展成為非常成熟的基於雲的產品,具有極高的成本效益。理解 TPU 最簡單的方法是將它看作多個打包在一起的 GPU。如果我們看一下支持 Tensor Core 的 V100 和 TPUv2 的性能指標,我們會發現對於 ResNet50,這兩個系統的性能幾乎相同。但是,谷歌 TPU 更划算。

那麼,TPU 是不是基於雲的經濟高效的解決方案呢?可以說是,也可以說不是。不管在論文上還是在日常使用上,TPU 都更具成本效益。但是,如果你使用 fastai 團隊的最佳實踐和指南以及 fastai 庫,你可以以更低的價格實現更快的收斂——至少對於用卷及網路進行對象識別來說是這樣。

使用相同的軟體,TPU 甚至可以更具成本效益,但這也存在問題:(1)TPU 不能用於 fastai 庫,即 PyTorch;(2)TPU 演算法主要依賴於谷歌內部團隊,(3)沒有統一的高層庫可以為 TensorFlow 實施良好的標準。

這三點都打擊了 TPU,因為它需要單獨的軟體才能跟上深度學習的新演算法。我相信谷歌的團隊已經完成了這些工作,但是還不清楚對某些模型的支持有多好。例如,TPU 的官方 GitHub 庫只有一個 NLP 模型,其餘的都是計算機視覺模型。所有模型都使用卷積,沒有一個是循環神經網路。不過,隨著時間的推移,軟體支持很可能會迅速改進,並且成本會進一步下降,使 TPU 成為一個有吸引力的選擇。不過,目前 TPU 似乎最適合用於計算機視覺,並作為其他計算資源的補充,而不是主要的深度學習資源。

亞馬遜:可靠但價格昂貴

自從上次更新這篇博文以來,AWS 已經添加了很多新的 GPU。但是,價格仍然有點高。如果你突然需要額外的計算,例如在研究論文 deadline 之前所有 GPU 都在使用,AWS GPU instances 可能是一個非常有用的解決方案

然而,如果它有成本效益,那麼就應該確保只運行幾個網路,並且確切地知道為訓練運行選擇的參數是接近最優的。否則,成本效益會大大降低,還不如專用 GPU 有用。即使快速的 AWS GPU 是誘人的堅實的 gtx1070 和 up 將能夠提供良好的計算性能一年或兩年沒有太多的成本。

總結而言,AWS GPU instance 非常有用,但需要明智而謹慎地使用它們,以確保成本效益。有關雲計算,我們後面還會再討論。

是什麼讓一個 GPU 比另一個更快?

選擇 GPU 時,你的第一個問題可能是:對於深度學習來說,使得 GPU 運算速度快的最重要的特性是什麼?是 CUDA Core,時鐘速度,還是 RAM 的大小?

雖然一個很好的簡化建議應該是 「注意內存帶寬」,但我不再建議這樣做。這是因為 GPU 硬體和軟體多年來的開發方式使得 GPU 的帶寬不再是其性能的最佳指標。在消費級 GPU 中引入 Tensor Core 進一步複雜化了這個問題。現在,帶寬、FLOPS 和 Tensor Core 的組合才是 GPU 性能的最佳指標

為了加深理解,做出明智的選擇,最好要了解一下硬體的哪些部分使 GPU 能夠快速執行兩種最重要的張量操作:矩陣乘法和卷積

考慮矩陣乘法的一個簡單而有效的方法是:它是受帶寬約束的。如果你想使用 LSTM 和其他需要做很多矩陣乘法的循環網路的話,內存帶寬是 GPU 最重要的特性,

同樣,卷積受計算速度約束。因此,對於 ResNets 和其他卷積體系結構來說,GPU 的 TFLOP 是其性能的最佳指標。

Tensor Cores 稍微改變了這種平衡。Tensor Cores 是專用計算單元,可以加速計算——但不會加大內存帶寬——因此對於卷積網路來說,最大的好處是 Tensor Core 可以使速度加快 30%到 100%。

雖然 Tensor Cores 只能加快計算速度,但它們也允許使用 16-bit 數字進行計算。這也是矩陣乘法的一大優點,因為數字的大小只有 16-bit 而不是 32-bit,在內存帶寬相同的矩陣中,數字的數量可以傳輸兩倍。一般來說,使用 Tensor Cores 的 LSTM 可以加速 20% 到 60%。

請注意,這種加速並不是來自 Tensor Cores 本身,而是來自它進行 16-bit 計算的能力。在 AMD GPU 上的 16-bit 演算法和在 NVIDIA 的具有 Tensor Cores 的卡上的矩陣乘法演算法一樣快。

Tensor Cores 的一個大問題是它們需要 16-bit 浮點輸入數據,這可能會帶來一些軟體支持問題,因為網路通常使用 32-bit 的值。如果沒有 16-bit 的輸入,Tensor Cores 就相當於沒用的。

但是,我認為這些問題很快就能得到解決,因為 Tensor Cores 太強大了,現在消費級 GPU 也使用 Tensor Cores,因此,將會有越來越多的人使用它們。隨著 16-bit 深度學習的引入,我們實際上使 GPU 的內存翻倍了,因為同樣內存的 GPU 中包含的參數翻倍了。

總的來說,最好的經驗法則是:如果你使用 RNN,要看帶寬;如果使用卷積,就看看 FLOPS;如果你買得起,就考慮 Tensor Cores(除非必要,否則不要買 Tesla 卡)

GPU 和 TPU 的標準化原始性能數據。越高越好。 圖中加入了RTX 2070顯卡的性能對比

性價比分析

性價比也許是選擇 GPU 時要考慮的最重要的一類指標。我對此做了一個新的成本性能分析,其中考慮了內存位寬、運算速度和 Tensor 核心。價格上,我參考了亞馬遜和 eBay 上的價格,參考權重比為 1:1。然後我考察了使用 / 不使用 Tensor Core 情況下的 LSTM、CNN 等性能指標。將這些指標數字通過標準化幾何平均得到平均性能評分,計算出性價比數字,結果如下:

標準化處理後的性價比(單位成本計算力)結果比較,考慮了內存帶寬(RNN)、計算速度(卷積網路)、是否使用 Tensor Cores 等因素,數字越高越好。可以看出,RTX2070的能效是Tesla V100的5倍以上。

從上圖中可以看到,RTX 2070顯卡的成本效益比RTX 2080和 RTX2080 Ti都高。為什麼會這樣?因為能夠使用Tensor Core進行16位計算的能力,其價值遠遠超過擁有更多Tensor Core核心。而使用RTX 2070,你可以以最低的價格獲得這些功能。

我根據這個硬體下的矩陣乘法和卷積的 roofline 模型以及來自 V100 和 Titan V 的 Tensor Core 基準數字來估計性能。由於目前沒有硬體規格數字,RTX 2070 完全沒有排入。注意,RTX 2070 可能很容易在成本效益上擊敗其他兩款 RTX 系列顯卡,但目前沒有數據支持。

從初步數據來看,我們發現 RTX 2080 比 RTX 2080 Ti 的性價比更高。 與 RTX2080 相比,RTX 2080 Ti 的 Tensor 核心和帶寬增加了約 40%,價格提高了 50%,但性能並沒有提高 40%。對於 LSTM 和其他 RNN 來說,從 GTX 10 繫到 RTX 20 系的性能增長,主要是在於支持了 16 位浮點計算,而不是 Tensor 核心本身。雖然卷積網路的性能在理論上應該與 Tensor 核心呈線性增加,但我們從性能數據中並沒有看出這一點。

這表明,卷積體系結構的其他部分無法憑藉 Tensor 核心獲得性能提升,而這些部分在整體計算需求中也佔了很大比重。因此,RTX 2080 具有更高的性價比,因為它具有比 GTX 10 系列獲得性能提升(GDDR6 + Tensor 核心)所需的所有功能,同時也比 RTX 2080 Ti 更便宜。

此外請讀者注意,這個分析中存在一些問題,對這些數據的解釋需要慎重:

(1)如果你購買的是高性價比、但運算速度較慢的顯卡,那麼在某些時候計算機可能不再會有更多 GPU 空間,因此會造成資源浪費。因此,本圖表偏向於昂貴的 GPU。為了抵消這種偏差,還應該對原始性能圖表進行評估。

(2)此性價比圖表假設,讀者會盡量多地使用 16 位計算和 Tensor 內核。也就是說,對於 32 位計算而言,RTX 系顯卡的性價比很低。

(3)此前有傳聞說,有大量的 RTX 20 系顯卡由於加密貨幣行情的下滑而被延緩發布。因此,像 GTX 1080 和 GTX 1070 這樣流行的挖礦 GPU 可能會迅速降價,其性價比可能會迅速提高,使得 RTX 20 系列在性價比方面不那麼有優勢。另一方面,大量的 RTX 20 系顯卡的價格將保持穩定,以確保其具備競爭力。很難預測這些顯卡的後續前景。

(4)如前文所述,目前還沒有關於 RTX 顯卡硬性、無偏見的性能數據,因此所有這些數字都不能太當真。

可以看出,在這麼多顯卡中做出正確選擇並不容易。但是,如果讀者對所有這些問題採取一種平衡的觀點,其實還是能夠做出自己的最佳選擇的。

雲端深度學習

AWS 上的 GPU 實例和 Google Cloud 中的 TPU 都是深度學習的可行選擇。雖然 TPU 稍微便宜一點,但它缺乏 AWS GPU 的多功能性和靈活性。 TPU 可能是訓練目標識別模型的首選。但對於其他類型的工作負載,AWS GPU 可能是更安全的選擇。部署雲端實例的好處在於可以隨時在 GPU 和 TPU 之間切換,甚至可以同時使用它們。

但是,請注意這種場景下的機會成本問題:如果讀者學習了使用 AWS 實例能夠順利完成工作流程的技能,那麼也就失去了利用個人 GPU 進行工作的時間,也無法獲得使用 TPU 的技能。而如果使用個人 GPU,就無法通過雲擴展到更多 GPU / TPU 上。如果使用 TPU,就無法使用 TensorFlow,而且,切換到 AWS 平台並不是一件很容易的事。流暢的雲工作流程的學習成本是非常高的,如果選擇 TPU 或 AWS GPU,應該仔細衡量一下這個成本。

另一個問題是關於何時使用雲服務。如果讀者想學習深度學習或者需要設計原型,那麼使用個人 GPU 可能是最好的選擇,因為雲實例可能成本昂貴。但是,一旦找到了良好的深度網路配置,並且只想使用與雲實例的數據並行性來訓練模型,使用雲服務是一種可靠的途徑。也就是說,要做原型設計,使用小型 GPU 就夠了,也可以依賴雲計算的強大功能來擴大實驗規模,實現更複雜的計算。

如果你的資金不足,使用雲計算實例也可能是一個很好的解決方案,但問題是,當你只需要一點點原型設計時,還是只能分時購買大量計算力,造成成本和計算力的浪費。在這種情況下,人們可能希望在 CPU 上進行原型設計,然後在 GPU / TPU 實例上進行快速訓練。這並不是最優的工作流程,因為在 CPU 上進行原型設計可能是非常痛苦的,但它確實是一種經濟高效的解決方案。

結論

在本文中,讀者應該能夠了解哪種 GPU 適合自己。總的來說,我認為在選擇 GPU 是有兩個主要策略:要麼現在就使用 RTX 20 系列 GPU 實現快速升級,或者先使用便宜的 GTX 10 系列 GPU,在 RTX Titan 上市後再進行升級。如果對性能沒那麼看重,或者乾脆不需要高性能,比如 Kaggle 數據競賽、創業公司、原型設計或學習深度學習,那麼相對廉價的 GTX 10 系列 GPU 也是很好的選擇。如果你選擇了 GTX 10 系列 GPU,請注意確保 GPU 顯存大小可以滿足你的要求。

那麼對於深度學習,如何選擇GPU?我的建議如下:

使用RTX 2070 GPU並使用16位計算訓練模型。我不推薦購買XP Titan,Titan V,任何Quadro顯卡或任何FounderEdition的GPU。

但是,一些特定的GPU也有它們的合適用途:

(1)為了獲得更多顯存,我建議使用RTX 2080 Ti。

(2)為了提高性能,我建議現在推薦使用(a)RTX 2080 Ti或(b)RTX2070,並在2019年第一/第二季度升級到RTX Titan。

(3)如果你缺錢,我會推薦去網上買Titan X(Pascal)或GTX1060(6GB)。如果還是覺得太貴,那就選購GTX 1050 Ti吧。

(4)如果你只是想對深度學習入門,GTX 1050 Ti(4GB)是個不錯的選擇。

(5)如果你確定願意繼續等等:GTX 1080 Ti和RTX 2080 Ti都是很棒的選擇,但現在價格太高。它們的價格可能在一兩個月內穩定下來。

(6)想快速學習如何進行深度學習:可以選用多塊GTX 1060(6GB)。

(7)如果已經擁有GTX 1080 Ti或GTX Titan(Pascal),你可能需要等到RTX Titan發布。你的GPU還是可以一戰的。

(8)我剛開始進行深度學習,並且我是認真的:可以先從 GTX 1060 (6GB) 開始,或者從便宜的 GTX 1070 或 GTX 1070 Ti 開始。這取決於你下一步想做什麼(去初創公司,參加 Kaggle 競賽,做研究,應用深度學習),然後賣掉最初的 GPU 再買更適合的。

其實,我個人本想弄一塊RTX 2080 Ti,但自從RTX 2070發布以來,我發現RTX 2070的成本效益更高,加上虛擬顯存,實際上它相當於16GB的32位顯存,資源和性能足夠用。

http://timdettmers.com/2018/11/05/which-gpu-for-deep-learning/

【加入社群】

新智元 AI 技術 + 產業社群招募中,歡迎對 AI 技術 + 產業落地感興趣的同學,加小助手微信號:aiera2015_3入群;通過審核後我們將邀請進群,加入社群後務必修改群備註(姓名 - 公司 - 職位;專業群審核較嚴,敬請諒解)。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 新智元 的精彩文章:

15種方法,總有一款適合你
谷歌內部視頻泄露,特朗普團隊藉機發起第二輪炮轟!

TAG:新智元 |