您的位置:首頁>動漫>正文

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

原作:Elmar Haußmann

安妮 Root 編譯自 RiseML Blog

量子位 出品 | 公眾號 QbitAI

去年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。

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

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

有一點你可能忘了,上面這張表的前提是假定了我們的租期為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美元,說物美價廉可能也不過分~

今天,就醬了~

— 完 —

誠摯招聘

在合成資料和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。

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

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

有一點你可能忘了,上面這張表的前提是假定了我們的租期為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美元,說物美價廉可能也不過分~

今天,就醬了~

— 完 —

誠摯招聘

Next Article
喜欢就按个赞吧!!!
点击关闭提示