如何看待 Google 既可以作 Inference,又可以作 Training 的新一代 TPU?

此舉對NVIDIA GPU的市場有多大影響?

本題已收錄至知乎圓桌:Google I/O 2017,更多「Google I/O」相關話題歡迎關注討論


2017/5/18 晚追加

據某專業人士介紹,那些看著像網線的還是 PCI-E。空著的那兩個介面,是某種帶寬更大的介面。。。

原答案:

不得不承認,TPU 的迭代速度超出了我的預期。

從現有的資料來看,單晶元可以做到 45 TFLOPS,四顆晶元可以達到 180 TFLOPS(每一塊 TPU 卡有四顆 TPU 晶元)。作為比較,Nvidia V100 的 Tensor Core 可以達到 120 TFLOPS(單卡,單晶元)。

尚未公布但頗為關鍵的 Spec 包括:

1. 利用率。上一代 TPU 受限於 I/O,利用率並不理想。從這一次的封裝來看,應該已經用上了 HBM。於是問題是這一代 TPU 是否能達到理想的利用率,180 TFLOPS 的理論計算能力可以利用多少?

2. 浮點精度。這一代的 TPU 引入了浮點運算,因此即可用作 Inference 也可用來 Training。那麼問題是其浮點精度是 16 bit 還是 32 bit。從公布的理論 TFLOPS 來看,FP16 的可能性最大。那麼在做累加時,可否像 V100 一樣提升到 FP32。

3. 板間通信。&與上一代 TPU 不同,這一代 TPU 似乎並不需要安裝在伺服器上,而是類似 FPGA 的解決方案,直接通過乙太網進行通信&。這對於提高整個系統的 Perf/Watt 和減少延時都會有很大的幫助。

下圖為一塊 TPU 卡,四片巨大的散熱器下面分別是四顆 TPU 晶元。板子上沒有內存顆粒,應該用的是 HBM,與晶元封裝在一起。每顆 TPU 有兩個乙太網介面,板子上除了電源介面以外,沒有其他類似 PCI-E 的介面。

下圖為 TPU 的機架,同樣看不到主機的身影。


老實說看了新聞後覺得很震撼。雖然目前細節不多,但即使在宣稱的數字上打個比較大的折扣,如果成本控制不錯的話,大量在雲上部署能夠極大降低深度學習成本。

舉個例子,假設實測比Nvidia Volta慢2倍,就是說一塊Volta(120 TFLOPS)抵5塊TPU2(45*5 TFLOPS)。假設TPU2 per die做到200刀一片,考慮到volta每塊一萬刀(估計)的價格,TPU2仍然有十倍受益。這個數字跟Nvidia伺服器卡80+%利潤率比較一致。

因為不是很懂體系架構,以下評論可能很不準確。

對TPU2覺得震撼主要是因為第一代中規中矩,本來以為第二代是進一步降低成本提升性能,但沒想到一步跨到的訓練,直接跟NVidia GPU拼了。

