李沛杰,張麗,夏云飛,許立明
基于軟件定義的可重構(gòu)卷積神經(jīng)網(wǎng)絡(luò)架構(gòu)設(shè)計(jì)
李沛杰1,張麗1,夏云飛2,許立明2
(1. 信息工程大學(xué),河南 鄭州 450001;2.天津市濱海新區(qū)信息技術(shù)創(chuàng)新中心,天津 300457)
為滿足卷積神經(jīng)網(wǎng)絡(luò)業(yè)務(wù)處理的靈活性和高性能需求,提出一種基于軟件定義的可重構(gòu)卷積神經(jīng)網(wǎng)絡(luò)架構(gòu)。該架構(gòu)采用歸一化處理流程實(shí)現(xiàn)卷積層網(wǎng)絡(luò)的動(dòng)態(tài)重構(gòu)與運(yùn)算模式的加速。采用AHB和AXI的雙總線架構(gòu),實(shí)現(xiàn)卷積神經(jīng)網(wǎng)絡(luò)的流水計(jì)算。通過(guò)軟件定義在FPGA上實(shí)現(xiàn)了不同網(wǎng)絡(luò)結(jié)構(gòu)下的數(shù)據(jù)集實(shí)時(shí)處理。實(shí)驗(yàn)結(jié)果表明,所設(shè)計(jì)的FPGA電路能夠?qū)崿F(xiàn)兩種網(wǎng)絡(luò)模型的軟件定義,網(wǎng)絡(luò)模型與輸入數(shù)據(jù)集相同的條件下,該架構(gòu)的運(yùn)算處理能力為CPU的10倍,運(yùn)算能耗比為GPU的2倍。
卷積神經(jīng)網(wǎng)絡(luò);軟件定義;動(dòng)態(tài)可重構(gòu);FPGA;流水計(jì)算;SoC
隨著計(jì)算機(jī)視覺(jué)技術(shù)的發(fā)展,神經(jīng)網(wǎng)絡(luò)憑借深度學(xué)習(xí)技術(shù)極大地提高了算法性能。其中卷積神經(jīng)網(wǎng)絡(luò)(CNN,convolutional neural network)作為該項(xiàng)技術(shù)的基礎(chǔ),其模型得到了廣泛關(guān)注,并越來(lái)越多地應(yīng)用于圖像識(shí)別、視覺(jué)擬合、視頻搜索等領(lǐng)域[1]。
CNN通常由卷積層、全連接層、池化層以及激活層組成[2-4]。當(dāng)前CNN模型對(duì)卷積層與子抽樣層互聯(lián)/迭代層數(shù)、卷積核運(yùn)算尺寸、激活層函數(shù)處理方式等處理環(huán)節(jié)進(jìn)行不同的優(yōu)化[5]。AlexNet模型以LeNet-5模型為藍(lán)本,通過(guò)增加卷積層進(jìn)一步提高模型圖像識(shí)別率[5];VGG模型通過(guò)使用較小卷積核模擬更大尺寸卷積核的方式,在保證層級(jí)結(jié)構(gòu)統(tǒng)一且簡(jiǎn)單的基礎(chǔ)上,進(jìn)一步增加了模型運(yùn)算深度,提高識(shí)別精度[6];而GoogleLetNet模型則通過(guò)設(shè)計(jì)不同尺寸并行卷積模塊,并配合傳統(tǒng)的池化模塊與卷積模塊的拼接,在降低運(yùn)算量與參數(shù)量的基礎(chǔ)上,仍然保持圖像的高識(shí)別率[7-8]。由于CNN算法海量數(shù)據(jù)搬移以及密集迭代運(yùn)算的特征,通用CPU或GPU難以實(shí)現(xiàn)高效的處理能力,CNN算法運(yùn)算數(shù)據(jù)流的流水線處理特征使AISC或FPGA等硬件電路能夠?qū)崿F(xiàn)更好的算法加速效能[9]。專(zhuān)用ASIC電路的剛性結(jié)構(gòu)使其本身缺乏算法配置能力,難以應(yīng)對(duì)CNN算法快速迭代的需求[10]。通用的FPGA電路實(shí)現(xiàn)的CNN電路,雖然能夠解決算法的迭代更新[11-13],文獻(xiàn)[14]更是基于FPGA提出CNN優(yōu)化方案,提升FPGA本身在帶寬和功耗上的利用率,但FPGA的可編程特性屬于靜態(tài)可重構(gòu),電路重構(gòu)時(shí)間長(zhǎng),依然難以滿足CNN算法實(shí)時(shí)衍進(jìn)更新的需求[9]。
本文通過(guò)研究卷積神經(jīng)網(wǎng)絡(luò)的數(shù)據(jù)結(jié)構(gòu)特點(diǎn),采用軟件定義互連技術(shù)將不同算法中的原子算粒軟件定義,構(gòu)建歸一化的算粒集,通過(guò)軟件定義算粒與數(shù)據(jù)交換構(gòu)建算?;ヂ?lián)網(wǎng)絡(luò),設(shè)計(jì)了一種基于軟件定義的卷積神經(jīng)網(wǎng)絡(luò)可重構(gòu)電路,同時(shí)利用多通道DMA高效實(shí)現(xiàn)不同搬移規(guī)律的二維數(shù)組展開(kāi)。在保持高性能運(yùn)算處理能力的前提下,基于軟件定義實(shí)現(xiàn)針對(duì)不同卷積神經(jīng)網(wǎng)絡(luò)模型的快速重構(gòu),滿足卷積神經(jīng)網(wǎng)絡(luò)靈活性和高效能的需求。
以圖像處理應(yīng)用為例,CNN算法將圖像作為輸入,交替迭代進(jìn)行卷積層特征提取與池化層子抽樣得出特征圖,最終經(jīng)全連接層運(yùn)算得出結(jié)果。
卷積層主要完成特征提取運(yùn)算,處理原理類(lèi)似數(shù)字濾波器,以大小為×的卷積核為計(jì)算核心,對(duì)目標(biāo)圖像進(jìn)行滑窗點(diǎn)乘遍歷,算粒抽象如式(1)所示。
池化層負(fù)責(zé)數(shù)據(jù)抽樣處理,實(shí)現(xiàn)對(duì)特征的深度抽象,減少特征圖數(shù)據(jù)維度。池化處理主要分為均值池化與最大值池化,即對(duì)特征圖中選定的均分區(qū)域(×)進(jìn)行均值計(jì)算或最大值計(jì)算,其處理算粒如式(2)所示。
最大值池化
均值池化
激活層完成數(shù)據(jù)的輸出控制,即閾值判決選通操作。在CNN中常見(jiàn)的激活函數(shù)包括糾正線性函數(shù)ReLU、雙曲正切函數(shù)tanh、S形sigmoid函數(shù)以及符號(hào)函數(shù)等[15],運(yùn)算過(guò)程為在激活函數(shù)上對(duì)將激活前的輸出值進(jìn)行乘疊加后輸出,常見(jiàn)的激活函數(shù)公式如表1所示。
表1 常見(jiàn)的激活函數(shù)公式
全連接層處于CNN的最后處理部分,通過(guò)將特征圖逐行讀入并與權(quán)重參數(shù)矩陣相乘后,完成圖像的最終分類(lèi)處理,其處理算粒如式(4)所示。
盡管不同的CNN算法處理流程與算粒組合各不相同,但CNN算法的流程相對(duì)固定,如圖1所示的CNN處理流程中,K×K大小的卷積核構(gòu)成CNN運(yùn)算核心,以不同步長(zhǎng)S與Y類(lèi)型的激活函數(shù)配合,實(shí)現(xiàn)卷積層處理;再配合Q個(gè)下采樣數(shù)W的池化層,堆疊出J深度的連續(xù)卷積處理;最終與K個(gè)全連接層互聯(lián),完成整個(gè)CNN流程處理。在各層算粒處理上,算粒具有固定的運(yùn)算格式,可通過(guò)算粒分解實(shí)現(xiàn)歸一。
Figure 1 The process of CNN
本文主要通過(guò)抽象CNN處理流程中各個(gè)算粒的實(shí)現(xiàn)方式,通過(guò)參數(shù)化的處理進(jìn)行抽象與歸一,利用算法流水線處理的特性,將各層算粒歸一化為相同的可重構(gòu)算粒,并將算粒接口進(jìn)行軟件定義化設(shè)計(jì),構(gòu)建軟件定義算粒集,同時(shí)基于AHB和AXI雙總線構(gòu)建的互聯(lián)網(wǎng)絡(luò),通過(guò)基于路由尋址的數(shù)據(jù)交換網(wǎng)絡(luò)實(shí)現(xiàn)各個(gè)算粒之間數(shù)據(jù)的傳輸與互聯(lián)。
根據(jù)上文對(duì)卷積設(shè)計(jì)網(wǎng)絡(luò)模型的分析,CNN涉及的運(yùn)算種類(lèi)相對(duì)固定,訪存地址規(guī)律固定,數(shù)據(jù)結(jié)構(gòu)規(guī)整,整體運(yùn)算與數(shù)據(jù)可重用率高。本文主要基于卷積核尺寸、卷積滑窗步長(zhǎng)、卷積迭代層數(shù)、池化下采樣抽取尺寸以及激活函數(shù)類(lèi)型等功能特性,進(jìn)行基于軟件定義的通用性設(shè)計(jì),以增加部分迭代流程為代價(jià),歸一出一種適應(yīng)多種CNN的電路結(jié)構(gòu),其總體結(jié)構(gòu)如圖2所示。
其中,軟件定義可重構(gòu)CNN整體架構(gòu)分為兩部分:基于AHB和AXI的雙總線架構(gòu)和多DMA引擎的算?;ヂ?lián)網(wǎng)絡(luò);基于數(shù)據(jù)流交換網(wǎng)絡(luò)和軟件定義算粒集合的數(shù)據(jù)交換網(wǎng)絡(luò)。整體CNN處理流程可通過(guò)處理器的軟件配置實(shí)現(xiàn)算?;ヂ?lián)網(wǎng)絡(luò)拓?fù)浜蛿?shù)據(jù)交換網(wǎng)絡(luò)拓?fù)涞能浖x動(dòng)態(tài)可重構(gòu),滿足不同CNN算法的靈活配置。在軟件定義化的算?;ヂ?lián)網(wǎng)絡(luò)中,通過(guò)高性能DMA與通用DMA,將數(shù)據(jù)緩存中不同尺寸的二維特征圖與卷積核參數(shù)轉(zhuǎn)換為一維數(shù)據(jù)流,并分別通過(guò)軟件定義數(shù)據(jù)交換網(wǎng)絡(luò)與配置總線進(jìn)入不同的軟件定義算粒模塊,完成卷積運(yùn)算;軟件定義化的數(shù)據(jù)交換網(wǎng)絡(luò)采用基于路由的全交換結(jié)構(gòu),實(shí)現(xiàn)任意軟件定義算粒以及高速DMA之間的數(shù)據(jù)流互聯(lián)。基于該架構(gòu),可以針對(duì)不同的CNN模型的處理流程,軟件定義數(shù)據(jù)流路由,以及配置各軟件定義算粒工作模式,處理器啟動(dòng)各DMA進(jìn)行數(shù)據(jù)流搬移,經(jīng)過(guò)數(shù)據(jù)流迭代搬移,實(shí)現(xiàn)深度卷積層處理。
針對(duì)卷積神經(jīng)網(wǎng)路而言,其主要運(yùn)算類(lèi)型相對(duì)固化,主要的計(jì)算算??偨Y(jié)如下。
(1)乘法:兩個(gè)一維向量數(shù)據(jù)流相乘運(yùn)算,用于卷積運(yùn)算中乘法以及因子縮放。
(2)加減法/累加:實(shí)現(xiàn)卷積運(yùn)算中累加運(yùn)算,也可以實(shí)現(xiàn)池化運(yùn)算中偏置常量加法。
(3)比較:一維向量數(shù)據(jù)比較結(jié)果輸出或計(jì)算置位非等價(jià)操作,可以實(shí)現(xiàn)激活函數(shù)或池化采樣等處理。
(4)最值統(tǒng)計(jì):求取一維向量中最大/小值,可實(shí)現(xiàn)ReLU激活函數(shù)操作。
(5)移位:通過(guò)對(duì)數(shù)據(jù)的左移/右移,實(shí)現(xiàn)輸入數(shù)據(jù)的2的冪次方運(yùn)算,實(shí)現(xiàn)數(shù)據(jù)縮放,節(jié)省乘法資源。
(6)向量復(fù)制:將輸入的一維向量復(fù)制多出一路,實(shí)現(xiàn)向量平方運(yùn)算,用于可能的超越運(yùn)算泰勒級(jí)數(shù)展開(kāi)處理。
(7)序列生成:針對(duì)輸入的常數(shù),展開(kāi)為任意長(zhǎng)度的一維數(shù)據(jù)流,實(shí)現(xiàn)矩陣常數(shù)乘法。
(8)數(shù)據(jù)直通:將輸入的數(shù)據(jù)不做任何處理,直接透?jìng)鞯较乱患?jí)運(yùn)算核心。
圖2 軟件定義可重構(gòu)CNN電路架構(gòu)
Figure 2 The architecture diagram of re-configurable CNN on software definition
計(jì)算算粒的軟件定義互連接口按照AHB和AXI的標(biāo)準(zhǔn)協(xié)議接口進(jìn)行歸一化,運(yùn)算核心整體數(shù)據(jù)流采用基于握手的流水線處理,所有算粒的輸入輸出均與數(shù)據(jù)網(wǎng)絡(luò)互聯(lián),配合數(shù)據(jù)交換網(wǎng)絡(luò)完成核心數(shù)據(jù)流交換。針對(duì)以上所有處理進(jìn)行分類(lèi),將移位、向量復(fù)制、序列生成等處理統(tǒng)一放入運(yùn)算核心數(shù)據(jù)入口處作為數(shù)據(jù)預(yù)處理模塊;將乘法與加減法/累加等操作作為運(yùn)算處理模塊歸為一類(lèi);將最值統(tǒng)計(jì)與比較操作作為后處理子模塊實(shí)現(xiàn),整體模塊框圖如圖3所示。
圖3 軟件定義算??驁D
Figure 3 The diagram of software defined cell
運(yùn)行算粒模塊主要?jiǎng)澐譃?個(gè)子功能模塊:預(yù)處理模塊、乘加核模塊、后處理模塊以及配置寄存器模塊,各模塊主要功能如下。
1) 預(yù)處理模塊:負(fù)責(zé)移位、復(fù)制以及序列生成等功能,子模塊為2輸入3輸出設(shè)計(jì),新增數(shù)據(jù)路徑用于傳輸復(fù)制或常數(shù)序列。內(nèi)部設(shè)計(jì)下行FIFO,通用DMA可以通過(guò)AHB配置總線向FIFO中自動(dòng)寫(xiě)入數(shù)據(jù),以實(shí)現(xiàn)將FIFO參數(shù)進(jìn)行常數(shù)展開(kāi)。移位操作可以通過(guò)配置為0移位實(shí)現(xiàn)數(shù)據(jù)透?jìng)鳌?/p>
2) 乘加核模塊:內(nèi)部設(shè)計(jì)全互聯(lián)數(shù)據(jù)MUX模塊,可以通過(guò)配置實(shí)現(xiàn)數(shù)據(jù)流通過(guò)2個(gè)運(yùn)算、1個(gè)運(yùn)算或直接透?jìng)?,并且可以決定進(jìn)入乘法與加法運(yùn)算核的先后順序,以實(shí)現(xiàn)不同算法公式;同時(shí)乘法與加法模塊實(shí)現(xiàn)采用單精度浮點(diǎn)運(yùn)算。
3) 后處理模塊:主要完成對(duì)任意尺寸的一維輸出數(shù)據(jù)的最值提取,以及比較后降采樣操作,并且設(shè)計(jì)上行FIFO,通用DMA可通過(guò)配置總線讀取FIFO中最值或比較值結(jié)果,上送SoC總線后緩存至內(nèi)部存儲(chǔ)中。
4) 配置寄存器模塊:實(shí)現(xiàn)對(duì)運(yùn)算核心的工作模式,實(shí)現(xiàn)對(duì)一維數(shù)據(jù)尺寸、移位位數(shù)、加減法/累加、最大/小值、數(shù)據(jù)復(fù)制、比較閾值等模式的切換,實(shí)現(xiàn)運(yùn)算核心的重配置。
整個(gè)運(yùn)算核心采用2數(shù)據(jù)流輸入1數(shù)據(jù)輸出接口結(jié)構(gòu),所有輸入輸出接口均與數(shù)據(jù)交換網(wǎng)絡(luò)相連,數(shù)據(jù)來(lái)源為高速DMA從DDR中讀出的數(shù)據(jù)緩存。數(shù)據(jù)流輸出接口附帶目前模塊路由信息,用于數(shù)據(jù)交換網(wǎng)絡(luò)的路由尋址。同時(shí),內(nèi)部設(shè)計(jì)有與配置寄存器相連的上行與下行FIFO,F(xiàn)IFO與通用DMA之間設(shè)計(jì)握手連接信號(hào),通過(guò)通用DMA對(duì)FIFO狀態(tài)的動(dòng)態(tài)感知調(diào)節(jié)數(shù)據(jù)流量,從而實(shí)現(xiàn)常數(shù)數(shù)據(jù)的批量一維展開(kāi)和各種卷積神經(jīng)網(wǎng)絡(luò)的運(yùn)算處理。
本文中的高速DMA與通用DMA是數(shù)據(jù)搬移核心,完成數(shù)據(jù)從SoC總線上存儲(chǔ)設(shè)備與運(yùn)算核心之間的數(shù)據(jù)搬移。軟件定義可重構(gòu)CNN架構(gòu)中內(nèi)置一個(gè)處理器,用來(lái)管理兩種DMA的指令隊(duì)列,用于DMA內(nèi)數(shù)據(jù)通道的配置,DMA功能總結(jié)如下。
1) 所有DMA均可以通過(guò)SoC總線訪問(wèn)總線上所有存儲(chǔ)。
2) 所有DMA內(nèi)置指令隊(duì)列,用來(lái)定義源地址、目的地址、數(shù)據(jù)長(zhǎng)度、burst個(gè)數(shù)、地址變化方式等描述符任務(wù)。
3) 所有通用DMA支持4個(gè)邏輯通道同時(shí)數(shù)據(jù)搬移。
4) 高速DMA支持固定地址、順序地址、跳躍地址、跳躍片段地址等地址跳躍形式。
高速DMA內(nèi)部針對(duì)讀寫(xiě)各有一個(gè)數(shù)據(jù)通道,實(shí)現(xiàn)復(fù)雜的地址循環(huán),將SoC總線讀取的數(shù)據(jù)直接轉(zhuǎn)化為數(shù)據(jù)流送入數(shù)據(jù)交換網(wǎng)絡(luò)中,完成特征圖數(shù)據(jù)與卷積核參數(shù)的批量讀??;而通用DMA中采用多邏輯通道時(shí)分復(fù)用的形式,完成低速參數(shù)的自動(dòng)搬移。工作過(guò)程中兩種DMA同時(shí)被處理器啟動(dòng),高速DMA將一維化特征圖數(shù)據(jù)經(jīng)過(guò)總線與數(shù)據(jù)交換網(wǎng)輸出到運(yùn)算核心,與通用DMA輸出的參數(shù)或其他一維化特征圖進(jìn)行運(yùn)算,實(shí)現(xiàn)二維數(shù)據(jù)的流水式運(yùn)算。
數(shù)據(jù)交換網(wǎng)絡(luò)主要完成軟件定義算粒、軟件定義DMA等運(yùn)算處理模塊的交換互聯(lián),實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)之間數(shù)據(jù)流的交互,軟件定義互連接口采用AXI4-Stream協(xié)議,可通過(guò)整個(gè)網(wǎng)絡(luò)接口之間的握手機(jī)制形成流控。AXI4-Stream協(xié)議接口中分為master接口與slave接口,master接口為輸出接口,slave接口為輸入接口,兩種接口互為對(duì)稱銜接。數(shù)據(jù)交換網(wǎng)絡(luò)對(duì)所有master接口進(jìn)行編址,從slave接口輸入對(duì)應(yīng)的路由地址,即可實(shí)現(xiàn)網(wǎng)絡(luò)內(nèi)對(duì)應(yīng)slave接口到master接口之間的路由。
數(shù)據(jù)交換網(wǎng)絡(luò)根據(jù)不同算法流程規(guī)劃,運(yùn)算核心個(gè)數(shù)設(shè)置為8個(gè),同時(shí)每個(gè)運(yùn)算核心都是2輸入1輸出的端口數(shù)量,合計(jì)master接口數(shù)量16個(gè),slave接口數(shù)量8個(gè),計(jì)算8個(gè)高速DMA的AXI4-Stream接口中,master與slave各8個(gè)接口。整個(gè)交換網(wǎng)絡(luò)的需要24個(gè)master接口,以及16個(gè)slave接口。由于采用的總線IP最大支持16×16規(guī)模交換網(wǎng)絡(luò),所以采用兩級(jí)拓?fù)鋵?shí)現(xiàn)16×24數(shù)量接口的數(shù)據(jù)網(wǎng)絡(luò)。如圖4所示,每個(gè)master接口均被編址。
本文進(jìn)行硬件設(shè)計(jì)的開(kāi)發(fā)平臺(tái)為Xilinx公司的ZC706開(kāi)發(fā)板,其FPGA芯片包含PS和PL兩種硬件資源,利用其PS內(nèi)的ARM雙核處理器、AXI4總線以及SDMA等IP分別實(shí)現(xiàn)本文中處理器、SoC總線以及通用DMA功能;在PL部分實(shí)現(xiàn)運(yùn)算核心、數(shù)據(jù)交換網(wǎng)絡(luò)與高性能DMA。測(cè)試集為MNIST集合中200幅256×256大小的圖片,每個(gè)Pixel的取值是0~255的整數(shù),在進(jìn)行實(shí)現(xiàn)前將所有像素轉(zhuǎn)換為單精度浮點(diǎn)數(shù)后進(jìn)行實(shí)驗(yàn)測(cè)試。測(cè)試算法包括AlexNet與VGG-16兩種不同算法,分別在本文電路架構(gòu)上實(shí)現(xiàn)運(yùn)算,使用相同算法與輸入數(shù)據(jù)集分別在通用處理器Intel CORE i5-7200U與NVIDIA GTX1050 GPU上進(jìn)行處理時(shí)間的性能對(duì)比,并且CPU與GPU采用與本設(shè)計(jì)電路相同的數(shù)據(jù)精度,均為單精度浮點(diǎn)數(shù)據(jù)。
本文設(shè)計(jì)中的FPGA芯片內(nèi)部處理主頻為200 MHz,在FPGA中實(shí)現(xiàn)的卷積神經(jīng)網(wǎng)絡(luò)電路可以通過(guò)ZYNQ中ARM處理器的配置,完成電路的動(dòng)態(tài)重構(gòu)。所以在切換不同網(wǎng)絡(luò)模型時(shí),F(xiàn)PGA無(wú)須改變電路結(jié)構(gòu),可以采用與CPU或GPU相同的方式直接切換不同工作軟件。表2為整個(gè)FPGA芯片資源使用情況。
圖4 數(shù)據(jù)交換網(wǎng)絡(luò)拓?fù)?/p>
Figure 4 The topology of data switching network
表2 FPGA芯片資源使用情況
表3為3種運(yùn)算平臺(tái)使用AlexNet網(wǎng)絡(luò)模型的對(duì)比結(jié)果,針對(duì)200幅256×256大小的單精度浮點(diǎn)圖片進(jìn)行運(yùn)算。經(jīng)過(guò)對(duì)比可以看出,本文所設(shè)計(jì)的軟件定義可重構(gòu)CNN處理電路是通用CPU處理速度的近10倍,但相比GPU并無(wú)性能優(yōu)勢(shì),其主要原因是GPU的運(yùn)算速度相比FPGA更快,考慮到頻率差異,本文設(shè)計(jì)在性能功耗比上占據(jù)一定優(yōu)勢(shì),GPU能耗比約200÷1.722÷300≈0.387 1(FPS/W),本文所設(shè)計(jì)的軟件定義可重構(gòu)CNN電路性能功耗比為200÷31.84÷7.8≈0.8053(FPS/W),約為GPU的2.08倍。
切換3個(gè)平臺(tái)網(wǎng)絡(luò)模型處理軟件,運(yùn)行VGG-16網(wǎng)絡(luò)模型算法,并對(duì)100幅256×256大小的單精度浮點(diǎn)圖片進(jìn)行運(yùn)算,3個(gè)平臺(tái)處理算法速度對(duì)比如表4所示。3個(gè)平臺(tái)處理效率比率結(jié)果和變化趨勢(shì)與AlexNet網(wǎng)絡(luò)模型算法的處理相同,并且本文設(shè)計(jì)FPGA平臺(tái)實(shí)現(xiàn)了軟件配置切換實(shí)現(xiàn)不同卷積神經(jīng)網(wǎng)絡(luò)算法。
由VGG-16網(wǎng)絡(luò)模型算法和AlexNet模型算法運(yùn)行情況的性能分析結(jié)果可知,本文所設(shè)計(jì)的基于軟件定義的可重構(gòu)卷積神經(jīng)網(wǎng)絡(luò)架構(gòu)相比通用CPU與GPU有可觀的性能功耗比優(yōu)勢(shì),其主要原因是采用了基于數(shù)據(jù)流的運(yùn)算網(wǎng)絡(luò)結(jié)構(gòu),在每次的運(yùn)算過(guò)程中數(shù)據(jù)流進(jìn)行逐級(jí)流水運(yùn)算,每次運(yùn)算時(shí)間等于數(shù)據(jù)訪問(wèn)存儲(chǔ)時(shí)間加流水運(yùn)算時(shí)延,并沒(méi)有傳統(tǒng)運(yùn)算器的額外運(yùn)算開(kāi)銷(xiāo),所以可以實(shí)現(xiàn)高速的流水并行運(yùn)算,整個(gè)系統(tǒng)針對(duì)固定的卷積算法模型具有固定的時(shí)延,不會(huì)因業(yè)務(wù)流的大小產(chǎn)生偏差,整體性能取決于系統(tǒng)工作頻率,可通過(guò)硬件電路的升級(jí)和工作頻率的提升,進(jìn)一步提升處理性能。此外,軟件定義可重構(gòu)的CNN能夠?qū)崿F(xiàn)基于軟件配置的動(dòng)態(tài)可重構(gòu),實(shí)現(xiàn)多種算法模式的動(dòng)態(tài)切換,及基于軟件定義算粒的算法迭代與更新,具備較高的算法泛用性。
表3 AlexNet模型算法效率對(duì)比
表4 VGG-16模型算法效率對(duì)比
本文基于軟件定義技術(shù),通過(guò)構(gòu)建歸一化的軟件定義計(jì)算算粒和數(shù)據(jù)交換網(wǎng)絡(luò)模型,提出了一種CNN算法泛化的可重構(gòu)的卷積神經(jīng)網(wǎng)絡(luò)架構(gòu),通過(guò)可編程DMA配合可重構(gòu)軟件定義算粒核心實(shí)現(xiàn)動(dòng)態(tài)可重構(gòu)多種CNN算法的目的。通過(guò)FPGA實(shí)現(xiàn)了該架構(gòu)下的兩種典型算法模型,其能夠滿足卷積神經(jīng)網(wǎng)絡(luò)算法快速迭代和實(shí)時(shí)處理的需求。后續(xù)會(huì)進(jìn)一步整合并添加其他新型CNN算法模型運(yùn)算核心、提高本電路的應(yīng)用普適性,同時(shí)繼續(xù)優(yōu)化架構(gòu),在保持架構(gòu)靈活配置的基礎(chǔ)上在ASIC專(zhuān)用電路上進(jìn)行實(shí)現(xiàn),設(shè)計(jì)卷積神經(jīng)網(wǎng)絡(luò)領(lǐng)域?qū)S玫母咝苡?jì)算芯片。
[1]SINGH K, TIWARI S C, GUPTA M. A closed-loop ASIC design approach based on logical effort theory and artificial neural networks[J]. Integration, 2019, 69: 10-22.
[2]LIU Z, DOU Y, JIANG J, et al. An FPGA-based processor for training convolutional neural networks[C]//International Conference on Field Programmable Technology (ICFPT). 2018.
[3]方睿, 劉加賀, 薛志輝, 等. 卷積神經(jīng)網(wǎng)絡(luò)的FPGA并行加速方案設(shè)計(jì)[J]. 計(jì)算機(jī)工程與應(yīng)用, 2015, 51(8): 32-36.
FANG R, LIU J H, XUE Z H, et al. FPGA-based design for convolution neural network[J]. Computer Engineering and Applications, 2015, 51(8): 32-36.
[4]王巍, 周凱利, 王伊昌, 等. 卷積神經(jīng)網(wǎng)絡(luò)(CNN)算法的FPGA并行結(jié)構(gòu)設(shè)計(jì)[J]. 微電子學(xué)與計(jì)算機(jī), 2019, 36(4): 57-62, 66.
WANG W, ZHOU K L, WANG Y C, et al. FPGA parallel structure design of convolutional neural network(CNN) algorithm[J]. Microelectronics & Computer, 2019, 36(4): 57-62.
[5]翟社平, 邱程, 楊媛媛, 等. 基于FPGA的卷積神經(jīng)網(wǎng)絡(luò)加速器設(shè)計(jì)與實(shí)現(xiàn)[J]. 微電子學(xué)與計(jì)算機(jī), 2019, 36(8): 83-86.
ZHAI S P, QIU C, YANG Y Y, et al. Design and implementation of convolutional neural network accelerator based on FPGA[J]. Microelectronics & Computer, 2019, 36(8): 83-86.
[6]竇陽(yáng), 卿粼波, 何小海, 等. 基于FPGA的CNN加速器設(shè)計(jì)與實(shí)現(xiàn)[J]. 信息技術(shù)與網(wǎng)絡(luò)安全, 2019, 38(11): 96-101.
DOU Y, QING L B, HE X H, et al. Design and implementation of CNN accelerator based on FPGA[J]. Information Technology and Network Security, 2019, 38(11): 96-101.
[7]周瑛, 張鈴. 模糊集方法在檢索評(píng)價(jià)系統(tǒng)中的應(yīng)用[J]. 計(jì)算機(jī)技術(shù)與發(fā)展, 2007, 17(1): 111-113.
ZHOU Y, ZHANG L. Application of fuzzy measure in information retrieval evaluation[J]. Computer Technology and Development, 2007, 17(1): 111-113.
[8]VENUGOPAL S, CASTRO-PAREJA C R, DANDEKAR O S. An FPGA-based 3D image processor with median and convolution filters for real-time applications[C]//Proc of Spie-is&t Electronic Imaging. 2005.
[9]CHEN J, PRODIC A, ERICKSON R W, et al. Predictive digital current programmed control[J]. IEEE Transactions on Power Electronics, 2003, 18(1): 411-419.
[10]CHELLAPILLA K, PURI S, SIMARD P. High performance convolutional neural networks for document processing[C]//10th International Workshop on Frontiers in Handwriting Recognition. 2006.
[11]YU Y, WU C, ZHAO T, et al. OPU: an FPGA-based overlay processor for convolutional neural networks[J]. IEEE Transactions on Very Large-Scale Integration (VLSI) Systems, 2019, 28(1): 35-47.
[12]WU D, PIGOU L, KINDERMANS P J, et al. Deep dynamic neural networks for multimodal gesture segmentation and recognition[J]. IEEE Transactions on Pattern Analysis & Machine Intelligence, 2016, 38(8): 1583-1597.
[13]仇越, 馬文濤, 柴志雷. 一種基于FPGA的卷積神經(jīng)網(wǎng)絡(luò)加速器設(shè)計(jì)與實(shí)現(xiàn)[J]. 微電子學(xué)與計(jì)算機(jī), 2018, 35(8): 68-72.
QIU Y, MA W T, CHAI Z L. Design and implementation of a convolutional neural network accelerator based on FPGA[J]. Microelectronics & Computer, 2018, 34(8): 68-72.
[14]劉勤讓, 劉崇陽(yáng), 周俊, 等. 基于線性脈動(dòng)陣列的卷積神經(jīng)網(wǎng)絡(luò)計(jì)算優(yōu)化與性能分析[J]. 網(wǎng)絡(luò)與信息安全學(xué)報(bào), 2018, 4(2):16-24.
LIU Q R, LIU C Y, ZHOU J, et al. Based on linear systolic array for convolutional neural network’s calculation optimization and performance analysis[J]. Chinese Journal of Network and Information Security, 2018, 4(2): 16-24.
[15]梁爽. 可重構(gòu)神經(jīng)網(wǎng)絡(luò)加速器設(shè)計(jì)關(guān)鍵技術(shù)研究[D]. 北京:清華大學(xué), 2017.
LIANG S. Research on key technologies of reconfigurable neural network accelerator design[D]. Beijing: Tsinghua University, 2017.
Architecture design of re-configurable convolutional neural network on software definition
LI Peijie1, ZHANG Li1, XIA Yunfei2, XU Liming2
1. Information Engineering University, Zhengzhou 450001, China 2. InformationTechnology Innovation Center of Tianjin Binhai New Area, Tianjin 300457, China
In order to meet the flexibility and efficiency requirement in convolutional neural network (CNN), an architecture of re-configurable CNN based on software definition was proposed. In the architecture, the process of CNN could be normalized and the operation mode could be accelerated. The calculation pipeline was implemented by using dual bus architecture based on AHB and AXI protocols. By software definition, the proposed architecture, which could realize the real-time processing of data among different CNN structure, was implemented on FPGA. The result shows that at least 2 CNN models can be software defined on the FPGA circuit. The output measures an operation processing capacity of 10 times that of CPU, and an operation energy consumption ratio of 2 times that of GPU.
convolutional neural network, software definition, dynamic reconfiguration, FPGA, pipeline calculation, SoC
TP393
A
10.11959/j.issn.2096?109x.2021043
2020?09?22;
2020?12?14
李沛杰,lpj@ndsc.com.cn
國(guó)家科技重大專(zhuān)項(xiàng)(2016ZX01012101)
TheNational Science and Technology Major Project (2016ZX01012001)
李沛杰, 張麗, 夏云飛, 等. 基于軟件定義的可重構(gòu)卷積神經(jīng)網(wǎng)絡(luò)架構(gòu)設(shè)計(jì)[J]. 網(wǎng)絡(luò)與信息安全學(xué)報(bào), 2021, 7(3): 29-36.
LI P J, ZHANG L, XIA Y F, et al. Architecture design of re-configurable convolutional neural network on software definition[J]. Chinese Journal of Network and Information Security, 2021, 7(3): 29-36
李沛杰(1990? ),男,山西襄汾人,信息工程大學(xué)助理研究員,主要研究方向?yàn)橄冗M(jìn)計(jì)算與網(wǎng)絡(luò)安全技術(shù)、高速接口技術(shù)、軟件定義互聯(lián)技術(shù)、現(xiàn)代SoC設(shè)計(jì)技術(shù)。
張麗(1982? ),女,河南輝縣人,信息工程大學(xué)副研究員,主要研究方向?yàn)橄冗M(jìn)計(jì)算技術(shù)、軟件定義互聯(lián)技術(shù)、SoC芯片設(shè)計(jì)技術(shù)。
夏云飛(1987? ),男,黑龍江海倫人,天津市濱海新區(qū)信息技術(shù)創(chuàng)新中心工程師,主要研究方向?yàn)樾盘?hào)處理算法高性能實(shí)現(xiàn)技術(shù)、軟件定義互聯(lián)技術(shù)、高性能芯片架構(gòu)設(shè)計(jì)技術(shù)。
許立明(1990? ),男,山東濰坊人,天津市濱海新區(qū)信息技術(shù)創(chuàng)新中心工程師,主要研究方向?yàn)镕PGA設(shè)計(jì)實(shí)現(xiàn)、芯片設(shè)計(jì)前端流程以及SoC芯片系統(tǒng)時(shí)鐘架構(gòu)設(shè)計(jì)。