詳解谷歌第二代TPU:功耗性能究竟如何?巨頭想用它幹什麼?

安妮 陳樺 編譯自 The Next Platform

量子位 報道 | 公眾號 QbitAI

在上周召開的Google I/O 大會上,谷歌正式公布了第二代TPU,又稱Cloud TPU或TPU 2。但是,谷歌並沒有詳細介紹自己的新晶元,只展示了一些照片。

The Next Platform今天發布一篇文章,基於谷歌提供的圖片和細節,帶你深入了解谷歌的TPU2。量子位編譯如下:

首先要說明的一點是,谷歌不太可能向公眾出售TPU的晶元、主板或是伺服器。目前看來,TPU2還是一個只供內部使用的產品。只有極少數人可以通過TensorFlow研究雲(TRC)直接訪問TPU2的硬體,因為這本身就是為研究人員設計的具有「高度選擇性」的項目。研究人員可以分享他們發現的TPU2可加速代碼類型。谷歌還推出了Google Compute Engine Cloud TPU Alpha項目,我們可以假定,這也是一個高度選擇性的項目。

谷歌設計TPU2的首要目的,肯定是為了加速其面向消費者的核心軟體(比如搜索、地圖、語音識別和無人車的研究等項目)深度學習的工作量。我們對Google TRC的粗略解讀是,Google想藉此招募人員去研究適合TPU2的超網格的工作負載。

谷歌表示,TRC項目雖然開始規模較小,但之後會逐步擴大。如果Google的研究推廣到一般的應用程序,那麼其他人員也可以直接訪問TPU2。那時Google將為其谷歌雲平台的公共雲增添一個TensorFlow硬體實例。

TPU2能有今天,離不開去年Google I/O大會上第一代TPU的貢獻。一代TPU也是專為機器學習設計的特定目的晶元,還應用在了AlphaGo、搜索、翻譯、相冊等背後的機器學習模型中。 TPU通過兩個PCI-E 3.0 x8邊緣連接器連接協處理器(參見下面兩張照片的左下角),總共有16 GB/s的雙向帶寬。TPU消耗功率高達40瓦,遠高於PCI-E 電源規格,可為8位整數運算提供每秒92萬億次的運算,或為16位整數運算提供每秒23萬億次的運算。為了進行比較,Google聲稱,在半精度浮點數(FP16)情況下,TPU2可以達到每秒45萬億次的浮點運算。

TPU沒有內置的調度功能,也不能被虛擬化。它是一個直接連接到伺服器主板的簡單矩陣乘法協處理器。

谷歌的第一代TPU卡:A圖沒有散熱器;B圖有散熱器

在主板處理能力或其PCI-E 吞吐量超負載前,Google從不會透露有多少TPU連接到一個伺服器主板。協處理器只需要做一件事,它需要以任務設置和拆卸的形式,從主機處理器獲取大量信息,並管理每個TPU數據的傳輸帶寬。

Google已將其TPU2設計用於四機架機櫃,並將其稱為pod。機櫃是相對於一組工作負載的標準機架配置(從半機架到多機架)。它為大型數據中心所有者提供更輕鬆廉價的購買、安裝和部署流程。例如,Microsoft的Azure Stack標準半機架就是一個機櫃。

四機架機櫃大小主要取決與Google正在使用的銅纜類型和全速運行的最大銅線長度。下圖顯示了機櫃的高層次組織。

我們首先注意到,Google通過兩根電纜將每個TPU2板連接到一個伺服器處理器板上。也可能是谷歌將每個TPU2板連接到兩個不同的處理器板,但是,即使是谷歌也不希望混淆該拓撲結構的安裝、編程和調度複雜性。如果在伺服器主板和TPU2板之間存在一對一的連接,則要簡單得多。

Google的TPU2機櫃:A是CPU機架,B是TPU2機架,C是TPU2機架,D是CPU機架; 固體箱(藍色):不斷電電源系統(UPS); 虛線框(紅色)是電源; 虛線框(綠色)是機架式網路交換機和機架式交換機頂部

谷歌展示了TPU2機櫃的3張不同照片。在這3張照片中,配置和連線方式看起來一致。TPU2連線的顏色編碼有助於比較這些照片。

三個谷歌TPU2機櫃

