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