国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

MobileNetV2神經(jīng)網(wǎng)絡(luò)處理器的設(shè)計方案比較*

2021-02-03 04:08:12陳泳豪蕭嘉樂
計算機工程與科學(xué) 2021年1期
關(guān)鍵詞:方塊模擬器瓶頸

陳泳豪,蕭嘉樂,粟 濤

(中山大學(xué)電子與信息工程學(xué)院,廣東 廣州 510006)

1 引言

現(xiàn)如今,最新的移動終端電子設(shè)備往往會使用到神經(jīng)網(wǎng)絡(luò)處理器。諸如移動電話和平板電腦等消費類設(shè)備的更新周期短,其現(xiàn)行的產(chǎn)品策略是專注于一種成熟優(yōu)質(zhì)算法的硬件實現(xiàn),這樣可以使電路性能更好。作為專為移動端和嵌入式端深度學(xué)習(xí)應(yīng)用而設(shè)計的網(wǎng)絡(luò),MobileNet[1,2]在面對需高速響應(yīng)的批量預(yù)測需求時,能夠做到精度高、速度快,是移動終端中理想的神經(jīng)網(wǎng)絡(luò)算法。

Google團隊自2017年以來先后提出MobileNet的V1~V3 3個版本,而本文主要關(guān)注MobileNetV2(版本2)及其瓶頸模塊。文獻[3]針對MobileNetV2的實現(xiàn),設(shè)計了矩陣乘法引擎MME(Matrix Multiplication Engine),以及既可以進行逐點(Pointwise)卷積,也可以進行逐層(Depthwise)卷積的計算方塊結(jié)構(gòu)。文獻[4]針對特征圖(feature map)在片內(nèi)片外傳輸?shù)拇罅繒r間延遲,引入了新的計算思路,提出了卷積層融合(Layer Fusion)的思路。現(xiàn)有的加速器研究中,既有針對可分離卷積的專用結(jié)構(gòu)[5,6],也有動態(tài)可重構(gòu)加速器[7]方面的研究。

本文的創(chuàng)新點如下所示:本文將在卷積層融合、矩陣乘法引擎及其計算方塊結(jié)構(gòu)這2個現(xiàn)有設(shè)計之上進行創(chuàng)新和優(yōu)化,針對MobileNetV2中的瓶頸模塊,提出一個新的硬件加速器架構(gòu)設(shè)計,其具有根據(jù)瓶頸模塊位置不同,重新組織流水結(jié)構(gòu)和動態(tài)分配計算力的能力。新的架構(gòu)設(shè)計對應(yīng)著新的設(shè)計空間,其中有很多結(jié)構(gòu)參數(shù)對加速器的性能有巨大影響,而這些參數(shù)的選擇是一個問題。與現(xiàn)有優(yōu)化方式[8 - 12]更多關(guān)注循環(huán)展開(Unrolling)、儲存組織(Memory Organization)和量化(Quantization)等不同,本文關(guān)注Layer Fusion最佳深度、可配置方塊厚度等5個參數(shù)。這些參數(shù)的組合形成了上述的設(shè)計空間,而本文將在此空間內(nèi)尋找最優(yōu)的設(shè)計方案;同時也試圖在各參數(shù)對硬件表現(xiàn)的貢獻與影響上尋找規(guī)律與共性,以嘗試為以后的相關(guān)設(shè)計研究給予一些啟發(fā)。因此,與文獻[8]類似,本文更關(guān)注空間搜索式的頂層優(yōu)化。在方法上,本文采取軟件模擬器遍歷尋優(yōu)加硬件行為仿真驗證的探索方式。

2 由可配置方塊組成的流水作業(yè)結(jié)構(gòu)——“6Q結(jié)構(gòu)”

2.1 深度可分離卷積與線性瓶頸模塊

標(biāo)準(zhǔn)卷積行為在進行卷積操作時是在空間和通道2個維度同時進行的。MobileNetV1[1]引入了深度可分離卷積(Depthwise Separable Convolution),其關(guān)鍵是將空間和通道2個維度的卷積操作分開,進而形成了空間維度的逐層卷積和通道維度的逐點卷積2個部分。具體來說,它將標(biāo)準(zhǔn)卷積分成了2步:3×3的逐層卷積和1×1的逐點卷積。這種分解方式可以明顯地減少計算量。而MobileNetV2[2]則在此基礎(chǔ)上,為了彌補3×3的逐層卷積在低維空間提取特征效果較差的缺點,在逐層卷積前多加入了一個1×1的逐點卷積,來完成對卷積神經(jīng)網(wǎng)絡(luò)中的特征圖進行升維的任務(wù),于是形成了逐點卷積-逐層卷積-逐點卷積的結(jié)構(gòu),并且在第2個逐點卷積的末尾把激活函數(shù)ReLU6去掉,此結(jié)構(gòu)被稱為反轉(zhuǎn)殘差模塊及線性瓶頸結(jié)構(gòu)(下文簡稱為瓶頸模塊)。這一基本模塊使MobileNetV2變得更高效,準(zhǔn)確率也提高了。整個MobileNetV2網(wǎng)絡(luò)由多個這樣的瓶頸模塊組成。