谷歌展示了TPU2電路板的頂視圖,以及電路板前面板介面的近距離視圖。TPU2電路板的所有4個象限共享同一電源分配系統。我們認為,這4個TPU2電路板象限也通過簡單的網路開關共享同一網路連接。看起來,每個電路板象限都是一個獨立的子系統,而除此以外4個子系統之間並沒有相互連接。

TPU2板的俯視圖:A是四個TPU2晶元和散熱片;B是2個BlueLink 25GB / s電纜/ TPU2;C是兩種全路徑體系結構(OPA)電纜;D是電路板電源連接器,E很可能是一個網路開關

前面板連接看起來像是QSFP網路介面,但我從未在其他地方看到過。IBM BlueLink規範定義,對於最小25GB/s的配置(稱作『子鏈接』),在上下行每個方向上需要8個200Gb/s信道(總共16個信道)。谷歌是OpenCAPI的成員,同時也是OpenPowerFoundation的創始成員,因此使用BlueLink規範是合理的。

TPU2面板連接

前面板中央的兩個介面看起來像是QSFP介面,介質為銅雙絞線,而不是光纖。這支持兩種網路配置,分別為10Gbps乙太網和100Gbps英特爾OPA連接。兩個100Gbps的OPA鏈路可以合併提供雙向25GB/s的帶寬,從而符合BlueLink規範要求的網速。因此我們認為,谷歌採用了100Gbps的OPA連接。

不過為了避免信號衰減帶來問題,這些銅纜、BlueLink或OPA的線纜長度不能超過3米。這意味著,CPU和TPU2電路板之間的物理距離不能超過3米。谷歌使用彩色編碼的線纜來連接,我猜測這是為了更方便地接線,避免出錯。可以看到,在前面板最前方的介面下方,有貼紙與線纜顏色一一對應。我們認為,顏色編碼表明,谷歌計劃更大規模地部署這些TPU2機櫃。

白色線纜最有可能是1Gbps乙太網連接,這個網路用於系統管理。在照片中,我們並沒有看到,谷歌如何將管理網路連接至TPU2電路板。不過,基於白色線纜的走線方式,我們可以假定,谷歌從機架背面將處理板連接至管理網路。或許,處理板將通過OPA連接管理TPU2板,並評估這些電路板的健康狀況。

谷歌的TPU2機櫃具有鏡像對稱性的特點。在下方圖片中,我們將處理器機櫃D的照片進行鏡像翻轉,並與處理器機櫃A進行比較。這兩個機櫃看起來一模一樣,僅僅只是互為鏡像。在再下方的圖片中,可以看到機櫃B和C也互為鏡像。

比較兩個TPU2機架

谷歌的照片中並沒有展示足夠多的連線信息,以判斷電路板之間的準確網路拓撲結構。不過這很可能是一種非常複雜的mesh網路。

我們認為,CPU板是標準的英特爾至強雙socket主板,符合谷歌的1.5英寸伺服器機架單元的尺寸。這是當前一代主板設計。考慮到對OPA的支持,這可能是Skylake主板(參見以下對功耗的探討)。我們猜測這是雙socket主板的原因僅僅在於,我沒有聽說過,在英特爾供應鏈中,有哪家廠商曾大量發貨單socket主板。不過,隨著AMD推出「Naples」Epyc X86伺服器晶元,以及高通推出Centriq ARM伺服器晶元,突出單socket配置,這樣的情況將發生改變。

我們認為,谷歌使用兩個OPA線纜將每塊CPU板連接至唯一的TPU2板,以實現25GB/s的總帶寬。這種一對一連接回答了關於TPU2的一個關鍵問題:谷歌在設計TPU2機櫃時,將TPU2晶元與至強socket數量配比為2:1。這就是說,4顆TPU2晶元對應於一個雙socket至強伺服器。

在深度學習任務中,GPU加速器採用的配比通常為4:1或6:1,而這種TPU2加速器與處理器之間的緊耦合與此有很大不同。2:1的配比表明,谷歌沿用了第一代TPU的設計哲學:「與GPU相比,TPU與FPU(浮點處理單元)之間關係更緊密。」處理器在谷歌TPU2架構中承擔了大量工作,同時把所有矩陣運算任務丟給了TPU2。

在TPU2機櫃中,我們看不到任何存儲模塊。或許這正是下圖中機柜上方大量藍色光纖存在的原因。數據中心網路連接至CPU板,同時沒有任何光纖連接至機櫃B和C,而TPU2板上也沒有任何網路連接。

