曹渠成,陳慶奎
(上海理工大學(xué) 光電信息與計(jì)算機(jī)工程學(xué)院,上海 200093)
自從AlexNet[2]在2012年的ImageNet上奪冠后,在計(jì)算機(jī)圖像識別領(lǐng)域,構(gòu)建卷積神經(jīng)網(wǎng)絡(luò)模型來解決相關(guān)問題已經(jīng)變得越來越普遍.人們在追求精度的同時使得神經(jīng)網(wǎng)絡(luò)變得越來越龐大,甚者已經(jīng)達(dá)到了上百處理層和上千輸出通道的規(guī)模[4],因此計(jì)算量也上升到了近上百億次的浮點(diǎn)運(yùn)算,導(dǎo)致在對計(jì)算設(shè)備性能愈加嚴(yán)苛的同時加重了其計(jì)算負(fù)載.
目前深度神經(jīng)網(wǎng)絡(luò)模型的運(yùn)行方式有兩種:一種是采用C/S架構(gòu)也就是前端設(shè)備采集到圖片后將其傳送給服務(wù)器交給服務(wù)器來處理,在面對大規(guī)模設(shè)備和高頻率上傳圖像的情況下會給服務(wù)端造成很大的負(fù)載壓力;另一種方式得益于近年來出現(xiàn)的輕量化模型,這些模型的主要思路是減輕CNN在卷積層的運(yùn)算量[17],比如將普通卷積拆分為逐通道卷積和逐點(diǎn)卷積的Xception網(wǎng)絡(luò)[5],使用逐點(diǎn)卷積和分組卷積的ResNetXt網(wǎng)絡(luò)[3],以及在這兩者基礎(chǔ)上引入通道重排的ShuffleNet[6],然而雖然這些網(wǎng)絡(luò)使得嵌入式設(shè)備在本地運(yùn)行深度學(xué)習(xí)模型成為可能,但是對于有實(shí)時性需求的操作模型運(yùn)行完的時間不可控,而低廉的嵌入式設(shè)備即使使用了這些方法仍然面臨能否完成任務(wù)的考驗(yàn),其次在不改變結(jié)構(gòu)的情況下想要完全移植已經(jīng)存在的深度神經(jīng)網(wǎng)絡(luò)到嵌入式設(shè)備的可行性又很低.
本文考慮在類似大規(guī)模公交車中實(shí)時車廂的人流判斷調(diào)度,以及大面積公園危險情況預(yù)警的場景中都需要運(yùn)用到大規(guī)模廉價嵌入式設(shè)備進(jìn)行監(jiān)控和圖像采集.如果采用方式一,會造成服務(wù)端的大量負(fù)擔(dān);如果采用方式二,因?yàn)樵谶@些場景中的采集設(shè)備大都廉價可能會面臨無法運(yùn)行完整個過程而宕機(jī)或者因?yàn)橛?jì)算過程太長超出了下次采集時間,失去了重要信息.為了能夠減輕服務(wù)端的負(fù)載,同時在兩次采樣中的空閑時間中發(fā)揮前端嵌入式移動設(shè)備的計(jì)算能力.本文通過Roofline模型[1]根據(jù)硬件平臺本身的性能進(jìn)行深度神經(jīng)網(wǎng)絡(luò)運(yùn)算時間的粗粒度估計(jì)判斷該平臺是否能完成整個模型的計(jì)算工作以及計(jì)算在可達(dá)范圍內(nèi)運(yùn)行到每層的大致時間.接著通過本文提出的縮小式窗口計(jì)算進(jìn)行細(xì)粒度驗(yàn)證,得到每一層的實(shí)際運(yùn)算時間,使用這些信息引入計(jì)算過程分離思想,根據(jù)所期望的時間將一部分的工作量交給前端嵌入式設(shè)備使其在空閑時間中完成,將另一部分工作量交給服務(wù)端完成可有效減少其負(fù)載.
Roofline模型是由伯克利大學(xué)的并行計(jì)算實(shí)驗(yàn)室提出一種計(jì)算模型所要花費(fèi)的運(yùn)行時間的估算模型[1],它指出一個計(jì)算模型主要受到計(jì)算平臺硬件性能兩方面的制約:
1)計(jì)算平臺的峰值計(jì)算能力π(單位:FLOP/s),它表示該計(jì)算平臺在單位時間內(nèi)能完成的浮點(diǎn)數(shù)峰值計(jì)算次數(shù);
2)計(jì)算平臺的峰值內(nèi)存帶寬β(單位:Byte/s),它表示計(jì)算平臺的內(nèi)存在單位時間內(nèi)能完成的峰值數(shù)據(jù)傳輸容量[7].
在運(yùn)用Roofline模型前還需要對使用的計(jì)算模型進(jìn)行定量分析,得到幾個關(guān)鍵量:
1)計(jì)算模型的總體計(jì)算量F(單位:FLOPS),表示對于一次輸入計(jì)算模型需要的浮點(diǎn)算術(shù)的總次數(shù),可以認(rèn)為是模型的時間復(fù)雜度.
2)計(jì)算模型所用的訪存量M(單位:Bytes):對于一次輸入計(jì)算模型在內(nèi)存中訪問的內(nèi)存大小,可以認(rèn)為是模型的空間復(fù)雜度.
3)計(jì)算模型的計(jì)算強(qiáng)度I(單位:FLOP/Byte):計(jì)算量與訪存量之比[7].