2.2 卷積層融合與計算方塊的引入

為了解決神經(jīng)網(wǎng)絡(luò)加速器中需要將特征圖在片外存儲空間和片上緩沖區(qū)(Buffer)之間頻繁地傳輸,導(dǎo)致乘加單元空閑,進而造成效率低下的問題,文獻[4]充分利用了卷積神經(jīng)網(wǎng)絡(luò)特征圖之間在平面方向嚴(yán)格的局部區(qū)域?qū)?yīng)關(guān)系,提出了卷積層融合(Layer Fusion)的思路,通過創(chuàng)建相鄰卷積層的對應(yīng)局部區(qū)域的融合關(guān)系,使得使用跨卷積層的數(shù)據(jù)流成為可能。具體來說,針對每一次卷積計算,該方法首先對輸入特征圖從平面方向進行等面積區(qū)域劃分(不影響通道方向);然后直接把該局部區(qū)域作卷積運算得到輸出特征圖,并將其傳給下一次卷積;以此類推,直到計算完平面方向的全部區(qū)域。其中產(chǎn)生的特征圖緩存在Kb級別,同時也避免了片內(nèi)片外的傳輸延遲??紤]到MobileNetV2的瓶頸模塊對特征圖先升維再降維,形狀類似一個紡錘體,頭尾的通道數(shù)少,中間的通道數(shù)多,容易造成存取的時間消耗,所以非常適合套用卷積層融合的思路。

但是,瓶頸模塊中逐點卷積和逐層卷積是2種不同類型的卷積,若要在加速器中利用卷積層融合,則還需要乘法陣列的適配。文獻[3]提出了一種可以自由切換于1×1的逐點卷積和3×3的逐層卷積之間的乘法陣列結(jié)構(gòu)(Multiplier Array),以下將其稱為“計算方塊”,其厚度是32層,每1個時鐘周期可以執(zhí)行3×3×32=288次乘法運算。計算方塊包含在矩陣乘法引擎(MME)結(jié)構(gòu)中,矩陣乘法引擎能夠執(zhí)行MobileNetV2涉及的所有CNN運算。MME相當(dāng)于常規(guī)CNN加速器的處理單元PE(Processing Element)陣列設(shè)計[10],具體來說,每一個MME中除了核心部分計算方塊以外,還含有32片行緩沖區(qū)(每一片對應(yīng)著計算方塊的1個通道)、1個加法樹塊、1個歸一化塊、1個ReLU激活函數(shù)塊和1個池化計算部分。在不同的卷積類型下,行緩沖區(qū)可對應(yīng)地為計算方塊輸入數(shù)據(jù),加法器樹可對應(yīng)地對乘積求和。文獻[3]配置了4個MME,也就是4個計算方塊。

2.3 卷積層融合與可配置方塊組成的流水作業(yè)結(jié)構(gòu)

在硬件加速器設(shè)計上采用卷積層融合和計算方塊的思路,以充分發(fā)揮它們的優(yōu)點。在不增加乘法器需求的條件下,本文將嘗試把通道數(shù)目減少,以此來獲得更多方塊。針對不同的瓶頸模塊、不同的卷積行為,設(shè)計不同的方塊分配方法,目的是使得總耗時最少。也就是說,這些方塊不僅如文獻[3]那樣擁有卷積功能的可配置性,而且還有獨立工作和組合工作的可配置性。以下將這些方塊稱為“可配置方塊”。當(dāng)然,為保證其計算效果,亦需為其配置上文所述的MME內(nèi)其他計算模塊內(nèi)容。

