本文作者 slav Ivanov 在今年早些時候曾介紹過如何用 1700 美元預算搭建深度學習機器(參見:教程 | 從硬體配置、軟體安裝到基準測試,1700 美元深度學習機器構建指南)。最近,英偉達在消費級 GPU 領域又推出了 GTX 1070 Ti,如果現在想要組裝一臺深度學習機器,我們用哪塊 GPU 最好呢?本文將詳細解答這一問題。
即將進入 2018 年,隨著硬體的更新換代,越來越多的機器學習從業者又開始面臨選擇 GPU 的難題。正如我們所知,機器學習的成功與否很大程度上取決於硬體的承載能力。在今年 5 月,我在組裝自己的深度學習機器時對市面上的所有 GPU 進行了評測。而在本文中,我們將更加深入地探討:
- 為什麼深度學習需要使用 GPU
- GPU 的哪種效能指標最為重要
- 選購 GPU 時有哪些坑需要避免
- 價效比
- 每個價位的最佳選擇
GPU + 深度學習
深度學習(DL)是機器學習(ML)的一個分支。深度學習使用神經網路來解決問題。神經網路的優點之一是自行尋找資料(特徵)模式。這和以前告訴演算法需要找什麼不一樣。但是,通常這意味著該模型從空白狀態開始(除非使用遷移學習)。為了從頭捕捉資料的本質/模式,神經網路需要處理大量資訊。通常有兩種處理方式:使用 CPU 或 GPU。
計算機的主要計算模組是中央處理器(CPU),CPU 的設計目的是在少量資料上執行快速計算。在 CPU 上新增數倍的數字非常快,但是在大量資料上進行計算就會很慢。如,幾十、幾百或幾千次矩陣乘法。在表象背後,深度學習多由矩陣乘法之類的操作組成。
有趣的是,3D 電子遊戲同樣依賴這些操作來渲染那些美麗的風景。因此,GPU 的作用被開發出來,它們可以使用數千個核心處理大量平行計算。此外,它們還有大量記憶體頻寬處理資料。這使得 GPU 成為進行 DL 的完美硬體。至少,在用於機器學習的 ASIC 如谷歌的 TPU 投入市場之前,我們還沒有其他更好的選擇。
總之,儘管使用 CPU 進行深度學習從技術上是可行的,想獲得真實的結果你就應該使用 GPU。
對我來說,選擇一個強大的圖形處理器最重要的理由是節省時間和開發原型模型。網路訓練速度加快,反饋時間就會縮短。這樣我就可以更輕鬆地將模型假設和結果之間建立聯絡。
選擇 GPU 的時候,我們在選擇什麼?
和深度學習相關的主要 GPU 效能指標如下:
- 記憶體頻寬:GPU 處理大量資料的能力,是最重要的效能指標。
- 處理能力:表示 GPU 處理資料的速度,我們將其量化為 CUDA 核心數量和每一個核心的頻率的乘積。
- 視訊記憶體大小:一次性載入到顯示卡上的資料量。執行計算機視覺模型時,視訊記憶體越大越好,特別是如果你想參加 CV Kaggle 競賽的話。對於自然語言處理和資料分類,視訊記憶體沒有那麼重要。
常見問題
多 GPU(SLI/交火)
選擇多 GPU 有兩個理由:需要並行訓練多個模型,或者對單個模型進行分散式訓練。並行訓練多個模型是一種測試不同原型和超引數的技術,可縮短反饋週期,你可以同時進行多項嘗試。
分散式訓練,或在多個顯示卡上訓練單個模型的效率較低,但這種方式確實越來越受人們的歡迎。現在,使用 TensorFlow、Keras(通過 Horovod)、CNTK 和 PyTorch 可以讓我們輕易地做到分散式訓練。這些分散式訓練庫幾乎都可以隨 GPU 數量達成線性的效能提升。例如,使用兩個 GPU 可以獲得 1.8 倍的訓練速度。
PCIe 通道:使用多顯示卡時需要注意,必須具備將資料饋送到顯示卡的能力。為此,每一個 GPU 必須有 16 個 PCIe 通道用於資料傳輸。Tim Dettmers 指出,使用兩個有 8 個 PCIe 通道的 GPU,效能應該僅降低「0—10%」。
對於單個 GPU 而言,任何桌面級處理器和晶片組如 Intel i5 7500 和 Asus TUF Z270 需要使用 16 個通道。
然而,對於雙 GPU,你可以使用 8x/8x 通道,或者使用一個處理器和支援 32PCIe 通道的主機板。32 個通道超出了桌面級 CPU 的處理能力。使用 Intel Xeon 組合 MSI—X99A SLI PLUS 是可行的方案。
對於 3 個或 4 個 GPU,每個 GPU 可使用 8x 通道,組合支援 24 到 32 個 PCIe 通道的 Xeon。
如果需要使用 3 到 4 個有 16 個 PCIe 通道的 GPU,你得有一個怪獸級處理器。例如 AMD ThreadRipper(64 個通道)和相應的主機板。
總之,GPU 越多,需要越快的處理器,還需要有更快的資料讀取能力的硬碟。
英偉達還是 AMD
英偉達已經關注深度學習有一段時間,並取得了領先優勢。他們的 CUDA 工具包具備紮實的技術水平,可用於所有主要的深度學習框架——TensorFlow、PyTorch、Caffe、CNTK 等。但截至目前,這些框架都不能在 OpenCL(執行於 AMD GPU)上工作。由於市面上的 AMD GPU 便宜得多,我希望這些框架對 OpenCL 的支援能儘快實現。而且,一些 AMD 卡還支援半精度計算,從而能將效能和視訊記憶體大小加倍。
今年夏天,AMD 還發布了 ROCm 平臺提供深度學習支援,它同樣適用於主流深度學習庫(如 PyTorch、TensorFlow、MxNet 和 CNTK)。目前,ROCm 仍然在不斷開發中。然而目前而言,如果想做深度學習的話,還是選擇英偉達吧。
其它硬體
你的 GPU 還需要以下這些硬體才能正常執行:
- 硬碟:首先需要從硬碟讀取資料,我推薦使用固態硬碟,但機械硬碟也可以。
- CPU:深度學習任務有時需要用 CPU 解碼資料(例如,jpeg 圖片)。幸運的是,任何中端現代處理器都能做得不錯。
- 主機板:資料需要通過主機板傳輸到 GPU 上。單顯示卡可以使用幾乎任何晶片組都可以使用。
- RAM:一般推薦記憶體的大小至少和視訊記憶體一樣大,但有更多的記憶體確實在某些場景是非常有幫助的,例如我們希望將整個資料集儲存在記憶體中。
- 電源:一般來說我們需要為 CPU 和 GPU 提供足夠的電源,至少需要超過額定功率 100 瓦。
我們總體上需要 500 到 1000 美元來獲得以上裝置,當然如果買一個二手工作站會更加省錢。
GPU 效能對比(2017 年 11 月)
下面是截止目前英偉達產品線主要 GPU 的效能對比,每個 GPU 的 RAM 或記憶體頻寬等資訊都展示在圖表中。注意 Titan XP 和 GTX 1080 Ti 儘管價格相差非常多,但它們的效能卻非常相近。
價格對比表明 GTX 1080 Ti、GTX 1070 和 GTX 1060 的價效比較高。所有GPU都是幾乎相同的比值,除了 Titan XP。
Titan XP
引數:
- 視訊記憶體(VRAM):12 GB
- 記憶體頻寬:547.7 GB/s
- 處理器:3840 個 CUDA 核心 @ 1480 MHz(約 5.49 億 CUDA 核心頻率)
- 英偉達官網價格:9700 元
Titan XP 是目前英偉達消費級顯示卡的旗艦產品,正如效能指標所述,12GB 的記憶體宣示著它並不是為大多數人準備的,只有當你知道為什麼需要它的時候,它才會位列推薦列表。
一塊 Titan XP 的價格可以讓你買到兩塊 GTX 1080,而那意味著強大的算力和 16GB 的視訊記憶體。
GTX 1080 Ti
引數:
- 視訊記憶體(VRAM):11 GB
- 記憶體頻寬:484 GB/s
- 處理器:3584 個 CUDA 核心 @ 1582 MHz(約 5.67 億 CUDA 核心頻率)
- 英偉達官網價格:4600 元
這塊顯示卡正是我目前正在使用的型號,它是一個完美的高階選項,擁有大容量視訊記憶體和高吞吐量,物有所值。
如果資金允許,它是一個很好的選擇。GTX 1080 Ti 可以讓你完成計算機視覺任務,並在 Kaggle 競賽中保持強勢。
GTX 1080
引數:
- 視訊記憶體(VRAM):8 GB
- 記憶體頻寬:320 GB/s
- 處理器:2560 個 CUDA 核心 @ 1733 MHz(約 4.44 億 CUDA 核心頻率)
- 英偉達官網價格:3600 元
作為目前英偉達產品線裡的中高階顯示卡,GTX 1080 的官方價格從 1080 Ti 的 700 美元降到了 550 美元。8 GB 的記憶體對於計算機視覺任務來說夠用了。大多數 Kaggle 上的人都在使用這款顯示卡。
GTX 1070 Ti
引數:
- 視訊記憶體(VRAM):8 GB
- 記憶體頻寬:256 GB/s
- 處理器:2432 個 CUDA 核心 @ 1683 MHz(約 4.09 億 CUDA 核心頻率)
- 英偉達官網價格:3000 元
11 月 2 日推出的 GTX 1070 Ti 是英偉達產品線上最新的顯示卡。如果你覺得 GTX 1080 超出了預算,1070 Ti 可以為你提供同樣大的 8 GB 視訊記憶體,以及大約 80% 的效能,價格也打了八折,看起來不錯。
GTX 1070
引數:
- 視訊記憶體(VRAM):8 GB
- 記憶體頻寬:256 GB/s
- 處理器:1920 個 CUDA 核心 @ 1683 MHz(約 3.23 億 CUDA 核心頻率)
- 英偉達官網價格:2700 元
現在很難買到這款 GPU 了,因為它們主要用於虛擬貨幣挖礦。它的視訊記憶體配得上這個價位,就是速度有些慢。如果你能用較便宜的價格買到一兩個二手的,那就下手吧。
GTX 1060(6 GB 版本)
引數:
- 視訊記憶體(VRAM):6 GB
- 記憶體頻寬:216 GB/s
- 處理器:1280 個 CUDA 核心 @ 1708 MHz(約 2.19 億 CUDA 核心頻率)
- 英偉達官網價格:2000 元
相對來說比較便宜,但是 6 GB 視訊記憶體對於深度學習任務可能不夠用。如果你要做計算機視覺,那麼這可能是最低配置。如果做 NLP 和分類資料模型,這款還可以。
GTX 1050 Ti
引數:
- 視訊記憶體(VRAM):4 GB
- 記憶體頻寬:112 GB/s
- 處理器:768 個 CUDA 核心 @ 1392 MHz(約 1.07 億 CUDA 核心頻率)
- 英偉達官網價格:1060 元
這是一款入門級 GPU。如果你不確定是否要做深度學習,那麼選擇這款不用花費太多錢就可以體驗一下。
值得注意的問題
上代旗艦 Titan X Pascal 曾是英偉達最好的消費級 GPU 產品,而 GTX 1080 Ti 的出現淘汰了 Titan X Pascal,前者與後者有同樣的引數,但 1080 Ti 便宜了 40%。
英偉達還擁有一個面向專業市場的 Tesla GPU 產品線,其中包括 K40、K80、P100 和其他型號。雖然你或許很少能夠接觸到,但你可能已經通過 Amazon Web Services、谷歌雲平臺或其他雲供應商在使用這些 GPU 了。
我在之前的文章中對 GTX 1080 Ti 和 K40 進行了一些基準測試。1080 的速度是 K40 的 5 倍,是 K80 的 2.5 倍。K40 有 12 GB 視訊記憶體,K80 有 24 GB 的視訊記憶體。
理論上,P100 和 GTX 1080 Ti 應該效能差不多。但是,之前的對比(https://www.reddit.com/r/NiceHash/comments/77uxe0/gtx_1080ti_vs_nvidia_tesla_p100_xpost_from/)發現 P100 在每個基準中都比較落後。
K40 售價超過了 13,000元,K80 售價超過 20,000 元,P100 售價約 30,000 元。它們的市場正被英偉達自家的桌面級 GPU 無情吞噬。顯然,按照現在的情況,我不推薦你去購買它們。
一句話推薦
如果你不設定自己的預算,裝配電腦就成了一件困難的事。在這裡,我將給出不同預算區間下 GPU 的最佳選擇。
- 4600-6000 元區間:首推 GTX 1080 Ti。如果你需要雙顯示卡 SLI,請購買兩塊 GTX 1070(可能不太好找)或兩塊 GTX 1070 Ti。Kaggle 排行榜,我來了!
- 2600-4600 元區間:可選 GTX 1080 或 GTX 1070 Ti。如果你真的需要 SLI 的話或許兩塊 GTX 1060 也是可以的,但請注意它們的 6GB 記憶體可能會不夠用。
- 2000-2600 元區間:GTX 1060 可以讓你入門深度學習,如果你可以找到成色不錯的 GTX 1070 那就更好了。
- 2000 元以下:在這個區間內,GTX 1050 Ti 是最佳選擇,但如果你真的想做深度學習,請加錢上 GTX 1060。
深度學習有望改變我們生活中的很多方面。然而,構建深度學習系統需要強大的硬體,希望本文能夠對你裝配自己的深度學習機器有所幫助。
原文地址:https://blog.slavv.com/picking-a-gpu-for-deep-learning-3d4795c273b9