當前位置:
首頁 > 最新 > 有圖有真相:深度拆解谷歌TPU3.0,新一代AI協同處理器

有圖有真相:深度拆解谷歌TPU3.0,新一代AI協同處理器

選自The Next Platform

機器之心編譯

參與:王淑婷、劉曉坤

在今年的年度 I/O 大會上,谷歌給人留下深刻印象。它不僅推出了一系列基於 TPUv2 晶元的雲計算 TPU 實例的基準測試,還透露了一些有關其下一代 TPU 晶元即 TPU3.0,以及其系統架構的簡單細節。TIRIAS Research 的頂尖技術專家和首席分析師 Paul Teich 近日在 nextplatform 發文,對谷歌 TPU3.0 進行了深度揭秘。

谷歌將 TPUv2 版本升級為 TPU 3.0,但諷刺的是,據我們所知的種種細節表明,從 TPUv2 到 TPU3.0(下文稱之為 TPUv3)的跨度並沒有那麼大;或許稱其為 TPUv2r5 或類似的東西會更合適。

如果你對 TPUv2 還不太熟悉,可以了解一下我們去年所做的關於 TPUv2 的評測來增加這方面的知識結構。我們使用谷歌對雲 TPU(Cloud TPU)的定義,雲 TPU 是一塊包含四個 TPU 晶元的主板。谷歌目前的雲 TPU 測試程序只允許用戶訪問單個雲 TPU。除了其內部開發人員,其他人無法以任何方式將雲 TPU 聯合使用。去年我們了解到,谷歌已經在其 TensorFlow 深度學習(DL)框架下抽取出雲 TPU。除了谷歌內部的 TensorFlow 開發團隊和 Google Cloud 之外,沒有人可以直接訪問雲 TPU 硬體,可能永遠也不能。

我們還認為,谷歌已經資助了一項龐大的軟體工程和優化工作,以實現其當前測試雲 TPU 的部署。這促使谷歌在 TPUv3 中儘可能多地保留 TPUv2 的系統介面和行為,即硬體抽象層和應用程序編程介面(API)。關於何時提供 TPUv3 服務、將其置於雲 TPU 或多機架 pod 配置中,谷歌沒有提供任何信息。它的確展示了基於 TPUv3 的雲 TPU 板的照片和一些 pod 照片,並作出以下聲明:

TPUv3 晶元運行溫度非常高,以致谷歌首次在其數據中心引入液體冷卻技術

每個 TPUv3 pod 的功率將是 TPUv2 pod 的八倍

每個 TPUv3 pod 性能將為每秒鐘運算 100 多千萬億次(petaflops)

不過,谷歌也重申,TPUv2 pod 的時鐘頻率為 11.5 千萬億次每秒。8 倍的改進應該會使 TPUv3 pod 的基本頻率達到 92.2 千萬億次,但 100 千萬億次的運算意味著這幾乎是 TPUv2 的 9 倍了。谷歌的營銷人員應該四捨五入取整了,所以這個數字可能不太準確。

POD

從 TPUv3 pod 的兩張完整照片中可以明顯看出,谷歌的下一代產品已經升級:

每個 pod 的機架數量是原來的兩倍。

每個機架的雲 TPU 數量是原來的兩倍

如果沒有其他變化,光這兩點足以使 TPUv2 pod 的性能提高 4 倍。

pod:TPUv2(上)和 TPUv3(下)

機架

TPUv3 pod 機架的間隔比 TPUv2 機架的間隔更小。但是,與 TPUv2 pod 一樣,TPUv3 pod 中仍然沒有明顯的儲存組件。TPUv3 的機架也更高,以適應添加的水冷裝置。

機架:TPUv2(左)和 TPUv3(右)

谷歌將不間斷電源從 TPUv2 機架底部移到 TPUv3 機架頂部。我們假設現在機架底部的大體積金屬盒中包含水泵或其他水冷相關裝置。

TPUv2 機架頂部、底部(左)和 TPUv3 機架頂部(右)

現代超大規模數據中心不使用活動地板。谷歌的機架在加水之前就很重了,所以它們被直接置於混凝土板上,水從機架頂部進出。谷歌的數據中心有很多高架空間,如 TPUv3 pod 的照片所示。然而,懸掛重水管道和確定路徑一定是額外的操作挑戰。

TPUv3 的水連接(左上)、水泵(左下,猜測)和機架上的數據中心基礎架構(右)

