1. 程式人生 > >動態分配多工資源的移動端深度學習框架

動態分配多工資源的移動端深度學習框架

與雲相比,移動系統受計算資源限制。然而眾所周知,深度學習模型需要大量資源 。為使裝置端深度學習成為可能,應用程式開發者常用的技術之一是壓縮深度學習模型以降低其資源需求,但準確率會有所損失。儘管該技術非常受歡迎,而且已被用於開發最先進的移動深度學習系統,但它有一個重大缺陷:由於應用程式開發者獨立開發自己的應用,壓縮模型的資源-準確率權衡在應用開發階段的靜態資源預算的基礎上就被預先確定了,在應用部署後仍然保持不變。

然而,由於開啟新應用、關閉現有應用和應用優先順序改變等事件,這些系統的可用執行時資源是動態變化的。因此,如果可用執行時資源無法滿足壓縮模型的資源需求,這些同時執行的應用就會互相爭奪資源,導致流視訊的處理幀率較低。另一方面,在有額外的執行時資源時,壓縮模型也無法利用這些額外資源來修復準確率損失。

本文提出了一種新型框架 NestDNN,將執行時資源的動態變化納入考量,生成一種資源感知的多重租賃裝置端深度學習移動視覺系統。NestDNN 用靈活的資源-準確率權衡代替了固定的資源-準確率權衡。在執行時方面,該框架為每個深度學習模型動態地選擇最優資源-準確率權衡,以滿足模型對系統可用執行時資源的需求。採用這種方法,NestDNN 可以高效利用移動視覺系統中的有限資源,最大化所有並行應用程式的效能。

挑戰與對策。NestDNN 的設計面臨兩大挑戰。(i)現有方法的侷限在於:壓縮模型的資源需求和準確率之間的權衡是固定的。因此,第一大挑戰在於設計一個能讓深度學習模型提供靈活的資源-準確率權衡的方案。一種樸素的方法是在移動系統中安裝所有具備可能資源-準確率權衡的模型變體。然而,由於這些模型變體各自獨立,這種方法無法擴充套件,在移動系統同時執行多個深度學習模型(每個模型又有多個變體)時不具備可行性。(ii)為每個同時執行的深度學習模型選擇資源-準確率權衡非常關鍵。這是因為不同的應用具有不同的推斷準確率和處理延遲目標。以路況監督無人機為例:一個通過車輛計數來檢測交通擁堵的應用不需要很高的準確率,但要求低延遲;而一個讀取車牌的應用程式需要很高的車牌讀取準確率,但不需要實時響應 [39]。

為應對第一個挑戰,NestDNN 部署了一個新的模型剪枝和復原方案(recovery scheme),將深度學習模型轉換為緊湊的多容量模型(multi-capacity model)。這一多容量模型由一組派生模型組成,每個派生模型提供不同的資源-準確率權衡。與彼此獨立的傳統模型變體不同,容量(即資源需求)較小的派生模型與擁有較大容量的派生模型共享模型引數,使其自身嵌入到較大容量的派生模型中,而無需佔用額外的記憶體空間。採用這種做法,這種多容量模型可以提供多個資源-準確率權衡,其記憶體佔用也較為緊湊。

為了應對第二個挑戰,NestDNN 將每個並行應用的每個派生模型的推斷準確率和處理延遲編碼為一個成本函式。在給定所有成本函式的情況下,NestDNN 使用資源感知執行時排程器(resource-aware runtime scheduler)為每個深度學習模型選擇最優資源-準確率權衡,並確定分配給每個模型的最佳執行時資源,以同時最大化整體推斷準確率,最小化所有並行應用程式的總體處理延遲。

據我們所知,NestDNN 是第一個支援資源感知的多重租賃裝置端深度學習移動視覺系統的框架。它為克服現有方法的侷限性以及連續移動視覺中的獨特挑戰提供了新的技術。我們相信,我們的工作是將連續移動視覺的設想變為現實的重要一步

實驗結果總結

