999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

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

2021-02-03 04:08:12陳泳豪蕭嘉樂
關(guān)鍵詞:特征融合設(shè)計(jì)

陳泳豪,蕭嘉樂,粟 濤

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

1 引言

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

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

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

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

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

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

2.2 卷積層融合與計(jì)算方塊的引入

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

(2)BN2:如前所述,BN2的取值是0~7,也就是說考慮8個(gè)BN2,即前16個(gè)瓶頸模塊,如表1所示。在MobileNetV2中,不同的瓶頸模塊有著不同的長(zhǎng)寬、不同的輸入輸出通道數(shù)、不同的升維系數(shù),總體而言,如同其它卷積神經(jīng)網(wǎng)絡(luò)一樣,特征圖的長(zhǎng)寬是逐漸縮小的,而通道數(shù)是逐漸增加的。于是,BN2的取值指定了6Q結(jié)構(gòu)正在網(wǎng)絡(luò)的哪一段位置進(jìn)行計(jì)算,也就綁定了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)該把特征圖分割成多少份為宜。本文采用的分割方法是將正方形的平面分割成一個(gè)個(gè)等寬的長(zhǎng)方形,長(zhǎng)方形的長(zhǎng)為M,寬為(M/tile)。例如,對(duì)于長(zhǎng)寬為56×56的特征圖,假如tile=4,那么切分完后,每一份的長(zhǎng)寬變?yōu)?56/4)×56=14×56。同為一融合卷積群的層必然是按照同一種分法去切分的,所以它們共享一個(gè)相同的tile參數(shù),如圖3所示。tile行為只在xy平面進(jìn)行切分,不影響通道方向。每個(gè)BN2下可選擇的tile參數(shù)組成一個(gè)數(shù)組tile_poss[](tilepossibility),如表1所示。對(duì)應(yīng)著MobileNetV2的網(wǎng)絡(luò)結(jié)構(gòu),不同BN2處的tile參數(shù)不盡相同,M越大,可供選擇的tile參數(shù)就相對(duì)越大,目的是為了更好地探索怎樣選取tile更合適。另外需要說明的是,例如若其寬為7時(shí),除以2不能得到整數(shù),所以實(shí)際操作會(huì)先為其補(bǔ)一行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:對(duì)于每一個(gè)BN2而言,Q_num也為一個(gè)含有6個(gè)元素的數(shù)組,元素從前到后分別對(duì)應(yīng)Q1~Q6。Q_num的含義是,Q1~Q6中的每一個(gè)在工作時(shí),有多少個(gè)可配置方塊能夠被分配給它進(jìn)行計(jì)算。對(duì)于參與卷積層融合的層而言,它們中的每層(即每個(gè)Q)都將分配到Q_all個(gè)方塊中的一部分(至少1個(gè)),具體的分配數(shù)量將影響到融合型卷積層的計(jì)算時(shí)間。因此,Q_num受到Qc和Fuse參數(shù)的制約。對(duì)于獨(dú)立型卷積層而言,既然它們都是本層獨(dú)立計(jì)算完畢才到下一層,所以它們將被分配到所有方塊,也就是Q_all個(gè)方塊。

(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是特征圖平面方向的長(zhǎng)寬,例如112是指112×112。N是特征圖的通道數(shù),在每個(gè)瓶頸模塊里,輸入第1次逐點(diǎn)卷積、輸入逐層卷積、輸入第2次逐點(diǎn)卷積的特征圖的通道深度分別是N、TN、TN。T是升維系數(shù)。P是輸出特征圖的通道數(shù)。S是stride系數(shù)。每個(gè)BN2下可選擇的tile參數(shù)組成1個(gè)數(shù)組tile_poss[]。

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

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

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

3.1 軟件模擬器的作用與價(jià)值

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

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

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

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

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

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

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

(1)

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

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

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

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 獨(dú)立型卷積

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

T_solo=Tfm_i_solo+T_Q_solo+Tfm_o_solo

(3)

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

3.2.3 可配置方塊的計(jì)算邏輯

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

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

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

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

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

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

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

3.3 模擬結(jié)果

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

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

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

(1) 最佳流水深度與BN2的值、帶寬、Qc厚度均有關(guān)。總體而言,BN2越小、帶寬越小、Qc越小,最佳流水深度越大。具體來說,對(duì)于BN2=0,帶寬為64時(shí),當(dāng)Qc<10時(shí),最佳流水方案是6層深的流水,即以每2個(gè)瓶頸模塊為1個(gè)融合卷積群,而當(dāng)Qc≥10時(shí),以每個(gè)瓶頸模塊為1個(gè)融合卷積群為最佳;帶寬為128時(shí),較小的Qc同樣偏好6層深的流水,中等Qc(Qc=8,10,12)偏好以每個(gè)瓶頸模塊為1個(gè)融合卷積群,較大的Qc(Qc=15,20),則偏好Fuse=[3,2,1,3,1,0]的方案。緊接著的BN2(BN2=1,2),帶寬為64時(shí),偏好于以每個(gè)瓶頸模塊為1個(gè)融合卷積群,帶寬為128時(shí),偏好2層深的流水搭配獨(dú)立型卷積。在BN2較大的地方(BN2=3,4,5,6),2層深的流水搭配獨(dú)立型卷積的表現(xiàn)是最佳的,普遍比3層深度好。在BN2最大的地方(BN2=7),就不適合進(jìn)行卷積層融合了,獨(dú)立型卷積表現(xiàn)最佳。總體而言,在特征圖的長(zhǎng)寬較大、通道較淺的地方,適合流水結(jié)構(gòu);在特征圖的長(zhǎng)寬特別小、通道特別深的地方,不適合流水結(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ù)料,對(duì)于Q_num系數(shù),逐點(diǎn)卷積需要的可配置方塊數(shù)量確實(shí)都大于逐層卷積的,具體的數(shù)量配置可參考圖5。

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

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

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

4 硬件行為仿真模擬器

4.1 行為仿真的功能

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

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

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)過代碼對(duì)比,發(fā)現(xiàn)軟件模擬器與硬件行為仿真器結(jié)果的差值,只是tile系數(shù)、Fuse系數(shù)和獨(dú)立型卷積的分批數(shù)量n(見3.2.2)這3者的函數(shù),與網(wǎng)絡(luò)結(jié)構(gòu)參數(shù)M、N、T、P、S或Q_num等其他參數(shù)均無關(guān),這說明了該差值正是握手信號(hào)延遲差異的積累。在消除該差值后,軟件模擬器的計(jì)算結(jié)果與硬件模擬器均可以做到完全一致。這驗(yàn)證了軟件仿真算法的有效性。

