如何讓深度學習在手機應用上也能加速跑?看完這篇文章你就知道了

目前使用了深度學習技術的移動應用一般都是直接依賴雲服務器來完成DNN全部的計算操做,但這樣作的缺點在於移動設備與雲服務器之間的數據傳輸帶來的代價並不小(表如今系統延遲時間和移動設備的電量消耗);目前移動設備對DNN一般都具有必定的計算能力,儘管計算性能不如雲服務器但避免了數據傳輸的開銷。web

論文做者提出了一種基於模型網絡層爲粒度的切割方法,將DNN須要的計算量切分開並充分利用雲服務器和移動設備的硬件資源進行延遲時間和電量消耗這兩方面的優化。Neurosurgeon很形象地描述了這種切割方法:向外科醫生同樣對DNN模型進行切分處理。算法

對於全部使用深度學習技術來處理圖像、視頻、語音和文本數據的我的智能助手而言,目前工業界一般的作法是,利用雲服務器上強大的GPU集羣資源來完成應用程序的計算操做(如下簡稱爲現有方法)。服務器

目前運行在移動設備上的我的智能助手(例如Siri、Google Now和Cortana等)也都是採用這種作法。儘管如此,咱們仍是會思考,能不能也對移動設備自己的計算能力加以利用(而不是徹底依靠雲服務),同時確保應用程序的延遲時間以及移動設備的電量消耗處於合理範圍內。網絡

目前的現狀是,智能應用程序的計算能力徹底依賴於Web服務商所提供的高端雲服務器。函數

而Neurosurgeon打破了這種常規作法(即智能應用的計算能力徹底依託於雲服務)!在這篇出色的論文中,做者向咱們展現了一種新思路:將應用程序所需的計算量「分割」開,並同時利用雲服務和移動設備的硬件資源進行計算。下面是使用Neurosurgeon方法後所取得的結果,這將會使咱們全部人受益:工具

  • 系統延遲時間平均下降了3.1倍(最高下降了40.7倍),從而應用程序的響應將更加迅速和靈敏。性能

  • 移動設備的耗電量平均下降了59.5%(最高下降了94.7%);(也許你會質疑,真的可以在移動設備上實施更多計算量的同時下降電量消耗嗎?答案是十分確定的!)學習

  • 雲服務器上數據中心的吞吐量平均提升了1.5倍(最高能提升6.7倍),相較於現有方法這是一個巨大的超越。開發工具

下面咱們會先舉個例子,來看看「對計算量進行分割」這件事情是多麼的有趣,以後會了解到Neurosurgeon是如何在不一樣的DNN模型中自動檢測出「最佳分割點」的,最後會展現相應的實驗結果以證明Neurosurgeon所宣稱的能力。優化

(值得一提的是,目前主流的平臺已經支持並實現了在移動設備上進行深度學習方面的計算。Apple在iOS10系統中新增了深度學習相關的開發工具,Facebook去年發佈了Caffe2Go使得深度學習模型可以運行在移動設備上,而Google也在前不久發佈了深度學習開發工具TensorFlow Lite以用於安卓系統。)

數據傳輸並非沒有代價

最新的SoC芯片讓人印象深入。這篇論文使用了NVIDIA的Jetson TK1平臺(擁有4核心的ARM處理器和一個Kepler GPU)(以下表1),數十萬個設備的組合的計算量是驚人的。

若是你對比一下服務器上的配置(以下表2),你會發現移動設備的配置仍是遠比不上服務器的。

接下來咱們來分析一個經常使用於圖片分類任務的AlexNet模型(一個深層次的CNN網絡模型),該模型的輸入是一張大小爲152KB的圖片。首先對比一下模型在兩種環境下的運行狀況:在雲服務器上實施所有的計算操做和在移動設備上實施所有的計算操做。