注意地板上機架前的絞合線,就在機架底部的大金屬盒前面,可能是濕度感測器。

架子和主板

谷歌不僅將計算機架密度提高了一倍,還將伺服器主板與雲 TPU 的比率從一對一降到了一對二。這將影響功耗估計,因為 TPUv3 pod 的伺服器和雲 TPU 將從同一機架電源中獲取電力。

谷歌將當前雲 TPU beta 實例所使用的伺服器主板作為計算引擎 n1-standard-2 實例計入其雲平台公共雲中,該雲平台公共雲具有兩個虛擬 CPU 和 7.5 GB 內存。我們認為這很可能是一款主流雙插槽 X86 伺服器。

回想一下,TPUv2 pod 包含 256 個 TPUv2 晶元和 128 個伺服器處理器。TPUv3 pod 將使伺服器處理器增加一倍,TPU 晶元數增加三倍。

我們認為谷歌在其 TPUv2 pod 中過度調配了伺服器。這對於新的晶元和系統架構來說是可以理解的。在對 pod 軟體進行了至少一年的調整並對晶元進行了一次小的修訂以後,把伺服器的數量減少一半對 pod 性能的影響可能微不足道。其中可能有諸多原因,或許是伺服器沒有計算或帶寬限制,又或者谷歌可能部署了新一代具有更多核的 Intel Xeon 或 AMD Epyc 處理器。

通過將伺服器主板集成到雲 TPU 機架中,谷歌可以用相同的機架配置使機架數量增加一倍。在一個機架上標準化配置必然有助於降低硬體部署的成本和複雜性。

電腦架:TPUv2(左)和 TPUv3(右)

但是,為了實現更高的密度,谷歌必須從 4U 雲 TPU 外形規格轉變為 2U 高密度外形規格。其數據中心溫度很高(公布的數據在 80°F 到 95°F 之間),因此 TPUv2 風冷散熱器必須很大。谷歌使用開放式機架,所以利用風來冷卻密集外形規格的熱插槽變得非常昂貴,使得水冷成為可行的替代方案。特別是對於像深度學習這樣的高價值服務。

將伺服器主板轉移到 TPUv3 機架中還會縮短連接電纜,因此我們一般認為谷歌節省了大量電纜成本,併除去了 TPUv2 Pod 伺服器機架中的閑置空間。

計算機架特寫:TPUv2(頂部)和 TPUv3(底部)

谷歌沒有展示主板與機架水互連的照片。

雲 TPU

但是,它確實顯示了 TPUv3 雲 TPU 的兩張照片。TPUv3 雲 TPU 具有與 TPUv2 雲 TPU 相似的布局。明顯的變化是水冷卻的增加。主板電源接頭的背面看起來相同。但是,主板前面還有四個附加連接器。照片正面(左)的兩個銀色大正方形是由四個連接器組成的集群。

TPUv3 主板(左上),TPUv2 主板(左下)和 TPUv3 主板特寫(右)

谷歌沒有提及其他連接器。我們認為最有可能的解釋是 Google 為環形超網格(hyper-mesh)添加了一個維度,也就是從 2D 環形超網格到 3D 環形超網格。

環形超網格互連圖:2D(左)和 3D(右)

去年,我們推測了幾種類型的互連,並將其稱為錯誤的互連——谷歌使用 32 條有線 PCI-Express 3.0(每條鏈路 28GB / s)將伺服器連接到雲 TPU 上。我們認為,谷歌不太可能增加伺服器主板和雲 TPU 之間的帶寬,因為 PCI-Express 帶寬和延遲可能不是什麼重要的性能限制因素。

雖然互連拓撲將有助於深度學習任務在 pod 中更好地擴展,但它不會對原始的理論性能帶來貢獻。

TPU 晶元

現在,我們要深入到晶元層面來回答以下問題:「剩下的 2 倍性能改進來自哪裡?」谷歌概括其 TPUv2 核心為:

有兩個矩陣單元(MXU)

每個 MXU 都有 8GB 的專用高帶寬內存(HBM)

每個 MXU 的原始峰值吞吐量為 22.5 萬億次

但是 MXU 不使用標準浮點格式來實現其浮點吞吐量

