4月5日,谷歌的一篇博客提到TPU張量處理器, TPU最早是六年前開始出現的,隨著需求的增多,發現有些設備還是太貴了,隨著人工智能的發展,未來谷歌對人工智能的計算需求需要谷歌數據中心規模翻一番,規模翻倍不要緊,但不必要的成本壓力誰都不想承擔,為了解決這一問題,所以就有了TPU。
TPU是一種補充
張量處理器(TPU)的出現并不是為了取代做通用計算的CPU,或者是擅長圖形計算的GPU,而是作為一種補充。谷歌只是覺得GPU的通用性太高了,所以有了TPU,未來還會買很多CPU和GPU。
盡管如此,但由于谷歌TPU論文引起的反響太大,感應到威脅的英偉達很快做出的回應,英偉達回應說,GPU在機器學習的推理(inferencing)方面相對于TPU有一些優勢,還能用于機器學習中神經網絡的訓練。英偉達的GPU更通用一些,谷歌的TPU則比較專注于一個點。
英偉達回應對谷歌在論文中進行的對比的細節有些意見,黃仁勛表示GPU的通用性高一些, 先是肯定TPU在深度學習的張量處理領域有一些重合,隨后通過一些細節來論證GPU相對于TPU的優勢,這也算是不大不小的撕逼吧。
谷歌說:TPU相對于CPU,GPU的性能優勢
如今,谷歌的許多產品都用到了TPU,比如谷歌圖像搜索,谷歌照片,谷歌翻譯,還有AlpheGo。最引人關注是在談性能的部分,為了讓大家感受TPU性能的優勢,拿來做對比的自然少不了CPU和GPU。
谷歌生產環境的AI負載就有許多神經網絡推理(inferencing)的部分,跑這一負載的時候,TPU比GPU和CPU快15倍至30倍;TPU比傳統芯片能效更高,能達到30倍至80倍的提升;跑應用需要的代碼只有100到1500行,該代碼基于谷歌開源的機器學習框架TensorFlow。
與一顆18核的Haswell 至強E5-2699 v3或者一塊英偉達Kepler GK210B相比,TPU對谷歌TensorFlow框架支持的更好。
雖然Haswell至強也支持8位整數運算,64位雙精度和32位單精度浮點運算,但是在神經網絡的環境下性能明顯下降,至強處理器在整數模式下的吞吐量并不高,遠不如TPU在浮點模式下的表現。
Kepler GK210B GPU不支持8位整數運算,只支持32位以及64位浮點模式,其在吞吐方面的表現與TPU對比也相形見絀:
上圖TOPS一欄,在TensorFlow框架運行谷歌的推理(inferencing)工作負載的時候,Haswell E5能跑出2.6 TOPS,K80能跑出2.8 TOPS,TPU能跑出92 TOPS,是前者的三十多倍。
英偉達:對比的產品根本沒有針對人工智能負載做優化
一般來說基準測試都有一定說服力的,但這次測試,有人表示Keplers落后于最新的Pascal架構CPU兩代,谷歌的這個對比有失公允。英偉達加速計算副總裁表示,Kepler是2009年推出的針對傳統HPC問題的GPU,K80設計的時候根本沒考慮深度學習的問題。
隨著GPU被用在機器學習領域,英偉達也在產品上不斷做優化。2016年采用Pascal架構的Tesla P40剛推出的時候,TPU在深度學習方面的性能表現是K80的20倍。
2016年,英偉達推出了采用Pascal架構的P4和P40,除了支持半精度的16位浮點運算外,還支持8位整數運算,這個跟谷歌的TPU是一樣的。
P4基于GP104芯片,有2560顆CUDA處理器,在運行推理(inferencing)工作負載的時候理論峰值性能達21.8 TOPS,峰值功耗為75瓦。P40基于GP102芯片,有3840顆CUDA核心,運行推理(inferencing)工作負載時的理論峰值性能為47 TOPS,功耗為250瓦。
谷歌在論文提到P40可以有47 TOPS推理(inferencing)性能,但沒提到,99%的事務(transactions)平均響應時間控制在10毫秒,這一對于谷歌機器學習做推理(inferencing)負載時的重要參數。谷歌表示它的28納米工藝TPU可以以700 GHz運行,主存儲器內存從DDR換成了GPU常用的GDDR5,所有這一切只額外增加10瓦功耗。
英偉達新品的測試表現
可能因為不滿英偉達對谷歌對TPU和GPU的對比結果,英偉達用開源的GoogLeNet卷積神經網絡應用程序進行了一些測試,這改善了英偉達在推理(inferencing)工作負載中的表現:
圖表中有一個有趣的細節,英偉達在表格中只顯示了數MB的on-chip內存,而沒顯示數GB的on-card內存。
P40的GP102芯片有24 GB的GDDR5內存,K80的GK210B芯片有都12 GB的GDDR5內存,以及8 MB的on-chip內存。TPU有28 MB on-chip內存以及32 GB DDR3內存。GB的內存是用來存儲深度學習模型的地方。
英偉達測出TPU最高性能是90 TOPS,谷歌測出的是92個TOPS,谷歌測出P40顯卡在8位整數運算時候的最高性能為48 TOPS,英偉達測出的是47 TOPS。
運行GoogLeNet推理(inferencing)工作負載,一個重要的數據是,99%的事務(transactions)平均響應時間都小于10毫秒,TPU每秒可以處理280,000個推理(IPS),Pascal P40可以處理560,000。
谷歌指出,單張K80卡只能處理36,465個推理(IPS),只有TPU的1/13,10個毫秒只能完成1%事務(transactions)。我們不知道Tesla P4怎么樣,與谷歌的TPU在同一類型的熱封裝中理論上說應該更強。因為P40與Tesla P4在8位整數浮點運算時候的性能旗鼓相當,所以我們就假設P4與P40在跑GoogLeNet時候的性能一樣。
Tesla P40每秒可以處理259,750 推理(IPS),因為與谷歌TPU表現基本相同而做推論,也能將處理99%事務(transactions)的平均響應時間控制在10毫秒以內。如果谷歌TPU的內存轉向GDDR5內存,無疑會增加成本,但是每秒可以處理的推理(IPS)能增加到840,000。私下里猜測,谷歌可能已經這么做了。
谷歌這么開發值不值?
第一個要問的問題是,谷歌為開發和制造TPU付出了多大成本。當然因為不用依靠CPU來做推理(inferencing)所以能節省了一大截成本。算一算成本,如果一塊P4是2100美金,P40是4700美金,成本都比較高,所以谷歌必然考慮做自己的芯片,靠自研芯片節省的電費帶來經濟性,總體成本會低下來。
如果今年五月份的GPU大會上英偉達可能會發布新的GPU Volta,如果新的GPU能讓機器學習推理的能力翻倍的話,后半年大范圍供貨后將成為很多HPC和AI用戶的選擇,此時英偉達的V4和V40就跟采用GDDR5的TPU站到同一陣營了,而且采用更高級的20納米制程。
谷歌有錢,想買啥就能買啥,當想買的東西根本就沒有的時候谷歌就會自己做,遵循的唯一原則就是降低TCO。
英偉達強調,GPU貢獻性能的單位成本遠低于TPU,為了證明在開發和部署環節的成本優勢,英偉達還表示,市場上為AI開發的定制化的ASIC無一例外都非常昂貴,并且富有挑戰性。英偉達明顯加快了產品更新的節奏,因為創新的節奏太快了。
真正值得注意的問題,谷歌如何在鎖定狀態下調整其TensorFlow框架及TPU,從而擠出更多的性能。如果未來不能超越摩爾定律,那么它可能轉向GPU,或者收購一家有趣的創業公司,這樣做的話不會感到意外。如果谷歌未來展示更多TPU和TensorFlow技巧,我們也不用感到意外。