我們開展了一系列實驗來評估 NestDNN 的效能。為了評估多容量模型的效能,我們在六個移動視覺應用程式上對其進行了評估,這些應用針對移動視覺系統中一些最重要的任務。這些應用程式的開發基於兩種廣泛使用的深度學習模型——VGG Net [33] 和 ResNet [13],以及計算機視覺社群中常用的六個資料集。為了評估資源感知執行時排程器的效能,我們結合了兩種廣泛使用的排程方案,並在三部智慧手機上實現了 NestDNN 和六款移動視覺應用程式。我們還實施了現有方法,該方法使用固定的資源-準確率權衡,因此是不考慮資源的。為了比較我們的資源感知方法和不考慮資源的現有方法之間的效能,我們設計了一個基準來模擬不同場景中的執行時應用程式查詢。結果表明:

多容量模型能夠提供巢狀在單個模型中的靈活、優化的資源-準確率權衡。通過引數共享,它顯著減少了模型記憶體佔用和模型切換開銷。

資源感知執行時排程器在兩種排程方案上都優於不考慮資源的排程器,推斷準確率提高了 4.2 %,視訊幀處理速度提高了 1 倍,能耗降低了 40%。

NestDNN 框架概覽

1 展示了 NestDNN 的架構,由離線階段和線上階段組成。

離線階段包含三個子階段:模型剪枝(model pruning)、模型復原(model recovery)和模型配置(model profiling)。

圖1.jpg

1:NestDNN 架構示意圖

在模型剪枝階段,NestDNN 使用當前最佳的三聯響應殘差(Triplet Response Residual,TRR)方法,基於給定深度學習模型(即原版模型)濾波器的重要性對濾波器進行排序,並迭代地對濾波器進行修剪。在每次迭代中,重要性較低的濾波器被裁剪,然後剪枝模型被重新訓練以補償濾波器修剪導致的準確率降低(如果存在的話)。當剪枝模型無法達到使用者設定的最低準確率時,迭代過程結束。最小的剪枝模型被稱為種子模型(seed model)。最終,一個濾波器修剪路徑圖被創建出來,其中路徑圖中的每個佔用是一個帶濾波器修剪記錄的剪枝模型。

圖2.jpg 

2:濾波器剪枝的圖示 [23]。通過修剪濾波器,模型大小和計算成本都有所降低

在模型復原階段,NestDNN 使用了一種新的模型固化(model freezing)和濾波器增長(filter growing)方法(即 freeze-&-grow),以迭代的方式生成多容量模型。模型復原使用種子模型作為起點。在每一次迭代中,模型固化被首先應用於固化所有濾波器的引數。然後按照濾波器修剪路徑圖的逆向順序,應用濾波器增長將修剪的濾波器加回去,從而生成一個擁有更大容量的派生模型,其準確率通過重新訓練而恢復。通過重複迭代,新的派生模型基於之前的模型而生成。因此,最終的派生模型擁有所有之前模型的容量,因而被命名為多容量模型。

圖3.jpg

3:模型固化和濾波器增長圖示

在模型配置階段,給定一個移動端視覺系統的規範,NestDNN 為每個多容量模型生成一個配置檔案,包括推斷準確率、記憶體佔用,以及每個派生模型的處理延遲。

圖4.jpg

4:多容量模型的模型切換(模型升級與模型降級)圖示

最後,在線上階段,資源感知執行時排程器持續監控改變執行時資源的事件。一旦檢測到這種事件,排程器會檢查所有並行應用程式的配置檔案,為每個應用程式選擇最佳派生模型,併為每個選擇的派生模型分配最佳數量的執行時資源,以同時最大化整體推斷準確率,最小化所有應用程式的總體處理延遲。

在不損失泛化效能的情況下,我們將 CIFAR-10、GTSRB 和 Adience-Gender 隨機分配給 VGG-16,並將 ImageNet50、ImageNet-100 和 Places-32 分配給 ResNet-50,以分別建立被標記為 VC(即在 CIFAR-10 資料集上訓練的 VGG-16)、RI-50、RI-100、VS、VG 和 RP 的六個移動視覺應用程式。我們嚴格遵循上述每個資料集提供的協議來訓練和測試所有原版 DNN 模型和 NestDNN 生成的所有派生模型。

