張量處理單元(TPU)

原文鏈接:https://www.kdnuggets.com/2019/07/understanding-tensor-processing-units.html

2017年,谷歌對外宣佈了一個張量處理單元(也就是TPU)—專門爲機器學習而構建的定製應用專用集成電路(ASIC),一年後,TPU被轉移到雲端,並開放供商業使用。張量處理器(TPU)遵循CPU和GPU的路線,是Google定製開發的特定於應用程序的集成電路(ASIC),旨在加速機器學習的工作量,專爲谷歌的TensorFlow框架設計的,實際是一個用於神經網絡的符號數學庫。

衆所周知,TensorFlow的源碼閱讀起來是比較困難的,所以爲了更好地理解張量的概念、TPU結構以及它的工作原理,接下來將嘗試對TPU技術做一個簡單的概述。

什麼是張量?

在數學裏面,張量是以多線性方式將幾何向量、標量和其他類似對象映射到結果張量的幾何對象。聽起來可能很令人懵逼,簡單地說,張量是一個廣義矩陣,可以是一維矩陣(向量)、三維矩陣(數字的立方體)、甚至是一個0xD矩陣(單個數字)或更高維的結構,這很難想象,張量的維數稱爲它的秩。

張量的一個重要特徵是它的動態特徵:它生活在一個結構中,並與其他數學實體相互作用,如果以規則的方式變換結構中的其他實體,張量將遵循相關的變換規則,其數值將與其他實體一起顯示,張量的這種“動態”性質是區分它與純矩陣的關鍵。

在計算機科學中,張量是一個n維矩陣,類似於numpy數組(機器學習算法使用的基本數據結構),是TensorFlow中的基本操作單元,實際上就是使用了numpy。

張量和機器學習有什麼關係?

ML運行所涉及的數學包括了以下這些對象的乘積和加法運算:

讓我們來看一個簡單的神經網絡,TensorFlow Playground上的以下示例訓練神經網絡,根據訓練數據集將數據點分類爲藍色或橙色:

訓練後的神經網絡用標籤或預估值對數據進行分類,這個過程稱爲推理,爲此,神經網絡中的每個神經元都會進行以下計算:

  • 將輸入數據(x)乘以權重(w),以表示信號強度;
  • 將結果相加以聚合神經元的狀態;
  • 使用激活函數(F)調節人工神經元的活動。

這裏可以看到,一共有三個輸入,只有兩個神經元和一個完全連接的單層神經網絡,你必須在權重和輸入之間執行六次乘法,並將乘法相加成兩組,每組三個,這個乘法和加法序列可以寫成一個矩陣乘法,是運行一個經過訓練的模型最需要計算的部分,每一個預測都需要許多步驟,將處理過的輸入數據乘以一個權重矩陣和應用一個激活函數。

因此,從矩陣中乘片和取片需要大量的CPU時鐘週期和內存,TPU的目的就是減輕這些特定的工作負荷。

TPU背後的邏輯

爲了簡化神經網絡訓練過程,TPU從多個方面解決了這個問題:

1.量子化運算

根據量子技術,在預設的最小值和最大值與8位整數之間的任意值的近似過程,TPU包含65536個8位整數乘法器;本質上,這種技術是將32位甚至16位數字的浮點計算壓縮爲8位整數,可以看到,連續的大數集(如實數)通過保持曲線轉換爲離散集(整數):

量子化運算是第一個強大的工具,TPU使用,以減少神經網絡預測的成本,而不是顯著地損失的準確性。

2.注重數學推理

TPU的設計本身封裝了神經網絡計算的本質,TPU包括以下計算資源:

  • 矩陣乘法單元(MXU):65,536個矩陣運算的8位乘法和加法單位;
  • 統一緩衝區(UB):24MB SRAM寄存器;
  • 激活單元(AU):硬接線激活功能。

它們由十幾個高級指令控制,這些指令集中於神經網絡推理所需的主要數學運算,一個特殊的編譯器和軟件棧將所有來自於TensorFlow圖的API調用轉換爲TPU指令。

3. 並行處理

