谷歌硬件工程師揭秘,TPU為何會比CPU、GPU快30倍?
在谷歌發布 TPU 一年后,這款機器學習定制芯片的神秘面紗終于被揭開了。
昨日,谷歌資深硬件工程師 Norman Jouppi 刊文表示,谷歌的專用機器學習芯片 TPU 處理速度要比 GPU 和 CPU 快 15-30 倍(和 TPU 對比的是英特爾 Haswell CPU 以及 Nvidia Tesla K80 GPU),而在能效上,TPU 更是提升了 30 到 80 倍。
從這次發布的測試結果來看,TPU 似乎已經超出了業界的預期,但是藏在這一芯片背后的內部架構究竟有什么秘密呢,我們從 Jouppi 此前發布的論文當中,可以找到答案。
據雷鋒網了解,早在四年前,谷歌內部就開始使用消耗大量計算資源的深度學習模型,這對 CPU、GPU 組合而言是一個巨大的挑戰,谷歌深知如果基于現有硬件,他們將不得不將數據中心數量翻一番來支持這些復雜的計算任務。
所以谷歌開始研發一種新的架構,Jouppi 稱之為“下一個平臺”。Jouppi 曾是 MIPS 處理器的首席架構師之一,他開創了內存系統中的新技術。三年前他加入谷歌的時候,公司上下正在用 CPU、GPU 混合架構上來進行深度學習的訓練。
Jouppi 表示,谷歌的硬件工程團隊在轉向定制 ASIC 之前,早期還曾用 FPGA 來解決廉價、高效和高性能推理的問題。但他指出,FPGA 的性能和每瓦性能相比 ASIC 都有很大的差距。他解釋說,“TPU 可以像 CPU 或 GPU 一樣可編程,它可以在不同的網絡(卷積神經網絡,LSTM 模型和大規模完全連接的模型)上執行 CISC 指令,而不是為某個專用的神經網絡模型設計的。一言以蔽之,TPU 兼具了 CPU 和 ASIC 的有點,它不僅是可編程的,而且比 CPU、GPU 和 FPGA 擁有更高的效率和更低的能耗。
TPU 的內部架構
該圖顯示了 TPU 上的內部結構,除了外掛的 DDR3 內存,左側是主機界面。指令從主機發送到隊列中(沒有循環)。這些激活控制邏輯可以根據指令多次運行相同的指令。
TPU 并非一款復雜的硬件,它看起來像是雷達應用的信號處理引擎,而不是標準的 X86 衍生架構。Jouppi 說,盡管它有眾多的矩陣乘法單元,但是它 GPU 更精于浮點單元的協處理。另外,需要注意的是,TPU 沒有任何存儲的程序,它可以直接從主機發送指令。
TPU 上的 DRAM 作為一個單元并行運行,因為需要獲取更多的權重以饋送到矩陣乘法單元(算下來,吞吐量達到了 64,000)。Jouppi 并沒有提到是他們是如何縮放(systolic)數據流的,但他表示,使用主機軟件加速器都將成為瓶頸。
256×256 陣列縮放數據流引擎,經過矩陣乘法積累后實現非線性輸出
從第二張圖片可以看出,TPU 有兩個內存單元,以及一個用于模型中參數的外部 DDR3 DRAM。參數進來后,可從頂部加載到矩陣乘法單元中。同時,可以從左邊加載激活(或從“神經元”輸出)。那些以收縮的方式進入矩陣單元以產生矩陣乘法,它可以在每個周期中進行 64,000 次累加。
毋庸置疑,谷歌可能使用了一些新的技巧和技術來加快 TPU 的性能和效率。例如,使用高帶寬內存或混合 3D 內存。然而,谷歌的問題在于保持分布式硬件的一致性。
TPU 對比 Haswell 處理器
在和英特爾“Haswell”Xeon E5 v3 處理器來的對比中,我們可以看到,TPU 各方面的表現都要強于前者。
在 Google 的測試中,使用 64 位浮點數學運算器的 18 核心運行在 2.3 GHz 的 Haswell Xeon E5-2699 v3 處理器能夠處理每秒 1.3 TOPS 的運算,并提供 51GB/秒的內存帶寬;Haswell 芯片功耗為 145 瓦,其系統(擁有 256 GB 內存)滿載時消耗 455 瓦特。
相比之下,TPU 使用 8 位整數數學運算器,擁有 256GB 的主機內存以及 32GB 的內存,能夠實現34GB/秒的內存帶寬,處理速度高達 92 TOPS ,這比 Haswell 提升了 71 倍,此外,TPU 服務器的熱功率只有 384 瓦。
除此之外,谷歌還測試了 CPU、GPU 和 TPU 處理不同批量大小的每秒推斷的吞吐量。
如上圖所示,在小批量任務中(16),Haswell CPU 的響應時間接近 7 毫秒,其每秒提供 5482 次推斷(IPS),其可以實現的最大批量任務(64)每秒則可以完成 13194 次推斷,但其響應時間為 21.3 毫秒。相比之下,TPU 可以做到批量大小為 200,而響應時間低于 7 毫秒,并提供 225000 個 IPS 運行推理基準,是其峰值性能的 80%,當批量大小為 250,響應時間為 10 毫秒。
不過需要注意的是,谷歌所測試的 Haswell Xeon 處理器似乎也不能完全說明問題,英特爾 Broadwell Xeon E5 v4 處理器和最新的“Skylake”Xeon E5,每核心時鐘(IPC)的指令比這款處理器提升了約5%。在 Skylake 是 28 核,而 Haswell 為 18 核,所以 Xeon 的總體吞吐量可能會上升 80%。當然,這樣的提升與 TPU 相比仍有差距。
最后雷鋒網需要強調的是,TPU 是一個推理芯片,它并非是要取代 GPU,可以確定的是,TPU 與 CPU 一起使用對訓練分析更加有益。但對于 CPU 制造商而言,如何研發出像 ASIC 一樣兼顧性能和能效的芯片是現在以及未來要做的。
Jouppi 表示谷歌 TPU 已經開始出貨,而英特爾這些芯片商也將面臨更大的挑戰。
Via nextplatform
來自: 雷鋒網