歡迎關(guān)注“創(chuàng)事記”的微信訂閱號(hào):sinachuangshiji
文/安妮 陳樺 編譯自 The Next Platform (來源:量子位 報(bào)道 | 公眾號(hào) QbitAI)
在上周召開的Google I/O 大會(huì)上,谷歌正式公布了第二代TPU,又稱Cloud TPU或TPU 2。但是,谷歌并沒有詳細(xì)介紹自己的新芯片,只展示了一些照片。
The Next Platform今天發(fā)布一篇文章,基于谷歌提供的圖片和細(xì)節(jié),帶你深入了解谷歌的TPU2。量子位編譯如下:
首先要說明的一點(diǎn)是,谷歌不太可能向公眾出售TPU的芯片、主板或是服務(wù)器。目前看來,TPU2還是一個(gè)只供內(nèi)部使用的產(chǎn)品。只有極少數(shù)人可以通過TensorFlow研究云(TRC)直接訪問TPU2的硬件,因?yàn)檫@本身就是為研究人員設(shè)計(jì)的具有“高度選擇性”的項(xiàng)目。研究人員可以分享他們發(fā)現(xiàn)的TPU2可加速代碼類型。谷歌還推出了Google Compute Engine Cloud TPU Alpha項(xiàng)目,我們可以假定,這也是一個(gè)高度選擇性的項(xiàng)目。
谷歌設(shè)計(jì)TPU2的首要目的,肯定是為了加速其面向消費(fèi)者的核心軟件(比如搜索、地圖、語音識(shí)別和無人車的研究等項(xiàng)目)深度學(xué)習(xí)的工作量。我們對(duì)Google TRC的粗略解讀是,Google想借此招募人員去研究適合TPU2的超網(wǎng)格的工作負(fù)載。
谷歌表示,TRC項(xiàng)目雖然開始規(guī)模較小,但之后會(huì)逐步擴(kuò)大。如果Google的研究推廣到一般的應(yīng)用程序,那么其他人員也可以直接訪問TPU2。那時(shí)Google將為其谷歌云平臺(tái)的公共云增添一個(gè)TensorFlow硬件實(shí)例。
TPU2能有今天,離不開去年Google I/O大會(huì)上第一代TPU的貢獻(xiàn)。一代TPU也是專為機(jī)器學(xué)習(xí)設(shè)計(jì)的特定目的芯片,還應(yīng)用在了AlphaGo、搜索、翻譯、相冊(cè)等背后的機(jī)器學(xué)習(xí)模型中。 TPU通過兩個(gè)PCI-E 3.0 x8邊緣連接器連接協(xié)處理器(參見下面兩張照片的左下角),總共有16 GB/s的雙向帶寬。TPU消耗功率高達(dá)40瓦,遠(yuǎn)高于PCI-E 電源規(guī)格,可為8位整數(shù)運(yùn)算提供每秒92萬億次的運(yùn)算,或?yàn)?6位整數(shù)運(yùn)算提供每秒23萬億次的運(yùn)算。為了進(jìn)行比較,Google聲稱,在半精度浮點(diǎn)數(shù)(FP16)情況下,TPU2可以達(dá)到每秒45萬億次的浮點(diǎn)運(yùn)算。
TPU沒有內(nèi)置的調(diào)度功能,也不能被虛擬化。它是一個(gè)直接連接到服務(wù)器主板的簡(jiǎn)單矩陣乘法協(xié)處理器。
△ 谷歌的第一代TPU卡:A圖沒有散熱器;B圖有散熱器
在主板處理能力或其PCI-E 吞吐量超負(fù)載前,Google從不會(huì)透露有多少TPU連接到一個(gè)服務(wù)器主板。協(xié)處理器只需要做一件事,它需要以任務(wù)設(shè)置和拆卸的形式,從主機(jī)處理器獲取大量信息,并管理每個(gè)TPU數(shù)據(jù)的傳輸帶寬。
Google已將其TPU2設(shè)計(jì)用于四機(jī)架機(jī)柜,并將其稱為pod。機(jī)柜是相對(duì)于一組工作負(fù)載的標(biāo)準(zhǔn)機(jī)架配置(從半機(jī)架到多機(jī)架)。它為大型數(shù)據(jù)中心所有者提供更輕松廉價(jià)的購(gòu)買、安裝和部署流程。例如,Microsoft的Azure Stack標(biāo)準(zhǔn)半機(jī)架就是一個(gè)機(jī)柜。
四機(jī)架機(jī)柜大小主要取決與Google正在使用的銅纜類型和全速運(yùn)行的最大銅線長(zhǎng)度。下圖顯示了機(jī)柜的高層次組織。
我們首先注意到,Google通過兩根電纜將每個(gè)TPU2板連接到一個(gè)服務(wù)器處理器板上。也可能是谷歌將每個(gè)TPU2板連接到兩個(gè)不同的處理器板,但是,即使是谷歌也不希望混淆該拓?fù)浣Y(jié)構(gòu)的安裝、編程和調(diào)度復(fù)雜性。如果在服務(wù)器主板和TPU2板之間存在一對(duì)一的連接,則要簡(jiǎn)單得多。
△ Google的TPU2機(jī)柜:A是CPU機(jī)架,B是TPU2機(jī)架,C是TPU2機(jī)架,D是CPU機(jī)架; 固體箱(藍(lán)色):不斷電電源系統(tǒng)(UPS); 虛線框(紅色)是電源; 虛線框(綠色)是機(jī)架式網(wǎng)絡(luò)交換機(jī)和機(jī)架式交換機(jī)頂部
谷歌展示了TPU2機(jī)柜的3張不同照片。在這3張照片中,配置和連線方式看起來一致。TPU2連線的顏色編碼有助于比較這些照片。
△ 三個(gè)谷歌TPU2機(jī)柜
谷歌展示了TPU2電路板的頂視圖,以及電路板前面板接口的近距離視圖。TPU2電路板的所有4個(gè)象限共享同一電源分配系統(tǒng)。我們認(rèn)為,這4個(gè)TPU2電路板象限也通過簡(jiǎn)單的網(wǎng)絡(luò)開關(guān)共享同一網(wǎng)絡(luò)連接?雌饋恚總(gè)電路板象限都是一個(gè)獨(dú)立的子系統(tǒng),而除此以外4個(gè)子系統(tǒng)之間并沒有相互連接。
△ TPU2板的俯視圖:A是四個(gè)TPU2芯片和散熱片;B是2個(gè)BlueLink 25GB / s電纜/ TPU2;C是兩種全路徑體系結(jié)構(gòu)(OPA)電纜;D是電路板電源連接器,E很可能是一個(gè)網(wǎng)絡(luò)開關(guān)
前面板連接看起來像是QSFP網(wǎng)絡(luò)接口,但我從未在其他地方看到過。IBM BlueLink規(guī)范定義,對(duì)于最小25GB/s的配置(稱作‘子鏈接’),在上下行每個(gè)方向上需要8個(gè)200Gb/s信道(總共16個(gè)信道)。谷歌是OpenCAPI的成員,同時(shí)也是OpenPowerFoundation的創(chuàng)始成員,因此使用BlueLink規(guī)范是合理的。
△ TPU2面板連接
前面板中央的兩個(gè)接口看起來像是QSFP接口,介質(zhì)為銅雙絞線,而不是光纖。這支持兩種網(wǎng)絡(luò)配置,分別為10Gbps以太網(wǎng)和100Gbps英特爾OPA連接。兩個(gè)100Gbps的OPA鏈路可以合并提供雙向25GB/s的帶寬,從而符合BlueLink規(guī)范要求的網(wǎng)速。因此我們認(rèn)為,谷歌采用了100Gbps的OPA連接。
不過為了避免信號(hào)衰減帶來問題,這些銅纜、BlueLink或OPA的線纜長(zhǎng)度不能超過3米。這意味著,CPU和TPU2電路板之間的物理距離不能超過3米。谷歌使用彩色編碼的線纜來連接,我猜測(cè)這是為了更方便地接線,避免出錯(cuò)。可以看到,在前面板最前方的接口下方,有貼紙與線纜顏色一一對(duì)應(yīng)。我們認(rèn)為,顏色編碼表明,谷歌計(jì)劃更大規(guī)模地部署這些TPU2機(jī)柜。
白色線纜最有可能是1Gbps以太網(wǎng)連接,這個(gè)網(wǎng)絡(luò)用于系統(tǒng)管理。在照片中,我們并沒有看到,谷歌如何將管理網(wǎng)絡(luò)連接至TPU2電路板。不過,基于白色線纜的走線方式,我們可以假定,谷歌從機(jī)架背面將處理板連接至管理網(wǎng)絡(luò);蛟S,處理板將通過OPA連接管理TPU2板,并評(píng)估這些電路板的健康狀況。
谷歌的TPU2機(jī)柜具有鏡像對(duì)稱性的特點(diǎn)。在下方圖片中,我們將處理器機(jī)柜D的照片進(jìn)行鏡像翻轉(zhuǎn),并與處理器機(jī)柜A進(jìn)行比較。這兩個(gè)機(jī)柜看起來一模一樣,僅僅只是互為鏡像。在再下方的圖片中,可以看到機(jī)柜B和C也互為鏡像。
△ 比較兩個(gè)TPU2機(jī)架
谷歌的照片中并沒有展示足夠多的連線信息,以判斷電路板之間的準(zhǔn)確網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)。不過這很可能是一種非常復(fù)雜的mesh網(wǎng)絡(luò)。
我們認(rèn)為,CPU板是標(biāo)準(zhǔn)的英特爾至強(qiáng)雙socket主板,符合谷歌的1.5英寸服務(wù)器機(jī)架單元的尺寸。這是當(dāng)前一代主板設(shè)計(jì)。考慮到對(duì)OPA的支持,這可能是Skylake主板(參見以下對(duì)功耗的探討)。我們猜測(cè)這是雙socket主板的原因僅僅在于,我沒有聽說過,在英特爾供應(yīng)鏈中,有哪家廠商曾大量發(fā)貨單socket主板。不過,隨著AMD推出“Naples”Epyc X86服務(wù)器芯片,以及高通推出Centriq ARM服務(wù)器芯片,突出單socket配置,這樣的情況將發(fā)生改變。
我們認(rèn)為,谷歌使用兩個(gè)OPA線纜將每塊CPU板連接至唯一的TPU2板,以實(shí)現(xiàn)25GB/s的總帶寬。這種一對(duì)一連接回答了關(guān)于TPU2的一個(gè)關(guān)鍵問題:谷歌在設(shè)計(jì)TPU2機(jī)柜時(shí),將TPU2芯片與至強(qiáng)socket數(shù)量配比為2:1。這就是說,4顆TPU2芯片對(duì)應(yīng)于一個(gè)雙socket至強(qiáng)服務(wù)器。
在深度學(xué)習(xí)任務(wù)中,GPU加速器采用的配比通常為4:1或6:1,而這種TPU2加速器與處理器之間的緊耦合與此有很大不同。2:1的配比表明,谷歌沿用了第一代TPU的設(shè)計(jì)哲學(xué):“與GPU相比,TPU與FPU(浮點(diǎn)處理單元)之間關(guān)系更緊密。”處理器在谷歌TPU2架構(gòu)中承擔(dān)了大量工作,同時(shí)把所有矩陣運(yùn)算任務(wù)丟給了TPU2。
在TPU2機(jī)柜中,我們看不到任何存儲(chǔ)模塊;蛟S這正是下圖中機(jī)柜上方大量藍(lán)色光纖存在的原因。數(shù)據(jù)中心網(wǎng)絡(luò)連接至CPU板,同時(shí)沒有任何光纖連接至機(jī)柜B和C,而TPU2板上也沒有任何網(wǎng)絡(luò)連接。
△ 很多光纖帶寬連接到谷歌數(shù)據(jù)中心的其余部分
不管是TPU2還是CPU,每個(gè)機(jī)架上都有32個(gè)計(jì)算單位。每個(gè)機(jī)柜中有64個(gè)CPU板和64個(gè)TPU板,共有128個(gè)CPU芯片和256個(gè)TPU2芯片。
谷歌表示,其TRC包含1000個(gè)TPU2芯片,不過這個(gè)數(shù)字是去掉了零頭的。四個(gè)機(jī)柜包含1024個(gè)TPU2芯片。因此,四個(gè)機(jī)柜是Google已經(jīng)部署了多少TPU2芯片的下限。在Google I/O上公布的照片中,可以看到三個(gè)機(jī)柜,也可能是四個(gè)。
現(xiàn)在我們還不清楚一個(gè)機(jī)柜中的CPU和TPU2芯片如何關(guān)聯(lián),讓TPU2芯片可以通過超網(wǎng)格中的連接有效地共享數(shù)據(jù)。我們幾乎可以肯定,TRC不能跨機(jī)柜(256個(gè)TPU2芯片)處理單個(gè)任務(wù)。第一代TPU是一個(gè)簡(jiǎn)單的協(xié)處理器,因此CPU負(fù)責(zé)處理所有數(shù)據(jù)流量。在這種架構(gòu)中,CPU通過數(shù)據(jù)中心網(wǎng)絡(luò)訪問遠(yuǎn)程存儲(chǔ)器數(shù)據(jù)。
谷歌沒有描述機(jī)柜的內(nèi)存模型。TPU2芯片可以在OPA上使用遠(yuǎn)程直接存儲(chǔ)器訪問(RDMA)從處理器板上的內(nèi)存中加載自己的數(shù)據(jù)嗎?大概可以。
CPU板似乎也可能在機(jī)柜上執(zhí)行相同操作,創(chuàng)建了大型共享內(nèi)存池。該共享內(nèi)存池不會(huì)像惠普企業(yè)版機(jī)器共享內(nèi)存系統(tǒng)原型中的內(nèi)存池那么快,但是有著25 GB/s的帶寬,它速度不會(huì)太慢,而是在兩位數(shù)太字節(jié)范圍內(nèi)(每個(gè)DIMM 16GB,每個(gè)處理器有8個(gè)DIMM,每個(gè)板有兩個(gè)處理器,64個(gè)板產(chǎn)生16TB的內(nèi)存)。
我們推測(cè),在一個(gè)機(jī)柜上安排一個(gè)需要多個(gè)TPU2的任務(wù)看起來是這樣:
處理器池應(yīng)該有一個(gè)機(jī)柜的超網(wǎng)格拓?fù)鋱D,哪些TPU2芯片可用于運(yùn)行任務(wù)。
處理器組可能相互關(guān)聯(lián),對(duì)每個(gè)TPU2進(jìn)行編程,以明確地鏈接TPU2芯片之間的網(wǎng)格。
每個(gè)處理器板將數(shù)據(jù)和指令,加載到其配對(duì)的TPU2板上的四個(gè)TPU2芯片上,包括網(wǎng)狀互連的流量控制。
處理器在互連的TPU2芯片之間同步引導(dǎo)任務(wù)。
當(dāng)任務(wù)完成時(shí),處理器從TPU2芯片收集結(jié)果數(shù)據(jù)(該數(shù)據(jù)可能已經(jīng)通過RDMA傳輸?shù)饺执鎯?chǔ)器池中),并將TPU2芯片標(biāo)記為可用于另一任務(wù)。
這種方法的優(yōu)點(diǎn)是TPU2芯片不需要理解多任務(wù),虛擬化或多租戶,機(jī)柜上的所有這類運(yùn)算都由CPU來處理。
這也意味著,如果Google想將云端TPU實(shí)例作為其谷歌云自定義機(jī)器類型IaaS的一種來提供,該實(shí)例將必須包括處理器和TPU2芯片。
目前我們還不清楚工作負(fù)載是否可以跨郵票進(jìn)行縮放,并保留超級(jí)網(wǎng)格的低延遲和高吞吐量。雖然研究人員可以通過TRC訪問1,024個(gè)TPU2芯片中的一些,但將計(jì)算量擴(kuò)展到整個(gè)機(jī)柜看起來是一個(gè)挑戰(zhàn)。研究人員或許能連接到多達(dá)256個(gè)TPU2芯片的集群,這足以令人印象深刻,因?yàn)樵艷PU連接目前才擴(kuò)展到32個(gè)互連設(shè)備。
谷歌的第一代TPU運(yùn)行時(shí)功耗40瓦,能以23 TOPS的速率執(zhí)行16位整數(shù)矩陣乘法。TPU2的運(yùn)行速度提高到45 TFLOPS,是上代的兩倍,同時(shí)通過升級(jí)到16位浮點(diǎn)運(yùn)算,提高了計(jì)算復(fù)雜度。一個(gè)粗略的經(jīng)驗(yàn)法則表明,這樣功耗至少翻兩番:只是將運(yùn)行速率提高一倍并升級(jí)到16位浮點(diǎn)運(yùn)算,TPU2的功耗至少要提高到160瓦。
從散熱器的尺寸來看,TPU2的功耗可能更高,甚至高于200瓦。
TPU2板上,在TPU2芯片頂部有巨大的散熱片,它們是多年來我看到的最高的風(fēng)冷散熱片。同時(shí),它們還具有內(nèi)部密封循環(huán)的水冷系統(tǒng)。在下圖中,我們將TPU2散熱片與過去幾個(gè)月看到的最大的散熱片相比較:
△ A是4個(gè)芯片構(gòu)成的TPU2板側(cè)面圖;B是搭載雙IBM Power9的Zaius主板;C是雙IBM Power8的Minsky主板;D是雙英特爾至強(qiáng)的Facebook Yosemite主板;E是帶有散熱片的英偉達(dá)P100 SMX2模塊和Facebook Big Basin主板。
這些散熱器的尺寸都在高喊著“個(gè)個(gè)超過200瓦”。很容易看出,它們比上一代TPU上的40瓦散熱器大得多。這些散熱器的高度約能填滿兩個(gè)機(jī)架單元,接近3英寸。 (Google機(jī)架單元高度為1.5英寸,比行業(yè)標(biāo)準(zhǔn)1.75英寸U型稍矮)。
增加的功耗用在哪里了呢?
因此我們可以推測(cè),TPU2芯片的內(nèi)存容量也有所擴(kuò)大,這有助于提高吞吐量,但同時(shí)也增加了功耗。
此外,Google從PCI-E插槽驅(qū)動(dòng)單TPU(PCI-Express插槽向TPU卡供電)發(fā)展到單芯片TPU2板設(shè)計(jì)共享雙OPA端口和交換機(jī),以及每個(gè)TPU2芯片兩個(gè)專用的BlueLink端口。OPA和BlueLink都增加了TPU2板級(jí)功耗。
Google的開放計(jì)算項(xiàng)目機(jī)架規(guī)格展示了功率為6千瓦,12千瓦和20千瓦的電力輸送配置文件;20千瓦的功率分配可以實(shí)現(xiàn)帶動(dòng)90瓦的CPU。我們猜測(cè),使用Skylake架構(gòu)的Xeon處理器和處理大部分計(jì)算負(fù)載的TPU2芯片,機(jī)架A和D可能使用20千瓦電源。
機(jī)架B和C則不同。功率輸送為30千瓦,能夠?yàn)槊總(gè)TPU2插槽提供200瓦的功率輸送,每個(gè)機(jī)架36千瓦將為每個(gè)TPU2插座提供250瓦的功率輸送。36千瓦是一種常見的高性能計(jì)算能力傳輸規(guī)范。我們相信,每芯片250瓦功耗也是Google為TPU2配置巨大散熱器的唯一原因。因此,單個(gè)TPU2機(jī)柜的功率傳輸可能在100千瓦至112千瓦范圍內(nèi),并且可能更接近較高數(shù)量。
這意味著TRC在滿負(fù)荷運(yùn)行時(shí)消耗將近50萬瓦的功率。雖然四個(gè)機(jī)柜部署成本高昂,但卻是一次性的資本費(fèi)用,并不占用大量的數(shù)據(jù)中心空間。然而,用50萬瓦的電力來持續(xù)資助學(xué)術(shù)研究,就算對(duì)Google這個(gè)規(guī)模的公司來說,也不是一筆小費(fèi)用。如果TRC在一年內(nèi)仍然運(yùn)行,將表明Google正在認(rèn)真為TPU2研究新用例。
TPU2機(jī)柜包含256個(gè)TPU2芯片。按每個(gè)TPU2芯片45 TFLOPS計(jì)算,每個(gè)機(jī)柜產(chǎn)生總共11.5 petaflops深度學(xué)習(xí)加速器的性能,計(jì)算它是16位浮點(diǎn)運(yùn)算的峰值性能,也足以讓人印象深刻。深度學(xué)習(xí)訓(xùn)練通常需要更高的精度,因此FP32矩陣乘法性能可能是FP16性能的四分之一,或者每個(gè)機(jī)柜約為2.9 petaflop,整個(gè)TRC是11.5 FP32 petaflops。
在峰值性能方面,這意味著在整個(gè)機(jī)柜上的FP16運(yùn)算(不包括CPU性能貢獻(xiàn)或位于機(jī)柜之外的存儲(chǔ)),在每瓦100 - 115 gigaflops之間。
英特爾公布了雙插槽Skylake生成Xeon核心計(jì)數(shù)和功耗配置后,可以計(jì)算Xeon處理器的FP16和FP32性能,并將其增加到每瓦特的總體性能。
關(guān)于Google的TPU2機(jī)柜,還沒有足夠的信息讓我們能將其與英偉達(dá)Volta等商用產(chǎn)品進(jìn)行比較。它們的架構(gòu)差別太大,如果沒有基準(zhǔn),根本無法進(jìn)行比較。僅僅是比較FP16峰值性能,就像對(duì)比兩臺(tái)處理器、內(nèi)存、硬盤、顯卡都不一樣的PC,卻只考慮CPU主頻一樣。
也就是說,我們認(rèn)為真正的比賽不在芯片級(jí)別。真正的挑戰(zhàn)在于擴(kuò)展這些加速器的使用范圍。英偉達(dá)靠NVLink邁出了第一步,追求將自己的芯片獨(dú)立于CPU。 英偉達(dá)正在將其軟件基礎(chǔ)架構(gòu)和工作負(fù)載從單一GPU擴(kuò)展到GPU集群。
在谷歌推出第一代TPU時(shí),選擇將其作為CPU的協(xié)處理器,到推出TPU2時(shí),也只是將其擴(kuò)展為處理器的2:1加速器。然而,TPU2超網(wǎng)格編程模型似乎還沒有可以擴(kuò)展的工作負(fù)載類型。 Google正在尋求第三方幫助,來尋找可使用TPU2架構(gòu)擴(kuò)展的工作負(fù)載。