TPU採用典型的RISC處理器爲簡單的計算提供指令,例如用處理單個或標量的操作乘以每個指令;就如前面講到的,TPU包含一個矩陣乘法器單元,它被設計成一個矩陣而不是標量處理器,並在一個時鐘週期內處理數十萬個操作(相當於矩陣操作),使用這種矩陣處理器就像一次打印一整頁文檔,而不是挨個字符或逐行打印。

4.收縮陣列

TPU的核心是一個新型的矩陣乘法單元(MXU),叫做收縮陣列,在傳統的體系結構中(如CPU或者GPU),計算值存儲在寄存器中,程序告訴算術邏輯單元(ALU)哪些寄存器需要讀取,要執行的操作(如加法、乘法或邏輯與)以及將結果放入的寄存器,這些操作的序列組成了程序,在MXU中,矩陣乘法多次重複使用輸入以產生最終輸出。一個值被讀取一次,但用於許多不同的操作,而不將其存儲回寄存器,ALU只執行固定模式中的乘法和加法,並且電線連接相鄰的ALU,這使得它們既短又節能。

爲了理解這個設計,可以想想心臟泵血——就像數據在芯片中以波的形式流動。

雲化

TPU最令人興奮的部分應該是谷歌已經在谷歌雲平臺上提供了這些芯片作爲服務,並開源了它的技術,雲TPU允許使用TensorFlow在谷歌的TPU加速器硬件上運行機器學習工作流,然後將TPU工作負載分發到TPU雲服務器,如下所示:

雲TPU旨在幫助研究人員、開發人員和企業構建能夠利用CPU、GPU和TPU的TensorFlow計算集羣,高級TensorFlow API可以幫助你在雲TPU硬件上運行模型。

程序設計模型

由於PCIe總線的速度,與計算速度相比,雲TPU和主機內存之間的數據傳輸速度較慢。由於主機和雲TPU之間經常發生“乒乓”現象,雲TPU大部分時間處於空閒狀態,等待數據通過PCIe總線到達。爲了提高效率,雲TPU的編程模型將大部分培訓轉移到TPU,這樣的話:

  • 所有模型參數都保存在同一片高帶寬存儲器中;
  • 許多培訓步驟都是在一個循環中執行的,用於分攤在雲TPU上啓動計算的成本;
  • TensorFlow服務器在“饋入”到雲TPU硬件之前獲取並預處理數據;
  • 雲TPU上的核心同步執行存儲在各自HBM中的相同程序。

價格

根據谷歌的定價信息,每臺TPU的成本爲4.50美元,網站上顯示的三種TPU型號的價格沒有差異,由於TPU具有不同的內存大小和時鐘速度,這有點讓人懵逼。

CPU/GPU/TPU對比

CPU(中央處理單元)和GPU(圖形處理單元)計算大多數ML問題時會消耗大量時間,一些專家認爲,TPU本質上是Nvidia的GPU轉移到了雲上,由於這些技術非常相似,我們提供了一張對比CPU、GPU和TPU芯片的表格,以顯示它們的差異以及它們的應用範圍:

TPU優勢

在提高計算效率和速度方面,使用TPU具有許多優勢,包括以下好處:

  • 線性代數計算的加速性能,在機器學習應用中被大量使用。
  • 在訓練大型、複雜的神經網絡模型時,最大限度地縮短了訓練的時間:以前訓練幾周的模型在TPU上可以在數小時內收斂。
  • 通過其TPU服務器跨不同機器的可擴展操作。

TPU侷限性

要理解的一件重要的事情是,TPU被專門優化以執行快速、龐大的矩陣乘法,在不受矩陣乘法支配的工作負載中,雲TPU可能比其他平臺表現更好,例如:

  • 線性代數程序,需要頻繁的分支或由代數控制的元素;
  • 以稀疏方式訪問內存的工作負載;
  • 需要高精度算法的工作負載;

神經網絡工作負載,包含用C++編寫的定製的TysFoRoad操作,具體地說,是主訓練循環主體中的自定義操作。

TensorFlow和TPU的結合可以在醫學、圖像處理和ML領域創造奇蹟。當訓練模型的時間和計算時間從幾周縮短到幾小時時,機器學習變得更具競爭力,並可供更多的人使用,此外,將TPU作爲雲上服務提供,允許用戶開始構建他們的模型,從而無需進行前期較大的資本投資,這意味着研究人員、工程師、小企業甚至學生可以輕鬆地創建機器學習項目。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章