5 結(jié)束語

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

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

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

猜你喜歡
特征融合設(shè)計(jì)
村企黨建聯(lián)建融合共贏
融合菜
從創(chuàng)新出發(fā),與高考數(shù)列相遇、融合
《融合》
如何表達(dá)“特征”
不忠誠(chéng)的四個(gè)特征
瞞天過海——仿生設(shè)計(jì)萌到家
抓住特征巧觀察
設(shè)計(jì)秀
海峽姐妹(2017年7期)2017-07-31 19:08:17
有種設(shè)計(jì)叫而專
Coco薇(2017年5期)2017-06-05 08:53:16
主站蜘蛛池模板: 天天综合色天天综合网| 狠狠色婷婷丁香综合久久韩国| 国产成人91精品| 亚洲无线国产观看| 玩两个丰满老熟女久久网| 91精品啪在线观看国产91| 日韩 欧美 小说 综合网 另类| 亚洲VA中文字幕| 国内精品视频| 日本a级免费| 国产精品无码AV片在线观看播放| 成人在线不卡| 99久久精品无码专区免费| 在线播放国产一区| 伊人久久久久久久久久| 人妻精品全国免费视频| 一级黄色网站在线免费看| 伊人无码视屏| av在线手机播放| 伊人久综合| 在线日韩日本国产亚洲| 欧美福利在线观看| 丁香婷婷激情网| 亚洲欧洲综合| 无遮挡国产高潮视频免费观看 | 国产H片无码不卡在线视频| 免费观看男人免费桶女人视频| 国产无遮挡猛进猛出免费软件| 欧美不卡视频一区发布| 亚洲日韩AV无码一区二区三区人| 在线观看亚洲人成网站| 尤物亚洲最大AV无码网站| 精品丝袜美腿国产一区| 国产黄视频网站| 亚洲人精品亚洲人成在线| 国产jizz| 久久国产精品77777| 国产精品美人久久久久久AV| 久久久久久久久18禁秘| 欧美日韩国产精品综合| 热99精品视频| 国产精品嫩草影院av| 91精品最新国内在线播放| 国产又粗又猛又爽视频| 无码免费的亚洲视频| 91欧美亚洲国产五月天| 特级毛片免费视频| 综合色天天| 国产拍揄自揄精品视频网站| 人妻中文久热无码丝袜| 成人一区专区在线观看| 久久久久夜色精品波多野结衣| 九九香蕉视频| 国产成人免费| 亚洲动漫h| 日韩经典精品无码一区二区| 二级特黄绝大片免费视频大片| 国产免费网址| 看国产毛片| 伊人网址在线| 亚洲欧洲国产成人综合不卡| 精品视频在线一区| 99中文字幕亚洲一区二区| 曰韩免费无码AV一区二区| 久久99国产精品成人欧美| 熟女成人国产精品视频| 日本欧美中文字幕精品亚洲| 在线观看亚洲人成网站| 欧美一区二区自偷自拍视频| 欧美日韩免费| 91精品啪在线观看国产60岁| 免费Aⅴ片在线观看蜜芽Tⅴ| 国产精品免费露脸视频| 国模极品一区二区三区| 欧美日韩久久综合| 中国精品自拍| 九色综合伊人久久富二代| 欧美成人免费午夜全| 91青青视频| 一本色道久久88综合日韩精品| 亚洲一区色| 一级毛片免费观看久|