若是咱們僅僅看應用的延遲時間這一指標,(以下圖3)能夠發現只要移動設備擁有可用的GPU,在本地GPU上實施全部的計算操做可以帶來最佳的體驗(延遲時間最短)。而使用雲服務器進行所有的計算時,統計代表計算所消耗的時間僅佔所有時間的6%,而剩餘的94%都消耗在數據傳輸上。

相較於現有方法,在LTE和3G網絡條件下,使用移動設備自身的GPU進行所有的計算可以取得更低的系統延遲時間;同時,在LTE和Wi-Fi網絡條件下,現有方法要比單純僅用移動設備CPU進行所有的計算操做要更好(系統延遲時間更少)。

下圖4是不一樣網絡條件下,使用雲服務器和手機CPU/GPU下的電量消耗狀況:

若是移動設備鏈接的是Wi-Fi網絡,最低的電量損耗方案是發送相應的數據到雲服務器並讓其進行所有的計算操做。但若是鏈接的是3G或LTE網絡,若是該移動設備有可用的GPU,那麼在本地GPU上實施所有的計算操做這一方案所致使的電量消耗,會比須要進行數據傳輸且在雲服務器上實施所有的計算操做這一方案更低。

儘管雲服務器的計算能力要強於移動設備,但因爲其須要進行數據的傳輸(在有的網絡環境下的所帶來的系統延遲時間和電量消耗量並不小),因此從系統的角度,徹底使用雲服務器進行計算的方法並不必定是最優的。

各類網絡層的數據傳輸和計算需求並不相同

那麼,在全部計算都實施在雲服務器或移動設備上這兩種「相對極端」的方法之間,是否存在某個最優切分點呢?換言之,在數據傳輸和實施計算二者之間或許存在一種折中。下圖是一張簡單的草圖,以方便理解接下來要作的事情。

一種直觀的切分方法是基於DNN中網絡層做爲邊界。以AlexNet爲例,若是咱們可以計算出每一層的輸出數據量和計算量,將獲得以下的統計圖(下圖5):

從圖5中能夠看出,對於AlexNet模型較前的卷積層而言,數據輸出量隨着層數增長而迅速遞減。然而,計算量在模型的中後部分開始逐步遞增,在全鏈接層的計算量達到了最高的幅度。

接下來值得思考的是,若是咱們將AlexNet模型中的各個網絡層分割開會發生什麼呢?(也就是說,在移動設備上處理模型的前n層獲得第n層的輸出結果,再將該輸出結果傳輸至雲服務器上進行以後的計算,最後再將輸出結果傳輸至移動設備上。)

下圖6中你能看到AlexNet模型各層的延遲時間和電量消耗狀況,最佳的分割點以星星符號表示。

以網絡層爲粒度的分割算法可以大大改善模型的延遲時間和電量消耗量。對於AlexNet模型,在移動設備GPU可用和Wi-Fi網絡條件下,最佳的分割點處於模型的中部。

以上只是針對AlexNet模型的分割方法。然而,這種分割方法是否一樣適用於其餘的用於處理圖像、視頻、語音和文本的DNN模型們?文章做者在多種DNN模型上作了相應的分析以下表3:

對於應用於計算機視覺 (Computer Vision, CV) 領域的具備卷積層的模型,一般最佳的分割點在模型的中部。而對於一般只有全鏈接層和激活層的ASR, POS, NER和CHK網絡模型(主要應用在語音識別(Automatic Speech Recognition, ASR)和天然語言處理領域(Natural Language Process, NLP))而言,只能說有找到最佳的分割點的可能。

在DNN模型上進行分割的最佳方法取決於模型中的拓撲層和結構層。CV領域的DNN模型有時在模型的中部進行分割是最好的,而對於ASR和NLP領域的DNN模型,在模型的開始部分或者結尾部分進行分割每每更好一點。能夠看出,最佳分割點隨着模型的不一樣而變化着,所以咱們須要一種系統可以對模型進行自動的分割並利用雲服務器和設備GPU進行相應的計算操做。

Neurosurgeon的工做原理

