深度學習的異構硬體加速:TPU 特性與資料中心的 ASIC 應用(概述篇)

DemonHunter211發表於2017-09-20

一、背景

2017年4月,Google在arxiv上傳了一篇文章“In Datacenter Performance Analysis of a Tensor Processing Unit[1]”,公佈了部署兩年的張量處理器——TPU的構架,以及在深度學習中的應用。5月的Google IO大會上,公佈的第二代TPU(簡稱TPU2)。深度學習的降臨伴同樣伴隨著以TPU為代表的計算平臺的進步:

  • 16年3月,AlphaGo戰勝李世石,使用了1202個CPU和176個GPU;
  • 其後,Google將AlphaGo部署於TPU;
  • 17年5月,AlphaGo戰勝柯潔,其演算法執行在雲端單卡4片的TPU2上。

TPU的發力及其在深度學習領域的算力提升使寂寂的計算機體系結構學科煥發了生機,在業界引發了對非馮諾依曼計算體系的熱議。

處理器的通用性越強,計算效率越低。尤其近年來,CPU與儲存器發展的不平衡,高達64核的CPU依然採用傳統的儲存構架,頻寬問題嚴重,使資料中心對高效能運算的缺口增加,以GPU為代表的非馮構架的異構處理器被廣泛應用。

目前的異構處理器大致可分為三類,即量子計算,類腦計算,和領域計算。量子計算是一種利用量子力學規律調控量子資訊的新型計算模式,尚未登場即展現了無限潛力,從學術界到工業界無不對其青眼有加,如Google、IBM、NASA等;類腦計算將神經突觸及其脈衝傳導機制引入ASIC,主要針對低功耗領域,以期實現人腦860億神經元,功耗僅有20W的超高能效,如IBM的TrueNorth[2]。領域計算是指這樣一類處理器,他們並不像傳統ASIC那樣處理特定問題,而是具備了一定的通用性,來處理一類問題。例如最常見的GPU,可以覆蓋大部分的影象處理問題。相比於CPU,GPU在通用性上有所犧牲,卻對以影象為代表的可並行的計算模式做了針對性優化,從而提升了效能和處理效率。TPU也是這樣一類領域處理器。

二、TPU vs GPU:GPU在什麼時候不達標

TPU(即Tensor Processing Unit,張量處理器),是Google針對深度學習相關應用而設計定製的ASIC。其設計不是針對某一種深度學習演算法,而囊括了CNN、LSTM和MLP(即全連線層),在深度學習領域具備了一定的通用性,因此可稱為領域處理器。Google早在2013年即意識到深度學習的價值,並有可能使資料中心的計算量翻倍,於是開始TPU的研發,以期實現10倍以上於GPU的處理能力。2013年,TPU立項,並於2015年完成部署,同時,TPU2也同步研發,於2017年5月前完成部署,並應用於搜尋、地圖、語音識別,以及無人駕駛等研究專案,如圖1所示。

圖1 TPU和TPU2的板卡

目前,GPU的生態已經非常完善了,從晶片、板卡、Cuda環境到社群,開發群體已經形成。那麼,TPU存在的意義到底何在呢?GPU到底有什麼問題?

首先,從計算能力上看,無論是CPU還是GPU,從核心數量上遠沒有達到極限,達到極限的是IO能力,也就是頻寬。以騰訊雲使用的GPU M40為例,峰值效能為2.2 TFLOPS,其中包含3072個Core。若這麼多Core同時讀寫資料,對視訊記憶體頻寬的佔用是相當恐怖的。因此,一方面GPU採用類似CPU片內多級快取的方案,並通過幾個Core之間的共享區域性複用資料,減少對DDR視訊記憶體的壓力。

另一方面,採用最先進的儲存器,增大頻寬,從而在計算時可以跑滿更多的Core。因此我們看到,顯示卡上的儲存技術始終代表了儲存器的最新成果。當還在使用DDR3記憶體時,視訊記憶體已經上了DDR5和HBM(一種片內堆疊儲存)。尤其是HBM的應用,首次採用低廉的方案使GB級別的儲存可以在片內實現,其頻寬不再受制於外部引腳數量,從而一舉使GPU的峰值處理能力從10TFlops左右提升到120TFlops(Tesla V100,Tensor深度學習效能)。頻寬瓶頸帶來的另一個缺點,就是延遲。當眾多Core同時訪問視訊記憶體時,佇列機制導致對每個Core的請求無法第一時間響應,從而增大了任務處理的延遲。TPU的設計瓶頸也是頻寬。其論文中曾酸酸的提到,如果能將DDR3的外存提升到對標的GPU K80的DDR5,效能會提升3倍。

