李哲暘, 張如意, 譚文明,2,*, 任燁, 雷鳴, 吳昊
(1. 杭州??低晹?shù)字技術(shù)股份有限公司, 杭州 310051; 2. 杭州??低曄到y(tǒng)技術(shù)有限公司, 杭州 310051)
高清智能攝像機(jī)已成為智慧化城市管理中重要的感知來(lái)源,其含有的深度學(xué)習(xí)推理引擎能夠在端側(cè)對(duì)輸入圖像進(jìn)行分析,向中心端系統(tǒng)提供高價(jià)值結(jié)構(gòu)化信息。 具有深度學(xué)習(xí)推理能力的智能攝像機(jī)通常采用帶有神經(jīng)網(wǎng)絡(luò)計(jì)算硬核(neural network processing unit, NPU)的片上系統(tǒng)(system on chip, SOC)芯片(如HISI3559)。 相對(duì)于中心端深度學(xué)習(xí)器件,邊緣端的硬核加速器通常更加關(guān)注低功耗和低成本。 近年來(lái),邊緣端芯片算力有了長(zhǎng)足的進(jìn)步,智能分析輸入的圖像已從2 K分辨率向4 K ~8 K 高分辨率轉(zhuǎn)變,智能功能需求種類也快速增長(zhǎng),算力和帶寬瓶頸依然較為嚴(yán)重。 為此,芯片廠商在電路與編譯器設(shè)計(jì)時(shí)采用了多種優(yōu)化措施,包括權(quán)重與激活量化[1-2]、算子融合[3]、權(quán)重裁剪[4-5]、輕量化結(jié)構(gòu)設(shè)計(jì)[6-8]等。由于每種硬件的特點(diǎn)不同,同一種模型結(jié)構(gòu)在不同硬件上運(yùn)行的效率也不同。 在邊緣端推理加速算法研發(fā)時(shí),需要針對(duì)不同芯片采用不同方案。多種方案疊加后,加速效果呈現(xiàn)非線性特點(diǎn)。 在對(duì)模型進(jìn)行加速優(yōu)化時(shí),精確獲得模型實(shí)際運(yùn)行耗時(shí)是優(yōu)化成功的前提條件。
現(xiàn)有的模型硬件耗時(shí)預(yù)測(cè)算法按發(fā)展的歷程,主要可分為代理評(píng)估、硬件實(shí)測(cè)和算法預(yù)測(cè)3 類。
1) 代理評(píng)估。 采用容易獲得的測(cè)評(píng)指標(biāo)代替耗時(shí)指標(biāo)。 早期深度學(xué)習(xí)模型主要應(yīng)用在物體分類、識(shí)別等非實(shí)時(shí)任務(wù)上,在端側(cè)部署的主要難點(diǎn)為參數(shù)存儲(chǔ)。 Denton[9]、Han[10]等提出的算法以參數(shù)量為關(guān)注重點(diǎn),將網(wǎng)絡(luò)的存儲(chǔ)壓縮率作為評(píng)價(jià)指標(biāo)。 隨著深度學(xué)習(xí)在識(shí)別[11-12]與檢測(cè)算法[13-16]的大規(guī)模應(yīng)用,端側(cè)模型的運(yùn)行耗時(shí)成為主要優(yōu)化目標(biāo)。 介于當(dāng)時(shí)的模型結(jié)構(gòu)中操作類型少,卷積計(jì)算占比高[17-18],文獻(xiàn)[19]開(kāi)始將乘加運(yùn)算次數(shù)(operations per second, OPS)作為主要評(píng)價(jià)指標(biāo),輔以理論內(nèi)存進(jìn)出消耗(memory access cost, MAC)輔助評(píng)價(jià)。 相對(duì)于以存儲(chǔ)壓縮率為指標(biāo),以乘加運(yùn)算次數(shù)和內(nèi)存進(jìn)出消耗作為評(píng)價(jià)指標(biāo),能直接反映模型的理論算力和帶寬需求。 由于不同芯片采用不同優(yōu)化方式,理論計(jì)算結(jié)果與實(shí)際資源消耗存在差異。 部署時(shí)模型需反復(fù)試湊設(shè)計(jì),對(duì)訓(xùn)練資源消耗大。
2) 硬件實(shí)測(cè)。 文獻(xiàn)[20]在所提出的模型結(jié)構(gòu)搜索算法MnasNet 中用了硬件實(shí)測(cè)方法,在優(yōu)化算法執(zhí)行中,將所得模型自動(dòng)編譯部署到實(shí)體硬件中進(jìn)行耗時(shí)實(shí)測(cè),并將測(cè)試結(jié)果向優(yōu)化算法反饋。 硬件實(shí)測(cè)方法的優(yōu)點(diǎn)是可以直接測(cè)量模型在特定硬件上的耗時(shí),方法簡(jiǎn)單有效,但對(duì)部署系統(tǒng)設(shè)計(jì)能力及成本要求都較高。 此外實(shí)物系統(tǒng)受到系統(tǒng)調(diào)度等波動(dòng)的影響,需要多次測(cè)試才能得到穩(wěn)定的反饋,進(jìn)一步增加了運(yùn)行成本。
3) 算法預(yù)測(cè)。 通過(guò)構(gòu)建數(shù)學(xué)模型,預(yù)測(cè)模型在實(shí)際硬件中的運(yùn)行耗時(shí)。 Facebook AI 研究院在文獻(xiàn)[21]中采用了查表法。 查表法通過(guò)板上實(shí)測(cè)手段對(duì)搜索空間中每種結(jié)構(gòu)單元的耗時(shí)進(jìn)行測(cè)量,構(gòu)建[結(jié)構(gòu)單元類型,耗時(shí)]的數(shù)據(jù)結(jié)構(gòu)存表。 對(duì)于輸入的待測(cè)模型,在進(jìn)行結(jié)構(gòu)拆解后,查詢對(duì)應(yīng)的結(jié)構(gòu)單元耗時(shí)并累加后即得到預(yù)測(cè)耗時(shí)。 文獻(xiàn)[22]中進(jìn)一步對(duì)4 000 多種模型結(jié)構(gòu)中的結(jié)構(gòu)單元耗時(shí)進(jìn)行采樣,使用支持向量機(jī)(support vector machine, SVM)進(jìn)行結(jié)構(gòu)單元耗時(shí)預(yù)測(cè)建模,替代文獻(xiàn)[21]中的數(shù)據(jù)結(jié)構(gòu)表,一定程度上簡(jiǎn)化了所需資源。 文獻(xiàn)[23]提出one-hot 編碼方法,使得復(fù)雜網(wǎng)絡(luò)結(jié)構(gòu)可以簡(jiǎn)化為編碼表,作為輸入特征訓(xùn)練線性回歸模型,直接對(duì)整體模型耗時(shí)進(jìn)行回歸。 文獻(xiàn)[21-23]模型耗時(shí)預(yù)測(cè)算法,對(duì)于模塊替換類結(jié)構(gòu)搜索算法較為友好,但是受限于碼表和傳統(tǒng)回歸算法的能力,在硬件編譯器采用更加靈活的通道裁剪、混合量化、算子融合等精簡(jiǎn)手段時(shí),優(yōu)化空間復(fù)雜度指數(shù)級(jí)增長(zhǎng),預(yù)測(cè)誤差較大。
本文提出了一種基于圖卷積神經(jīng)網(wǎng)絡(luò)(graph convolution network,GCN)的卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network, CNN)模型推理硬件耗時(shí)預(yù)測(cè)新算法。 通過(guò)將卷積神經(jīng)網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)轉(zhuǎn)化為圖網(wǎng)絡(luò),網(wǎng)絡(luò)模型中各層的超參做為節(jié)點(diǎn)輸入特征。 將網(wǎng)絡(luò)模型在硬件上的前向推理過(guò)程當(dāng)做黑箱系統(tǒng),以耗時(shí)作為訓(xùn)練目標(biāo),通過(guò)學(xué)習(xí)網(wǎng)絡(luò)結(jié)構(gòu)間的關(guān)系,預(yù)測(cè)實(shí)際硬件耗時(shí)。 構(gòu)建了基于MobileNetV2[7]的算法驗(yàn)證空間,在GPU、HISINNIE 硬核2 種硬件上驗(yàn)證了本文算法性能。 在模型自動(dòng)裁剪、自動(dòng)網(wǎng)絡(luò)結(jié)構(gòu)搜索等算法中,如需同時(shí)在精度和耗時(shí)等多方面達(dá)到最優(yōu),則可采用本文算法在多目標(biāo)搜索優(yōu)化過(guò)程中取代復(fù)雜的耗時(shí)實(shí)測(cè)過(guò)程。
Kipf 和Welling[24]在2017 年提出了一種可擴(kuò)展的圖卷積神經(jīng)網(wǎng)絡(luò)。 圖卷積神經(jīng)網(wǎng)絡(luò)融合了圖神經(jīng)網(wǎng)絡(luò)和卷積神經(jīng)網(wǎng)絡(luò)的特點(diǎn),將卷積神經(jīng)網(wǎng)絡(luò)從歐式空間擴(kuò)展到了適合于表達(dá)關(guān)系網(wǎng)絡(luò)的非歐空間,同時(shí)具有邊與節(jié)點(diǎn)的可擴(kuò)展性。
帶有隱層的簡(jiǎn)單圖卷積網(wǎng)絡(luò)如圖1 所示。 該網(wǎng)絡(luò)由3 個(gè)層組成,分別為輸入層、隱層和輸出層,每層均含有Cx個(gè)通道,其中C1為輸入通道,C2為隱層通道,C3為輸出通道。 G 為圖拓?fù)浣Y(jié)構(gòu),該圖為一個(gè)有4 個(gè)節(jié)點(diǎn)的無(wú)向圖。 圖1 中的虛線部分表示空域圖卷積操作和非線性激活操作,其單層的前向傳播如下:
圖1 帶有隱層的圖卷積網(wǎng)絡(luò)示意圖Fig.1 Schematic diagram of graph convolution network with hidden layers
式中:hi為隱層第i個(gè)節(jié)點(diǎn)特征值向量;wi為權(quán)重向量;xi為輸入特征向量;N(i)為節(jié)點(diǎn)i的鄰接節(jié)點(diǎn)集合;δ()為非線性激活函數(shù)。
為了能夠與歐氏空間卷積相對(duì)應(yīng),可采用矩陣計(jì)算:
式中:A為鄰接矩陣;I為單位對(duì)角矩陣;X為輸入特征矩陣;W為權(quán)重矩陣;norm()為對(duì)矩陣的歸一化。
用式(2)替代卷積神經(jīng)元網(wǎng)絡(luò)中的歐氏空間卷積操作,即可對(duì)圖網(wǎng)絡(luò)進(jìn)行卷積計(jì)算。
如果將卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)作為輸入特征數(shù)據(jù),則預(yù)測(cè)器需要接受非歐空間數(shù)據(jù),并對(duì)卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)中節(jié)點(diǎn)間拓?fù)潢P(guān)系具有較強(qiáng)的敏感度。 因此,本文選用圖卷積網(wǎng)絡(luò)對(duì)神經(jīng)網(wǎng)絡(luò)耗時(shí)進(jìn)行建模預(yù)測(cè)。
本節(jié)主要闡述基于圖卷積網(wǎng)絡(luò)的耗時(shí)預(yù)測(cè)算法核心設(shè)計(jì),可分為卷積神經(jīng)網(wǎng)絡(luò)圖編碼、耗時(shí)預(yù)測(cè)算法整體設(shè)計(jì)與采樣空間優(yōu)化、圖卷積網(wǎng)絡(luò)設(shè)計(jì)與訓(xùn)練3 部分。
在利用圖卷積對(duì)網(wǎng)絡(luò)模型耗時(shí)預(yù)測(cè)之前,需要對(duì)卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行圖編碼。 編碼分為2 步:
步驟1圖網(wǎng)絡(luò)中的節(jié)點(diǎn)用于表示卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)中的操作,邊用于表示操作間的拓?fù)潢P(guān)系。 如圖2(a)所示,現(xiàn)有主流卷積神經(jīng)網(wǎng)絡(luò)為有向無(wú)環(huán)圖,拓?fù)浣Y(jié)構(gòu)可轉(zhuǎn)換為圖網(wǎng)絡(luò)。 如圖2 所示,根據(jù)邊與節(jié)點(diǎn)的關(guān)系,可生成有向鄰接矩陣A。具體的,由于圖2(a)中共有4 個(gè)節(jié)點(diǎn),為了表示節(jié)點(diǎn)間的連接關(guān)系,可以用一個(gè)維度為4 ×4 的鄰接矩陣來(lái)表示。 如果第i行第j列的值為0,則表示第i個(gè)節(jié)點(diǎn)和第j個(gè)節(jié)點(diǎn)沒(méi)有連接;如果為1,則表示存在連接。
步驟2節(jié)點(diǎn)特征矩陣用于表示網(wǎng)絡(luò)中操作的屬性超參集合,如圖2(b)所示,特征矩陣F中第i行表示每i個(gè)節(jié)點(diǎn)操作具體的特征屬性,m表示特征屬性共有m維。 其中,節(jié)點(diǎn)的屬性包括操作類型、卷積核尺寸、步進(jìn)數(shù)、輸入輸出通道等。特別針對(duì)屬性中的操作類型,使用one-hot 編碼。如圖2 (b) 中 的 操 作 種 類, “001” 表 示 卷 積(conv),“010”表示池化(Pool),“100”表示元素累加操作(EltAdd)等,其他特征則直接將值輸入特征矩陣中。 當(dāng)1 個(gè)節(jié)點(diǎn)操作不包含某個(gè)屬性時(shí),如元素累加操作(EltAdd)沒(méi)有核大小和步進(jìn)屬性,則對(duì)應(yīng)特征值設(shè)置為0。 經(jīng)過(guò)上述的編碼就可得到節(jié)點(diǎn)特征矩陣F。 在算法實(shí)際執(zhí)行中,特征矩陣需要做歸一化處理,避免不同尺度特征數(shù)據(jù)影響模型的訓(xùn)練收斂。
圖2 網(wǎng)絡(luò)結(jié)構(gòu)和網(wǎng)絡(luò)結(jié)構(gòu)的矩陣Fig.2 Representation of a network and its matrix
基于算法預(yù)測(cè)的耗時(shí)評(píng)測(cè)算法需要采集數(shù)據(jù)訓(xùn)練算法模型。 卷積神經(jīng)網(wǎng)絡(luò)的模型空間復(fù)雜度隨著節(jié)點(diǎn)數(shù)與節(jié)點(diǎn)超參的增加成指數(shù)級(jí)增加,有限的訓(xùn)練樣本無(wú)法表征空間的整體分布。 為了降低模型空間的復(fù)雜度,結(jié)合先驗(yàn)假設(shè)模型在實(shí)際硬件運(yùn)行時(shí),單個(gè)算子執(zhí)行對(duì)耗時(shí)的影響僅與其鄰近的節(jié)點(diǎn)距離為p以內(nèi)的前置操作相關(guān)(p為常數(shù)),則整體網(wǎng)絡(luò)的耗時(shí)可恒等變換成帶有重疊拓?fù)浣Y(jié)構(gòu)的子網(wǎng)絡(luò)差分累加:
式中:L()為網(wǎng)絡(luò)在板上實(shí)測(cè)耗時(shí);為整體網(wǎng)絡(luò)N中第i個(gè)節(jié)點(diǎn)到第j個(gè)節(jié)點(diǎn)之間拓?fù)浣Y(jié)構(gòu)的子網(wǎng)絡(luò),i=j,表示單節(jié)點(diǎn),i>j,表示空結(jié)構(gòu),空結(jié)構(gòu)的耗時(shí)為0;n為整體網(wǎng)絡(luò)包含的節(jié)點(diǎn)數(shù), 即將整體網(wǎng)絡(luò)耗時(shí)拆分為1 個(gè)子網(wǎng)絡(luò)耗時(shí)L()與(n-p)個(gè)子網(wǎng)絡(luò)對(duì)耗時(shí)差。 第i對(duì)子網(wǎng)絡(luò)耗時(shí)差得到的是節(jié)點(diǎn)i的耗時(shí)補(bǔ)償(L() -L())。
用圖卷積去預(yù)測(cè)拆分得到的子網(wǎng)絡(luò)集合,代入式(3)可以得到耗時(shí)預(yù)測(cè)模型:
由于式(4)對(duì)應(yīng)的所有子網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)的最大節(jié)點(diǎn)距離均為p,故對(duì)預(yù)測(cè)模型G()進(jìn)行訓(xùn)練的數(shù)據(jù)只需采集模型空間中最大節(jié)點(diǎn)距離為p的子結(jié)構(gòu)集合即可。
通常無(wú)論是模型結(jié)構(gòu)搜索還是模型裁剪,都面臨結(jié)構(gòu)空間復(fù)雜的問(wèn)題。 假設(shè)模型空間為n節(jié)點(diǎn)單鏈結(jié)構(gòu),每個(gè)節(jié)點(diǎn)有m種可選特征屬性(如操作類型、卷積核尺寸、通道數(shù)等),則整體模型空間的采樣規(guī)模為mn。 而采用式(4)進(jìn)行拆解后,子網(wǎng)絡(luò)模型空間的采樣規(guī)模則變?yōu)閙p。 現(xiàn)有經(jīng)典網(wǎng)絡(luò)模型空間中n一般規(guī)模大于100,而硬件優(yōu)化算法中對(duì)應(yīng)的p一般小于10。 因此進(jìn)行拆解可以大幅降低訓(xùn)練所需樣本采樣規(guī)模,模型空間復(fù)雜度的降低也使得圖卷積網(wǎng)絡(luò)的訓(xùn)練變得相對(duì)簡(jiǎn)單。 此外,利用拆解獲得的子網(wǎng)絡(luò)計(jì)算耗時(shí)補(bǔ)償累加得到最終耗時(shí)預(yù)測(cè)的方式,能在訓(xùn)練過(guò)程中學(xué)習(xí)到編譯器的算子融合技術(shù)對(duì)推理耗時(shí)的影響。
2.3.1 圖卷積網(wǎng)絡(luò)設(shè)計(jì)
本文采用GraphConv[25]中闡述的改進(jìn)型圖卷積神經(jīng)網(wǎng)絡(luò),其單層前向的傳播如下:
式中:xi為當(dāng)前節(jié)點(diǎn)特征值;N(i)為鄰接節(jié)點(diǎn)集合;θ為權(quán)重;δ()為非線性激活函數(shù)。
前向傳播式(5)和圖卷積神經(jīng)網(wǎng)絡(luò)的前向式(1)相比,所有鄰邊共享同一個(gè)權(quán)重θ2,模型參數(shù)量大幅減少,降低了過(guò)擬合的風(fēng)險(xiǎn)。 除此之外,為了緩解圖卷積由于深度加深導(dǎo)致最后一層輸出節(jié)點(diǎn)特征相似的固有問(wèn)題,本文通過(guò)級(jí)聯(lián)的方式融合淺層和深層的節(jié)點(diǎn)特征。
具體圖卷積網(wǎng)路的結(jié)構(gòu)如圖3 所示,網(wǎng)絡(luò)可分為3 個(gè)部分:輸入、特征提取、累加輸出。 輸入部分將輸入的卷積模型網(wǎng)絡(luò)編碼成鄰接矩陣和特征矩陣。 特征提取部分由3 層GraphConv 結(jié)構(gòu)級(jí)聯(lián)而成,將淺層特征與深層特征進(jìn)行拼接。 3 層圖卷積層的節(jié)點(diǎn)輸出維度分別是(100,100,1)。當(dāng)輸入節(jié)點(diǎn)的特征維度為m,則3 層圖卷積輸入的節(jié)點(diǎn)特征維度分別是(m,100 +m,200 +m)。最后一部分累加圖卷積最后一層所有節(jié)點(diǎn)的1 維特征作為輸出。
圖3 圖卷積網(wǎng)絡(luò)結(jié)構(gòu)示意圖Fig.3 Structure of graph convolution network
2.3.2 圖卷積的訓(xùn)練
圖卷積的訓(xùn)練包括訓(xùn)練集采樣與訓(xùn)練方案設(shè)計(jì)。
根據(jù)2.2 節(jié)所述,G()僅對(duì)拆解后的子模型空間中的結(jié)構(gòu)進(jìn)行耗時(shí)預(yù)測(cè),故訓(xùn)練集為模型空間中最大節(jié)點(diǎn)距離p的子結(jié)構(gòu)集合。 為了能在訓(xùn)練中獲得式(3)中準(zhǔn)確的單節(jié)點(diǎn)耗時(shí)補(bǔ)償(L() -L()),本文設(shè)計(jì)了一種差分訓(xùn)練方案。 當(dāng)采樣獲得了1 個(gè)子結(jié)構(gòu),則對(duì)應(yīng)配置1 個(gè)附屬子結(jié)構(gòu)。 在訓(xùn)練中,不僅要訓(xùn)練G()對(duì)整體子結(jié)構(gòu)的耗時(shí)預(yù)測(cè)能力,還要訓(xùn)練G()對(duì)單節(jié)點(diǎn)耗時(shí)補(bǔ)償?shù)念A(yù)測(cè)能力。 故本文算法在訓(xùn)練時(shí)采用2 項(xiàng)損失函數(shù):
式中:G()和G()為圖網(wǎng)絡(luò)預(yù)測(cè)的子結(jié)構(gòu)總體耗時(shí);G′(,)為圖網(wǎng)絡(luò)預(yù)測(cè)的單節(jié)點(diǎn)補(bǔ)償時(shí)間;α為[0,1]之間的實(shí)數(shù),用來(lái)調(diào)整2 種損失函數(shù)之間的平衡;為二范數(shù)。
完整的訓(xùn)練方案如圖4 所示。
對(duì)于每一組樣本對(duì),分別做如圖4 所示的訓(xùn)練,訓(xùn)練G()對(duì)輸入的圖結(jié)構(gòu)預(yù)測(cè)其整體耗時(shí)和最后一個(gè)節(jié)點(diǎn)的耗時(shí)補(bǔ)償。 損失函數(shù)如式(6) ~式(8)所示。
圖4 圖卷積訓(xùn)練示意圖Fig.4 Schematic diagram of graph convolution network training
為了快速獲得符合要求的訓(xùn)練集,本文使用的采樣策略如下:在模型空間中隨機(jī)采集大量完整網(wǎng)絡(luò);遍歷完整網(wǎng)絡(luò)中符合要求的子結(jié)構(gòu)和附屬子結(jié)構(gòu),測(cè)試2 個(gè)網(wǎng)絡(luò)的實(shí)際硬件耗時(shí),構(gòu)成樣本對(duì);當(dāng)遍歷到某一節(jié)點(diǎn)時(shí),以該節(jié)點(diǎn)為初始節(jié)點(diǎn),向上包含所有路徑長(zhǎng)度小于p值的節(jié)點(diǎn)構(gòu)成1 個(gè)子結(jié)構(gòu)。
2.3.3 耗時(shí)預(yù)測(cè)推理過(guò)程
如圖5 所示,本文算法對(duì)單個(gè)輸入卷積模型進(jìn)行耗時(shí)預(yù)測(cè)的完整推理過(guò)程。 主要可分為3 個(gè)步驟:
步驟1遍歷每個(gè)節(jié)點(diǎn)進(jìn)行網(wǎng)絡(luò)劃分,如圖5中劃分網(wǎng)絡(luò)后得到網(wǎng)絡(luò)1,網(wǎng)絡(luò)2,…,網(wǎng)絡(luò)N;網(wǎng)絡(luò)劃分的規(guī)則如下,對(duì)于當(dāng)前節(jié)點(diǎn)i,向上包含所有路徑長(zhǎng)度小于等于式(3)中p+ 1 值的節(jié)點(diǎn)。圖5 是p=1 的情況,可以看到,節(jié)點(diǎn)i-1 和節(jié)點(diǎn)i得到的子網(wǎng)絡(luò)就是在整體網(wǎng)絡(luò)中以當(dāng)前節(jié)點(diǎn)為初始節(jié)點(diǎn)向上截取了路徑長(zhǎng)度小于等于2 的所有節(jié)點(diǎn)構(gòu)成的網(wǎng)絡(luò)。
步驟2對(duì)劃分得到的子網(wǎng)絡(luò)進(jìn)行編碼,得到鄰接矩陣A和特征矩陣F,進(jìn)行相應(yīng)圖卷積計(jì)算,得到子結(jié)構(gòu)總體耗時(shí)和單節(jié)點(diǎn)補(bǔ)償時(shí)間的預(yù)測(cè);除第一次的子網(wǎng)絡(luò)會(huì)將子結(jié)構(gòu)總體耗時(shí)預(yù)測(cè)輸出到累加器之外,其他的子網(wǎng)絡(luò)均只將當(dāng)前節(jié)點(diǎn)的補(bǔ)償時(shí)間預(yù)測(cè)輸出到累加器。 如圖5 所示,假設(shè)當(dāng)前節(jié)點(diǎn)為i-1 節(jié)點(diǎn),輸出到累加器的是當(dāng)前節(jié)點(diǎn)補(bǔ)償時(shí)間ti-1即為z4特征。 當(dāng)前節(jié)點(diǎn)變?yōu)閕節(jié)點(diǎn)時(shí),輸出到累加器的是第i節(jié)點(diǎn)補(bǔ)償時(shí)間ti即為z5特征。
圖5 耗時(shí)預(yù)測(cè)前向示意圖Fig.5 Procedures of latency prediction
步驟3累加以上預(yù)測(cè)值得到網(wǎng)絡(luò)的整體耗時(shí)。 需要說(shuō)明的是,不同于之前的單節(jié)點(diǎn)耗時(shí)相加的算法,本文所提算法輸入的是1 個(gè)網(wǎng)絡(luò),輸出的是節(jié)點(diǎn)耗時(shí)再進(jìn)行累加,并包含了補(bǔ)償信息,故可認(rèn)為是一種整體法,能得到更加精確的整體耗時(shí)預(yù)測(cè)。
本文實(shí)驗(yàn)選取海思端側(cè)硬件平臺(tái)和英偉達(dá)GPU 平臺(tái)進(jìn)行驗(yàn)證。 HISI3559 平臺(tái)是海思一款邊緣端數(shù)字信號(hào)處理芯片,帶有深度學(xué)習(xí)硬核。該硬核在編譯使用時(shí)對(duì)網(wǎng)絡(luò)推理有一定的自動(dòng)優(yōu)化。 本文實(shí)驗(yàn)中HISI3559 的編譯器版本為2.3.5。GPU 平臺(tái)具體型號(hào)為T(mén)eslaV100-SXM2-32GB。 針對(duì)神經(jīng)網(wǎng)絡(luò)推理,英偉達(dá)公司開(kāi)發(fā)了一套加速工具TensorRT,本文實(shí)驗(yàn)中的GPU 部署使用詞工具對(duì)網(wǎng)絡(luò)推理進(jìn)行優(yōu)化加速。
由于測(cè)量耗時(shí)存在一定理論波動(dòng),本文實(shí)驗(yàn)每個(gè)真值采用10 次測(cè)試取平均值得到。
為了驗(yàn)證耗時(shí)預(yù)測(cè)算法在不同輸入空間的有效性,實(shí)驗(yàn)分別在離散空間(mobilenet block,MB)和連續(xù)空間(mobilenet block-continuous, MBC)進(jìn)行實(shí)驗(yàn)。 離散空間和連續(xù)空間的區(qū)別在于空間中是否含有如通道數(shù)比例這種連續(xù)的變化屬性。 MB 提出于文獻(xiàn)[19],借鑒了MobileNetV2 的結(jié)構(gòu),空間由16 個(gè)可進(jìn)行類型選擇的層組成,且其被分成4 個(gè)階段,單個(gè)階段內(nèi),每層的輸入輸出分辨率相同,階段間由下采樣層連接,將分辨率降為原來(lái)的一半。 具體結(jié)構(gòu)如圖6 所示。 圖6 中輸入的圖像高為H,寬為W,輸入通道數(shù)為Cin。 經(jīng)過(guò)1 ×1的卷積,將通道數(shù)變?yōu)樵瓉?lái)的e倍,e的取值范圍為{3,6}。 可分離卷積的卷積核尺寸大小可選范圍為{3,5,7}。 最后經(jīng)過(guò)1 ×1 卷積將輸出通道數(shù)變?yōu)镃out。 非下采樣層還會(huì)帶有短接操作。 每層之間可以獨(dú)立選擇短接操作來(lái)控制網(wǎng)絡(luò)深度。 MB-C 則是在MB 基礎(chǔ)上加入連續(xù)通道數(shù)的變化。 通道的可變化比例為[0.35,1],每組通道數(shù)的選擇范圍是{1,8,16,32}。
圖6 MB 空間層選項(xiàng)示意圖Fig.6 Candidate operations of layers in MB space
對(duì)于耗時(shí)模型訓(xùn)練所需要的數(shù)據(jù)集,先在2 個(gè)空間上各自隨機(jī)采樣100 個(gè)獨(dú)立模型,之后根據(jù)2.3.2 節(jié)中所述算法采樣雙網(wǎng)絡(luò)訓(xùn)練集。 測(cè)試集為2 個(gè)空間中各隨機(jī)采樣1 000 個(gè)模型構(gòu)成。
圖卷積網(wǎng)絡(luò)訓(xùn)練參數(shù)如下,設(shè)置式(4)中p參數(shù)為2,訓(xùn)練時(shí)使用Adam 優(yōu)化器。 權(quán)重初始學(xué)習(xí)率為0.01,單批次數(shù)據(jù)量為128。 總共訓(xùn)練迭代1 000 輪。 每100 輪學(xué)習(xí)率下降為之前的30%。 為了多維度證明算法的有效性,實(shí)驗(yàn)設(shè)置了多個(gè)評(píng)價(jià)指標(biāo),包括平均相對(duì)誤差(MRE)、最大相對(duì)誤差(MAX)、5%誤差樣本占比、10%誤差樣本占比。 各個(gè)指標(biāo)具體介紹如下:
MRE 指標(biāo)為測(cè)試集樣本預(yù)測(cè)相對(duì)誤差的平均值,其計(jì)算式為
式中:yi為模型的真實(shí)耗時(shí);為算法預(yù)測(cè)耗時(shí);q為測(cè)試集樣本數(shù)。
MAX 指標(biāo)為測(cè)試集中預(yù)測(cè)的最大相對(duì)誤差,其計(jì)算式為
5%誤差樣本占比為測(cè)試集中預(yù)測(cè)相對(duì)誤差在5%以內(nèi)的樣本數(shù)占總樣本數(shù)的比例;10% 誤差樣本占比為模型預(yù)測(cè)相對(duì)誤差在10% 以內(nèi)的樣本占總測(cè)量樣本的比例。
本節(jié)實(shí)驗(yàn)針對(duì)MB 空間,將本文算法和傳統(tǒng)算法進(jìn)行對(duì)比。 對(duì)比算法包括單層預(yù)測(cè)累加、查表累加和基于one-hot 編碼的系列算法。 其中,基于one-hot 編碼的系列算法具體包括SVM回歸(線性核、高斯核)、貝葉斯回歸、拉索回歸和隨機(jī)森林回歸。 各算法的性能測(cè)試結(jié)果如表1所示。
本文算法(圖卷積網(wǎng)絡(luò))在HISI3559 上的平均相對(duì)平均誤差為0. 5%,最大相對(duì)誤差為2.4%。 2 種指標(biāo)均超越了其他算法。 在GPU 平臺(tái)上,本文算法的最大相對(duì)誤差為10.0%,優(yōu)于其他算法,而平均相對(duì)誤差除比拉索回歸(2.8%)略低0.3%外同樣優(yōu)于其他算法。 表1 證明了基于圖卷積網(wǎng)絡(luò)的耗時(shí)預(yù)測(cè)算法在不同硬件平臺(tái)上可以有效建模。 從本文算法和單層預(yù)測(cè)累加算法對(duì)比中可以看出,本文算法性能的提升來(lái)自于圖卷積的建模能力和耗時(shí)補(bǔ)償機(jī)制的提出。
表1 離散空間耗時(shí)算法對(duì)比Table 1 Performance comparison of algorithms in discrete search space
從表1 中進(jìn)一步發(fā)現(xiàn),相比GPU 平臺(tái),本文算法在HISI3559 平臺(tái)的精度提升更加明顯,其原因可能是HISI3559 的層間融合策略多于GPU。由于本文算法中耗時(shí)補(bǔ)償?shù)慕C(jī)制可以有效估計(jì)層間融合對(duì)耗時(shí)的影響,最終導(dǎo)致HISI3559 平臺(tái)上的預(yù)測(cè)精度提升比GPU 平臺(tái)更為顯著。
本節(jié)實(shí)驗(yàn)針對(duì)MB-C 連續(xù)空間,將本文算法和傳統(tǒng)算法進(jìn)行對(duì)比。 對(duì)比算法是單層預(yù)測(cè)累加算法。 需要說(shuō)明的是,由于連續(xù)變量無(wú)法使用one-hot 編碼, 基于one-hot 編碼的相關(guān)算法無(wú)法應(yīng)用于連續(xù)空間。 另外,由于連續(xù)空間提取查表的空間過(guò)大,查表累加算法也不適用。 因此,本節(jié)實(shí)驗(yàn)與單層預(yù)測(cè)累加算法進(jìn)行對(duì)比。 2 種算法在不同平臺(tái)上的性能如表2 所示。
從表2 可得,本文算法在HISI3559 平臺(tái)上5%誤差樣本占比和10% 誤差樣本占比分別為63.8%和99.7%,性能遠(yuǎn)超單層預(yù)測(cè)累加算法的0%(所有測(cè)試樣本誤差均大于10%);對(duì)于MRE和MAX 指標(biāo),本文算法相比單層預(yù)測(cè)累加算法的誤差也降低了至少1 個(gè)數(shù)量級(jí)。 在GPU 平臺(tái)上,本文算法的性能相對(duì)單層預(yù)測(cè)耗時(shí)累加算法也有顯著提高。 本節(jié)實(shí)驗(yàn)現(xiàn)象表明,在HISI3559和GPU 平臺(tái)上,本文算法由于圖編碼的有效性和圖卷積高效的建模能力,使其仍可以針對(duì)連續(xù)空間進(jìn)行有效建模,并且性能遠(yuǎn)超單層預(yù)測(cè)累加的算法。
表2 連續(xù)空間耗時(shí)算法對(duì)比Table 2 Performance comparison of algorithms in continuous search space
本文算法基于式(3)中的假設(shè):單個(gè)算子執(zhí)行對(duì)耗時(shí)的影響僅與其鄰近的節(jié)點(diǎn)距離p以內(nèi)的前置操作相關(guān)(p為常數(shù))。 本節(jié)以實(shí)驗(yàn)來(lái)討論此假設(shè)的有效性。
選擇目前主流網(wǎng)絡(luò)MobileNetV2、IncptionV2、ResNet50。 將不同的p值代入式(3)獲得的預(yù)測(cè)耗時(shí)與真實(shí)耗時(shí)進(jìn)行比較。 實(shí)驗(yàn)結(jié)果如圖7所示。
圖7 不同p 值得到的耗時(shí)與真值對(duì)比Fig.7 Comparison of latency with different p values and real latency
圖7 共包含3 組直方圖,分別表示3 個(gè)不同的網(wǎng)絡(luò)。 每組直方圖都存在5 個(gè)紋理不同的柱形數(shù)據(jù),柱狀圖高度表示相應(yīng)設(shè)置獲得的耗時(shí)。p=0 指單層測(cè)量直接累加所得值。 從圖7 中可得,p=0的耗時(shí)累加值和真實(shí)耗時(shí)差異巨大,說(shuō)明HISI3559芯片運(yùn)行時(shí)存在層間融合優(yōu)化,使得整體耗時(shí)與單層耗時(shí)單純累加差異甚遠(yuǎn)。 但當(dāng)p=1時(shí),其耗時(shí)累加值和真實(shí)耗時(shí)的差異就大幅降低。 當(dāng)p≥1 時(shí),這種差異仍然有所降低,但邊際效益已不高。 這說(shuō)明HISI3559 平臺(tái)絕大多數(shù)的單個(gè)算子執(zhí)行對(duì)耗時(shí)的影響僅與其鄰近的節(jié)點(diǎn)距離為1 以內(nèi)的前置操作相關(guān)。 基于本節(jié)實(shí)驗(yàn)現(xiàn)象,說(shuō)明當(dāng)p≥1 時(shí),式(3)中的假設(shè)在HISI3559 平臺(tái)上是成立的,考慮到輸入空間規(guī)模和耗時(shí)預(yù)測(cè)精度的權(quán)衡,在本文實(shí)驗(yàn)中,p設(shè)置為2。
將本文算法應(yīng)用到多目標(biāo)(精度與耗時(shí))網(wǎng)絡(luò)結(jié)構(gòu)搜索中。 實(shí)驗(yàn)使用MB-C 連續(xù)空間,搜索任務(wù)針對(duì)ImageNet100K 數(shù)據(jù)集的分類任務(wù),將搜索目標(biāo)耗時(shí)設(shè)置為4 ms。 具體網(wǎng)絡(luò)結(jié)構(gòu)搜索算法為:第1 步,借鑒文獻(xiàn)[26]訓(xùn)練超級(jí)網(wǎng)絡(luò)來(lái)快速評(píng)估每條支路的精度;第2 步,根據(jù)文獻(xiàn)[27]提出的遺傳算法搜索耗時(shí)接近4 ms,且性能盡量高的模型。 對(duì)比實(shí)驗(yàn)設(shè)置為:在其他實(shí)驗(yàn)條件保持相同的情況下,一個(gè)使用單層預(yù)測(cè)累加的耗時(shí)預(yù)測(cè)算法,另一個(gè)使用基于圖卷積網(wǎng)絡(luò)的耗時(shí)預(yù)測(cè)算法,對(duì)比搜索出來(lái)的網(wǎng)絡(luò)性能。 具體的實(shí)驗(yàn)結(jié)果如表3 所示(硬件平臺(tái)為HISI3559)。
從表3 可得,在保證其他搜索設(shè)置相同的情況下,使用單層預(yù)測(cè)累加算法搜索到的網(wǎng)絡(luò)耗時(shí)為4 256 μs。 使用本文提出的耗時(shí)預(yù)測(cè)算法搜索到的網(wǎng)路耗時(shí)為4 055 μs。 本文算法更接近預(yù)設(shè)的目標(biāo)耗時(shí)(4 000 μs),精度也沒(méi)有損失。
表3 耗時(shí)預(yù)測(cè)算法對(duì)結(jié)構(gòu)搜索的作用Table 3 Effect of latency predictor on neural architecture search
傳統(tǒng)的耗時(shí)估計(jì)算法無(wú)法很好地同時(shí)解決硬核加速器層間融合優(yōu)化的建模問(wèn)題和輸入空間過(guò)大導(dǎo)致的采樣成本高的問(wèn)題,為此本文提出了一種基于圖卷積的耗時(shí)預(yù)測(cè)算法。 主要改進(jìn)如下:
1) 將網(wǎng)絡(luò)模型編碼成有向無(wú)環(huán)圖,提出了基于圖論的網(wǎng)絡(luò)結(jié)構(gòu)編碼算法。
2) 將整體耗時(shí)模型恒等拆分成子網(wǎng)絡(luò)對(duì),并提出了有效的近似假設(shè),減少了輸入空間規(guī)模,降低欠擬合風(fēng)險(xiǎn)。
3) 設(shè)計(jì)了完整的圖卷積網(wǎng)絡(luò)結(jié)構(gòu),使用了淺層和深層特征融合的技術(shù)提高網(wǎng)絡(luò)的建模能力。
4) 設(shè)計(jì)新的損失函數(shù),有效訓(xùn)練圖卷積回歸模型。
5) 在不同網(wǎng)絡(luò)空間和硬件平臺(tái)上證明了本文算法的有效性,針對(duì)HISI3559 平臺(tái),本文算法在MRE、MAX、5% 誤差樣本占比、10% 誤差樣本占比4 項(xiàng)指標(biāo)均超過(guò)現(xiàn)有耗時(shí)估計(jì)算法,特別在MB-C 連續(xù)空間上,針對(duì)HISI3559 平臺(tái),本文算法將MRE 從302%降低到5.3%。
6) 將本文算法與模型結(jié)構(gòu)搜索算法結(jié)合,在特定硬件上搜索到既高效又高精度的模型。
本文算法能夠與結(jié)構(gòu)搜索、通道裁剪、量化等多種優(yōu)化手段結(jié)合,對(duì)邊緣側(cè)部署模型優(yōu)化有重要意義。