在配置了足夠多方塊以后,事實上就已經(jīng)把卷積層融合這一長過程按照不同的卷積層分成了多個子過程,其中,1個子過程就是卷積層融合的1個卷積層。容易發(fā)現(xiàn),卷積層融合中上一子過程的結(jié)果是下一子過程的前提。而不同批次卷積層融合的同一位置處的子過程與子過程之間呈現(xiàn)并行關(guān)系,這就使得計算部件有了復(fù)用的可能性。于是,在配置了一定數(shù)量的可計算方塊的前提下,可以考慮將卷積層融合配置為一種“流水作業(yè)”實現(xiàn)結(jié)構(gòu),這能夠進一步大幅提升加速器性能。下面將參與卷積層融合的卷積層稱為融合型,將不參與的卷積層稱為獨立型,并將參與卷積層融合的且彼此相連的多個卷積層看作一個整體,稱為一個融合卷積群。

融合型卷積與獨立型卷積其實各有優(yōu)劣,針對MobileNetV2的不同網(wǎng)絡(luò)位置,應(yīng)該用不同的卷積策略,以揚長避短。容易發(fā)現(xiàn),計算方塊執(zhí)行逐點卷積比逐層卷積更耗時。假設(shè)只用一個計算方塊,并令可配置方塊的厚度Qc=32,在17個瓶頸模塊中,pointwise_conv_1(逐點卷積)、depthwise_conv(逐層卷積)、pointwise_conv_2(逐點卷積)之間的時鐘消耗比較如圖1所示。

Figure 1 Comparison of clock consumption of convolutions in bottleneck圖1 瓶頸模塊內(nèi)部3次卷積時鐘消耗比較

針對這個情況,有2種思路:(1) 既然可配置方塊數(shù)量充足,可以通過主動規(guī)劃可配置方塊的分配方式,在融合卷積群里,為逐點卷積多配置一些計算方塊,逐層卷積相應(yīng)地少配置點,盡量拉平流水作業(yè)結(jié)構(gòu)內(nèi)不同流水級之間的耗時差異,使融合卷積群的總計算耗時最少;(2) 某些卷積可以用獨立型卷積,因為這意味著沒有流水級,可以把所有的可配置方塊都分配給它們。

此外,在圖1中也側(cè)面反映了不同位置瓶頸模塊處需要的運算量差異。在網(wǎng)絡(luò)的起始和結(jié)尾處附近的運算量是相對較大的。

2.4 “6Q結(jié)構(gòu)”及探究目的

本文將重點考慮上述“流水作業(yè)”的加速器結(jié)構(gòu)的具體設(shè)計參數(shù)的取優(yōu)問題。將MobileNetV2從前往后,每2個瓶頸模塊作為1組進行考慮。MobileNetV2中一共有17個瓶頸模塊,本文討論前面16個,將其分成8組。在每組瓶頸模塊中去探究:可配置方塊應(yīng)該設(shè)置多厚的厚度;什么地方應(yīng)該用融合型卷積,什么地方應(yīng)該用獨立型卷積,且對于使用融合型卷積的層,應(yīng)做幾層深度流水作業(yè)結(jié)構(gòu)最優(yōu),以及是否應(yīng)該設(shè)計“打通”2個瓶頸模塊的卷積層融合;在該種卷積層融合方式下,對應(yīng)網(wǎng)絡(luò)不同位置的瓶頸模塊,應(yīng)該把特征圖分割成多少等份為最優(yōu);在該種卷積層融合方式、該種特征圖分割方法下,應(yīng)該為每一層的卷積分配多少可配置方塊為最優(yōu)。

這些需要探索的問題,組成了本文所述的設(shè)計空間。為尋找此設(shè)計空間內(nèi)的最優(yōu)參數(shù)組合,即最優(yōu)的設(shè)計方案,并探索背后的規(guī)律,本文提出一個分析框架——“6Q結(jié)構(gòu)”:

(1) 以2個瓶頸模塊(即包含6次卷積)為1組進行考慮,命名為BN2。設(shè)每一次卷積為Q,于是有Q1、Q2、Q3、Q4、Q5、Q6。顯然,Q1、Q3、Q4、Q6必然是1×1 逐點卷積,Q2、Q5必然是3×3逐層卷積。在BN2中,設(shè)定任意2~6層可以融合起來??紤]到計算資源有限,所以在此不考慮將更多層融合起來的設(shè)計。

(2) 每一個Q都存在4種工作可能,分別是作為融合型卷積的起始層、中間層、結(jié)尾層或作為獨立型卷積層。

(3) 在所有方案中所有可配置方塊的層數(shù)之和均為統(tǒng)一固定值,本文設(shè)為120。

(4) 可配置方塊彼此之間的厚度是相同的,以Qc表示(在同一設(shè)計方案內(nèi)Qc為單一固定值)??膳渲梅綁K總量為Q_all/Qc。在Q作為獨立型卷積時,全部可配置方塊都為它服務(wù)。在Q作為融合型卷積時,需探索可配置方塊的最優(yōu)分配方式。

