谷歌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。
基於上述結果,我們可以把資料標準化,從每小時的花費、每秒處理的圖片數量、每美元能處理的圖片數三個維度進行對比。
△ 每美元每秒處理影像的表現
對比下來,谷歌雲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美元,說物美價廉可能也不過分~
今天,就醬了~
作者系網易新聞·網易號“各有態度”簽約作者
— 完 —
加入社群
量子位AI社群16群開始招募啦,歡迎對AI感興趣的同學,加小助手微信qbitbot6入群;
此外,量子位專業細分群(自動駕駛、CV、NLP、機器學習等)正在招募,面向正在從事相關領域的工程師及研究人員。
進群請加小助手微訊號qbitbot6,並務必備註相應群的關鍵詞~通過稽核後我們將邀請進群。(專業群稽核較嚴,敬請諒解)
誠摯招聘
量子位正在招募編輯/記者,工作地點在北京中關村。期待有才氣、有熱情的同學加入我們!相關細節,請在量子位公眾號(QbitAI)對話介面,回覆“招聘”兩個字。
量子位 QbitAI · 頭條號簽約作者
վ'ᴗ' ի 追蹤AI技術和產品新動態
相關文章
- 英偉達GPU顯示卡計算能力評估GPU
- 谷歌開放TPU應對英偉達GPU挑戰谷歌GPU
- Oracle將結果豎向顯示Oracle
- chat-gpt-google-extension: 在谷歌搜尋結果中同時顯示ChatGPT結果的chrome外掛Go谷歌ChatGPTChrome
- 英偉達控制皮膚沒有顯示設定 英偉達顯示設定不可用
- AI新利器,英偉達推出新一代超強GPUAIGPU
- Golang pprof 結果使用 graphviz 圖片化顯示Golang
- MySQL中如何橫向顯示結果集薦MySql
- 如何分頁顯示資料庫查詢結果?資料庫
- MySQL pager和nopager命令--不顯示查詢結果MySql
- Google良心!搜尋結果右側不再顯示廣告Go
- 人工智慧產品有望取代智慧手機成為新一代主流人工智慧
- SAP Hybris裡搜尋顯示結果的實現原理
- 【Shell】grep命令在結果集中顯示綠色的字元字元
- V$SQL檢視顯示結果異常的診斷SQL
- 衝刺結果評分
- 測試結果
- 主流小尺寸平板螢幕顯示對比評測
- Oracle 11g RAC crs_stat 命令結果完整顯示Oracle
- 豆瓣電影更改短評顯示機制 不再顯示全部短評
- AIIA 公佈首輪AI晶片基準評測結果AI晶片
- 英偉達:資料顯示顯示卡越好吃雞水平越高
- 英偉達GPU加速Cloudera資料平臺提升欺詐檢測能力GPUCloud
- 慢動作輸出 Linux 命令結果並用彩色顯示Linux
- 如何讓crs_stat命令結果中的name列完全顯示
- Windows10 Cortana搜尋結果顯示緩慢怎麼辦?Windows
- ES查詢之查詢屬性過濾、結果高亮顯示
- MongoDB 顯示數量方式 , count結果與實際不符合MongoDB
- jenkins+pytest+allure 介面測試生成報告只顯示第一次的測試結果Jenkins
- 英偉達推出下一代Blackwell GPU,成本和能耗降低25倍GPU
- 壓測結果分析
- DataExpress測試結果Express
- Parse.ly:資料顯示Facebook取代谷歌成為美國新聞網站最大的流量來源谷歌網站
- 全球140+大模型全方位評測結果出爐,智源評測體系釋出大模型
- 用sh列表顯示oracle資料庫單條查詢結果(轉)Oracle資料庫
- 英偉達釋出史上最強GPU,卻叫停了自動駕駛車路測GPU自動駕駛
- 谷歌效能測評工具lighthouse使用谷歌
- MySQL 查詢結果以百分比顯示簡單實現MySql