其次,從定製性和計算粒度上看,處理器的效能有兩個指標,即峰值計算能力,和計算效率。當處理能力≤最大頻寬時,才能接近峰值算力,否則就存在資源跑不滿的情況。然而對於GPU,其應用物件為通用平行計算,為了相容更多的應用,在構架設計上存在一定的平衡和冗餘,導致效能功耗比上相比於TPU並不佔優勢。TPU是根據深度學習的應用場景的定製處理器,相比於GPU具有更窄的通用性,更容易處理效能和頻寬的平衡,定製更恰當的計算規模,實現更高的計算效率和效能功耗比。

最後,從互動方式和部署模式上,GPU採用PCIE介面並具備NVLink板間匯流排,支援8卡互聯;TPU採用PCIE介面,TPU2採用專用網路互聯介面,可以實現更多的晶片級互聯,如圖2-3所示。把任務完全部署到晶片上,從而取代了運算過程中因互聯規模受限而導致的CPU互動,並將CPU的功耗進一步分攤。

圖2 TPU2的板級部署,包括:單板4晶片(圖中A),2組25GB/s專用網路(圖中B),2個OPA(Omni-Path Architecture)介面(圖中C),電源介面(圖中D)。

圖3 TPU2的整體部署,其中A、D為CPU機架,B、C為TPU2機架;其中藍線為UPS,紅色虛線為供電電源,綠色虛線為機架的網路切換配置。

三、TPU的成因:為何Google選擇設計自己的領域處理器

設計並部署一款領域處理器晶片,制定各種指標,其核心是平衡,而不是將每個指標做到極致。常見的晶片指標如下:

功耗:晶片本身功耗,以及部署中的額外功耗,如GPU部署中應包含折算的伺服器功耗;

峰值效能和吞吐量:峰值效能是指晶片結構中每秒計算運算元的總和,吞吐量為在實際執行中每秒完成任務的數量或輸出的資料量。當完成處理單一任務的設計後,可通過複製該結構並行增加同時處理的任務路數,直至達到晶片的輸入輸出頻寬。當然,處理規模的增加也會降低晶片的良品率;

面積:受到伺服器板卡尺寸的限制,影響單卡上放置晶片的數量。晶片的面積不僅取決於內部處理構架的規模,還受限於晶片加工工藝,如20nm,16nm等。工藝越精密,晶片尺寸越小,功耗越低,發熱量越小,成本越高。

靈活性和可程式設計能力:可程式設計能力以適用於更多的應用,是領域處理器不可或缺的能力。增加了可程式設計能力和相容性,在單一任務中的效能會有所下降,但適用更多的應用場景。

成本:晶片製造的成本分為一次性投入的設計費用,和取決於數量的加工費用。其中前者比重較大。如Google在TPU的流片中,由於採用當時難度較高的28nm,設計費近千萬刀。如果能保證更大的通用性,相容更多的應用場景,就可提升TPU的部署數量。業界有句名言,當數量提升到足夠量,晶片的成本接近沙子(矽,Si)。若TPU的部署數量增加到1萬片,晶片成本限制到1K刀以內,成為取代GPU的關鍵論據。

綜上所述,Google使用TPU的關鍵在於兩個平衡:定製性和通用性的平衡,以及效能和頻寬的平衡,其中前者對立項來說更為重要。對於TPU,為了提升部署數量,Google開闢了對內和對外兩條應用路線。對內,即公司內部的深度學習應用場景,如搜尋、地圖、語音等;對外,推行自家的TensorFlow,並打通TensorFlow——編譯——TPU片上演算法部署的通路,如圖4所示,實現明面推行TensorFlow,暗地打包推行TPU的模型,並向研究機構開放,營造深度學習端到端的生態鏈。TPU的部署數量上去了,低廉的成本加上生態和影響力的收益,Google自然盆滿缽滿。

圖4 TensorFlow到TPU,軟體到硬體資源的無縫連線

本文從應用背景的角度論述了Google研製TPU 並將其應用於資料中心的原因。在後續的技術篇中,會從技術架構的角度,並結合其論文加以討論。

參考文獻

相關文章