對於一個DNN模型,影響最佳的分割點位置的因素主要有兩種:一種是靜態的因素,例如模型的結構;一種是動態的因素,例如網絡層的可鏈接數量、雲服務器上數據中心的負載以及設備剩餘可用的電量等。

因爲以上動態因素的存在,咱們須要一種智能系統來自動地選擇出DNN中的最佳分割點,以保證最終系統延遲時間和移動設備的電池消耗量達到最優的狀態。所以,咱們設計了出這樣一種智能切分DNN模型的系統,也就是Neurosurgeon。

Neurosurgeon由如下兩個部分組成:一部分是在移動設備上一次性地建立和部署用於預測性能(包括延遲時間和電量消耗量)的模型,另外一部分是在服務器上對各類網絡層類型和參數(包括卷積層、池化層、全鏈接層、激活函數和正則化項)進行配置。前一部分與所用的具體DNN模型結構無關,預測模型主要是根據DNN模型中網絡層的數量和類型來預測延遲時間和電量消耗,而不須要去執行具體的DNN模型。

預測模型會存儲在移動設備中,以後會被用於預測DNN模型中各層的延遲時間和電量消耗。

在DNN模型的運行時,Neurosurgeon就可以動態地找到最佳的分割點。首先,它會分析DNN模型中各網絡層的類型和參數狀況並執行之,而後利用預測模型來預測各網絡層在移動設備和雲服務器上的延遲時間和電量消耗狀況。根據所預測的結果,結合當前網絡層自身及數據中心的負載狀況,Neurosurgeon選擇出最佳的分割點,調整該分割點可以實現端到端延遲時間或者電量消耗的最優化。

Neurosurgeon的實際應用

以前的表3展現了用於評測Neurosurgeon的8種DNN模型,另外,實驗用到的網絡環境有3種(Wi-Fi,LTE和3G網絡)和2種移動設備硬件(CPU和GPU)。在這些模型和配置下,Neurosurgeon可以找到一種分割方法以加速應用的響應時間至最優的98.5%。

實驗結果代表,相比於目前使用僅使用雲服務器的方法,Neurosurgeon可以將應用的延遲時間平均下降了3.1倍(最高能達到40.7倍)。

在電量消耗方面,相比於現有方法,Neurosurgeon可以使得移動設備的電量消耗量平均下降至59.5%,最高能下降至94.7%。

下圖14展現了Neurosurgeon隨着網絡環境的變化(即LTE帶寬變化)自適應進行分割和優化的結果(下圖中的藍色實線部分),能夠看出比起現有方法(下圖中的紅色虛線部分)可以大幅度地下降延遲時間。

Neurosurgeon也會與雲服務器保持週期性的通信,以得到其數據中心的負載狀況。當服務器的數據中心負載較大時,它會減小往服務器上傳輸的數據量而增長移動設備本地的計算量。總之,Neurosurgeon可以根據服務器的負載狀況做出適當的調整已達到最低的系統延遲時間。

咱們利用BigHouse(一種服務器數據中心的仿真系統)來對比現有方法和Neurosurgeon。實驗中將query數據均勻地分配到以前表3中8種DNN模型之上,使用所測量的全部模型的平均響應時間,並結合Google網頁搜索中query的分佈來獲得query的完成率(query inter-arrival rate)。

上圖16代表,在移動設備使用Wi-Fi網絡的條件下,Neurosurgeon所帶來的的數據吞吐量是現有方法的1.04倍。而隨着鏈接網絡質量的變差,Neurosurgeon會讓移動設備承擔更多的計算量,此時雲服務器上數據中心的吞吐量將增長:較現有方法,鏈接LTE網絡的狀況下數據中心的吞吐量增長至1.43倍,而3G網絡條件下則增長至2.36倍。

論文出處

Neurosurgeon:collaborative intelligence between the cloud and mobile edge Kang et al.,ASPLOS’17

http://web.eecs.umich.edu/~jahausw/publications/kang2017neurosurgeon.pdf

相關文章
相關標籤/搜索