2.5 “6Q結(jié)構(gòu)”鎖定的設(shè)計空間

以下詳細(xì)解釋各參數(shù)的含義,這些參數(shù)之間的可能性組合,組成了本文所述的設(shè)計空間。

(1)Qc:每個方塊的厚度(包含多少層3×3乘法器層)。方塊厚度越厚,其1個時鐘周期能完成的乘法數(shù)量Qc*9就越大;相應(yīng)地,因為所有方塊的“總厚度”固定(120層),因此在該Qc配置下的方塊總數(shù)量Q_all(=120/Qc) 就會越少。在設(shè)計空間中,給予了Qc7個值,分別為4,6,8,10,12,15,20。注意到它們都是120的公約數(shù)。

(2)BN2:如前所述,BN2的取值是0~7,也就是說考慮8個BN2,即前16個瓶頸模塊,如表1所示。在MobileNetV2中,不同的瓶頸模塊有著不同的長寬、不同的輸入輸出通道數(shù)、不同的升維系數(shù),總體而言,如同其它卷積神經(jīng)網(wǎng)絡(luò)一樣,特征圖的長寬是逐漸縮小的,而通道數(shù)是逐漸增加的。于是,BN2的取值指定了6Q結(jié)構(gòu)正在網(wǎng)絡(luò)的哪一段位置進行計算,也就綁定了MobileNetV2不同位置處的瓶頸模塊的網(wǎng)絡(luò)結(jié)構(gòu)參數(shù)。

Figure 2 Allocation diagram of configurable blocks under different coefficients of Fuse and Q_num圖2 Fuse系數(shù)、Q_num系數(shù)與可配置方塊的分配示意圖(以32種融合方案中的2種來舉例)

(4)tile:tile的意義是應(yīng)該把特征圖分割成多少份為宜。本文采用的分割方法是將正方形的平面分割成一個個等寬的長方形,長方形的長為M,寬為(M/tile)。例如,對于長寬為56×56的特征圖,假如tile=4,那么切分完后,每一份的長寬變?yōu)?56/4)×56=14×56。同為一融合卷積群的層必然是按照同一種分法去切分的,所以它們共享一個相同的tile參數(shù),如圖3所示。tile行為只在xy平面進行切分,不影響通道方向。每個BN2下可選擇的tile參數(shù)組成一個數(shù)組tile_poss[](tilepossibility),如表1所示。對應(yīng)著MobileNetV2的網(wǎng)絡(luò)結(jié)構(gòu),不同BN2處的tile參數(shù)不盡相同,M越大,可供選擇的tile參數(shù)就相對越大,目的是為了更好地探索怎樣選取tile更合適。另外需要說明的是,例如若其寬為7時,除以2不能得到整數(shù),所以實際操作會先為其補一行0,使得寬變?yōu)?,再去除以2。

Table 1 Network structure parameters of MobileNetV2 and the definition of BN2 and tile_poss表1 MobileNetV2的網(wǎng)絡(luò)結(jié)構(gòu)參數(shù)及BN2和tile_poss的定義

Figure 3 Convolution group of Layer Fusion圖3 融合卷積群

(5)Q_num:對于每一個BN2而言,Q_num也為一個含有6個元素的數(shù)組,元素從前到后分別對應(yīng)Q1~Q6。Q_num的含義是,Q1~Q6中的每一個在工作時,有多少個可配置方塊能夠被分配給它進行計算。對于參與卷積層融合的層而言,它們中的每層(即每個Q)都將分配到Q_all個方塊中的一部分(至少1個),具體的分配數(shù)量將影響到融合型卷積層的計算時間。因此,Q_num受到Qc和Fuse參數(shù)的制約。對于獨立型卷積層而言,既然它們都是本層獨立計算完畢才到下一層,所以它們將被分配到所有方塊,也就是Q_all個方塊。

(6)bandwidth_fm和bandwidth_w:分別代表特征圖緩存的傳輸帶寬和權(quán)重乒乓緩存的傳輸帶寬。二者在模擬中將取相同帶寬,且均采用128位或64位AXI總線。

在表1中,M、N、T、P、S是MobileNetV2的網(wǎng)絡(luò)結(jié)構(gòu)參數(shù)。M是特征圖平面方向的長寬,例如112是指112×112。N是特征圖的通道數(shù),在每個瓶頸模塊里,輸入第1次逐點卷積、輸入逐層卷積、輸入第2次逐點卷積的特征圖的通道深度分別是N、TN、TN。T是升維系數(shù)。P是輸出特征圖的通道數(shù)。S是stride系數(shù)。每個BN2下可選擇的tile參數(shù)組成1個數(shù)組tile_poss[]。

