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 等競爭對手,會不會盡速跟進如法炮製?我們可以等著,但唯一可以確定的是,以後銷售「人工智慧晶片」可能不會是好做的生意。

 

(本文由 Technews 授權轉載)

Tags :aigooglemachine learningtensorflowTPU
Technews

The authorTechnews

科技新報 (TechNews)於 2013 年下半年成立,是一群對資訊科技、能源、半導體、行動運算、網際網路、醫療、生物科技具有高度熱忱與興趣的產業與新媒體人士所共同組成的時代新媒體,以產出有觀點與特色的原創文章為主要任務。