【論文】谷歌硬件工程師:數(shù)據(jù)中心的 TPU 性能分析
點擊:1161
A+ A-
所屬頻道:新聞中心
過去十五年里,我們一直在我們的產(chǎn)品中使用高計算需求的機(jī)器學(xué)習(xí)。機(jī)器學(xué)習(xí)的應(yīng)用如此頻繁,以至于我們決定設(shè)計一款全新類別的定制化機(jī)器學(xué)習(xí)加速器,它就是 TPU。
TPU 究竟有多快?今天,聯(lián)合在硅谷計算機(jī)歷史博物館舉辦的國家工程科學(xué)院會議上發(fā)表的有關(guān) TPU 的演講中,我們發(fā)布了一項研究,該研究分享了這些定制化芯片的一些新的細(xì)節(jié),自 2015 年以來,我們數(shù)據(jù)中心的機(jī)器學(xué)習(xí)應(yīng)用中就一直在使用這些芯片。第一代 TPU 面向的是推論功能(使用已訓(xùn)練過的模型,而不是模型的訓(xùn)練階段,這其中有些不同的特征),讓我們看看一些發(fā)現(xiàn):
● 我們產(chǎn)品的人工智能負(fù)載,主要利用神經(jīng)網(wǎng)絡(luò)的推論功能,其 TPU 處理速度比當(dāng)前 GPU 和 CPU 要快 15 到 30 倍。
● 較之傳統(tǒng)芯片,TPU 也更加節(jié)能,功耗效率(TOPS/Watt)上提升了 30 到 80 倍。
● 驅(qū)動這些應(yīng)用的神經(jīng)網(wǎng)絡(luò)只要求少量的代碼,少的驚人:僅 100 到 1500 行。代碼以 TensorFlow 為基礎(chǔ)。
● 70 多個作者對這篇文章有貢獻(xiàn)。這份報告也真是勞師動眾,很多人參與了設(shè)計、證實、實施以及布局類似這樣的系統(tǒng)軟硬件。
TPU 的需求大約真正出現(xiàn)在 6 年之前,那時我們在所有產(chǎn)品之中越來越多的地方已開始使用消耗大量計算資源的深度學(xué)習(xí)模型;昂貴的計算令人擔(dān)憂。假如存在這樣一個場景,其中人們在 1 天中使用谷歌語音進(jìn)行 3 分鐘搜索,并且我們要在正使用的處理器中為語音識別系統(tǒng)運行深度神經(jīng)網(wǎng)絡(luò),那么我們就不得不翻倍谷歌數(shù)據(jù)中心的數(shù)量。
TPU 將使我們快速做出預(yù)測,并使產(chǎn)品迅速對用戶需求做出回應(yīng)。TPU 運行在每一次的搜索中;TPU 支持作為谷歌圖像搜索(Google Image Search)、谷歌照片(Google Photo)和谷歌云視覺 API(Google Cloud Vision API)等產(chǎn)品的基礎(chǔ)的精確視覺模型;TPU 將加強(qiáng)谷歌翻譯去年推出的突破性神經(jīng)翻譯質(zhì)量的提升;并在谷歌 DeepMind AlphaGo 對李世乭的勝利中發(fā)揮了作用,這是計算機(jī)首次在古老的圍棋比賽中戰(zhàn)勝世界冠軍。
我們致力于打造最好的基礎(chǔ)架構(gòu),并將其共享給所有人。我們期望在未來的數(shù)周和數(shù)月內(nèi)分享更多的更新。
論文題目:數(shù)據(jù)中心的 TPU 性能分析(In-Datacenter Performance Analysis of a Tensor Processing Unit)
摘要:許多架構(gòu)師相信,現(xiàn)在要想在成本-能耗-性能(cost-energy-performance)上獲得提升,就需要使用特定領(lǐng)域的硬件。這篇論文評估了一款自 2015 年以來就被應(yīng)用于數(shù)據(jù)中心的定制化 ASIC,亦即張量處理器(TPU),這款產(chǎn)品可用來加速神經(jīng)網(wǎng)絡(luò)(NN)的推理階段。TPU 的中心是一個 65,536 的 8 位 MAC 矩陣乘法單元,可提供 92 萬億次運算/秒(TOPS)的速度和一個大的(28 MiB)的可用軟件管理的片上內(nèi)存。相對于 CPU 和 GPU 的隨時間變化的優(yōu)化方法(高速緩存、無序執(zhí)行、多線程、多處理、預(yù)取……),這種 TPU 的確定性的執(zhí)行模型(deterministic execution model)能更好地匹配我們的神經(jīng)網(wǎng)絡(luò)應(yīng)用的 99% 的響應(yīng)時間需求,因為 CPU 和 GPU 更多的是幫助對吞吐量(throughout)進(jìn)行平均,而非確保延遲性能。這些特性的缺失有助于解釋為什么盡管 TPU 有極大的 MAC 和大內(nèi)存,但卻相對小和低功耗。我們將 TPU 和服務(wù)器級的英特爾 Haswell CPU 與現(xiàn)在同樣也會在數(shù)據(jù)中心使用的英偉達(dá) K80 GPU 進(jìn)行了比較。我們的負(fù)載是用高級的 TensorFlow 框架編寫的,并是用了生產(chǎn)級的神經(jīng)網(wǎng)絡(luò)應(yīng)用(多層感知器、卷積神經(jīng)網(wǎng)絡(luò)和 LSTM),這些應(yīng)用占到了我們的數(shù)據(jù)中心的神經(jīng)網(wǎng)絡(luò)推理計算需求的 95%。盡管其中一些應(yīng)用的利用率比較低,但是平均而言,TPU 大約 15-30 倍快于當(dāng)前的 GPU 或者 CPU,速度/功率比(TOPS/Watt)大約高 30-80 倍。此外,如果在 TPU 中使用 GPU 的 GDDR5 內(nèi)存,那么速度(TOPS)還會翻三倍,速度/功率比(TOPS/Watt)能達(dá)到 GPU 的 70 倍以及 CPU 的 200 倍。
表 1:6 種神經(jīng)網(wǎng)絡(luò)應(yīng)用(每種神經(jīng)網(wǎng)絡(luò)類型各 2 種)占據(jù)了 TPU 負(fù)載的 95%。表中的列依次是各種神經(jīng)網(wǎng)絡(luò)、代碼的行數(shù)、神經(jīng)網(wǎng)絡(luò)中層的類型和數(shù)量(FC 是全連接層、Conv 是卷積層,Vector 是向量層,Pool 是池化層)以及 TPU 在 2016 年 7 月的應(yīng)用普及程度。RankBrain [Cla15] 使用了 DNN,谷歌神經(jīng)機(jī)器翻譯 [Wu16] 中用到了 LSTM,Inception 用到了 CNN,DeepMind AlphaGo [Sil16][Jou15] 也用到了 CNN。
圖 1:TPU 各模塊的框圖。主要計算部分是右上方的黃色矩陣乘法單元。其輸入是藍(lán)色的「權(quán)重 FIFO」和藍(lán)色的統(tǒng)一緩存(Unified Buffer(UB));輸出是藍(lán)色的累加器(Accumulators(Acc))。黃色的激活(Activation)單元在Acc中執(zhí)行流向UB的非線性函數(shù)。
圖 2:TPU 芯片布局圖。陰影同圖 1。藍(lán)色的數(shù)據(jù)緩存占芯片的 37%。黃色的計算是 30%。綠色的I/O 是 10%。紅色的控制只有 2%。CPU 或 GPU 中的控制部分則要大很多(并且非常難以設(shè)計)。
圖3:TPU印制電路板??梢圆迦敕?wù)器 SATA 盤的卡槽,但是該卡使用了 PCIe Gen3 x16 接口。
圖4:矩陣乘法單元的 systolic 數(shù)據(jù)流。軟件具有每次讀取 256B 輸入的錯覺,同時它們會立即更新 256 個累加器 RAM 中其中每一個的某個位置。
表2:谷歌 TPU 與英特爾 Haswell E5-2699 v3、英偉達(dá)Tesla K80 的性能對比。E5 有 18 個核,K80 有 13 個 SMX 處理器。圖 10 已經(jīng)測量了功率。低功率 TPU 比高功率 GPU 能夠更好地匹配機(jī)架(rack)級密度。每個 TPU 的 8 GiB DRAM 是權(quán)重內(nèi)存(Weight Memory)。這里沒有使用 GPU Boost 模式。SECDEC 和非 Boost 模式把 K80 帶寬從 240 降至 160。非 Boost 模式和單裸片 vs 雙裸片性能把 K80 峰值 TOPS 從 8.7 降至 2.8(*TPU 壓模小于等于半個 Haswell 壓模大?。?。
圖5:TPU (die) roofline。 其脊點位于所獲權(quán)重內(nèi)存每字節(jié)運行 1350 次的地方,距離右邊還比較遠(yuǎn)。
表格3:TPU 在神經(jīng)網(wǎng)絡(luò)工作載荷中性能受到限制的因素,根據(jù)硬件性能計數(shù)器顯示的結(jié)果。1,4,5,6行,總共100%,以矩陣單元活動的測量結(jié)果為基礎(chǔ)。2,3行進(jìn)一步分解為64K權(quán)重的部分,我們的計數(shù)器無法準(zhǔn)確解釋矩陣單元何時會停頓在第6行中;7、8行展示了計數(shù)器結(jié)果,可能有兩個原因,包括RAW管道危害,PCIe輸入停止。9行(TOPS)是以產(chǎn)品代碼的測量結(jié)果為基礎(chǔ)的,其他列是以性能計數(shù)器的測量結(jié)果為基礎(chǔ)的,因此,他們并不是那么完美保持一致。這里并未包括頂部主服務(wù)器。MLP以及LSTM內(nèi)存帶寬有限,但是CNN不是。CNN1的測試結(jié)果會在文中加以分析。
圖 9:GPU 服務(wù)器(藍(lán)條)對比 CPU、TPU 服務(wù)器(紅條)對比 CPU、TPU 服務(wù)器對比 GPU(橘黃)的相對性能表現(xiàn)/Watt(TDP)。TPU' 是改進(jìn)版的 TPU(Sec.7)。綠條顯示了對比 CPU 服務(wù)器的比例,淡紫色顯示了與 GPU 服務(wù)器的關(guān)系。整體包括了主服務(wù)器的能耗,但不包括增量(incremental)。GM 和 WM 分別是幾何學(xué)圖形與加權(quán)平均值。
圖10:CNN0 平臺的單位功耗對比,其中紅色和橙色線是 GPU 加 CPU 系統(tǒng)的功率。藍(lán)色是英特爾 E5-2699 v3 Haswell CPU 的功率,綠色是英偉達(dá) Tesla K80 的功率,紫色為谷歌 TPU。每個服務(wù)器通常有多個芯片組,以上所有數(shù)字都已被整除成單芯片功率。
圖11:加權(quán)平均 TPU 性能作為度量單元,從 0.25 倍擴(kuò)展到了 4 倍:內(nèi)存帶寬,時鐘頻率+累加器,時鐘頻率,矩陣單元維度+累加器,以及矩陣單元維度。加權(quán)均值使得我們很難看出單個 DNN 的貢獻(xiàn),但是,MLP 以及 LSTM 提升了 3 倍到 4 倍的內(nèi)存帶寬,但是,更高的時鐘頻率并沒帶來任何效果。對于 CNN 來說,結(jié)果反之亦然;4 倍的時鐘率,2 倍的效果。但是,更快的內(nèi)存并沒帶來什么好處。一個更大的矩陣乘法單元并不能對任何 DNN 有幫助。
(審核編輯: 林靜)
分享