圖1 Roofline 模型圖Fig.1 Roofline model diagram
圖1中的縱坐標(biāo)P(FLOP/s)代表著計(jì)算模型的峰值性能,即計(jì)算平臺所能達(dá)到的每秒浮點(diǎn)運(yùn)算的極限次數(shù).
根據(jù)圖1得到Roofline模型的數(shù)學(xué)表達(dá)式如公式(1)所示.
P=min(π,β×I)
(1)
Roofline模型可以告訴我們在理想條件下計(jì)算模型所能達(dá)到的最好性能.但是計(jì)算模型還會受到源代碼復(fù)雜度,使用的編譯器類型以及運(yùn)行代碼的體系結(jié)構(gòu)和微體系結(jié)構(gòu)的復(fù)雜交互的影響.這些因素也導(dǎo)致計(jì)算模型不能達(dá)到最好的性能[7].所以本文在對深度神經(jīng)網(wǎng)絡(luò)做分離時先使用Roofline模型進(jìn)行粗粒度的估計(jì)找到在空閑時間下能完成的計(jì)算層數(shù)進(jìn)行第一次分層,接著在此基礎(chǔ)上引入縮小式窗口計(jì)算通過實(shí)際運(yùn)行方式得到每一層運(yùn)行的精確時間,再在此基礎(chǔ)上進(jìn)行第二次的細(xì)粒度分層,達(dá)到預(yù)期目標(biāo).
Protocol Buffer是由google公司提出的一種開源跨語言跨平臺的高效結(jié)構(gòu)化數(shù)據(jù)編碼框架[9],采用二進(jìn)制編碼格式,即使在不同平臺上也能進(jìn)行互相通信交互.并且由于采用了特殊設(shè)計(jì)的編解碼格式,對數(shù)據(jù)的序列化和反序列化操作效率較高,同時得益于其所采用的獨(dú)特的編碼機(jī)制,它能夠?qū)崿F(xiàn)數(shù)據(jù)的壓縮和傳輸[12].
本文主要以卷積神經(jīng)網(wǎng)絡(luò)為例,所以著重分析CNN模型的計(jì)算量和訪存量給出相應(yīng)的歸納公式.
本文所使用的嵌入式設(shè)備的結(jié)構(gòu)如圖2所示.

