AI晶元學習小結4 谷歌TPU與脈動陣列

2021-10-05 06:22:39 字數 1393 閱讀 6281

文章:in-datacenter performance analysis of a tensor processing unit

終於迎來了鼎鼎大名的谷歌tpu。由於谷歌在其**中沒有對脈動陣列進行詳細講述,而有關脈動陣列及其具體實現的**也五花八門,所以我主要參考了reference中的大神部落格並進行以下學習記錄。

脈動陣列的核心思想:

進行大量的資料復用,包括activation以及weight。其復用依賴於片上網路的性質,即pe單元可以向周圍的pes傳遞資料。

部署大規模的pe陣列。每個pe單元結構簡單,一般只包含乘法器、加法器以及暫存器三部分,適合大量堆砌。

上圖為脈動陣列的簡單實現。可以看到,weight已經被預先固定在了pe的暫存器中,中間和不斷向右累加便可得到最終的結果。

上圖展示了如何使用脈動陣列來計算兩個3*3矩陣的乘法。在經過一系列這樣的過程後,最終得到的形式如下圖所示。因為這些資料在陣列中傳輸的形式類似於波陣面在不斷推進的過程,因此也與「脈動陣列」的名字相呼應。

上圖是google**中展示的tpu實現模組圖。位於右上方的matrix multiply unit為整個實現的核心計算部分。陣列中一共含有驚人的256*256,也就是64k個pe單元;每乙個計算單元可以實現兩個8bit有符號或無符號數的乘加操作。

上圖為matrix的具體結構圖。由於tpu是基於脈動陣列架構實現的,因此其基本工作流程也與前面提到的脈動陣列的相同。weight被固定在了pe中,psum從上到下逐步累積,activation從左到右在pe之間進行傳遞。

由於二維卷積操作與矩陣乘法的工作方式不一樣,因此在進行卷積前需要對ifmap和filter進行適當的變換使得對應位置的數值能夠正確相乘。在tpu中這一變換操作具體由user space drive負責實現,下面援引文章中的一段話來印證:

the user space driver changes frequently. it sets up and controls tpu execution,reformats data into tpu order

海思AI晶元學習

海思ai晶元hi35xx系列具體包括的型號hi3559a v100,hi3559c v100,hi3519a v100,hi3516c v500以及hi3516d v300。其中,帶a的是有ai硬體引擎功能的,不帶a的是不具有的。svp smart vision platform 海思 晶元智慧型異...

AI學習日記4

學習知識 4.pandas 4.1 初識pandas pandas的優勢 了解 增強圖表可讀性 便捷的資料處理能力 讀取檔案方便 封裝了matplotlib numpy的畫圖和計算 4.2 pandas資料類 1.series 對應的是一維陣列 1.建立 pd.series 列表 陣列 字典 2.屬...

ejb學習小結4

1 jboss 預設在dos下啟動是default的,這個要記得,要用all啟動的話,可以這樣 run c all,否則dos下每次ant後的東西都會放錯位置的了 2 乙個簡單的編譯ejb服務端的指令碼,用的是sun的j2ee sdk下的lib 3 ejb元件打包 進入build目錄下,jar cv...