2023年,谷歌對外宣布了乙個張量處理單元(也就是tpu)—專門為機器學習而構建的定製應用專用積體電路(asic),一年後,tpu被轉移到雲端,並開放供商業使用。張量處理器(tpu)遵循cpu和gpu的路線,是google定製開發的特定於應用程式的積體電路(asic),旨在加速機器學習的工作量,專為谷歌的tensorflow框架設計的,實際是乙個用於神經網路的符號數學庫。
眾所周知,tensorflow的原始碼閱讀起來是比較困難的,所以為了更好地理解張量的概念、tpu結構以及它的工作原理,接下來將嘗試對tpu技術做乙個簡單的概述。
在數學裡面,張量是以多線性方式將幾何向量、標量和其他類似物件對映到結果張量的幾何物件。聽起來可能很令人懵逼,簡單地說,張量是乙個廣義矩陣,可以是一維矩陣(向量)、三維矩陣(數字的立方體)、甚至是乙個0xd矩陣(單個數字)或更高維的結構,這很難想象,張量的維數稱為它的秩。
張量的乙個重要特徵是它的動態特徵:它生活在乙個結構中,並與其他數學實體相互作用,如果以規則的方式變換結構中的其他實體,張量將遵循相關的變換規則,其數值將與其他實體一起顯示,張量的這種「動態」性質是區分它與純矩陣的關鍵。
在電腦科學中,張量是乙個n維矩陣,類似於numpy陣列(機器學習演算法使用的基本資料結構),是tensorflow中的基本操作單元,實際上就是使用了numpy。
ml執行所涉及的數學包括了以下這些物件的乘積和加法運算:
讓我們來看乙個簡單的神經網路,tensorflow playground上的以下示例訓練神經網路,根據訓練資料集將資料點分類為藍色或橙色:
訓練後的神經網路用標籤或預估值對資料進行分類,這個過程稱為推理,為此,神經網路中的每個神經元都會進行以下計算:
這裡可以看到,一共有三個輸入,只有兩個神經元和乙個完全連線的單層神經網路,你必須在權重和輸入之間執行六次乘法,並將乘法相加成兩組,每組三個,這個乘法和加法序列可以寫成乙個矩陣乘法,是執行乙個經過訓練的模型最需要計算的部分,每乙個**都需要許多步驟,將處理過的輸入資料乘以乙個權重矩陣和應用乙個啟用函式。
因此,從矩陣中乘片和取片需要大量的cpu時鐘週期和記憶體,tpu的目的就是減輕這些特定的工作負荷。
為了簡化神經網路訓練過程,tpu從多個方面解決了這個問題:
1.量子化運算
根據量子技術,在預設的最小值和最大值與8位整數之間的任意值的近似過程,tpu包含65536個8位整數乘法器;本質上,這種技術是將32位甚至16位數字的浮點計算壓縮為8位整數,可以看到,連續的大數集(如實數)通過保持曲線轉換為離散集(整數):
量子化運算是第乙個強大的工具,tpu使用,以減少神經網路**的成本,而不是顯著地損失的準確性。
2.注重數學推理
tpu的設計本身封裝了神經網路計算的本質,tpu包括以下計算資源:
它們由十幾個高階指令控制,這些指令集中於神經網路推理所需的主要數**算,乙個特殊的編譯器和軟體棧將所有來自於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的成本為4.50美元,**上顯示的三種tpu型號的**沒有差異,由於tpu具有不同的記憶體大小和時鐘速度,這有點讓人懵逼。
cpu/gpu/tpu對比
cpu(**處理單元)和gpu(圖形處理單元)計算大多數ml問題時會消耗大量時間,一些專家認為,tpu本質上是nvidia的gpu轉移到了雲上,由於這些技術非常相似,我們提供了一張對比cpu、gpu和tpu晶元的**,以顯示它們的差異以及它們的應用範圍:
tpu優勢
在提高計算效率和速度方面,使用tpu具有許多優勢,包括以下好處:
tpu侷限性
要理解的一件重要的事情是,tpu被專門優化以執行快速、龐大的矩陣乘法,在不受矩陣乘法支配的工作負載中,雲tpu可能比其他平台表現更好,例如:
神經網路工作負載,包含用c++編寫的定製的tysforoad操作,具體地說,是主訓練迴圈主體中的自定義操作。
tensorflow和tpu的結合可以在醫學、影象處理和ml領域創造奇蹟。當訓練模型的時間和計算時間從幾周縮短到幾小時時,機器學習變得更具競爭力,並可供更多的人使用,此外,將tpu作為雲上服務提供,允許使用者開始構建他們的模型,從而無需進行前期較大的資本投資,這意味著研究人員、工程師、小企業甚至學生可以輕鬆地建立機器學習專案。
TPU張量處理器
2017年4月,谷歌公布了張量處理器 tpu 的 tpu 已經在谷歌資料中心內部使用大約四年,而且tpu 在推理方面的效能要遠超過 gpu 儘管在一些應用上利用率很低,但 tpu 平均比當前的 gpu 或 cpu 快15 30倍,效能功耗比高出約 30 80 倍 2016年5月,谷歌在i o大會上首...
openFOAM動量方程中張量的處理
tmpueqn fvm ddt rho,u i fvm div phi,u ii mrf.ddt rho,u iii turbulence divdevreff u iv fvoptions rho,u v 其中,i 為非穩態項 ii 為對流項 iii 為mrf造成的附加修正 iv 為應力張量 v ...
ROP光柵化處理單元
rops單元的全名是 raster operations units 中文叫做 光柵化處理單元 光柵單元主要負責遊戲中的光線和反射運算,兼顧aa 高解析度 煙霧 火焰等效果.遊戲裡的光影效果越厲害,對光柵單元的效能要求也就越高,否則就可能導致 遊戲幀數 急劇下降.比如同樣是某個遊戲的最高清效果,8個...