圖2 嵌入式設(shè)備計(jì)算結(jié)構(gòu)Fig.2 Embedded device computing structure
該系統(tǒng)采用Cortext-A53架構(gòu)CPU,該CPU實(shí)現(xiàn)了ARMv8-A 64位指令集,內(nèi)核信息也在圖中給出.該架構(gòu)的主要優(yōu)勢在于基于順序執(zhí)行的簡單8級流水線與復(fù)雜流水線的微架構(gòu)相比,一條指令穿越一個簡單的流水線需要更少的寄存器,取指、譯碼、發(fā)射、執(zhí)行和寫回結(jié)果需要翻轉(zhuǎn)的邏輯更少.因此,簡單的流水線消耗更小的面積和更少的功耗.同時具有高可擴(kuò)展性,可針對移動SoC和可擴(kuò)展企業(yè)系統(tǒng)進(jìn)行配置和物理優(yōu)化實(shí)現(xiàn).其低功耗,可定制,廉價這些特性非常適合本文的監(jiān)控設(shè)備場景.
其他的主要外圍設(shè)備有圖片采集的CAMERA,存儲模型的FLASH,用來加載模型提高速度的LPDDR2 1G內(nèi)存,以及傳輸結(jié)果的LAN9514網(wǎng)卡和BLT天線.
因?yàn)镃NN的計(jì)算量主要集中在卷積層,所以本文以單個卷積層為例進(jìn)行分析[16],其他例如池化激活分析方法也類似不做贅述,如圖3所示.

圖3 單個卷積層分析圖Fig.3 Single convolutional layer analysis
其中Dini是輸入核的邊長,Mini是輸入核的深度;圖中第二部分為卷積核它與輸入核進(jìn)行浮點(diǎn)運(yùn)算,Dki是卷積核的邊長,Cini是輸入通道,有Mini=Cini,Couti是卷積核的輸出通道個數(shù);最后得到第三部分的輸出,同樣的Douti為輸出核的邊長,Mouti是輸出核的深度,有Couti=Mouti.根據(jù)卷積運(yùn)算易得公式(2):
單層卷積的計(jì)算量(公式(2),TCi為i層操作的計(jì)算量)
(2)
訪存量主要與參數(shù)有關(guān)根據(jù)圖3易得公式(3):
單層卷積的訪存量(公式(3),SCi為i層的訪存量)
(3)
模型整體的計(jì)算量TCtotal和訪存量SCtotal如公式(4)和公式(5)所示:
(4)
(5)
使用分析方法和Roofline模型結(jié)合我們就可以預(yù)估出計(jì)算模型到達(dá)某一層所花費(fèi)的理論最短時間.
但是正如前面所提到的Roofline得到的時間是理論上運(yùn)行的最短時間,實(shí)際上很多情況下都不能到達(dá)這一時間,這樣會導(dǎo)致與我們預(yù)期效果有很大的差距.要知道每一層運(yùn)算時間的最好的辦法仍然是讓模型全部跑一遍記錄下每層運(yùn)行時間再做分配,但是如果模型很大有上百層的操作,廉價低性能的嵌入式設(shè)備很可能無法走完整個程序而宕機(jī),同時最后得到的時間也不可預(yù)計(jì).所以本文提出了一種縮小式窗口計(jì)算的后續(xù)過程,本文在保留Roofline模型同時加入縮小式窗口計(jì)算,使用Roofline模型進(jìn)行一個粗粒度的估計(jì)找到一個接近期望時間T的層數(shù)i.我們要“悲觀”地認(rèn)為這一層不是我們要找的,因?yàn)樗鼘?shí)際花費(fèi)的時間要比計(jì)算出來的多,但通過理論計(jì)算后的它是在一個可控過程中,要找到期望時間T還需要在i層之前去找,而i層之前每層所用的時間我們就可以用實(shí)際運(yùn)行時間記錄下來,根據(jù)實(shí)際計(jì)算結(jié)果進(jìn)行第二次分層,就像一個窗口不斷地縮小即縮小式窗口計(jì)算.具體執(zhí)行流程如圖5所示.

