close

長期關心人工智能與深度學習的技術宅們,不可能未曾聽聞 Google 自行打造、為 TensorFlow 機器學習框架量身訂做,讓 AlphaGo 在世紀人機圍棋大戰,打敗李世乭九段的秘密武器:人工智能晶片 TPU (Tensor Processing Unit)。在 Hot Chips 29,Google 也以「比較平易近人」的簡報形式(年初發表的是論文),介紹第一世代 TPU 的技術全貌與第二代的概觀。

Why TPU? 因為非「專職專業」不可

開宗明義:過去提升效能的諸多手段,如一次處理更寬的資料、指令管線化、同時執行更多的指令、更高的運行時脈等,在近 40 年來,讓處理器變快了 100 萬倍。

但包含 CISC 到 RISC 的指令集改革,這些手段和一堆法則,現在都遭遇瓶頸了,現在還想突破性成長?可以說幾乎沒招了。

最後一句話開宗明義:有鑑於電晶體和功耗預算的限制,現在已經進入專用處理器的時代(有興趣可以參考 IBM 正在高喊的 Accerlerated Computing)。

專注於「推論」的第一世代 TPU

人工智能應用可大略區分成兩個領域:「訓練/學習」和「推論/預測」,在成長(Development)階段,經過「訓練」(Training)的類神經網路,「學習」(Learning)如何執行工作,接著進入生產(Production)階段,類神經網路會被應用在「推論」(Inference)上,即對資料進行分類並「預測」(Prediction)出結果。

Google 初代 TPU 僅能應用於推論(其實應該可以用來做訓練學習,可能是運算精度考量),能夠兼備訓練類神經網路,則是第二代 TPU 的故事了。Google 在 Hot Chips 29 的主題演講有公開部分第二代 TPU 的資訊,讓兼具 HBM 記憶體與浮點運算能力的 TPU,又變得更像 GPU。

有別於當時多數「訓練」平台以 GPU 做為運算底層,而不得不使用浮點運算工作,Google TPU 則是整數運算晶片,以達成更快的速度、更少的功耗,與更小的晶片面積。後來 NVIDIA 與 AMD 的新型 GPU 也因「英雄所見略同」,擴增整數運算支援性,特別是 8 位元 16 位元短整數。

 

Google TPU 的技術精髓:古老的脈動陣列(Systolic Array)

Google 打造 TPU,會面對兩個主要挑戰:

低成本:架構需要盡其所能的簡單,不僅要能降低成本,更要縮短產品開發時程,儘快部署到 Google 資料中心。

高效能:尤其致力著墨於免除傳統電腦的「范紐曼瓶頸」(von Neumann bottleneck):記憶體跟不上運算。考量到第一個成本因素,像 GPU 如此昂貴暴力的記憶體子系統,是壓根兒完全不考慮的選項。換言之,須消耗較少的記憶體頻寬,卻能實現更高的運算吞吐量。

所以理論存在於古老論文已久,讓「運算多跑一會兒」的脈動陣列(或稱為脈動管線,Systolic Pipeline),就在相隔 30 餘年之後,變身為雲端霸主初代人工智慧晶片的靈魂。

其概念也很簡單,既然運算動作反覆存取記憶體浪費時間,何不就「串串樂」,讓資料經過大量相同的處理單元(Processing Element,PE)?舉個例子,我們想要做連續加法運算,要進行 6 次 +1,如其反覆存取記憶體 6 次,不如 6 個 +1 串在一起,不就畢其功於一役了?

但脈動陣列的限制也很明顯:只適用於特定的運算,缺乏靈活性與泛用性。很幸運的,像普及於特徵辨識的卷積神經網路(Convolutional Neural Networks,CNN),就是非常適合的應用,在 Google TPU 內轉化為一連串的 8 位元整數乘積運算,時脈僅 700MHz,理論尖峰效能就 92T,推論效率高達 GPU 的「10 倍」。