圖4展示了實現(xiàn)處于融合卷積群這一狀態(tài)的硬件架構(gòu)。圖4中只示意地畫出了4個Q的情況,但如前文所述,實際上圖中的所有可配置方塊資源處可以動態(tài)地為計算方塊區(qū)分配出1~6個Q。每一個Q與其前、后緊連著的分塊特征圖緩存(Tile Feature Map Buffer)形成緊密的數(shù)據(jù)傳遞關(guān)系,三者可以看作一個小整體。圖4中包含了4個小整體的情況,它們也就是抽象出來的4個流水級。

Figure 4 Architecture for the convolution group of Layer Fusion圖4 融合卷積群狀態(tài)下的硬件架構(gòu)圖

3 軟件模擬器在設(shè)計空間中的尋優(yōu)

3.1 軟件模擬器的作用與價值

軟件模擬器綜合考慮以上的Qc、BN2、Fuse、tile、Q_num、bandwidth_fm、bandwidth_w等參數(shù),結(jié)合MobileNetV2的網(wǎng)絡(luò)結(jié)構(gòu),通過用于計算時鐘消耗的算法,以每個BN2為單位,計算理論上的時鐘消耗。

用數(shù)學(xué)方式表述如下:以p代表設(shè)計空間中的所有點,s代表設(shè)計空間中的一個具體的點,即s∈p。將上述參數(shù)的組合設(shè)為輸入X,于是有Xp,Xs;把以BN2為時鐘消耗分析單元的算法作為函數(shù)F(x);設(shè)Y代表輸出,于是有Yp,Ys,由于這些參數(shù)的組合可能性非常多,因此設(shè)計空間比較大,即p非常大。軟件模擬器首先將會遍歷此設(shè)計空間內(nèi)所有的可能性p,將這些可能性的參數(shù)組合作為輸入Xp,計算其對應(yīng)的輸出Yp=F(Xp)。然后在Yp中按照控制變量法,選取一系列最優(yōu)結(jié)果Ys=F(Xs)。這些點s對應(yīng)的Xs所組成的集合 {Xs|s∈p且Ys=F(Xs)為控制變量下的一系列最優(yōu)解},也就是最優(yōu)參數(shù)組合所組成的集合,本文將從其中提取有參考價值的設(shè)計規(guī)律。

軟件模擬器采用Python實現(xiàn),其主要任務(wù)是大批量計算所有可能的參數(shù)組合下對應(yīng)的所有結(jié)果,并進行數(shù)據(jù)分析。為了驗證軟件模擬器計算時鐘消耗算法的正確性,本文也設(shè)計了硬件行為仿真器,其目的是驗證軟件模擬器的算法邏輯是否正確,保證軟件模擬器結(jié)論的有效性。硬件行為仿真器的仿真結(jié)果與討論將在下一節(jié)詳細(xì)敘述。

3.2 F(X)的算法實現(xiàn)

3.2.1 融合型流水作業(yè)結(jié)構(gòu)

利用流水線的時間消耗計算公式:設(shè)每個任務(wù)最長段需要時間tmax,每個融合卷積群經(jīng)過tile分割后的1個分塊作為1個批次,完成1批融合卷積群分塊所需的時間為t,完成n批融合卷積群分塊所需的時鐘消耗T-pipeline為:

T-pipeline=(n-1) *tmax+t

(1)

Figure 5 Pipeline diagram of Q units圖5 Q單元流水作業(yè)示意圖

將融合型卷積的單個融合卷積群分塊批次的特征圖的輸入時間、輸出時間分別用Tfm_i、Tfm_o表示。將融合卷積群中的每一個Q執(zhí)行時的時鐘消耗依次用T_QI、T_QII、T_QIII、…、T_QLast表示。顯然,在實際實現(xiàn)邏輯上,需要把單個融合卷積群分塊批次的特征圖的輸入部分與第1個Q綁定,輸出部分與最后1個Q綁定,否則流水作業(yè)無法正常工作。此外,為保證特征圖信息不會丟失,在將其輸入計算單元進行卷積計算時,需要額外把緊貼著特征圖切割線的那一行也數(shù)據(jù)也輸入進去。

因此,綜合考慮式(1)和融合型的特征圖傳輸特點,計算單個融合卷積群內(nèi)部所有融合卷積群分塊批次的總時間消耗,即單個融合卷積群實際上的總時鐘消耗(用Tlf表示)的計算式為:

