選自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 目前已經發布了內部測試版。架構
如上爲 tpudemo.com 截圖,該網站 PPT 解釋了 TPU 的特性與定義。在本文中,咱們將關注 TPU 某些特定的屬性。
機器學習
神經網絡如何運算學習
在咱們對比 CPU、GPU 和 TPU 以前,咱們能夠先了解到底機器學習或神經網絡須要什麼樣的計算。以下所示,假設咱們使用單層神經網絡識別手寫數字。測試
若是圖像爲 28×28 像素的灰度圖,那麼它能夠轉化爲包含 784 個元素的向量。神經元會接收全部 784 個值,並將它們與參數值(上圖紅線)相乘,所以才能識別爲「8」。其中參數值的做用相似於用「濾波器」從數據中抽取特徵,於是能計算輸入圖像與「8」之間的類似性:動畫
這是對神經網絡作數據分類最基礎的解釋,即將數據與對應的參數相乘(上圖兩種顏色的點),並將它們加在一塊兒(上圖右側收集計算結果)。若是咱們能獲得最高的預測值,那麼咱們會發現輸入數據與對應參數很是匹配,這也就最多是正確的答案。網站
簡單而言,神經網絡在數據和參數之間須要執行大量的乘法和加法。咱們一般會將這些乘法與加法組合爲矩陣運算,這在咱們大學的線性代數中會提到。因此關鍵點是咱們該如何快速執行大型矩陣運算,同時還須要更小的能耗。google
CPU 如何運行雲計算
所以 CPU 如何來執行這樣的大型矩陣運算任務呢?通常 CPU 是基於馮諾依曼架構的通用處理器,這意味着 CPU 與軟件和內存的運行方式以下:
CPU 最大的優點是靈活性。經過馮諾依曼架構,咱們能夠爲數百萬的不一樣應用加載任何軟件。咱們可使用 CPU 處理文字、控制火箭引擎、執行銀行交易或者使用神經網絡分類圖像。
可是,因爲 CPU 很是靈活,硬件沒法一直了解下一個計算是什麼,直到它讀取了軟件的下一個指令。CPU 必須在內部將每次計算的結果保存到內存中(也被稱爲寄存器或 L1 緩存)。內存訪問成爲 CPU 架構的不足,被稱爲馮諾依曼瓶頸。雖然神經網絡的大規模運算中的每一步都是徹底可預測的,每個 CPU 的算術邏輯單元(ALU,控制乘法器和加法器的組件)都只能一個接一個地執行它們,每一次都須要訪問內存,限制了整體吞吐量,並須要大量的能耗。
GPU 如何工做
爲了得到比 CPU 更高的吞吐量,GPU 使用一種簡單的策略:在單個處理器中使用成千上萬個 ALU。現代 GPU 一般在單個處理器中擁有 2500-5000 個 ALU,意味着你能夠同時執行數千次乘法和加法運算。
這種 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 的使用價格。
斯坦福大學發佈了深度學習和推理的基準套裝 DAWNBench。你能夠在上面找到不一樣的任務、模型、計算平臺以及各自的基準結果的組合。
DAWNBench:dawn.cs.stanford.edu/benchmark/
在 DAWNBench 比賽於 2018 年 4 月結束的時候,非 TPU 處理器的最低訓練成本是 72.40 美圓(使用現場實例訓練 ResNet-50 達到 93% 準確率)。而使用 Cloud TPU v2 搶佔式計價,你能夠在 12.87 美圓的價格完成相同的訓練結果。這僅至關於非 TPU 的不到 1/5 的成本。這正是神經網絡領域特定架構的威力之所在。