TPU一代是一個比較簡單的協處理。核心是一個矩陣乘法器,準確來講叫Systolic Matrix Multiplication (http://web.cecs.pdx.edu/~mperkows/temp/May22/0020.Matrix-multiplication-systolic.pdf),外加一個比較大的on-chip SRAM來存中間數據。比較激進的採用了int8(至少是13年的時候膽子比較大)獲得了大的受益,因為int8的乘法不論是晶元面積還是功耗都10倍好於FP32。

但反過來說,簡單的架構導致不是所有任務都適用,而且int8導致了在TPU上部署的困難性,所以很難成為比較通用的雲上晶元。

更多細節可以參見TPU在今年ISCA上論文。雖然學術界對此的創新性評價很一般,論文裡面也一再強調為了趕時間只弄了個簡單的版本,而且結果並不出眾原因之一是沒有用「awkward artifacts assembled solely to win benchmarks"。但不妨礙Google PR機器大力鼓吹。

論文才放出來,ISCA下個月才開,結果TPU 2出來了。可能是TPU團隊大量離職原因,或者想蹭一下Nvidia Volta的PR。(AMD弄出了一個Vega,4倍弱於Votla和TPU2,結果夾在兩個之間發布,可想而知。。。)

TPU2目前來看至少解決了int8這一大問題。猜測它很有可能基於FP16,例如FP16和FP16做乘法,然後FP32做累加,那麼目前大部分神經網路都可以不需修改的在上面部署。因為新聞稿強調了訓練,他們一大改進就是針對TPU1基於DDR3的off-chip DRAM。大家基本猜測是基於HBM,可以提供5倍以上的內存帶寬提升來幫助訓練。

使用HBM還是會帶來很多工程問題,畢竟這個技術並沒有四處廣泛應用。包括良品率下降,功耗上升,這個很大程度上解釋了TPU2上巨大的散熱器(FP16也會有功耗增加)。雖然很多人質疑TPU2功耗可能會比Volta高,但在雲伺服器里,只要不是特別離譜,這點額外功耗帶來的電費增加是總成本的零頭。

TPU2卡之間的網路連接不知道具體多快,但其格狀的連接使得可能分散式最好也是要用data flow來做,沒有交換機讓網路成本下降,但遠端之間延遲會比較大,需要上層框架好的封裝。

總體而言,TPU2的優勢還是在成本上,它比Volta的10倍價格優勢會讓Google雲的成本大量降低。除非Nvidia伺服器卡大降價,或者允許大量購買消費卡(例如Titan X),那麼G至少領先競爭對手一到兩年。當然,這個只有當神經網路計算真的佔到了雲計算了中相當大的比例才有意義。

實際上是,雖然增長喜人,但還遠遠不夠。

同志們還需努力。


Peak throughput 花了一年時間從TPU一代的92T ops改進到第二代的45T flops 也不算太離譜。Google說第二代支持training,不知是因為用了全新架構還是因為支持了浮點計算。單純看數字不到GV100一半。

Memory 方面不知道所謂的

64 GB of ultra-high-bandwidth memory per Cloud TPU

是不是就是每個晶元16GB hbm。如果是的話,那就和GV100一樣。

晶元間link似乎也拋棄了pcie,具體情況不詳。

Power和die area不詳。

總體來說Google大概的意思就是我們有了一個對tensor flow優化的特別好晶元。四個TPU晶元加起來的peak throughput超過GV100。你們提交給我家cloud的任務也許會用這種晶元來完成。但也不一定,因為cloud里也有CPU和GPU。

唯一想吐槽的一點是為什麼總是要強調180Tflops。直接說一個晶元是45T,一個pod有256個晶元不好嗎。

數據來源:

https://www.google.com/amp/s/www.blog.google/topics/google-cloud/google-cloud-offer-tpus-machine-learning/amp/

https://research.googleblog.com/2017/05/introducing-tensorflow-research-cloud.html?m=1


這次主要是宣傳稿,完全沒有技術細節。內存帶寬和訪存模式沒有說。最關鍵的flops/watt也沒有說。問了一下核彈廠的人,他們表示從這個散熱器大小來看,功耗比起volta gpu估計沒有優勢。

從這個設計看估計google是不會賣tpu的,甚至可能在雲上也不會讓用戶直接用,大概是以託管訓練服務的形式存在,類似於你上傳數據再點幾個按鈕,他直接幫你把模型訓練好。


45 TFLOPS是很生猛。

但是畢竟是要進入data center, 我更好奇的是整個system會有什麼提升。裡面還有一大堆問題呢。

譬如你在data center加入了這麼多個rack的TPU,其他compute unit去調用你的TPU的時候延遲又是多少呢? 還是你準備每個rack裡面加一個TPU, 那會不會有oversubscription 或者 undersubscription的問題呢?

很期待以後能有篇文章講講Google cloud 在擁有TPU後怎麼提速,且提速有多少,energy的消耗等問題。

雲計算從來都不是單單一個晶元就解決的問題, 其實我還是覺得微軟catapult提出的方案。。就挺好。。PCIE bump-in-the-wire,感覺挺穩。


推薦閱讀:

TAG:谷歌Google | GPU通用計算 | 深度學習DeepLearning | TensorFlow | TPUTensorProcessingUnit |