圖4 使用Roofline計(jì)算出到達(dá)某一層理論最短時間Fig.4 Use Roofline to calculate the shortest time to reach a certain layer theory
在第(i)步得到Layer.info記錄的深度神經(jīng)網(wǎng)絡(luò)每層信息的配置文件并分析層數(shù)及計(jì)算量和訪存量.
在第(ii)步對于期望時間T1,使用Roofline找到大致層數(shù),計(jì)算得到運(yùn)行到第i層時所花費(fèi)的時間為T.
在第(iii)步考慮到實(shí)際情況會比預(yù)想的悲觀,所以運(yùn)行模型至第i層,得到運(yùn)行到每層所花費(fèi)實(shí)際時間.
第(iv)步發(fā)現(xiàn)在實(shí)際運(yùn)行中t3>T,而t2 如果期望的時間發(fā)生變化為T′時,若T′ 當(dāng)T′>T1時則跳轉(zhuǎn)第(vi)步直接讀取LayerTime.info并返回到Roofline分析步驟(ii)進(jìn)行新一輪的分析. 上述的預(yù)測分配方法發(fā)生在發(fā)布前的生產(chǎn)環(huán)境中或是設(shè)備剛啟動時,因?yàn)橥ㄟ^配置文件保留結(jié)果.設(shè)備工作前只需要讀取配置文件就可以加載對應(yīng)模型參數(shù),如果時間需求發(fā)生變化調(diào)整,一般來說只要前期規(guī)劃好很少會有需求頻繁變化,在該情況下設(shè)備重啟需重新加載模型參數(shù)進(jìn)行調(diào)整,所以在工作狀態(tài)時不需要考慮該預(yù)測方法帶來的時間影響. 我們給出分層過程的偽代碼: Separation算法: 1:IF LayerTime.info is not null THEN Read oldtimeTfrom LayerTime.info ELSE T=0 2:Input new excepted timeT′ 3:IFT′ Separate the layer using former info ELSE Read Each Layer info from Layer.info 4:Compute each Layer′sTCiandSCi 5:Apply the Roofline model to estimate each Layer′s minimum execution timeti 6.Find theticlose to the excepted timeT′ 7.Using reduced window calculation and write each layer′s Actual time to LayerTime.info 8.Separate the layer 我們可以很確切地知道經(jīng)過分層的方法,能夠大幅度減少最后交給服務(wù)端的計(jì)算任務(wù).假設(shè)最后嵌入式設(shè)備分得的層數(shù)為k,那么在服務(wù)端能減少的計(jì)算量開銷,訪存量開銷如公式(6)、公式(7)所示: (6) (7) (8) 圖5 完整的分層過程Fig.5 Complete layering process 無論從實(shí)際還是從數(shù)學(xué)公式上考慮,我們都可以看到,將一部分神經(jīng)網(wǎng)絡(luò)的工作合理地分配到前端嵌入式設(shè)備上可以明顯減少傳統(tǒng)方式中服務(wù)端所要面臨的工作負(fù)載過大的問題. 采用Roofline和縮小式窗口計(jì)算對神經(jīng)網(wǎng)絡(luò)分層后,整個預(yù)測過程如圖6所示. 圖6 經(jīng)過分層策略后計(jì)算模型的運(yùn)行圖Fig.6 Run the graph of the model after the stratification strategy 可以看到,我們系統(tǒng)中有一部分是傳輸流量的開銷,對于傳統(tǒng)的由攝像頭采集圖像發(fā)送到服務(wù)端進(jìn)行預(yù)測,它發(fā)送的是圖片.而現(xiàn)在攝像頭的CPU也可以利用空閑時間做一些預(yù)處理的工作而預(yù)處理后發(fā)送的數(shù)據(jù)則是包含矩陣數(shù)據(jù)的文件. 通常情況下發(fā)送的數(shù)據(jù)我們會采用JSON[14]格式或者XML[13]格式定義下的字符流文件,但是在這一過程中我們?nèi)匀话l(fā)現(xiàn)傳輸流量方面的開銷很大,雖然采用字符流的方式傳輸?shù)氖侨四芸炊母袷剑欠?wù)端還要花費(fèi)一部分時間去做解析,顯然不是最佳方案.本文從Protocol Buffer[8]中得到啟發(fā),基于二進(jìn)制傳輸文件,優(yōu)勢在于體積更小,數(shù)據(jù)在傳輸過程中更快,同樣因?yàn)槭嵌M(jìn)制只要制定好了規(guī)則在服務(wù)端解析同樣很快.圖7、圖8,展示了基于字符流和二進(jìn)制文件的內(nèi)容差異. 圖7 經(jīng)過二進(jìn)制編碼的文件內(nèi)容Fig.7 Binary encoded file content 圖8 字符流發(fā)送的文件內(nèi)容Fig.8 File content sent by character stream 輸出的矩陣規(guī)模與二進(jìn)制文件的大小關(guān)系如公式(9)所示,其中S為矩陣中一個值占用的大小,R為保存矩陣規(guī)則所占用的大小,兩者都為常量,在本文中S取值為4Bytes,R取值為128Bytes. (9) 如果圖片的原始大小為OriginSize,那么理論上采用發(fā)送二進(jìn)制文件的方式可以減少的大小為: (10) 從上述論述中我們?nèi)菀字溃灰_定了每層的輸出結(jié)構(gòu)即輸出的矩陣大小,那么其發(fā)送的文件大小也是固定的.而OriginSize卻在很大程度上因?yàn)椴杉瘮z像頭的清晰度不一致,圖像包含的信息不同其大小也會略有變化.所以只有當(dāng)OriginSize>BinarySizei時才會體現(xiàn)減少傳輸大小的作用,也就是說在面臨數(shù)據(jù)規(guī)模越大采集圖像信息越豐富和清晰的時候Savei的值才會越大采用此方法進(jìn)行傳輸也就更有優(yōu)勢,當(dāng)面對規(guī)模小較小畫質(zhì)內(nèi)容較為模糊和稀少的情況下就需要在計(jì)算量和傳輸量方面進(jìn)行取舍.本文也在后續(xù)實(shí)驗(yàn)中進(jìn)行了比較. 在前端大規(guī)模攝像頭設(shè)備采集到圖片完成所分到的計(jì)算任務(wù)后交由服務(wù)端處理的協(xié)同處理流程如圖9所示. 圖9 協(xié)同處理機(jī)制流程圖Fig.9 Collaborative processing mechanism flow chart 在采集組部分,考慮到在相同時間T的約束下,由于前端設(shè)備的異構(gòu)性所能達(dá)到的計(jì)算層數(shù)也不同.本文采用傳感器分組的方式由計(jì)算層數(shù)分為不同組. 不同組的發(fā)送數(shù)據(jù)的目標(biāo)端口也不同,這樣做的好處是接收數(shù)據(jù)時不需要解析包里面的內(nèi)容,根據(jù)接收端口就可知設(shè)備所屬組如表1所示. 表1 前端攝像設(shè)備分組表Table 1 Device grouping table 在消息服務(wù)部分,使用是面向通道進(jìn)行IO操作的NIO(New IO),即非阻塞,當(dāng)一個通道無數(shù)據(jù)可讀,可切換通道處理其他IO.對于已經(jīng)發(fā)送到緩沖區(qū)的數(shù)據(jù)包,可以開辟一個線程池根據(jù)訪問量動態(tài)增加或者減少線程數(shù)量.每個線程的工作就是將數(shù)據(jù)包轉(zhuǎn)移到消息隊(duì)列中等待模型的計(jì)算操作. 圖10 隊(duì)列發(fā)布機(jī)制Fig.10 Queue publishing mechanism 為了解決異構(gòu)數(shù)據(jù)問題,同時提高利用率,本文將不同組的數(shù)據(jù)存放到不同的消息隊(duì)列中,同時設(shè)定容量閾值QN和時間閾值QT,如圖10所示.在計(jì)算服務(wù)和多個消息隊(duì)列之間有一個Selector選擇器充當(dāng)訂閱者,當(dāng)隊(duì)列包含的數(shù)據(jù)量Cap(Queue)=QN時,或者距離上次發(fā)布內(nèi)容到Selector的時間Ot(Queue)>QT時將內(nèi)容分發(fā)到Selector中. 如果此時的計(jì)算服務(wù)正在運(yùn)行,則選擇器選擇等待.當(dāng)計(jì)算服務(wù)完成當(dāng)前任務(wù)后,從選擇器中選出最先到達(dá)的任務(wù),沒有任務(wù)則進(jìn)入空閑狀態(tài).如果發(fā)布到選擇器時計(jì)算服務(wù)本身就處于空閑狀態(tài),則由選擇器充當(dāng)發(fā)布者將任務(wù)發(fā)布給計(jì)算服務(wù).計(jì)算服務(wù)根據(jù)Selector中的標(biāo)志位置命中要從哪一層開始計(jì)算作業(yè). 本次實(shí)驗(yàn)使用的硬件環(huán)境如下:服務(wù)端的CPU是Intel(R) Core(TM) i7-7700 CPU @ 3.60GHz,內(nèi)存大小為32G 2400MHZ,GPU是GTX1080,顯存大小為8G.前端嵌入式設(shè)備為樹莓派3B,它的CPU為ARM CortexA53架構(gòu),內(nèi)存為LPDDR2 1G. 開發(fā)環(huán)境為:服務(wù)端使用的是TensorFlow 1.3.0,樹莓派使用的是樹莓派版的TensorFlow 1.7.0,IDE均為Sublime Text 3.0. 計(jì)算模型采用最典型的CNN網(wǎng)絡(luò)LeNet-5[10]使用MNIST數(shù)據(jù)集完成手寫數(shù)字識別,它的計(jì)算模型如圖11所示. 圖11 LeNet-5計(jì)算模型Fig.11 LeNet-5 computing model 它的計(jì)算分析如表2所示. 表2 LeNet-5計(jì)算量和訪存量分析Table 2 LeNet-5 calculation and memory analysis 分析分層后傳輸數(shù)據(jù)文件過程中所要花費(fèi)的流量大小比較,一次處理的圖片量為10張.由圖12可知傳輸二進(jìn)制文件的方案明顯優(yōu)于字符文件的方案.同時由于在CNN網(wǎng)絡(luò)中每一層輸出的矩陣大小是固定的,所以傳輸流量大小也恒定,而傳輸文件的方式是否較之傳輸圖片的方式更加節(jié)省資源取決 圖12 傳輸流量比較Fig.12 Transmission traffic comparison 于攝像頭得到圖片的大小,對于清晰度較小的圖片(小于BinarySize)采用分層可能在前幾次的傳輸流量上比直接傳圖會稍大如實(shí)驗(yàn)采取的極端情況10張圖片總大小僅為2k,而對于清晰度較高的圖片(大于BinarySize)這種分層方式則非常有效地減少了這方面的流量問題,本文采用常見攝像頭采集的10張總大小為3600K的圖像,發(fā)現(xiàn)對該模型來說只是采用二進(jìn)制文件在第一層就可以減少達(dá)到72%的大小,隨著層數(shù)的深入,大小最多可以減少到98%,而傳輸時間也與流量大小表現(xiàn)出正相關(guān)性,由圖13可知其時間最大也提升了93%.可以說在絕大部分環(huán)境下也極大提升了傳輸效率. 圖13 傳輸時間比較Fig.13 Transmission time comparsion 輸入預(yù)期時間T,使用本文Roofline和縮小式窗口計(jì)算,對計(jì)算模型進(jìn)行分層,得到具體層和嵌入式設(shè)備執(zhí)行到該層的花費(fèi)時間如表3所示.為了使效果更明顯使用了500張MNIST數(shù)據(jù)集圖片進(jìn)行驗(yàn)證. 表3 使用分層模型進(jìn)行分層結(jié)果Table 3 Hierarchical results using a layered model 可以看到對于預(yù)期時間T我們總能找到滿足在該時間內(nèi)完成的最大層數(shù),證明該預(yù)測方式符合本文目標(biāo). 我們考察分層后的服務(wù)端響應(yīng)時間(為了增加效果模擬了1000個節(jié)點(diǎn)發(fā)送來的15000張圖片數(shù)據(jù)),經(jīng)過分層后服務(wù)端的響應(yīng)時間也有了顯著的提升,分到最后層對于服務(wù)端來說響應(yīng)速度比起第一層提升了96%.面對大規(guī)模多節(jié)點(diǎn)的情況下使用分層處理確實(shí)能有效加快服務(wù)器的處理速度,如圖14所示. 圖14 分層后服務(wù)端的響應(yīng)時間Fig.14 Server response time after layering 定義LOAD=t×u,其中LOAD為GPU工作負(fù)載,t為分層后運(yùn)行時間,u為分層后平均內(nèi)存占有率.使用LOAD來粗略估計(jì)負(fù)載情況,顯而易見前端設(shè)備分到的層越多,服務(wù)端壓力壓力越小,最大可以減少99%,可以有更多的能力空閑完成其他任務(wù),如圖15所示. 圖15 分層后服務(wù)端GPU負(fù)載情況Fig.15 Server-side GPU load situation after layering 本文實(shí)現(xiàn)了在嵌入式設(shè)備上運(yùn)用神經(jīng)網(wǎng)絡(luò)同時提出了一種將深度神經(jīng)網(wǎng)絡(luò)分層的思想,有別于傳統(tǒng)方法中將預(yù)測工作全部交給服務(wù)端去完成或者都是由本地高性能嵌入式設(shè)備來做的方式,將一部分計(jì)算工作交由前端廉價嵌入式設(shè)備來做,可拓展性高,發(fā)揮了前端設(shè)備的計(jì)算能力并減少了服務(wù)端的計(jì)算負(fù)載.在系統(tǒng)初始化階段通過Roofline與縮小式窗口計(jì)算相結(jié)合的方式給出了一種較為精確的計(jì)算時間預(yù)估方法,雖然本文主要是使用了卷積神經(jīng)網(wǎng)絡(luò)做例子,但是只要分析對了計(jì)算量和訪存量在面對任何情況下仍然可以使用該預(yù)測模型進(jìn)行預(yù)測,具有實(shí)際意義. 后續(xù)工作上,仍然要完善預(yù)測的功能因?yàn)殡S著環(huán)境的改變嵌入式設(shè)備出現(xiàn)降頻等情況還需要有實(shí)時調(diào)整的策略,同時應(yīng)該從調(diào)度問題下再出發(fā),配合出更好的通信機(jī)制和協(xié)議完善整個系統(tǒng).

3.4 采用更輕的網(wǎng)絡(luò)傳輸方式



3.5 協(xié)同處理機(jī)制



4 實(shí)驗(yàn)分析
4.1 實(shí)驗(yàn)環(huán)境說明


4.2 網(wǎng)絡(luò)傳輸優(yōu)劣比較


4.3 使用分層模型進(jìn)行驗(yàn)證

4.4 服務(wù)端響應(yīng)與負(fù)載


5 結(jié) 語