Tlf=(tile-1) * max[(Tfm_i+T_QI),

T_QII,…,(T_QLast+Tfm_o)]+

(Tfm_i+T_QI)+T_QII+…+(T_QLast+Tfm_o)

(2)

Q單元流水作業(yè)示意圖如圖5所示,通過此圖可以直觀地理解式(2)。

3.2.2 獨立型卷積

事實上,無論將獨立型卷積的計算分成多少批,對時間花費并不會產(chǎn)生本質(zhì)的影響。即使將一個獨立卷積行為分成了n批進行計算,由于計算行為是簡單的串聯(lián)關(guān)系,并沒有并行的流水行為,若忽略交接處的O(n)級別的時鐘誤差,其時鐘總消耗與n=1的情況下并無差異。雖然事實上對于加速器的實現(xiàn)來說n>1,但為了便于計算,本文將采用n=1的假設(shè)來進行軟件模擬。所以,對于一個獨立型卷積層,其時鐘消耗為:

T_solo=Tfm_i_solo+T_Q_solo+Tfm_o_solo

(3)

其中,Tfm_i_solo和Tfm_o_solo代表特征圖的片內(nèi)外傳輸時間,T_Q_solo是Q執(zhí)行時的時鐘消耗。

3.2.3 可配置方塊的計算邏輯

Q1、Q3、Q4、Q6是1×1逐點卷積,Q2、Q5是3×3逐層卷積??膳渲梅綁K針對給予的特征圖進行卷積,需要做完3層運算遍歷,按照優(yōu)先級分別為核遍歷、通道遍歷和平面遍歷,如表2所示,其中Ceil()函數(shù)是指向上取整函數(shù)。設(shè)定其進行逐點卷積的時候,Q_num個方塊負(fù)責(zé)Q_num條不同的1×1卷積核;進行逐層卷積的時候,Q_num個方塊一起做平面方向遍歷。因此,卷積核數(shù)量除以同時參與的可配置方塊數(shù)量Q_num可得到核遍歷數(shù),其中,由于逐層卷積本身的特性,不需要核遍歷;特征圖通道數(shù)除以可配置方塊厚度Qc可得到通道遍歷數(shù);至于平面方向的遍歷,逐層卷積逐點跳動或隔點跳動,逐點卷積則一次可計算特征圖中的9個點。若可配置方塊每跳動一個位置為單個操作,則3層遍歷相乘得到運算遍歷的總操作量,再乘上單個操作的耗時clk_param,可得到對應(yīng)卷積種類的計算時間。clk_param需要看單個操作的設(shè)計,例如按照取1個時鐘周期、乘1個時鐘周期、加法樹1個時鐘周期、存數(shù)據(jù)1個時鐘周期來算,則clkparam=4。

Table 2 Traversal operation logic for convolutions using configurable blocks表2 利用可配置方塊對Pointwise和Depthwise 2種類型卷積的遍歷運算邏輯

3.2.4 權(quán)重乒乓緩存輸入輸出的計算規(guī)則

除了特征圖,卷積運算前需要先從片外存儲中獲取的還有權(quán)值參數(shù)。本文采用權(quán)重乒乓緩存輸入輸出的方案[3,8],其目的是使權(quán)重的片外輸入不會成為速度的瓶頸。將緩存(Buffer)分成左右2個功能完全一樣但行為彼此互補的子緩存區(qū),當(dāng)左邊的權(quán)值緩沖區(qū)輸出用于卷積的數(shù)據(jù)時,右邊的權(quán)值緩沖區(qū)將從外部存儲器中加載數(shù)據(jù),以供下一步使用,以此類推。

可配置方塊在特征圖中的遍歷方式?jīng)Q定了每次更新權(quán)值數(shù)據(jù)之間的間隔時間。若此間隔時間大于權(quán)值數(shù)據(jù)的傳輸時間,則不會被后者拖慢;否則,在遍歷過程中,方塊將因為要等待權(quán)值的到位而不能工作。軟件模擬器將會考慮這一條件。權(quán)值數(shù)據(jù)在可配置方塊中的裝配方法如下所示:

(1)逐層卷積:Q_num(在獨立型卷積中,Q_num即Q_all)個裝載有相同權(quán)值內(nèi)容的可配置方塊同時做平面遍歷。方塊每步跳動1格。平面遍歷完畢時,更新權(quán)值數(shù)據(jù)。每次更新的權(quán)值數(shù)據(jù)量為Qc* 9。

