本文詳細對比了谷歌TPU2和英偉達V100的性能,有兩個對比方向:一是測試在沒有增強過的合成數據上的吞吐量(每秒圖像);二是,考察ImageNet上兩者實現的精確性和收斂性。結果在ResNet-50模型的原始表現上,4塊TPU2芯片和4塊V100GPU速度相同。訓練ResNet-50時谷歌云TPU的實現用時短到令人發指,且基于ImageNet數據集的圖像分類準確度達76.4%的成本只要73美元,說物美價廉可能也不過分。
去年5月,谷歌推出了第二代TPU芯片,這是一個自定義開發的深度學習加速芯片,不少人認為有望成為英偉達GPU的替代品。
可事實真的如此么?
在這篇文章中,作者詳細對比了谷歌TPU2和英偉達V100的性能。孰優孰劣,一較便知~
環境設置
話不多說直接上干貨了。下面我們就先比較由四個TPU芯片組成的TPU2組合板與四個英偉達V100 GPU的環境設置的差別。
巧的是,因為兩者的總內存均為64G,因此我們能夠用同一個模型測試了,還能使用相同的batch size,節省了不少工夫呢。
在這次實驗中,我們用相同的方式訓練模型,雙方需要運行同步數據并行分布式訓練。
最后,我們選中了ImageNet上的ResNet-50模型進行測試。它實際上是圖像分類的一個參考點,雖然參考實現是公開的,但目前還沒有一個支持在云TPU和多個GPU上訓練的單一實現。
先看看V100這一邊,英偉達建議用MXNet或TensorFlow來實現,兩者都可以在英偉達GPU云上的Docker映像中使用。
但實際的操作中我們卻發現了一些問題,這要是兩種實現不能很好融合多個GPU和產生的大型batch size。
好在我們還有一些新發現,從TensorFlow的基準存儲庫中使用ResNet-50實現,并在Docker映像中運行它是可行的。這種方法比英偉達的推薦的TensorFlow實現要快得多,只比MXNet實現稍微慢一點(約3%)。這樣一來,也更容易在相同版本中用同一個框架的實現做對比。
再看看谷歌云TPU這一邊,官方建議用帶TensorFlow 1.7.0官方TPU存儲庫的bfloat16實現。TPU和GPU實現都在各自的體系架構上使用混合精度計算,但大部分張量是以半精度的方式儲存的。
一翻研究和對比后……我們終于敲定了實驗方案。
對于V100來說,我們決定用AWS上的p3.8xlarge實例(Xeon E5-2686@2.30GHz 16內核,244GB內存,Ubuntu16.04),用4個單個內存為16GB的V100 GPU進行測試。
TPU這邊的測試,我們將小型的n1-standard-4實例作為host(Xeon@2.3GHz兩核,15GB內存,Debian 9),我們提供了一個云TPU,由4個單個內存為16G的TPU2芯片組成。
方案敲定后,我們又規劃了兩個對比方向。
一是我們要測試在沒有增強過的合成數據上的吞吐量(每秒圖像)。這種比較獨立于收斂性,保證里了在I/O或數據增強中沒有瓶頸bottleneck影響結果。
二是,我們要考察ImageNet上兩者實現的精確性和收斂性。
目標,明確,方法,明確。我們迫不及待開始測試了——
吞吐量測試
我們依據每秒合成數據上的圖像來測量吞吐量,即在訓練數據實時創建、batch size也不同的情況下對吞吐量進行檢測。
雖然~官方只推薦的TPU的batch size是1024,但是基于讀者的請求,我們還報告了其他batch size大小的性能。
△在合成數據和w/o數據增強的不同批次上每秒的圖像性能
在batch size為1024的情況下,雙方的吞吐量旗鼓相當,TPU略領先2%。
當batch size較小時,在雙方吞吐量均降低,但對比起來GPU的性能稍好一些。看來,這些batch size真的不是TPU的推薦設置~
根據英偉達的建議,我們還也在MXNet上做了一個GPU測驗。
利用英偉達GPU云上Docker映像中提供的ResNet-50實現(mxnet:18.03-py3),我們發現在batch size為768的情況下,GPU每秒能處理約3280個圖像。這比上面最好的TPU結果還要快3%。
也正如上面所說的那樣,在上述batch size下,MXNet的實現在多個GPU上并沒有很好聚合。所以,我們接下來研究的重點就是這就是為什么我們將重點就是TensorFlow的實現。
性價比
上面我們也提到過,谷歌云TPU2一組有四塊芯片,目前只在谷歌云上才能用到。
當需要進行計算時,我們可以將它與虛擬機相連。考慮到谷歌云上不支持英偉達V100,所以其云服務只能來自AWS。
基于上述結果,我們可以把數據標準化,從每小時的花費、每秒處理的圖片數量、每美元能處理的圖片數三個維度進行對比。
△每美元每秒處理圖像的表現
對比下來,谷歌云TPU性價比略高。不過,谷歌TPU目前不賣,只能租。如果你考慮長期租用,或者購買的話,結論就不一樣了。
有一點你可能忘了,上面這張表的前提是假定了我們的租期為12個月,所以費用中包含了AWS上p3.8xlarge實例,并且不需要提前支付定金。這樣大大降低了價格,還能達到每美元能處理375張圖片的不錯效果。
其實對于GPU來說,還有更多的選擇。比方說,Cirrascale提供4臺V100GPU服務器的月租服務,收費大概是7500美元,折算下來是每小時10.3美元。
不過,因為AWS上像CPU、內存、NVLink支持等硬件類型也各不同,如果要更直接的對比,就需要更多的參考數據。其他費用套餐可參考:
http://www.cirrascale.com/pricing_x86BM.php
精準度和收斂程度
除了原始的表現,我們還希望有效驗證的計算能力。比方說,實現收斂的結果。因為比較的是兩個不同的實現,所以可以預期到結果會有不同。比較的結果不僅僅是硬件的速度,也包含實現的質量。
比方說,TPU實現的過程中應用到了計算密集的圖像預處理步驟,并且還犧牲了原始的吞吐量。下面我們也能看到,谷歌的這種選擇有不錯的回報。
我們用ImageNet數據集訓練這些模型,想把圖像進行分類。目前,這個數據集中的類別已經細分到了1000種,包含了130萬張訓練圖片,5萬張驗證圖片。
我們在batch size為1024的情況下進行訓練,進行了90次迭代后在驗證集上對比雙方的結果。
結果顯示,TPU可以每秒完成2796張圖,GPU則為2839張。這個結果和我們上面提到的吞吐量不同,是因為上面我們禁用了數據增強,并用合成數據來比較的TPU和GPU的原始速度。
△90次訓練之后,Top-1 精確值*(只考慮每張圖最高的預估)
從上圖可以看出來,90次訓練之后,TPU實現的Top-1精準度要好過GPU,有0.7%的優勢。
雖然0.7%的優勢看起來非常微小,但在如此高水平的情況下還有這樣的改進非常難,基于不同的應用個,這點改進將對最后的結果有很大影響。
接下來,我們看一下不同訓練時期,模型Top-1精準度的表現。
△在驗證集上,兩種方法實現Top-1精準度的表現
可以看出,圖表中有一段精準度陡增,和學習速率高度同步。TPU實現的收斂表現更好,最后到第86次訓練時,準確率可以達到76.4%。
GPU的表現就被甩在了后面,第84次訓練后達到了75.7%的準確率,而TPU早在第64次訓練時就達到了這個水平。
TPU有更好的表現,很可能要歸功于前期的預處理和數據增強。不過我們需要更多的實驗來驗證這個猜想。
基于成本價格提出的解決方案
我們最終需要考慮的,一是整個流程走下來的時間,二是它需要耗費多少資金。如果我們假設最后可接受的準確率為75.7%,那么可以根據每秒訓練速度和既定要求的訓練次數,算出來達到這個標準所需的成本。時間方面需要注意,不包括訓練啟動用時,以及訓練期間的模型驗證用時。
△達到75.1%Top-1準確率所需成本 | *表示租期為12個月
上圖顯示,谷歌TPU從零訓練圖像分類模型的成本是55美元(且訓練時間用了不到9小時)!收斂到76.4%的話成本將達到73美元。
而英偉達V100速度差不多快,但成本會更高,收斂速度也比較慢,不是個性價比高的解決方案~
對了,我們這個結論是基于實現的質量、云的價格來對比得出的。其實還有另外一個維度可以來比較,即算力的損耗。不過因為我們缺乏二代TPU算力損耗的公開信息,這方面的對比先不做了啦。
總結
按我們上述的衡量標準來看,在ResNet-50模型的原始表現上,4塊TPU2芯片和4塊V100GPU是速度相同。
目前來說,訓練ResNet-50時谷歌云TPU的實現用時短到令人發指,且基于ImageNet數據集的圖像分類準確度達76.4%的成本只要73美元,說物美價廉可能也不過分~
-
谷歌
+關注
關注
27文章
6161瀏覽量
105304 -
gpu
+關注
關注
28文章
4729瀏覽量
128892 -
TPU
+關注
關注
0文章
140瀏覽量
20720 -
英偉達
+關注
關注
22文章
3770瀏覽量
90991
原文標題:谷歌TPU2代有望取代英偉達GPU?測評結果顯示…
文章出處:【微信號:IV_Technology,微信公眾號:智車科技】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論