選自add-for作者:Pedro Gusmo機器之心編譯參與:李澤南、黃小天
最近,Pedro Gusmo 等人對於英偉達的四種 GPU 在四種不同深度學習框架下的性能進行了評測。本次評測共使用了 7 種用於圖像識別的深度學習模型。
第一個評測對比不同 GPU 在不同神經網絡和深度學習框架下的表現。這是一個標準測試,可以在給定 GPU 和架構的情況下幫助我們選擇合適的框架。
第二個測試則對比每個 GPU 在不同深度學習框架訓練時的 mini-batch 效率。根據以往經驗,更大的 mini-batch 意味著更高的模型訓練效率,儘管有時會出現例外。在本文的最後我們會對整個評測進行簡要總結,對涉及到的 GPU 和深度學習架構的表現進行評價。
GPU、深度學習框架和不同網絡之間的對比
我們使用七種不同框架對四種不同 GPU 進行,包括推理(正向)和訓練(正向和反向)。這對於構建深度學習機器和選擇合適的框架非常有意義。我們發現目前在網絡中缺乏對於此類研究的對比。
這是首次針對不同 GPU(Tesla K40,Titan-X Maxwell,GTX 1080 和 Titan-X Pascal)與不同網絡(AlexNet,Overfeat,Oxford VGG,GoogLeNet,ResNet-50,ResNet-101 和 ResNet-52)在不同深度學習框架下(Torch,Caffe,TensorFlow 和 Neon)的評測。在評測中,除了 Neon,所有框架都使用了英偉達 cuDNN 5.1。我們在每個 minibatch 裡使用了 64 個取樣,每次進行超過 100 次推理和訓練。圖表中缺失的數據意味著該次測試遭遇內存不足。
用於 TensorFlow 的 Minibatch 效率
訓練深度學習框架時知道每個 minibatch 中的樣本數量將會加快訓練。在第二個測評中,我們分析了 minibatch 尺寸與訓練效率的對比。由於 TensorFlow 1.0.0 極少出現內存不足的情況,我們只使用它進行這項評測。這次實驗中我們重新評估了 100 次運行中的平均正向通過時間和和正向+反向通過時間。
測評分析
關於第一個測評,我們注意到,Neon 幾乎總是能為 Titans 和 GTX 1080 導出最好的結果,而對 K40 的優化最差。這是因為 Neon 針對 Maxwell 和 Pascal 架構做了優化。Tesla K40,作為一個 Kepler GPU,缺少這樣低層級的優化。Torch 在所有架構中都可以輸出好結果,除了被用在現代 GPU 和更深的模型時。這又一次成了 Neon 發揮作用的時候。最後,我們指出 TensorFlow 是唯一一個可以訓練所有網絡的框架,並且不會出現內存不足的情況,這是我們繼續使用它作為第二個測評的框架的原因。
關於第二個測評,一般來說更大的 minibatch 可以減少每個樣本的運行時間繼而減少每個 epoch 的訓練時間。正如我們在上圖看到的,當使用 VGG 網絡時,GTX 1080 需要 420.28 毫秒為一個 64 樣本的 minibatch 運行正反向通過;相同的配置訓練 128 個樣本需要 899.86 毫秒,是前者的兩倍還要再多出 60 毫秒。此外,我們注意到對於所有大小為 8 的 minibatch 中的網絡,Tesla K40 有一個下凹曲率; Titan X Pascal 在使用相同 batch 大小的更淺架構上(例如 AlexNet 和 Overfeat)表現出上凹曲率。下凹曲率表明有效率在下降而上凹曲率則相反。更有趣的是 minibatch 大小的特殊取值也意味著更明顯的效率。分析兩個 GPU 將有助於解釋這為什麼會發生。
附錄
以下是對測評中使用的 GPU 還有架構和框架版本的扼要介紹。
GPU
1.Tesla K40:
K40 具有 2880 個 cuda 內核,745MHz 的基本頻率和可達 288GB/s 的內存寬帶的 12G GDDR5 RAM。這是一個基於 Kepler 架構的伺服器 GPU,具備 3.5Tflops 的計算能力。K40 已經停產,但仍被廣泛用於很多數據中心,了解其性能對於我們將來是否要購買新硬體很有幫助。
2.Titan X Maxwell:
Titan X 是具有 5.1Tflops 計算能力、用於 Maxwell 架構的旗艦消費級 GPU。它具有 3072 cuda 內核,1000MHz 的基本頻率,傳送速率為 336.5GB/s 的 12G GDDR5。考慮到其硬體規格和大多數深度學習應用僅依靠於單精度浮點運算,Titan X Maxwell 目前能用 750 美元左右買到,被認為是基於起始價格為 1000 美元的 GPU 的伺服器的最佳替換方案。
3.GTX 1080:
GTX 1080 是英偉達目前生產的高端遊戲 GPU,售價 599 美元。它具備 2560 個 cuda 內核,1607MHz 的基本頻率,提供 320GB/s 寬帶的 8GB GDDR5X。先進的 Pascal 架構為其帶來了 6.1Tflops 的計算能力。
4.Titan X Pascal:
Titan X Pascal 一直是深度學習方面最暢銷的 GPU。它具備 3584 cuda 內核,1417MHz 的基本頻率,提供 480GB/s 內存寬帶的 12GB GDDR5X。它比 GTX 1080 有更強大的計算能力(約 11Tflops),目前標價 1200 美元。儘管消費者趨之若鶩,英偉達目前在官方網站上直銷 Titan X Pascal,每個消費者限購 2 塊。
此外,在 3 月 10 日售價 699 美元,計算能力 11.34Tflops 的 GeForce GTX 1080Ti 推出以後,消費者擁有了 Titan X 以外的另一個選擇。
神經網絡
1.AlexNet:
2012 年,Alex Krizhevsky 使用五層卷積、三層完全連接層的 CNN 網絡贏得了 ImageNet 競賽(ILSVRC)。AlexNet 證明了 CNN 在分類問題上的有效性(15.3% 錯誤率),而此前的圖片識別錯誤率高達 25%。這一網絡的出現對於計算機視覺在深度學習上的應用具有裡程碑意義。
2.Overfeat
2013 年,Overfeat 通過降低第一層的步幅改進了 AlexNet 的架構,讓圖片識別錯誤率降低至 14.2%。這一方法證明了卷積神經網絡使用同步分類、本地化和圖片中對象檢測的方式可以增加圖片識別任務的準確度。
3.VGG Network:
2014 年,牛津大學的研究人員通過訓練 11 到 19 層的卷積神經網絡證明了深度對於圖像識別任務的重要性。他們的工作表明,使用 3×3 空間內核的兩個連續卷積層比使用單個 5×5 卷積層具有更高的準確性,同時這一優勢也能為非線性層帶來幫助。此外,作者證明 19 層 CNN 輸出的結果與 16 層網絡具有相似的精度,這暴露了當時技術訓練深度 CNN 的困難。最後,VGG Net 進一步將 ILSVRC-2014 分類任務中的錯誤率減少到了 7.3%。
4.GoogLeNet:
該方式由谷歌研究人員於 2014 年推出,它是由 22 層卷積神經網絡構成的模型,它被稱為 Inception,是由並行和串行的網絡進行的級聯。網絡分類器的誤差為 6.67%。
5.殘差網絡:
在 2015 年,微軟研究院的學者提出了一種新的 CNN 架構——殘差網絡(ResNet)。在殘差網絡中,殘差塊的任務是學習連續輸出的表示差異。這一方法通過 110 層模型在 ImageNet 競賽時達到了 3.57% 的誤差率。
本次評測中使用的深度學習架構版本:
Caffe: commit 746a77e6d55cf16d9b2d4ccd71e49774604e86f6Torch7: commit d03a42834bb1b674495b0c42de1716b66cc388f1Nervana Neon: 1.8.1TensorFlow: 1.0.0