谷歌TPU2代有望取代英偉達GPU?測評結果顯示…

量子位發表於2018-04-27
原作:Elmar Haußmann
安妮 Root 編譯自 RiseML Blog
量子位 出品 | 公眾號 QbitAI

去年5月,谷歌推出了第二代TPU晶片,這是一個自定義開發的深度學習加速晶片,不少人認為有望成為英偉達GPU的替代品。

可事實真的如此麼?

在這篇文章中,作者詳細對比了谷歌TPU2和英偉達V100的效能。孰優孰劣,一較便知~

640?wx_fmt=png&wxfrom=5&wx_lazy=1

環境設定

話不多說直接上乾貨了。下面我們就先比較由四個TPU晶片組成的TPU2組合板與四個英偉達V100 GPU的環境設定的差別。

巧的是,因為兩者的總記憶體均為64G,因此我們能夠用同一個模型測試了,還能使用相同的batch size,節省了不少工夫呢。

640?wx_fmt=gif

在這次實驗中,我們用相同的方式訓練模型,雙方需要執行同步資料並行分散式訓練。

最後,我們選中了ImageNet上的ResNet-50模型進行測試。它實際上是影像分類的一個參考點,雖然參考實現是公開的,但目前還沒有一個支援在雲TPU和多個GPU上訓練的單一實現。

先看看V100這一邊,英偉達建議用MXNet或TensorFlow來實現,兩者都可以在英偉達GPU雲上的Docker映像中使用。

但實際的操作中我們卻發現了一些問題,這要是兩種實現不能很好融合多個GPU和產生的大型batch size。

好在我們還有一些新發現,從TensorFlow的基準儲存庫中使用ResNet-50實現,並在Docker映像中執行它是可行的。這種方法比英偉達的推薦的TensorFlow實現要快得多,只比MXNet實現稍微慢一點(約3%)。這樣一來,也更容易在相同版本中用同一個框架的實現做對比。

640?wx_fmt=gif

再看看谷歌雲TPU這一邊,官方建議用帶TensorFlow 1.7.0官方TPU儲存庫的bfloat16實現。TPU和GPU實現都在各自的體系架構上使用混合精度計算,但大部分張量是以半精度的方式儲存的。

一翻研究和對比後……我們終於敲定了實驗方案。

640?wx_fmt=gif

對於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大小的效能。

640?wx_fmt=png 在合成資料和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。

基於上述結果,我們可以把資料標準化,從每小時的花費、每秒處理的圖片數量、每美元能處理的圖片數三個維度進行對比。

640?wx_fmt=png

 每美元每秒處理影像的表現

對比下來,谷歌雲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的原始速度。

640?wx_fmt=png

 90次訓練之後,Top-1 精確值*(只考慮每張圖最高的預估)

從上圖可以看出來,90次訓練之後,TPU實現的Top-1精準度要好過GPU,有0.7%的優勢。

雖然0.7%的優勢看起來非常微小,但在如此高水平的情況下還有這樣的改進非常難,基於不同的應用個,這點改進將對最後的結果有很大影響。

接下來,我們看一下不同訓練時期,模型Top-1精準度的表現。

640?wx_fmt=png

 在驗證集上,兩種方法實現Top-1精準度的表現

可以看出,圖表中有一段精準度陡增,和學習速率高度同步。TPU實現的收斂表現更好,最後到第86次訓練時,準確率可以達到76.4%。

GPU的表現就被甩在了後面,第84次訓練後達到了75.7%的準確率,而TPU早在第64次訓練時就達到了這個水平。

TPU有更好的表現,很可能要歸功於前期的預處理和資料增強。不過我們需要更多的實驗來驗證這個猜想。

基於成本價格提出的解決方案

我們最終需要考慮的,一是整個流程走下來的時間,二是它需要耗費多少資金。如果我們假設最後可接受的準確率為75.7%,那麼可以根據每秒訓練速度和既定要求的訓練次數,算出來達到這個標準所需的成本。時間方面需要注意,不包括訓練啟動用時,以及訓練期間的模型驗證用時。

640?wx_fmt=png

 達到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美元,說物美價廉可能也不過分~

今天,就醬了~

作者系網易新聞·網易號“各有態度”簽約作者


加入社群

量子位AI社群16群開始招募啦,歡迎對AI感興趣的同學,加小助手微信qbitbot6入群;


此外,量子位專業細分群(自動駕駛、CV、NLP、機器學習等)正在招募,面向正在從事相關領域的工程師及研究人員。


進群請加小助手微訊號qbitbot6,並務必備註相應群的關鍵詞~通過稽核後我們將邀請進群。(專業群稽核較嚴,敬請諒解)

誠摯招聘

量子位正在招募編輯/記者,工作地點在北京中關村。期待有才氣、有熱情的同學加入我們!相關細節,請在量子位公眾號(QbitAI)對話介面,回覆“招聘”兩個字。

640?wx_fmt=jpeg

量子位 QbitAI · 頭條號簽約作者

վ'ᴗ' ի 追蹤AI技術和產品新動態


相關文章