僅需1/5成本:TPU是如何超越GPU,成爲深度學習首選處理器的

選自Google Cloud,做者:Kaz Sato,機器之心編譯,參與:思源、劉曉坤。緩存

不少讀者可能分不清楚 CPU、GPU 和 TPU 之間的區別,所以 Google Cloud 將在這篇博客中簡要介紹它們之間的區別,並討論爲何 TPU 能加速深度學習。網絡

張量處理單元(TPU)是一種定製化的 ASIC 芯片,它由谷歌從頭設計,並專門用於機器學習工做負載。TPU 爲谷歌的主要產品提供了計算支持,包括翻譯、照片、搜索助理和 Gmail 等。Cloud TPU 將 TPU 做爲可擴展的雲計算資源,併爲全部在 Google Cloud 上運行尖端 ML 模型的開發者與數據科學家提供計算資源。在 Google Next’18 中,咱們宣佈 TPU v2 如今已經獲得用戶的普遍使用,包括那些免費試用用戶,而 TPU v3 目前已經發布了內部測試版。架構

第三代 Cloud TPU

如上爲 tpudemo.com 截圖,該網站 PPT 解釋了 TPU 的特性與定義。在本文中,咱們將關注 TPU 某些特定的屬性。
機器學習


神經網絡如何運算學習

在咱們對比 CPU、GPU 和 TPU 以前,咱們能夠先了解到底機器學習或神經網絡須要什麼樣的計算。以下所示,假設咱們使用單層神經網絡識別手寫數字。測試

若是圖像爲 28×28 像素的灰度圖,那麼它能夠轉化爲包含 784 個元素的向量。神經元會接收全部 784 個值,並將它們與參數值(上圖紅線)相乘,所以才能識別爲「8」。其中參數值的做用相似於用「濾波器」從數據中抽取特徵,於是能計算輸入圖像與「8」之間的類似性:動畫

這是對神經網絡作數據分類最基礎的解釋,即將數據與對應的參數相乘(上圖兩種顏色的點),並將它們加在一塊兒(上圖右側收集計算結果)。若是咱們能獲得最高的預測值,那麼咱們會發現輸入數據與對應參數很是匹配,這也就最多是正確的答案。網站

簡單而言,神經網絡在數據和參數之間須要執行大量的乘法和加法。咱們一般會將這些乘法與加法組合爲矩陣運算,這在咱們大學的線性代數中會提到。因此關鍵點是咱們該如何快速執行大型矩陣運算,同時還須要更小的能耗。google


CPU 如何運行雲計算

所以 CPU 如何來執行這樣的大型矩陣運算任務呢?通常 CPU 是基於馮諾依曼架構的通用處理器,這意味着 CPU 與軟件和內存的運行方式以下:

CPU 如何運行:該動圖僅展現了概念性原理,並不反映 CPU 的實際運算行爲。

CPU 最大的優點是靈活性。經過馮諾依曼架構,咱們能夠爲數百萬的不一樣應用加載任何軟件。咱們可使用 CPU 處理文字、控制火箭引擎、執行銀行交易或者使用神經網絡分類圖像。

可是,因爲 CPU 很是靈活,硬件沒法一直了解下一個計算是什麼,直到它讀取了軟件的下一個指令。CPU 必須在內部將每次計算的結果保存到內存中(也被稱爲寄存器或 L1 緩存)。內存訪問成爲 CPU 架構的不足,被稱爲馮諾依曼瓶頸。雖然神經網絡的大規模運算中的每一步都是徹底可預測的,每個 CPU 的算術邏輯單元(ALU,控制乘法器和加法器的組件)都只能一個接一個地執行它們,每一次都須要訪問內存,限制了整體吞吐量,並須要大量的能耗。


GPU 如何工做

爲了得到比 CPU 更高的吞吐量,GPU 使用一種簡單的策略:在單個處理器中使用成千上萬個 ALU。現代 GPU 一般在單個處理器中擁有 2500-5000 個 ALU,意味着你能夠同時執行數千次乘法和加法運算。

GPU 如何工做:這個動畫僅用於概念展現。並不反映真實處理器的實際工做方式。

這種 GPU 架構在有大量並行化的應用中工做得很好,例如在神經網絡中的矩陣乘法。實際上,相比 CPU,GPU 在深度學習的典型訓練工做負載中能實現高几個數量級的吞吐量。這正是爲何 GPU 是深度學習中最受歡迎的處理器架構。

可是,GPU 仍然是一種通用的處理器,必須支持幾百萬種不一樣的應用和軟件。這又把咱們帶回到了基礎的問題,馮諾依曼瓶頸。在每次幾千個 ALU 的計算中,GPU 都須要訪問寄存器或共享內存來讀取和保存中間計算結果。由於 GPU 在其 ALU 上執行更多的並行計算,它也會成比例地耗費更多的能量來訪問內存,同時也由於複雜的線路而增長 GPU 的物理空間佔用。


TPU 如何工做

當谷歌設計 TPU 的時候,咱們構建了一種領域特定的架構。這意味着,咱們沒有設計一種通用的處理器,而是專用於神經網絡工做負載的矩陣處理器。TPU 不能運行文本處理軟件、控制火箭引擎或執行銀行業務,但它們能夠爲神經網絡處理大量的乘法和加法運算,同時 TPU 的速度很是快、能耗很是小且物理空間佔用也更小。

其主要助因是對馮諾依曼瓶頸的大幅度簡化。由於該處理器的主要任務是矩陣處理,TPU 的硬件設計者知道該運算過程的每一個步驟。所以他們放置了成千上萬的乘法器和加法器並將它們直接鏈接起來,以構建那些運算符的物理矩陣。這被稱做脈動陣列(Systolic Array)架構。在 Cloud TPU v2 的例子中,有兩個 128X128 的脈動陣列,在單個處理器中集成了 32768 個 ALU 的 16 位浮點值。

咱們來看看一個脈動陣列如何執行神經網絡計算。首先,TPU 從內存加載參數到乘法器和加法器的矩陣中。

而後,TPU 從內存加載數據。當每一個乘法被執行後,其結果將被傳遞到下一個乘法器,同時執行加法。所以結果將是全部數據和參數乘積的和。在大量計算和數據傳遞的整個過程當中,不須要執行任何的內存訪問。

這就是爲何 TPU 能夠在神經網絡運算上達到高計算吞吐量,同時能耗和物理空間都很小。


好處:成本下降至 1/5

所以使用 TPU 架構的好處就是:下降成本。如下是截至 2018 年 8 月(寫這篇文章的時候)Cloud TPU v2 的使用價格。

Cloud TPU v2 的價格,截至 2018 年 8 月。

斯坦福大學發佈了深度學習和推理的基準套裝 DAWNBench。你能夠在上面找到不一樣的任務、模型、計算平臺以及各自的基準結果的組合。

DAWNBench:dawn.cs.stanford.edu/benchmark/

在 DAWNBench 比賽於 2018 年 4 月結束的時候,非 TPU 處理器的最低訓練成本是 72.40 美圓(使用現場實例訓練 ResNet-50 達到 93% 準確率)。而使用 Cloud TPU v2 搶佔式計價,你能夠在 12.87 美圓的價格完成相同的訓練結果。這僅至關於非 TPU 的不到 1/5 的成本。這正是神經網絡領域特定架構的威力之所在。

相關文章
相關標籤/搜索