薤白

2017年4月7日 星期五

Google 硬體工程師揭密,TPU 為何會比 CPU、GPU 快 30 倍

2017 年 04 月 07 日 14:28

在 Google 發表 TPU 一年後,這款機器學習定制晶片的神祕面紗終於被揭開了。

5 日,Google 資深硬體工程師 Norman Jouppi 刊文表示,Google 的專用機器學習晶片 TPU 處理速度要比 GPU 和 CPU 快 15-30 倍(和 TPU 對比的是英特爾 Haswell CPU 以及 Nvidia Tesla K80 GPU),而在能效上,TPU 更是提升了 30 到 80 倍


從這次發表的測試結果來看,TPU 似乎已經超出業界的預期,但是藏在這晶片背後的內部架構究竟有什麼祕密?我們從 Jouppi 之前發表的論文當中,可以找到答案。

據了解,早在 4 年前,Google 內部就開始使用消耗大量計​​算資源的深度學習模型,這對 CPU、GPU 組合而言是一個巨大的挑戰,Google 深知如果利用現有硬體,他們將不得不將資料中心數量翻倍來支援這些複雜的運算任務。

所以 Google 開始研發一種新的架構,Jouppi 稱之為「下一個平台」。Jouppi 曾是 MIPS 處理器的首席架構師之一,他開創了內存系統中的新技術。3 年前他加入 Google 的時候,公司上下正在用 CPU、GPU 混合架構上來進行深度學習的訓練。

Jouppi 表示,Google 的硬體工程團隊在轉向定制 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 次累加。

毋庸置疑,Google 可能使用了一些新的技巧和技術來加快 TPU 的性能和效率。例如,使用高頻寬內存或混合 3D 記憶體。然而,Google 的問題在於保持分布式硬體的一致性。

TPU 對比 Haswell 處理器

在和英特爾「Haswell」Xeon E5 v3 處理器來的對比中,我們可以看到,TPU 各方面的表現都要強於前者。

在 Google 的測試中,使用 64 位浮點數學運算器的 18 核心運行在 2.3 GHz 的 Haswell Xeon E5-2699 v3 處理器能夠處理每秒 1.3 TOPS 的運算,並提供 51GB/秒的記憶體頻寬;Haswell 晶片功耗為 145 瓦,其系統(擁有 256GB 記憶體)滿載時消耗 455 瓦特。

相比之下,TPU 使用 8 位元整數數學運算器,擁有 256GB 的主機記憶體以及 32GB 的記憶體,能夠達成 34G B/秒的記憶體頻寬,處理速度高達 92 TOPS ,這比 Haswell 提升了 71 倍,此外,TPU 伺服器的熱功率只有 384 瓦。


除此之外,Google 還測試了 CPU、GPU 和 TPU 處理不同批量大小的每秒推斷的吞吐量。


如上圖所示,在小批量任務中(16),Haswell CPU 的響應時間接近 7 毫秒,其每秒提供 5,482 次推斷(IPS),其可以實現的最大批量任務(64)每秒則可以完成 13,194 次推斷,但其響應時間為 21.3 毫秒。相比之下,TPU 可以做到批量大小為 200,而響應時間低於 7 毫秒,並提供 225,000 個 IPS 運行推理基準,是其峰值性能的 80%,當批量大小為 250,響應時間為 10 毫秒。

不過需要注意的是,Google 所測試的 Haswell Xeon 處理器似乎也不能完全說明問題,英特爾 Broadwell Xeon E5 v4 處理器和最新的「Skylake」Xeon E5,每核心時鐘(IPC)的指令比這款處理器提升了約 5%。在 Skylake 是 28 核,而 Haswell 為 18 核,所以 Xeon 的總體吞吐量可能會上升 80%。當然,這樣的提升與 TPU 相比仍有差距。

最後需要強調的是,TPU 是一個推理晶片,它並非是要取代 GPU,可以確定的是,TPU 與 CPU 一起使用對訓練分析更加有益。但對於 CPU 製造商而言,如何研發出像 ASIC 一樣兼顧性能和能效的晶片是現在以及未來要做的。

可以確定的是,Google 已經逐漸在自己的數據中心部署 TPU,但是上述測試數據只是理論結果,實際應用表現如何?我們還不得而知。



沒有留言:

張貼留言