很多光纖帶寬連接到谷歌數據中心的其餘部分

不管是TPU2還是CPU,每個機架上都有32個計算單位。每個機櫃中有64個CPU板和64個TPU板,共有128個CPU晶元和256個TPU2晶元。

谷歌表示,其TRC包含1000個TPU2晶元,不過這個數字是去掉了零頭的。四個機櫃包含1024個TPU2晶元。因此,四個機櫃是Google已經部署了多少TPU2晶元的下限。在Google I/O上公布的照片中,可以看到三個機櫃,也可能是四個。

現在我們還不清楚一個機櫃中的CPU和TPU2晶元如何關聯,讓TPU2晶元可以通過超網格中的連接有效地共享數據。我們幾乎可以肯定,TRC不能跨機櫃(256個TPU2晶元)處理單個任務。第一代TPU是一個簡單的協處理器,因此CPU負責處理所有數據流量。在這種架構中,CPU通過數據中心網路訪問遠程存儲器數據。

谷歌沒有描述機櫃的內存模型。TPU2晶元可以在OPA上使用遠程直接存儲器訪問(RDMA)從處理器板上的內存中載入自己的數據嗎?大概可以。

CPU板似乎也可能在機柜上執行相同操作,創建了大型共享內存池。該共享內存池不會像惠普企業版機器共享內存系統原型中的內存池那麼快,但是有著25 GB/s的帶寬,它速度不會太慢,而是在兩位數太位元組範圍內(每個DIMM 16GB,每個處理器有8個DIMM,每個板有兩個處理器,64個板產生16TB的內存)。

我們推測,在一個機柜上安排一個需要多個TPU2的任務看起來是這樣:

處理器池應該有一個機櫃的超網格拓撲圖,哪些TPU2晶元可用於運行任務。

處理器組可能相互關聯,對每個TPU2進行編程,以明確地鏈接TPU2晶元之間的網格。

每個處理器板將數據和指令,載入到其配對的TPU2板上的四個TPU2晶元上,包括網狀互連的流量控制。

處理器在互連的TPU2晶元之間同步引導任務。

當任務完成時,處理器從TPU2晶元收集結果數據(該數據可能已經通過RDMA傳輸到全局存儲器池中),並將TPU2晶元標記為可用於另一任務。

這種方法的優點是TPU2晶元不需要理解多任務,虛擬化或多租戶,機柜上的所有這類運算都由CPU來處理。

這也意味著,如果Google想將雲端TPU實例作為其谷歌雲自定義機器類型IaaS的一種來提供,該實例將必須包括處理器和TPU2晶元。

目前我們還不清楚工作負載是否可以跨郵票進行縮放,並保留超級網格的低延遲和高吞吐量。雖然研究人員可以通過TRC訪問1,024個TPU2晶元中的一些,但將計算量擴展到整個機櫃看起來是一個挑戰。研究人員或許能連接到多達256個TPU2晶元的集群,這足以令人印象深刻,因為雲GPU連接目前才擴展到32個互連設備。

谷歌的第一代TPU運行時功耗40瓦,能以23 TOPS的速率執行16位整數矩陣乘法。TPU2的運行速度提高到45 TFLOPS,是上代的兩倍,同時通過升級到16位浮點運算,提高了計算複雜度。一個粗略的經驗法則表明,這樣功耗至少翻兩番:只是將運行速率提高一倍並升級到16位浮點運算,TPU2的功耗至少要提高到160瓦。

從散熱器的尺寸來看,TPU2的功耗可能更高,甚至高於200瓦。

TPU2板上,在TPU2晶元頂部有巨大的散熱片,它們是多年來我看到的最高的風冷散熱片。同時,它們還具有內部密封循環的水冷系統。在下圖中,我們將TPU2散熱片與過去幾個月看到的最大的散熱片相比較:

A是4個晶元構成的TPU2板側面圖;B是搭載雙IBM Power9的Zaius主板;C是雙IBM Power8的Minsky主板;D是雙英特爾至強的Facebook Yosemite主板;E是帶有散熱片的英偉達P100 SMX2模塊和Facebook Big Basin主板。

