tpu只完成推理過程,訓練過程在gpu上完成。tpu可以像gpu一樣通過pcie匯流排介面掛載到現有的伺服器上。設計目標是為了在tpu上完成所有的推理模型,從而減少和主機cpu的互動,進而滿足2023年及今後的神經網路需求。下圖是tpu的整體結構框圖。
主機通過pcie gen3x16的匯流排傳送tpu的指令到其中的指令buffer內,內部模組之間通過典型的256位寬通路連線。右上角的矩陣乘法單元是tpu的核心,它由256x256個macs組成,每個macs可以對有符號和無符號整形的資料完成8bit的乘加運算。在矩陣單元的下面有乙個4mib大小32bit位寬的accumulator,收集上面16bit的計算結果。4mib代表4096個, 256-element, 32-bit累加器。矩陣單元每個時鐘週期產生乙個256-element的區域性和(partial sum)。當使用8 bit權重(weight)和16 bit啟用(activation)(或反之亦然)的混合時,矩陣乘法單元以半速計算,並且當它們都是16bit時以四分之一速度計算。它每個時鐘週期讀取和寫入256個值,可以執行矩陣乘法或卷積。矩陣單元儲存乙個64kib的權重塊( tile of weights),並使用了雙緩衝(這樣可以在處理時同時讀入權重)。該單元設計用於密集矩陣,而沒有考慮稀疏的架構支援(部署時間的原因)。稀疏性將在未來的設計中占有優先地位。
矩陣乘法單元的權重通過片上的權重fifo(weight fifo)進行快取,該fifo從片外8 gib dram讀取。由於是用於推論,權重為唯讀。8 gib可以同時支援許多模型。權重fifo的深度是4個tile。中間結果儲存在24 mib片上統一緩衝區(unified buffer)中,可以作為矩陣乘法單元的輸入。可程式設計dma實現和cpu host記憶體以及統一緩衝區傳輸資料。
下圖是tpu的平面圖,24mib的統一緩衝區幾乎佔了三分之一,矩陣乘法單元佔了四分之一,資料通路幾乎就是其中的三分之二。24mib的的尺寸是為了匹配矩陣單元的間距,受開發周期較短的限制,也是為了簡化編譯器。
隨著指令通過相對較慢的pcie匯流排傳送,tpu指令遵循cisc傳統,包括重複字段。這些cisc指令的每個指令(cpi)的平均時鐘週期通常為10到20.它總共有大約十個指令,但是這五個是關鍵指令:
1. read_host_memory從cpu記憶體中讀取資料存入統一緩衝區;
2. read_weights從權重記憶體中讀取權值存入權重fifo,作為矩陣單元的輸入;
3. matrimultiply/convolve使矩陣單元執行矩陣乘法或者計算從統一快取區到累加器的卷積;
4. activate執行人造神經元的非線性函式,例如relu、sigmoid等。它的輸入是累加器,輸出是同意緩衝區。它還可以使用晶元上的專用硬體執行卷積運算所需的池化操作,因為它連著非線性功能邏輯。
5. write_host_memory從統一緩衝區內讀取資料存入cpu主機記憶體
其他的指令是備用主機記憶體讀寫、設定配置、兩個同步版本、中斷主機、除錯標籤、無操作和停止。cisc matrixmultiply指令格式為12個位元組,其中3個為統一緩衝區位址; 2個是累加器位址; 4個是長度(有時對於卷積是2個維度);其餘的是操作碼和標誌。
tpu微架構的理念是保持矩陣單元的繁忙。它為這些
cisc
指令使用
4級流水線,其中每條指令在單獨的階段中執行。
該計畫是通過將其執行與
matrixmultiply
指令重疊來隱藏其他指令的執行。為此,
read_weights
指令遵循解耦訪問
/執行原理
,因為它可以在傳送位址之後,但是在從
weight memory
獲取權重之前完成。如果輸入啟用或重量資料尚未就緒,矩陣單元將停止。
cisc指令可以占用數千個時鐘週期,與傳統的
risc
流水線不同,每個階段占用乙個時鐘週期。由於閱讀大型
sram
使用的功率比運算功率高得多,所以矩陣單元使用脈動執行來減少統一緩衝區的讀寫。這要根據從不同方向按一定時間間隔到達矩陣中單元格的資料來定,在矩陣中資料被組合在一起。
上圖顯示矩陣乘法單元的脈動資料流,資料從左側流入,權重從頂部載入。給定的256元乘法累加運算通過矩陣作為對角波前移動。預先載入的權值與新塊的第乙個資料一起作用在資料流上。控制和資料被流水線化,看起來就好像給出的
256個輸入資料是一次讀取的,並且它們立即更新
256個累加器中的每乙個的位置的值。正常來說,上次軟體並不在乎矩陣單元的脈動性,但是考慮到效能問題,它更加在意各單元的延遲。
tpu軟體堆疊必須與為
cpu和
gpu開發的軟體棧相容,以便應用程式可以快速移植到
tpu。在
tpu上執行的應用程式的一部分通常寫在
tensorflow
中,並被編譯成可以在
gpu或
tpu上執行的
api。像
gpu一樣,
tpu堆疊分為使用者空間驅動程式和核心驅動程式。核心驅動程式是輕量級的,只處理記憶體管理和中斷。它是為長期穩定而設計的。使用者空間驅動程式頻繁更改,完成的工作包括:配置並控制
tpu的執行、將資料重新格式化為
tpu命令、將
api呼叫轉換為
tpu指令,進而將其轉換為應用程式的二進位制檔案。使用者空間驅動程式在第一次評估時編譯模型,快取程式映像並將權重映像寫入
tpu的權重儲存器;第二次和接下來的評估則全速執行。
tpu從輸入到輸出完全可以執行大多數的模型,可以最大化
tpu計算時間與
i / o
時間的比率。計算通常每次進行一層,非同步執行允許矩陣乘法單元隱藏大多數非關鍵路徑操作。
TPU是什麼材料,tpu材料屬於塑料嗎
tpu 是什麼材料,tpu材料屬於塑料嗎?有時候我們出去買日用品,如手機套的時候,會看到包裝袋上面會說生產材質是tpu 我們拿在手裡時候自我感覺這就是塑料,這就延伸出來乙個問題,tpu是什麼材料,tpu材料屬於塑料嗎 這應該是很多人的疑問吧。其實tpu 是一種常見的材料,是 thermoplasti...
張量處理單元 TPU
2017年,谷歌對外宣布了乙個張量處理單元 也就是tpu 專門為機器學習而構建的定製應用專用積體電路 asic 一年後,tpu被轉移到雲端,並開放供商業使用。張量處理器 tpu 遵循cpu和gpu的路線,是google定製開發的特定於應用程式的積體電路 asic 旨在加速機器學習的工作量,專為谷歌的...
TPU張量處理器
2017年4月,谷歌公布了張量處理器 tpu 的 tpu 已經在谷歌資料中心內部使用大約四年,而且tpu 在推理方面的效能要遠超過 gpu 儘管在一些應用上利用率很低,但 tpu 平均比當前的 gpu 或 cpu 快15 30倍,效能功耗比高出約 30 80 倍 2016年5月,谷歌在i o大會上首...