(2)逐點卷積:在一個可配置方塊里裝的數(shù)據(jù),是將同一條核的Qc長度部分截取并重復(fù)3*3=9次而得到的。不同方塊對應(yīng)不同核。方塊每步跳動3格。每次更新的權(quán)值數(shù)據(jù)量為Q_num*Qc。

3.3 模擬結(jié)果

軟件模擬器遍歷了設(shè)計空間中一共75 196 680種設(shè)計,輸出結(jié)果為csv格式數(shù)據(jù)(文本型表格),遍歷輸出結(jié)果有36.2 GB。篇幅所限,僅展示利用軟件模擬器在bandwidth_fm=bandwidth_w=64位情況下所得的Xs集,如表3所示。

3.4 數(shù)據(jù)分析與總結(jié)

通過對結(jié)果數(shù)據(jù)的分析,本文總結(jié)得出以下結(jié)論:

(1) 最佳流水深度與BN2的值、帶寬、Qc厚度均有關(guān)。總體而言,BN2越小、帶寬越小、Qc越小,最佳流水深度越大。具體來說,對于BN2=0,帶寬為64時,當(dāng)Qc<10時,最佳流水方案是6層深的流水,即以每2個瓶頸模塊為1個融合卷積群,而當(dāng)Qc≥10時,以每個瓶頸模塊為1個融合卷積群為最佳;帶寬為128時,較小的Qc同樣偏好6層深的流水,中等Qc(Qc=8,10,12)偏好以每個瓶頸模塊為1個融合卷積群,較大的Qc(Qc=15,20),則偏好Fuse=[3,2,1,3,1,0]的方案。緊接著的BN2(BN2=1,2),帶寬為64時,偏好于以每個瓶頸模塊為1個融合卷積群,帶寬為128時,偏好2層深的流水搭配獨立型卷積。在BN2較大的地方(BN2=3,4,5,6),2層深的流水搭配獨立型卷積的表現(xiàn)是最佳的,普遍比3層深度好。在BN2最大的地方(BN2=7),就不適合進行卷積層融合了,獨立型卷積表現(xiàn)最佳??傮w而言,在特征圖的長寬較大、通道較淺的地方,適合流水結(jié)構(gòu);在特征圖的長寬特別小、通道特別深的地方,不適合流水結(jié)構(gòu)。

Table 3 Parts of Xs set given by software simulator (bandwidth_fm=bandwidth_w=64)表3 軟件模擬器所得Xs集的部分結(jié)果 (bandwidth_fm=bandwidth_w=64)

(2) 最優(yōu)的tile參數(shù)一般為能被M(特征圖寬度)整除的最大二次冪。

(3) 如前文所預(yù)料,對于Q_num系數(shù),逐點卷積需要的可配置方塊數(shù)量確實都大于逐層卷積的,具體的數(shù)量配置可參考圖5。

(4) 在2種帶寬下,Qc對8個BN2總耗時的影響如圖6所示。使用全獨立型卷積(即Fuse=[0,0,0,0,0,0])的結(jié)果作為對照,可以看出卷積層融合對減少總耗時的貢獻。在Qc研究范圍內(nèi),總耗時隨Qc增加呈現(xiàn)先降后升的趨勢。在每一組情況下,Qc=8均表現(xiàn)為最優(yōu)的厚度。

Figure 6 Relationship between total time consumption and Qc圖6 總耗時與Qc的關(guān)系

(5) 流水作業(yè)結(jié)構(gòu)的緩存需求與流水深度(Fuse系數(shù))、tile、BN2、數(shù)據(jù)精度均有關(guān)。最大需求處的緩存需求量即為需要為加速器設(shè)置的緩存大小。數(shù)據(jù)精度為int8下,根據(jù)計算,對于權(quán)重乒乓緩存,最大需求出現(xiàn)在BN2=7,當(dāng)Fuse=[0,0,0,0,0,0],tile=[1,1,1,1,1,1],需求為158 Kb;對于特征圖,最大需求出現(xiàn)在BN2=0處,當(dāng)Fuse=[3,2,2,2,2,1],tile=[16,16,16,16,16,16],需求為3.5 Mb。如采用其他精度,只需把緩存需求乘以對應(yīng)的擴大倍數(shù)即可。與現(xiàn)有設(shè)計[3]相比,大大減少了對特征圖緩存的需求。

4 硬件行為仿真模擬器

4.1 行為仿真的功能

所謂行為仿真,就是指按照實際加速器的流水邏輯設(shè)計一個硬件行為模擬器,這個行為模擬器的流水作業(yè)行為與實際的加速器是一樣的,但是不會作實際的卷積計算,所以其目的只是從時間層面更實際地去模仿實際加速器的用時。把卷積的計算遍歷替換為計數(shù)器的計數(shù),卷積每個遍歷循環(huán)需要多少個時鐘周期,就讓計數(shù)器記錄多少個時鐘周期,這樣行為仿真就可以在行為上、用時上都較為充分地去模仿實際的加速器。