谷歌創造了自己的內部浮點格式,稱為「bfloat」,意為「大腦浮點(brain floating point)」(在谷歌大腦之後)。Bfloat 格式使用 8 位指數和 7 位尾數,而不是 IEEE 標準 FP16 的 5 位指數和 10 位尾數。Bfloat 可以表示從~1e-38 到~3e38 的值,其動態範圍比 IEEE 的 FP16 寬幾個數量級。谷歌之所以創造 bfloat 格式,是因為它發現在 IEEE 標準 FP16 的訓練中需要數據科學專家,以確保數據保持在 FP16 較為有限的範圍內。

我們相信谷歌已經在 MXU 內部實現了硬體格式轉換,真正消除了轉換延遲和軟體開發難題。從 FP16 到 bfloat 的格式轉換看起來像是直接把精度截斷到較小的尾數。將 FP16 轉換為 FP32,然後再將 FP32 轉換為 FP16 是已知的實踐;可以使用相同的技術把格式從 FP32 轉換成 bfloat,然後再從 bfloat 轉換成 FP16 或 FP32。

谷歌聲稱,隨著數據流通過 MXU 的收縮陣列,中間結果得到了「極大」的重複使用。

考慮到 MXU 的表現,我們相信谷歌不太可能在從 TPUv2 到 TPUv3 的轉變中將 MXU 做出改變。更有可能的結果是,谷歌將把 TPUv3 的 MXU 數量增加一倍。

框圖:TPUv2(左)和 TPUv3(右)

距離上次晶元發布只有一年,因此晶元設計節奏非常短,沒有時間進行重要的架構開發。但是,足夠將現有的 MXU 核心壓縮為新的製造工藝、調整功耗和速度路徑,然後做一點額外的平面規劃工作,以在模具上衝壓更多的 MXU 核心。下表包含了我們所掌握的少量硬信息,以及我們對谷歌 TPUv3 晶元發展方向的最佳估計。

去年,我們估計 TPUv2 每個晶元需要消耗 200 瓦至 250 瓦。現在我們知道,每個包中還包含 16GB 的 HBM,其 MXU 和 HBM 之間的帶寬為 2.4 TB /秒。

我們將堅持去年估計的 36 千瓦機架電源(一個 TPUv3pod 總共需要 288 千瓦)。如果假設每台雙插槽伺服器的功率為 400 瓦,我們會把每台 TPUv3 晶元的功率將向後降至 200 瓦左右,其中包括 32GB 的 HBM。如果這些晶元沒有密集地封裝在主板和機架上,或者被部署在較冷的數據中心,那它們可能不需要水冷。另一種選擇可能是谷歌正在他們的新 TPUv3 集群中部署單插槽伺服器。將伺服器功率降至 250 瓦以下可能會為 TPUv3 提供足夠的擴展空間,以達到 225 瓦。

假定最初 TPUv2 MXU 設計保守,隨後 TPUv3 工藝收縮、HBM 變寬且更快,並且路徑調整速度加快,則可以合理地期望每個核的性能在兩代之間保持不變,而無需徹底地對 MXU 進行重新設計。

市場回顧

谷歌仍在部署 TPUv1 外接程序卡,用於推理任務,四個 TPUv1 用於一台伺服器上。谷歌部署了 TPUv1 來加速網頁搜索和其他大規模推理任務——如果你最近使用了谷歌搜索引擎,你可能已經使用了 TPUv1。

谷歌僅通過其測試雲 TPU 實例提供 TPUv2 訪問,並未預測何時通過服務級別協議供應可用產品。谷歌本周確實表示,它將在「今年年底」向客戶提供 TPUv2 pod 服務,但尚不清楚這是否為一項產品服務。我們最大的猜測是,谷歌將繼續等待,直到驗證和調試完 TPUv3 pod,以便在全球範圍內部署 TPU pod。谷歌內部正在使用 TPUv2 pod 進行一些訓練任務。本周,谷歌沒有就何時部署基於 TPUv3 晶元的任何功能或服務發表任何聲明。我們認為,TPUv3 的發布旨在強調谷歌長期致力於控制自己內部生態的承諾,以加速其 TensorFlow 深度學習框架。

然而,我們認為 TPUv3 更多的應該算 TPUv2.5,而不是新一代晶元。大多數新硬體開發似乎都是圍繞 TPUv3 晶元級別的系統展開的。

本文為機器之心編譯,轉載請聯繫本公眾號獲得授權。

------------------------------------------------

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 機器之心 的精彩文章:

論強化學習和概率推斷的等價性:一種全新概率模型
OpenAI提出新型元學習方法,調整損失函數實現新任務上的快速訓練

TAG:機器之心 |