2 對這些資料集、DNN 模型和移動視覺應用程式進行了總結。

圖5.jpg

2:本研究使用的資料集、DNN 模型和移動視覺應用概覽

多容量模型的效能

優化的資源-準確率權衡

如圖 6 所示,我們從結果中得到兩個關鍵結論。一,在這六個應用的不同大小的模型中,派生模型的準確率一直高於基線模型。派生模型的平均準確率比基線模型高 4.98%。這表明我們每個容量的派生模型都能夠在給定記憶體條件下獲得當前最優的推斷準確率。二,規模較小的派生模型效能優於規模較大的派生模型。兩個最小的派生模型的平均準確率比對應的基線模型高出 6.68%,而兩個最大的派生模型的平均準確率比對應的基線模型高 3.72%。這是因為我們的 TRR 方法能夠儲存重要的濾波器,並剪掉不那麼重要的濾波器。儘管容量小,但規模較小的派生模型從重要的濾波器中受益很多,而對應的基線模型無法從中獲益。

圖6.jpg

6:派生模型和基線模型的 Top-1 準確率 vs. 模型大小對比

7 展示了六個應用的五個派生模型和對應原版模型的計算成本對比(指標:GFLOPs,即 GigaFLOPs)。如圖所示,所有派生模型的 GFLOPs 都比對應原版模型低。這表明我們的濾波器剪枝方法能夠有效減少這六個應用的計算成本,且該方法可泛化至在不同資料集上訓練的不同深度學習模型。

圖7.jpg

7:派生模型和原版模型的計算成本對比

記憶體佔用減少

3 列舉了六個移動視覺應用的對比結果。顯然,每個應用的多容量模型的規模小於對應的累積模型(accumulated model)規模。此外,模型尺寸較大的深度學習模型從引數共享中受益更多。例如,VC 是六個應用中模型規模最大的。在引數共享方面,它的記憶體佔用減少了 241.5 MB。最後,如果我們考慮同時執行這六個應用,則多容量模型記憶體佔用減少 587.4 MB,在記憶體佔用減少方面受益最大。

圖8.jpg

3:多容量模型的記憶體佔用減少狀況

資源感知排程器(Resource-Aware Scheduler)的效能

推斷準確率和幀率的改進

9(a) 展示了在 MinTotalCost 排程方案下,NestDNN 和基線模型的執行時效能對比。×××圓圈代表基線模型的執行時效能。每個藍色方塊代表在公式(2)定義的損失函式中使用特定 α 進行排程時所獲得的執行時效能。

9(b) 展示了在 MinMaxCost 排程方案下,NestDNN 和基線模型的執行時效能對比。當 NestDNN 和基線模型的平均 top-1 準確率一樣時,NestDNN 的平均幀率速度是基線模型的 1.9 倍。當 NestDNN 和基線模型的平均幀率一致時,NestDNN 的平均準確率比基線模型高 4.2%。在「knee」處,NestDNN 相對基線模型達到了 1.5 倍的平均幀率加速和 2.1% 的平均準確率提升。

圖9.jpg

9:在 (a) MinTotalCost 和 (b) MinMaxCost 機制下,NestDNN (資源感知) 和現有方法(不考慮資源)的執行時對比


能耗減少

除了推斷準確率和幀率方面的改進以外,NestDNN 的能耗也比較低。圖 10(a) 展示了在 MinTotalCost 排程方案下,在「knee」處,NestDNN 和基線模型的能耗對比。在不同的推斷數上,NestDNN 的平均能耗相比基線模型減少了 40%。類似地,圖 10(b) 展示了在 MinTotalCost 排程方案下的能耗對比。NestDNN 的平均能耗相比基線模型減少了約 33%。

圖10.jpg

10:在 (a) MinTotalCost 和 (b) MinMaxCost 機制下,NestDNN(資源感知)和現有方法(不考慮資源)的能耗對比