• <tr id='6e9r2k'><strong id='6e9r2k'></strong><small id='6e9r2k'></small><button id='6e9r2k'></button><li id='6e9r2k'><noscript id='6e9r2k'><big id='6e9r2k'></big><dt id='6e9r2k'></dt></noscript></li></tr><ol id='6e9r2k'><option id='6e9r2k'><table id='6e9r2k'><blockquote id='6e9r2k'><tbody id='6e9r2k'></tbody></blockquote></table></option></ol><u id='6e9r2k'></u><kbd id='6e9r2k'><kbd id='6e9r2k'></kbd></kbd>

    <code id='6e9r2k'><strong id='6e9r2k'></strong></code>

    <fieldset id='6e9r2k'></fieldset>
          <span id='6e9r2k'></span>

              <ins id='6e9r2k'></ins>
              <acronym id='6e9r2k'><em id='6e9r2k'></em><td id='6e9r2k'><div id='6e9r2k'></div></td></acronym><address id='6e9r2k'><big id='6e9r2k'><big id='6e9r2k'></big><legend id='6e9r2k'></legend></big></address>

              <i id='6e9r2k'><div id='6e9r2k'><ins id='6e9r2k'></ins></div></i>
              <i id='6e9r2k'></i>
            1. <dl id='6e9r2k'></dl>
              1. <blockquote id='6e9r2k'><q id='6e9r2k'><noscript id='6e9r2k'></noscript><dt id='6e9r2k'></dt></q></blockquote><noframes id='6e9r2k'><i id='6e9r2k'></i>

                新聞中心

                EEPW首頁 > 智能計算 > 設計應用 > 實測!AlexNet卷積核在FPGA占90%資源仍跑750MHz 算力達288萬張圖像/秒

                實測!AlexNet卷積核在FPGA占90%資源仍跑750MHz 算力達288萬張圖像/秒

                —— Achronix創〖新的機器學習處理器(MLP)突破傳統FPGA時序性能瓶吼頸
                作者:Achronix時間:2020-04-25來源:電子產★品世界收藏
                編者按:本文將重點描述基於AlexNet的2D卷積一個爽朗核的實例應用。

                _Conv2D是功能齊全的設計,可將2D輸入圖像與多個內核同時¤進行卷積。 該設計充分利用了和BRAM模塊,每個一個周期執⌒ 行12個int8乘法。此外,MLP列和BRAM塊均等級聯以有效地將圖像如果要想離開數據傳遞,從而允許同〓時處理多個內核。

                本文引用地址:/jjs195/article/202004/412404.htm

                該設計使用NoC接入點(NAP)從片上網絡(NoC)讀取或寫入■數據。NoC連接到Speedster7t器件中的GDDR6控制器再到呼外部存儲器。

                AlexNet

                盡☉管最初為AlexNet圖像和內核大小配置了MLP_Conv2D設計,但是2D卷積是一個通用就都給你過程,因此可以重新配置該設計並使其適應許多①不同的2D方法。

                2D卷積的一般原理是在圖像(實際上ㄨ是另一個2D矩陣)上傳遞出現在它眼前內核(2D矩陣)。對於每次計∴算,內核均以輸入圖像的像素為中心,並對每個內↘核值(稱為權重)與其當前對齊的像素執行乘法運算。這♂些乘法的總和給出了原始圖像像素的特定卷積∏結果。然後將內核移至下▓一個像素,並重復該過程。

                經過訓隨后恍然練的內核,2D卷積生成一個輸出結果圖像,突出顯示輸入圖像㊣ 的特定特征,例如垂直線,水平線,變化角度的「對角線和變化半徑的曲ぷ線。然一個魁梧後可以將這些特征輸入到其他處理層(包括其他2D卷積),然後可以將其標識為(通常在軟件中)為特定對象。

                因此,二維卷積處理不應被視為圖像識別的完整解決】方案,而應被視為╲處理操作鏈中的單個關鍵組件。

                1587775777189864.png

                圖1 單個Kernel進行2D卷積的☆動態示意圖

                乘法密度

                2D卷積的挑戰是所需的乘法數量,這就是MLP中專用的乘法器那把天使戰劍也拿去融合了陣列。對於AlexNet配置,每個內核為11×11= 121個權重值。但是,卷積實際々上是3D的,因為輸入圖像具有三層(RGB),因此一組內@ 核有121×3 = 363個乘法來產生單個鵬王又哪里知道輸出結果。AlexNet輸入圖像為〖227×227;但是,此圖像的stride為4(在計算之間內核移動了四個像素)。此過程導致輸出結他們還想再說什么果矩陣為54×54 = 2916個結果。因此,對於一幅圖像需要363×2916 = 1,058,508次乘法;即處理一■個圖像需要進行一百萬次以上的不累加運算卐。其中單個Kernel進行2D卷積的動態示ω 意圖如下:

                對於MLP_Conv2D,其設計旨在一次處理一幅圖像中的60個內核,單次執行使用了不少次了超過6000萬次乘法累加操作。

                1587775827463097.png

                圖2 單個MLP_Conv2D實例資源使●用

                MLP_Conv2D設計可以以750 MHz的頻︻率運行。單個MLP能夠在137 μs內對具有11×11內核的單個云夫人嗡227×227 RGB輸入圖像進○行卷積,相當於每秒15.4GOPS(包含乘和加)。 但一個MLP_Conv2D實例由60個並行運行的MLP構成,可以同時□ 對60個輸入圖像卐進行卷積,相當於924GOPS。 最後,將多達40個MLP_Conv2D實例化︾到單個器件中,每個實例都通過自己的NAP將數向來天苦笑據傳輸到GDDR6存儲器,從而實現了組合高達37 TOPS的性能-相當於每→秒處理28,8000張圖像(本設計Ψ 主要針對卷積核)。

                1587775867442282.png

                圖3 並行40個MLP_Conv2D實例資源使□用

                MLP_Conv2D圍繞MLP和BRAM塊功能而低下頭去設計,並使用◤它們各自的內部級聯走線。 同樣,NAP允許直接從外部存儲器路由數據互聯。這些功能可實現最小的附加邏▅輯或路由要求,利用率表如下:

                1587775909341329.png

                圖4 MLP_Conv2D框圖

                數據流:單個MLP

                每個MLP都有一個▲鄰近的BRAM。 在此⊙設計中BRAM用於存儲內核並將其多次傳遞到MLP。 初始化時,將從輸入NAP中讀取不同的內核,並將其寫入本體相應的BRAM。 BRAM在寫側配置為72位,而讀『取設置為144位。在操作期∞間,僅將96位用作內△核權重,即讀取為4個權重×3層×8位。初始◥圖像數據從NAP讀取到輸ㄨ入FIFO中,該輸入FIFO用於將圖像存儲為一系列行。盡管此輸入ζ 存儲器被列為FIFO,但仍可作為可重復讀取的FIFO,因為▓可以多次從中讀取行。該存儲器配置♀為144位寬,僅使用96位,由兩個BRAM72K組成。每個字由4個像素×3層×8位組成。初始化時,將讀取足夠的行№以匹配內核中的行數加上垂直跨步所需的行數。即

                Initial Lines read = FILTER_HEIGHT + STRIDE

                一旦加相信你也該知道結果載了初始數據和內核,便開始計算。

                從輸入FIFO中讀取第一條圖▼像行,並讀取與內核水○平大小匹配的圖像數◆據像素數量。在讀取這些像素≡時,將讀取匹配→的內核權重。MLP將這些96位流的每一個乘以12個int8值並累加結果。輸入FIFO前進麻二小心翼翼到第二行,重¤復此過程,直到內〖核的所有行都與輸入圖像左上¤角的適當像素相乘。在此過程中,MLP積累了結那都是上古仙寶果;現在,該結果是圖像與內核卷積的左上角的2D卷積。該結果以16位結果◥的形式從MLP輸出。重復此過∮程,輸入FIFO跨行超前STRIDE參數設置的像卐素數(對於當◢前設計,STRIDE固定為4)。在每個處理周一刀劃過期包括在內時,都會生成另一個々結果,直到水平地獲取了適當◣數量的結果為止。

                然後,將輸入FIFO下移STRIDE行數,然後重復該過程以生成輸入圖像中下╳一組線的卷積結果。當輸入FIFO向下移動☆時,不再需要FIFO中的初始◥行,因此與MLP計算並行時,將加載下一組還沒有達到劉沖光他們用於輸入圖像的STRIDE行。考慮外部存儲源的帶寬要求時,可以看到映像和內核僅從內存中讀∩取一次。然後,它們可以從各①自的BRAM中重新使用,從♂而減少了外部存儲器帶寬的總體負擔,其一陣陣黑色狂風陡然朝竹葉青轟然席卷而去過程參考圖表1。

                數據流:多個MLP

                MLP的一個顯著特點是能夠將數據和結果從一個MLP或BRAM級聯到№同一列中。 MLP_Conv2D通過將MLP及其關聯的BRAM放在列組中來利用這些★級聯路徑。在將BRAM加載到♂內核時,級聯路徑用←於將數據流水線傳輸到每個BRAM,並且使用BRAM塊地址模式選擇要寫入內核的BRAM。

                在何林也陡然睜開了眼睛計算過程中,輸入的圖像數據將在MLP的列中▽級聯,以便每個MLP在其神器有很多下一個鄰居之後的一個周期接※收到圖像數據】。同時,控制內一個青色核讀取的BRAM讀取地址以一個周期的延直接融入遲級聯到BRAM列中。這樣,每個MLP在其先前的№MLP之後一個周期接收相同的圖像數據和相同的內核讀取地↑址。每個MLP的計算∑差異在於,其關聯的BRAM將具有不道塵子頓時臉色一變同的內核數據。結果是一個圖像並行地與多個內核卷積。並行卷積的數量稱為BATCH。

                數據流:計算結果

                如前所述,每個MLP為內核和圖像朋友部分的每個卷積生成16位結果。

                MLP排列在16列中,因此從該列中生成一個256位字,該字由該列中每個△MLP的結果」組成。然後將此256位字寫入〗輸出NAP。 這葉紅晨緩緩落了下來種安排導致卷積結果作為同一圖像另一邊的圖層存儲在內存中;因此,當三層或RGB存儲在單個輸入字中時,匹配輸入字排列。

                然後,由於可以在◤完整的256位結果上的16個並行實例中執行激活功●能,因此該安⌒ 排允許將涉及的結果並行處理到激活層中。同樣,一旦256位聲音徹響而起結果通過輸出NAP寫回如今看來到存儲器中,則可以將結果讀@回到另一個2D卷積□電路中。

                1587776024309959.png

                圖5 MLP_Conv2D布局■示意圖

                布局

                在Speedster7t架構中,每個NAP對應32個MLP。該設計經過一種就是像我剛才所說優化,可使用兩一見是三號貴賓室出價個NAP,一個用於讀取,一個用於寫入,因此可以對①應64個MLP。

                但是,輸入和輸出FIFO需要兩個BRAM 72K存儲塊才能☆創建一個256位寬的組合煙霧過后存儲器。因此,這些存儲器將消耗64個可用位置中的四個用於數據I / O。

                設計被安排為使用與兩個NAP相關◥聯的四列MLP。但是,第一列和最後一列都◣使用14個MLP,剩下兩個MLP位置分別用於♂輸入和輸出FIFO。中間兩列使用所有16個可用的MLP。在平你還想跑嗎面圖中,各列的排列方式是使第一列(底部具有輸入FIFO存儲器)與NAP相鄰,以改善時序。

                下面顯示了一個實例,即使用了60個MLP(Batch=60)的設↘計實際布局圖(突出顯示了路她是準備消耗這第三波攻擊線):

                1587776041929850.png

                圖6 60個MLP布局圖

                在全芯片構▂建中使用40個實例時,盡力使每個實例都使用NAP與內雷劫雷劫存進行通信。結果,FMax仍能達到750MHz,並使用掉芯片中的》所有80個NAP以及94%的MLP和BRAM72K。

                1587776111732138.png

                圖7 2400個MLP布局圖

                評論


                相關推薦

                技術專區

                關閉