TPU 內的 256×256「Matrix」部分就是很標準的脈動陣列,而 TPU 內的區塊名稱,也溢出了滿滿的「人工智能味」。

在脈動陣列內,「用來決定輸入資訊重要性」的「權重」(Weight)由上而下流動,而「替類神經網路加入非線性因素,以解決更複雜問題」的「激活值」(Activation)由左向右傳遞,如此簡單的結構,就足以同時達成指令流與資料流的管線化,並減輕記憶體子系統的負擔。當然,天底下沒有白吃的午餐,簡單的硬體意味著複雜的軟體,但這對 Google 絕對不是問題。

自己做想要的晶片總是有好處的

Google 在一台伺服器安裝 4 張 TPU 運算卡。

與 Intel 18 核 Haswell 和 nVidia K80 規格比一比,無論晶粒面積和耗電量都少了一大截,而初代 TPU 還是比較落後的 28nm 製程。

Google 是依據以下組態,部署並比較同時期 CPU、GPU 與自家 TPU 的差異性。

經過實驗證實,Google TPU 享有數十倍於同期 CPU 與 GPU 的效能功耗比。

更重要的是,此計畫從開案、研發、晶片 Tape Out、量產,一路到上線部署,僅僅只花了「15 個月」(反觀動不動就好幾年的 x86 微架構),做到完美的 Time To Market,世界上恐怕沒有其他企業,能比 Google 能透徹理解資料中心使用深度類神經網路進行推論的需求,採用簡單硬體設計,充分發揮軟體能力的策略,更是功不可沒。

像 GPU 的第二代 TPU

Google 第一代 TPU 只能做推論,所以就有可以做深度學習的第二代。我們就來瞧瞧乍看之下與 GPU「殊途同歸」的第二代 TPU,有什麼有趣的地方。

機械學習究竟需要何種運算精度,一直是沒有標準答案的問題,Google 基於自身的需求,讓第二代 TPU 具備 32 位元單精度浮點運算的能力。原先第一代 TPU 的 256×256 Systolic Matrix,演化成兩個 128×128 的運算核心(但犧牲掉部分精確度),並新增泛用性較高的純量運算單元。

此外,運算精度激增也加重記憶體頻寬需求,兩個運算核心個別加掛 8GB HBM,提供較前代多出 20 倍的 600GB/s 理論頻寬,讓第二代 TPU 更近似新型 GPU。因 HBM 採用多晶片堆疊封裝,更能精簡電路板的設計與面積,提高佈署密度。

至於第二代 TPU 是否保留大型化的晶片內(on-chip)記憶體,如前代多達 24MB 用來存放激活值的緩衝區,與 4MB 用於暫存 Matrix 計算結果,Google 尚未公布細節,就不得而知了。

總之,第二代 TPU 在 Google 資料中心的佈署樣貌就長這樣,64 個 TPU Pod(四顆TPU)即可提供 11.5P 的浮點運算能量。

第二代 TPU 即將上線 Google Cloud 替各位服務,而且宣稱使用 TensorFlow 機械學習框架,不需要大改程式碼,就可享受 TPU 的驚人效能。

在 2013 年底,Google 爆炸性公開其「規劃部署已達 3 年」、開大規模商業化導入軟體定義網路(SDN)之先河的 B4 資料中心廣域網路,到現在不知不覺中,在眾多新創企業與學術機關四處宣傳其研發成果的當下,也一路遙遙領先,早已讓自家打造的人工智慧晶片邁進到第二代並投入商業運轉,讓人不得不佩服雲端服務霸主的研發能量與執行效率。微軟、蘋果、IBM、Amazon 等競爭對手,會不會盡速跟進如法炮製?我們可以等著,但唯一可以確定的是,以後銷售「人工智慧晶片」可能不會是好做的生意。

 

Tags : aigooglemachine learningtensorflowTPU
Ken Li

The author Ken Li

世事洞明皆學問,人情練達即文章。