[崔思靜 李寶榮 潘碧瑩]
近年來,隨著人工智能(AI)技術(shù)的不斷演進(jìn),終端芯片制造廠商推出的中高端芯片都提供了深度神經(jīng)網(wǎng)絡(luò)(DNN)模型的加速計(jì)算能力,AI 應(yīng)用程序逐漸被廣泛落地于終端設(shè)備。盡管新一代智能終端的AI 處理單元能力越來越強(qiáng)大,但受限于設(shè)備自身有限的資源,AI 應(yīng)用的計(jì)算強(qiáng)度、內(nèi)存消耗和功耗備受關(guān)注。終端設(shè)備以及部分邊緣設(shè)備對離線運(yùn)行完整的DNN 模型推理,仍存在著嚴(yán)格的計(jì)算、內(nèi)存和能耗成本限制。
通過DNN 模型計(jì)算卸載的方式,將全部或部分的模型計(jì)算任務(wù)卸載到其他設(shè)備(包括云設(shè)備、邊緣設(shè)備或終端設(shè)備)上,是近年終端設(shè)備控制AI 資源成本的主要研究方向之一。以設(shè)備間協(xié)同推理計(jì)算的方式,能減輕原設(shè)備上計(jì)算、內(nèi)存占用、存儲(chǔ)、功率和所需數(shù)據(jù)速率的壓力,同時(shí)減小推理延遲,提高AI 應(yīng)用的服務(wù)質(zhì)量(QoS)。
本文即針對智能終端設(shè)備的DNN 計(jì)算卸載決策展開研究,文中第2 節(jié)介紹DNN 計(jì)算卸載決策技術(shù)發(fā)展現(xiàn)狀,第3 節(jié)針對智能終端特性對DNN 計(jì)算卸載系統(tǒng)管線進(jìn)行進(jìn)一步研究,同時(shí)提出一種適合智能終端AI 應(yīng)用落地的模型潛在分割點(diǎn)搜索策略,并在第4 節(jié)進(jìn)行系統(tǒng)仿真實(shí)驗(yàn),最后在第5 節(jié)給出總結(jié)和展望。
計(jì)算卸載決策主要解決的是終端設(shè)備決定卸載什么、卸載多少以及如何卸載的問題[1]。在DNN 模型計(jì)算卸載決策中,根據(jù)設(shè)備的處理能力、資源占用情況和網(wǎng)絡(luò)環(huán)境,將DNN 模型中計(jì)算密集、耗能密集的部分卸載到其他節(jié)點(diǎn)設(shè)備,而將隱私敏感和延遲敏感部分留在終端設(shè)備。由終端設(shè)備執(zhí)行模型特定部分的推理計(jì)算,再將剩余計(jì)算和中間結(jié)果發(fā)送到其他節(jié)點(diǎn),由接收到計(jì)算任務(wù)和結(jié)果的一個(gè)或多個(gè)節(jié)點(diǎn)完成剩余部分的模型推理計(jì)算,并最終將推理結(jié)果返回給原終端設(shè)備。
DNN 模型結(jié)構(gòu)可被看作有向無環(huán)圖(DAG)?;贒NN 模型的計(jì)算卸載決策,則需基于模型結(jié)構(gòu)確定一組潛在的切割邊(即分割點(diǎn)),根據(jù)如最低計(jì)算時(shí)延、最小計(jì)算能耗等優(yōu)化目標(biāo),從該組分割點(diǎn)中擇出最優(yōu)的分割點(diǎn)和分割模式。根據(jù)所選分割點(diǎn)將DNN 模型計(jì)算分解成多份計(jì)算任務(wù),保證本地計(jì)算任務(wù)所需資源低于本設(shè)備可用資源的上限,同時(shí)優(yōu)化設(shè)備和各參與節(jié)點(diǎn)設(shè)備的計(jì)算、存儲(chǔ)/內(nèi)存、功率、通信資源的消耗。
如何確定模型內(nèi)所有的潛在分割點(diǎn),是DNN 模型計(jì)算卸載決策的關(guān)鍵之一。在研究領(lǐng)域,一種常見的方式是將DNN 模型內(nèi)的每個(gè)神經(jīng)網(wǎng)絡(luò)層(如卷積層、池化層、全連接層等)視作DAG 的頂點(diǎn),將層與層之間的每一條邊作為潛在的分割點(diǎn)[2~4],以神經(jīng)網(wǎng)絡(luò)層為子任務(wù)單位,在設(shè)備之間分配計(jì)算任務(wù)。而針對資源受限的IoT 設(shè)備,則傾向于創(chuàng)建更細(xì)膩的計(jì)算任務(wù)顆粒度,通過模型并行技術(shù),將卷積層和全連接層中的矩陣運(yùn)算進(jìn)一步分解為幾個(gè)可并行的矩陣運(yùn)算操作[5,6],以每個(gè)操作節(jié)點(diǎn)作為DAG 中的頂點(diǎn),可形成一組更加細(xì)致的模型潛在分割點(diǎn)。
確定潛在分割點(diǎn)后,即須根據(jù)優(yōu)化目標(biāo)對每個(gè)可能的計(jì)算任務(wù)進(jìn)行性能分析,以從中選擇最優(yōu)的分割點(diǎn)和分割模式。經(jīng)典的方法如Neurosurgeon[2],對每個(gè)參與協(xié)同計(jì)算的設(shè)備,采用回歸模型對不同種類的神經(jīng)網(wǎng)絡(luò)層進(jìn)行計(jì)算時(shí)延或能耗的建模,以預(yù)測特定模型層在指定設(shè)備上所需要的時(shí)延或能量。另一方面,文獻(xiàn)[3]認(rèn)為設(shè)備軟硬件對連續(xù)的模型層存在加速行為,將每個(gè)模型層獨(dú)立出來做性能分析會(huì)存在一定偏差,應(yīng)對給定模型中的所有神經(jīng)網(wǎng)絡(luò)層組合作分析。這對智能終端可適用的DNN 模型計(jì)算卸載決策技術(shù)來說有借鑒意義。
在管線設(shè)計(jì)中,智能終端可參與的DNN 模型計(jì)算卸載可分為DNN模型準(zhǔn)備和協(xié)同計(jì)算兩個(gè)階段,如圖1所示。
圖1 智能終端可參與的DNN 計(jì)算卸載系統(tǒng)管線
3.1.1 DNN 模型準(zhǔn)備階段
對于智能終端DNN 模型計(jì)算卸載決策技術(shù)的研究,還需結(jié)合智能終端AI 技術(shù)棧的特性討論。當(dāng)前各大終端芯片廠商如蘋果、華為海思、高通、聯(lián)發(fā)科等已相繼地在其終端產(chǎn)品上配備了NPU、AIP 和APU 等專用的AI 加速硬件單元芯片,并相應(yīng)推出了芯片專用的AI 模型格式。這要求應(yīng)用開發(fā)者在推出終端AI 應(yīng)用前,須使用芯片廠商提供的模型轉(zhuǎn)換工具,對已訓(xùn)練好的DNN 模型進(jìn)行格式上的轉(zhuǎn)換。由于涉及工序繁瑣,耗時(shí)較長,為不影響計(jì)算任務(wù)的分配和生成,模型切割需在協(xié)同推理決策前完成,這意味著DNN 模型內(nèi)所有潛在分割點(diǎn)須被提前定位。
在模型準(zhǔn)備階段,首先對給定的DNN 模型進(jìn)行潛在分割點(diǎn)搜索,隨后按照模型內(nèi)所有潛在的分割點(diǎn),對DNN 模型進(jìn)行切割,并將切割后的模型(模型切片)轉(zhuǎn)換成目標(biāo)智能終端芯片專用的模型格式。在完成格式轉(zhuǎn)換后,對各模型切片在設(shè)備上的執(zhí)行性能進(jìn)行分析。如何結(jié)合智能終端特性,找出DNN 模型內(nèi)的潛在分割點(diǎn),將在3.2節(jié)中展開。
3.1.2 DNN 協(xié)同計(jì)算階段
結(jié)合協(xié)同計(jì)算中的數(shù)據(jù)鏈條考慮,終端作為最靠近用戶的設(shè)備,其內(nèi)數(shù)據(jù)通常都與用戶信息緊密相關(guān)。在使用智能終端進(jìn)行DNN 模型計(jì)算卸載時(shí),應(yīng)同時(shí)考慮到用戶的隱私安全,在管線中的協(xié)同計(jì)算階段引入相關(guān)保護(hù)機(jī)制。
DNN 模型計(jì)算推理階段,主要可包括5 個(gè)功能模塊,分別是啟動(dòng)和預(yù)處理、DNN 模型計(jì)算任務(wù)卸載決策、DNN 模型計(jì)算任務(wù)執(zhí)行、消息收發(fā)和后處理模塊。下面以協(xié)同計(jì)算場景中“任務(wù)發(fā)起方”“任務(wù)接收方”兩類設(shè)備角色為例,描述各模塊功能。
(1)啟動(dòng)和預(yù)處理模塊:任務(wù)發(fā)起方在啟動(dòng)后,首先確定需進(jìn)行計(jì)算卸載的DNN 模型信息,再調(diào)用DNN模型計(jì)算任務(wù)卸載決策模塊。同時(shí),任務(wù)發(fā)起放根據(jù)所用模型,對原始輸入數(shù)據(jù)進(jìn)行相應(yīng)的預(yù)處理,以備后用。另一方面,任務(wù)接收方在啟動(dòng)后即注冊監(jiān)聽任務(wù)請求。
(2)DNN 模型計(jì)算任務(wù)卸載決策模塊:任務(wù)決策算法置入該模塊中。以每個(gè)模型切片的計(jì)算為子任務(wù),根據(jù)模型切片的性能分析結(jié)果,將各子任務(wù)組合并分配到合適的設(shè)備上以達(dá)到給定的優(yōu)化目標(biāo),輸出任務(wù)分配信息。
根據(jù)新時(shí)期人才培養(yǎng)的要求和目標(biāo),要求畢業(yè)時(shí)具有創(chuàng)新能力和工程實(shí)踐能力的應(yīng)用型高級人才培養(yǎng)目標(biāo)和要求等,能夠運(yùn)用所學(xué)理論解決實(shí)際生產(chǎn)問題,因此,有效地實(shí)施案例教學(xué)法,可以將理論與生產(chǎn)實(shí)踐相結(jié)合,使學(xué)生感到所學(xué)課程與自己畢業(yè)后所從事的工作是密切相關(guān)的,認(rèn)識到在學(xué)校期間要學(xué)好專業(yè)課,從而激發(fā)學(xué)生的學(xué)習(xí)熱情和積極性,除了學(xué)習(xí)基礎(chǔ)理論知識,還要積極參與生產(chǎn)實(shí)踐活動(dòng),在整個(gè)學(xué)習(xí)過程中,不斷將理論與實(shí)踐有機(jī)結(jié)合起來,通過實(shí)踐和理論學(xué)習(xí),從感性認(rèn)識上升到理性認(rèn)識,能夠舉一反三、融匯貫通和觸類旁通,縮短理論教學(xué)與實(shí)際生產(chǎn)實(shí)踐相脫離的差距,使學(xué)生在畢業(yè)后很快適應(yīng)工作崗位的工作。
(3)DNN 模型計(jì)算任務(wù)執(zhí)行模塊:根據(jù)卸載決策模塊輸出的任務(wù)分配信息,模型計(jì)算任務(wù)執(zhí)行模塊確定需要在本地和遠(yuǎn)端執(zhí)行的子任務(wù)(即模型切片),構(gòu)建并執(zhí)行本地的計(jì)算任務(wù)。對任務(wù)發(fā)起方而言,在確認(rèn)本地任務(wù)后,以預(yù)處理輸入數(shù)據(jù)作為輸入,執(zhí)行相應(yīng)的模型切片計(jì)算。若無遠(yuǎn)端計(jì)算任務(wù),任務(wù)發(fā)起方即調(diào)用后處理模塊對計(jì)算結(jié)果進(jìn)行解析,得到模型最終推理結(jié)果;若存在遠(yuǎn)端計(jì)算任務(wù),則根據(jù)任務(wù)分配信息將計(jì)算結(jié)果發(fā)送至下一個(gè)設(shè)備,并調(diào)用消息收發(fā)模塊監(jiān)聽最終結(jié)果的返回。對任務(wù)接收方來說,在確認(rèn)本地任務(wù)后,即根據(jù)任務(wù)分配信息監(jiān)聽上一個(gè)設(shè)備傳輸?shù)挠?jì)算結(jié)果,以該結(jié)果為輸入完成執(zhí)行本地任務(wù)計(jì)算后,調(diào)用消息收發(fā)模塊將計(jì)算所得發(fā)送至下一個(gè)設(shè)備。
(4)消息收發(fā)模塊:主要負(fù)責(zé)計(jì)算結(jié)果、計(jì)算任務(wù)信息等消息的發(fā)送、監(jiān)聽和接收,根據(jù)協(xié)議組裝或解析相關(guān)數(shù)據(jù)。同時(shí),該模塊中可置入數(shù)據(jù)隱私增強(qiáng)相關(guān)算法,如差分隱私[8]和多方安全計(jì)算[9]等,以保護(hù)數(shù)據(jù)中的隱私信息不被泄露。
(5)后處理模塊:負(fù)責(zé)解析最終計(jì)算結(jié)果,得到DNN 模型的最終推理結(jié)果。以圖像識別應(yīng)用為例,后處理模塊將計(jì)算結(jié)果進(jìn)行標(biāo)簽解碼,輸出圖像的標(biāo)簽作為識別結(jié)果。該模塊僅位于任務(wù)發(fā)起方,其目的是使任務(wù)接收方對計(jì)算結(jié)果的用途不可知,從一定程度上保護(hù)用戶的隱私。
如第2 節(jié)所述,DNN 模型計(jì)算卸載中的子任務(wù)單位通常為神經(jīng)網(wǎng)絡(luò)層,或?qū)ι窠?jīng)網(wǎng)絡(luò)層內(nèi)的運(yùn)算做進(jìn)一步分解,產(chǎn)生更小顆粒的子任務(wù)、更多的潛在的分割點(diǎn)。此類分割顆粒度對智能終端來說并不經(jīng)濟(jì)。一方面,越細(xì)化的模型分割意味著在模型準(zhǔn)備過程中會(huì)產(chǎn)生越多的模型切片,模型格式的轉(zhuǎn)換工作也隨之成比例增加,這將使得整個(gè)模型生成的周期被延長。另一方面,設(shè)備軟硬件對連續(xù)的神經(jīng)網(wǎng)絡(luò)層有加速的效果,而智能終端的AI 芯片對常用的神經(jīng)網(wǎng)絡(luò)層運(yùn)算也設(shè)計(jì)了加速優(yōu)化,若以一個(gè)神經(jīng)網(wǎng)絡(luò)層或網(wǎng)絡(luò)層中一部分運(yùn)算作為一個(gè)模型切片,將失去這些優(yōu)化所帶來的效益。
此外,潛在分割點(diǎn)數(shù)量的增加會(huì)增加協(xié)同計(jì)算階段中DNN 模型計(jì)算任務(wù)卸載決策模塊的壓力,面對體量較大的DNN 模型,需要評估數(shù)百甚至上千個(gè)可能的分配策略,這對執(zhí)行計(jì)算卸載決策的設(shè)備提出了較高的算力要求。對于需要終端側(cè)決策的場景來說,這將成為一個(gè)可能的計(jì)算瓶頸。
綜合考量,為盡可能縮短終端AI 模型生成周期、保證DNN 模型計(jì)算速度,同時(shí)使計(jì)算卸載決策更加輕量,在模型準(zhǔn)備階段需在神經(jīng)網(wǎng)絡(luò)層的基礎(chǔ)上進(jìn)一步縮小潛在分割點(diǎn)的范圍,放大子任務(wù)顆粒度,減少子任務(wù)的組合可能。
本文提出一種潛在分割點(diǎn)預(yù)判策略,從優(yōu)化計(jì)算卸載過程中可能的時(shí)延開銷的角度出發(fā),對DNN 模型內(nèi)以各神經(jīng)網(wǎng)絡(luò)層為單位的子任務(wù)做進(jìn)一步組合,如表1 所示。除了模型計(jì)算時(shí)延,計(jì)算卸載的時(shí)延開銷還包括數(shù)據(jù)傳輸時(shí)延,該時(shí)延與其所傳輸?shù)臄?shù)據(jù)量呈正比。當(dāng)分割點(diǎn)逐步向模型深層移動(dòng)時(shí),本地終端上需要計(jì)算的神經(jīng)網(wǎng)絡(luò)層將增加,其計(jì)算時(shí)間也將隨之單調(diào)遞增。而中間數(shù)據(jù)的傳輸時(shí)間未必會(huì)隨著計(jì)算層數(shù)的增加而遞增,如卷積層的輸出結(jié)果常保持輸入和輸出數(shù)據(jù)的大小一致,而池化層則有數(shù)據(jù)降維的作用。因此,可遵循計(jì)算順序,以輸出數(shù)據(jù)量遞減為原則,篩選潛在分割點(diǎn),生成以模型塊為單位的子任務(wù),每個(gè)模型塊中可包含一到多個(gè)連續(xù)的神經(jīng)網(wǎng)絡(luò)層,在本地計(jì)算時(shí)間遞增的情況下,保持通信工作量是遞減的。
表1 DNN 模型潛在分割點(diǎn)搜索偽代碼表
實(shí)驗(yàn)中使用的DNN 模型為VGG16[10]。如圖2 所示,基于3.2 節(jié)的DNN 模型潛在分割點(diǎn)預(yù)判測策略,相比于將每個(gè)神經(jīng)網(wǎng)絡(luò)層連接視作潛在的分割點(diǎn),本方案顯著減少了潛在分割點(diǎn)的數(shù)量,使模型準(zhǔn)備階段中的模型切割和格式轉(zhuǎn)換工作得到簡化。如表2 所示,VGG16 最終被分割成7 份模型切片,即7 個(gè)子任務(wù),可有效縮小卸載決策的搜索空間,從一定程度上可加速?zèng)Q策過程,節(jié)省端側(cè)資源。
圖2 VGG16 各神經(jīng)網(wǎng)絡(luò)層輸出數(shù)據(jù)量及 所提出搜索策略所得模型潛在分割點(diǎn)圖
表2 基于策略所得潛在分割點(diǎn)劃分的子任務(wù)
仿真實(shí)驗(yàn)建立在“終端-邊緣”參與的DNN 協(xié)同推理場景上。由Rasperry Pi 4b(RPi)作為任務(wù)發(fā)起設(shè)備,與邊緣設(shè)備PC 協(xié)作完成基于ImageNet[16]圖像識別的VGG16 模型計(jì)算任務(wù),并利用Docker 容器[12]創(chuàng)建相關(guān)軟件堆棧。詳細(xì)的設(shè)備信息參如表3 所示。仿真系統(tǒng)使用Python3 及TensorFlow 機(jī)器學(xué)習(xí)框架[11]。設(shè)備通信基于無線LAN,采用protobuf 和gRPC[13]進(jìn)行數(shù)據(jù)傳輸。
表3 仿真設(shè)備信息
系統(tǒng)管線中的DNN 模型計(jì)算任務(wù)卸載決策模塊設(shè)置于RPi 終端側(cè),以設(shè)備間協(xié)作完成推理運(yùn)算的總耗時(shí)最小為優(yōu)化目標(biāo)。推理過程的時(shí)延具體包括模型切片在各設(shè)備上的計(jì)算時(shí)延,以及中間結(jié)果的傳輸時(shí)延。在“設(shè)備A-設(shè)備B”協(xié)同場景下,假設(shè)模型M 已被分割為N 個(gè)子任務(wù){(diào)Mslice1,Mslice2,…,MsliceN},則需找到一個(gè)最優(yōu)卸載點(diǎn)k,1 ≤k≤N,使
其中,TAcomp(Mslicei)為子任務(wù)Mslicei在設(shè)備A上運(yùn)行時(shí)預(yù)計(jì)所需計(jì)算時(shí)延,TBcomp(Mslicej)為子任務(wù)Mslicej在設(shè)備B 上運(yùn)行時(shí)預(yù)計(jì)所需計(jì)算時(shí)延。Output(Mslicek)為子任務(wù)Mslicek輸出的中間結(jié)果,Ttrans(Output(Mslicek))則是該結(jié)果從A 傳輸至B 時(shí)預(yù)計(jì)所需時(shí)延。得到最優(yōu)卸載點(diǎn)k后,子任務(wù)集合{Mslicek+1,…,MsliceN}組成設(shè)備A 的計(jì)算任務(wù),{Mslice1,…,Mslicek}則為設(shè)備B計(jì)算任務(wù)。
實(shí)驗(yàn)中子任務(wù)計(jì)算時(shí)延通過統(tǒng)計(jì)歷史計(jì)算時(shí)延獲得。在不同的網(wǎng)絡(luò)帶寬下,系統(tǒng)基于不同的卸載點(diǎn)預(yù)測得到不同的模型協(xié)同推理耗時(shí)如圖3 至圖6 所示。由圖3 可見,RPi 本地計(jì)算從block6 子任務(wù)上開始出現(xiàn)明顯的瓶頸,這是由于block6 和block7 主要為全連接層的計(jì)算,它涉及大量參數(shù)加載,RPi 自身內(nèi)存無法滿足其需求,會(huì)使用芯片外存儲(chǔ)作為交換內(nèi)存,致使執(zhí)行性能大受影響。RPi 最終的卸載決策結(jié)果如表4 所示。
表4 各帶寬下DNN 計(jì)算卸載決策后各設(shè)備計(jì)算任務(wù)分配情況
圖3 帶寬17.5 Mbit/s 下基于VGG16 模型內(nèi)各潛在卸載點(diǎn)預(yù)測所得協(xié)同推理總時(shí)延
圖4 帶寬1.75 Mbit/s 下基于VGG16 模型內(nèi) 各潛在卸載點(diǎn)預(yù)測所得協(xié)同推理總時(shí)延
圖5 帶寬175 kbit/s 下基于VGG16 模型內(nèi) 各潛在卸載點(diǎn)預(yù)測所得協(xié)同推理總時(shí)延
圖6 帶寬17.5 kbit/s 下基于VGG16 模型內(nèi) 各潛在卸載點(diǎn)預(yù)測所得協(xié)同推理總時(shí)延
基于所得計(jì)算卸載決策,端邊協(xié)同系統(tǒng)最終實(shí)際能達(dá)到的加速效果通過完整模型推理在RPi 上所耗時(shí)延與端邊協(xié)同推理所耗時(shí)延之間的比值反映。如圖7 所示,端邊協(xié)同計(jì)算的速度對比純RPi 終端側(cè)計(jì)算提速超過4 倍,當(dāng)帶寬達(dá)到17.5 Mbit/s 時(shí),加速可提至5 倍。
圖7 各帶寬下VGG16 模型端邊協(xié)同實(shí)際推理的加速效果
本文圍繞智能終端特性對DNN 模型計(jì)算卸載決策技術(shù)的研究,主要包括DNN 模型潛在分割點(diǎn)搜索和DNN計(jì)算卸載系統(tǒng)管線設(shè)計(jì)。DNN 模型潛在分割點(diǎn)搜索策略中,遵循計(jì)算順序,以減少協(xié)同計(jì)算的通信開銷為原則,對模型內(nèi)的潛在分割點(diǎn)進(jìn)行預(yù)判,從而生成以模型塊為單位的子任務(wù),縮小后續(xù)決策優(yōu)化的搜索空間,同時(shí)保證DNN 模型計(jì)算速度。通過放大子任務(wù)顆粒度的方式,可提高AI 模型在終端的部署效率,同時(shí)使計(jì)算卸載決策更加輕量。系統(tǒng)管線設(shè)計(jì)中將智能終端可參與的DNN 模型計(jì)算卸載可分為模型準(zhǔn)備和協(xié)同計(jì)算兩個(gè)階段,并在設(shè)計(jì)中融入對用戶隱私安全的考量。通過對該系統(tǒng)進(jìn)行端邊AI 協(xié)同計(jì)算場景的仿真,可知該模式能有效節(jié)省單終端計(jì)算資源,加速終端AI 應(yīng)用的計(jì)算速度。
隨著5G 技術(shù)和物聯(lián)網(wǎng)的發(fā)展,未來將有更多設(shè)備參與到協(xié)同計(jì)算場景中,為此我們將對決策算法進(jìn)行優(yōu)化,使其能在多設(shè)備間做出高效的任務(wù)卸載決策。此外,應(yīng)用與容器技術(shù)的結(jié)合,也將提高AI 應(yīng)用在端側(cè)上的部署效率,使AI 應(yīng)用可以更輕量、更高效、更便捷、更廣泛地落地于終端,促進(jìn)終端的智能化升級。