這些散熱器的尺寸都在高喊著「個個超過200瓦」。很容易看出,它們比上一代TPU上的40瓦散熱器大得多。這些散熱器的高度約能填滿兩個機架單元,接近3英寸。 (Google機架單元高度為1.5英寸,比行業標準1.75英寸U型稍矮)。

增加的功耗用在哪裡了呢?

因此我們可以推測,TPU2晶元的內存容量也有所擴大,這有助於提高吞吐量,但同時也增加了功耗。

此外,Google從PCI-E插槽驅動單TPU(PCI-Express插槽向TPU卡供電)發展到單晶元TPU2板設計共享雙OPA埠和交換機,以及每個TPU2晶元兩個專用的BlueLink埠。OPA和BlueLink都增加了TPU2板級功耗。

Google的開放計算項目機架規格展示了功率為6千瓦,12千瓦和20千瓦的電力輸送配置文件;20千瓦的功率分配可以實現帶動90瓦的CPU。我們猜測,使用Skylake架構的Xeon處理器和處理大部分計算負載的TPU2晶元,機架A和D可能使用20千瓦電源。

機架B和C則不同。功率輸送為30千瓦,能夠為每個TPU2插槽提供200瓦的功率輸送,每個機架36千瓦將為每個TPU2插座提供250瓦的功率輸送。36千瓦是一種常見的高性能計算能力傳輸規範。我們相信,每晶元250瓦功耗也是Google為TPU2配置巨大散熱器的唯一原因。因此,單個TPU2機櫃的功率傳輸可能在100千瓦至112千瓦範圍內,並且可能更接近較高數量。

這意味著TRC在滿負荷運行時消耗將近50萬瓦的功率。雖然四個機櫃部署成本高昂,但卻是一次性的資本費用,並不佔用大量的數據中心空間。然而,用50萬瓦的電力來持續資助學術研究,就算對Google這個規模的公司來說,也不是一筆小費用。如果TRC在一年內仍然運行,將表明Google正在認真為TPU2研究新用例。

TPU2機櫃包含256個TPU2晶元。按每個TPU2晶元45 TFLOPS計算,每個機櫃產生總共11.5 petaflops深度學習加速器的性能,計算它是16位浮點運算的峰值性能,也足以讓人印象深刻。深度學習訓練通常需要更高的精度,因此FP32矩陣乘法性能可能是FP16性能的四分之一,或者每個機櫃約為2.9 petaflop,整個TRC是11.5 FP32 petaflops。

在峰值性能方面,這意味著在整個機柜上的FP16運算(不包括CPU性能貢獻或位於機櫃之外的存儲),在每瓦100 - 115 gigaflops之間。

英特爾公布了雙插槽Skylake生成Xeon核心計數和功耗配置後,可以計算Xeon處理器的FP16和FP32性能,並將其增加到每瓦特的總體性能。

關於Google的TPU2機櫃,還沒有足夠的信息讓我們能將其與英偉達Volta等商用產品進行比較。它們的架構差別太大,如果沒有基準,根本無法進行比較。僅僅是比較FP16峰值性能,就像對比兩台處理器、內存、硬碟、顯卡都不一樣的PC,卻只考慮CPU主頻一樣。

也就是說,我們認為真正的比賽不在晶元級別。真正的挑戰在於擴展這些加速器的使用範圍。英偉達靠NVLink邁出了第一步,追求將自己的晶元獨立於CPU。 英偉達正在將其軟體基礎架構和工作負載從單一GPU擴展到GPU集群。

在谷歌推出第一代TPU時,選擇將其作為CPU的協處理器,到推出TPU2時,也只是將其擴展為處理器的2:1加速器。然而,TPU2超網格編程模型似乎還沒有可以擴展的工作負載類型。 Google正在尋求第三方幫助,來尋找可使用TPU2架構擴展的工作負載。

【完】

招聘

量子位正在招募編輯記者、運營、產品等崗位,工作地點在北京中關村。相關細節,請在公眾號對話界面,回復:「招聘」。

推薦閱讀:

Google Glass 會引發嚴重的隱私或其他社會問題嗎?
2016 Google I/O Android N Beta版運行速度提升600%是怎麼做到的?
谷歌的未來在哪裡?
為什麼國內定製化 Android 不遵循谷歌 Android M 要求?

TAG:谷歌Google | TPUTensorProcessingUnit | 人工智慧 |