行為仿真有2個功能:其一是驗證軟件仿真算法的正確性;其二是針對硬件具體實現(xiàn)代碼可以觀察具體的握手信號延遲。不同的代碼邏輯寫法會有不一樣的握手信號延遲差異,它由具體實現(xiàn)決定。在寫出具備實際意義的握手信號后,將硬件仿真得到的誤差值反饋給軟件模擬器,假如消除該誤差后,二者幾乎一致,則可以認(rèn)為軟件模擬器能夠很好地模擬出硬件行為仿真器的行為與時間消耗,也能夠說明實驗數(shù)據(jù)的實用性。

4.2 行為仿真結(jié)果

行為仿真模擬了Fuse=[3,2,1,3,2,1]和Fuse=[3,1,0,0,3,1]下的2系列方案。表4展現(xiàn)bandwidth_fm=bandwidth_w=128位、數(shù)據(jù)精度為int8下的部分行為仿真結(jié)果。經(jīng)過代碼對比,發(fā)現(xiàn)軟件模擬器與硬件行為仿真器結(jié)果的差值,只是tile系數(shù)、Fuse系數(shù)和獨立型卷積的分批數(shù)量n(見3.2.2)這3者的函數(shù),與網(wǎng)絡(luò)結(jié)構(gòu)參數(shù)M、N、T、P、S或Q_num等其他參數(shù)均無關(guān),這說明了該差值正是握手信號延遲差異的積累。在消除該差值后,軟件模擬器的計算結(jié)果與硬件模擬器均可以做到完全一致。這驗證了軟件仿真算法的有效性。

5 結(jié)束語

本文針對MobileNetV2的硬件設(shè)計方案,結(jié)合

Table 4 Results comparison between software simulator and hardware behavior simulator (clks)表4 軟件模擬器與硬件行為仿真器的結(jié)果比較 (clks)

卷積層融合和可配置方塊,提出一個可以根據(jù)瓶頸模塊位置不同而重新組織流水結(jié)構(gòu)及動態(tài)分配計算力的新加速器架構(gòu)設(shè)計,并針對其設(shè)計空間提出了“6Q結(jié)構(gòu)”的探索框架。經(jīng)過對參數(shù)設(shè)計空間p的遍歷,得到了最優(yōu)參數(shù)集Xs,并總結(jié)了其設(shè)計規(guī)律。針對提出的設(shè)計空間,本文的結(jié)論是,Qc=8為研究范圍內(nèi)最優(yōu)的可配置方塊厚度;最優(yōu)的tile參數(shù)一般為能被M(特征圖寬度)整除的最大二次冪;隨著特征圖的長寬減小、通道變長,最優(yōu)的流水結(jié)構(gòu)深度由深變淺。與現(xiàn)有的同類加速器設(shè)計相比,融合型卷積搭配獨立型卷積的方案可以在速度和緩存需求之間取得一個很好的平衡。此外,對于類似的較大的設(shè)計空間,本文建議采用軟件模擬加硬件行為仿真驗證的手段,十分高效。本設(shè)計將為類似的硬件實現(xiàn)提供啟發(fā)與幫助。在今后的工作中,可以將本文已有的思路適當(dāng)發(fā)散,進行更多與處理器自動設(shè)計相關(guān)的研究。

猜你喜歡
方塊模擬器瓶頸
方塊村(1)
旋轉(zhuǎn)吧!方塊!
有多少個方塊
了不起的安檢模擬器
不一樣的方塊橋
盲盒模擬器
劃船模擬器
突破霧霾治理的瓶頸
突破瓶頸 實現(xiàn)多贏
動態(tài)飛行模擬器及其發(fā)展概述
隆回县| 秭归县| 贵溪市| 鄂托克前旗| 浪卡子县| 四平市| 远安县| 恭城| 化隆| 大冶市| 深州市| 镇远县| 车险| 界首市| 榆中县| 抚松县| 平泉县| 屏南县| 赣州市| 固阳县| 汉沽区| 蓝田县| 马山县| 辰溪县| 丹东市| 工布江达县| 利川市| 墨江| 利辛县| 长白| 繁昌县| 曲麻莱县| 正阳县| 龙川县| 南涧| 鄂伦春自治旗| 格尔木市| 纳雍县| 翁源县| 赞皇县| 宁晋县|