杜克大學博士生溫偉:雲霧深度學習|分享總結

.. 雷鋒網AI科技評論按:如今,基於深度學習的 AI 系統日趨產業化,如何有效地在雲端和霧端進行落地成為一個核心問題。相對於傳統機器學習,深度學習無論是訓練還是部署都對計算和通信等提出了很大的挑戰。在雲端(如 Google Cloud、Amazon AWS、Microsoft Azure、Facebook Big Basin),深度神經網絡的訓練依賴於分佈式系統,其可擴展性受限於通信帶寬。 在霧端(Fog Computing,如移動手機的 Face ID、無人機、去中心化自動駕駛系統等),便攜設備的計算等資源有限,深度神經網絡的高效部署依賴於模型壓縮與加速技術,以完成輕量級部署。

近期,在雷鋒網 GAIR 大講堂上,來自杜克大學四年級博士生溫偉同學分享了雲霧深度學習一些最新進展。視頻回放地址:http://www.mooc.ai/open/course/484。

溫偉,杜克大學四年級博士生,導師是 Hai Helen Li 教授和 Yiran Chen 教授。主要研究方向是機器學習、分佈式深度學習、模型壓縮與加速、神經形態計算芯片等。其研究工作曾在 NIPS、ICCV、ICLR、CVPR、DAC 等發表,是 ASP-DAC 2017 最佳論文獲得者,也是 DAC 2015 和 DAC 2016 最佳論文提名者。溫偉是 Microsoft Research、HP Labs 和 Facebook Research 的實習生。

分享主題:雲霧深度學習:RNN 隱藏結構稀疏化和超低精度梯度下降法

分享提綱

1.雲端與霧端 AI 部署的挑戰。

2.霧端加速 [ICLR 2018]:結構化稀疏遞歸神經網絡,以提高推理速度。

3.雲端優化 [NIPS 2017 oral]:三元化隨機梯度下降方法,以降低通信帶寬。

分享內容

我想先介紹一下雲端和霧端深度學習的一些挑戰,然後針對這些挑戰介紹我們的解決方案。方案涉及兩個比較重要的方面,一是在霧端部署了神經網絡之後如何讓他進行高效推演, 二是如何在雲端和霧端加速訓練。

先來說第一個部分即雲霧深度學習大背景和相關挑戰。大家很熟悉雲計算的概念,雲計算就是把數據、計算、服務全部放在中心的服務器上,邊緣設備通過網絡去訪問就可以了。霧計算是個比較新的概念,它和雲計算的方式是相反的,所有的數據、計算不再依賴於第三方服務器,而是利用本地設備(手機、平板、電腦)進行協同計算。

雲端目前落地的產品有谷歌的TPU雲,微軟、亞馬遜、臉書等也有自己的雲服務。

在霧端的AI落地產品有iphone X的人臉識別,無人機等。

那麼AI在雲霧端的落地有什麼具體的挑戰嗎?第一是大量服務器協同計算時的通信瓶頸。

第二個挑戰是在霧端的小型終端設備上處理數據有實時性要求。如何在計算量很大、計算能力相對較弱的情況下達到實時性的要求也是一個亟待解決的問題。

 針對這些挑戰,我們研究了如何在霧端部署又小又快還不影響識別性能的網絡。 我着重介紹一下我們在結構化的稀疏神經網絡方面相關的工作,還有加速訓練方面的相關工作。

首先介紹結構化的稀疏神經網絡,在此之前先講解一下什麼是稀疏卷積網絡。稀疏卷積網絡就是利用學習的方法對原網絡進行連接剪枝之後得到的網絡。稀疏卷積網絡可以明顯減少「理論上」的計算量。。

但稀疏卷積網絡也存在明顯的問題。我們在AlexNet上做的實驗顯示這種方法存在低效計算的問題,加速並不明顯,有時甚至會變慢。我們分析這問題的出現是因為剪枝后的網絡沒有結構化,隨機的稀疏數據分佈導致了計算時的稀疏存儲訪問,而現有硬件體系結構是針對密集數據高效定製的,這種隨機稀疏性打破了對現有計算硬件的友好性。

非結構化稀疏在CPU和RNN上同樣存在類似問題,但結構化稀疏可以解決這個問題。

講了非結構化的稀疏卷積網絡,那麼什麼是結構化的稀疏神經網絡?結構化的稀疏神經網絡並不是一個一個的刪去原網絡的連接,而是一組一組的刪除。

由上可見如何對權重進行分組決定了我們可以得到哪種結構化的稀疏卷積網絡。

在遞歸神經網絡裡面我們也可以進行分組來得到我們想要的結構化的稀疏網絡。

再具體方法方面,我們使用Group Lasso來得到結構化的稀疏網絡。

上圖中的SSL方法可以一組一組去掉連接,我接下來解釋一下為什麼能辦到。

然後我們再講一下怎麼在LSTM中應用它。

我們希望通過SSL的方法對藍色部分進行稀疏化,實際就是讓LSTM的隱藏結構變小。

最後我們看一下LSTM最後稀疏化的結果。

除了在傳統的LSTM上測試,我們還在Recurrent Highway Networks上也進行了實驗。

我們的方法聽起來很複雜,其實實現起來很簡單,這是我們在TensorFlow上的代碼。

我為這部分做一個小結,我們的方法在很多的數據集、網絡、應用上已經證明是可行的。如果是做AI硬件相關我建議先找到合適的結構化稀疏,再用SSL去學習該結構化稀疏。

推演部分講完了,接下來講如何在訓練部分提升速度。前面已經提到處理器進行協同計算時會遇到通信瓶頸,我們就講怎麼解除這樣的瓶頸,在此之前先介紹下背景—分佈式深度學習。

分佈式深度學習就是把訓練數據分給不同的設備,訓練完再匯總同步,但問題是處理器增加后,通信和同步的壓力會使處理速度降低。由於在深度神經網絡訓練中的通信是梯度的通信,我們可以用量化的方法來處理,我們的量化方法叫TernGrad 。

然後這是TensorFlow上TernGrad的代碼。

我們看一下TernGrad的實驗效果,首先是AlexNet。

然後這是在AlexNet上的收斂曲線。

再看在GoogLeNet上的實驗效果,實際上因為所有超參都是Google針對浮點SGD調好了的,我們直接用,所以有些精度損失,但平均小於2%。如果我們有時間針對TernGrad調參,精度差異會減小。

還有我們加速的表格,總的來說機器越多,帶寬越小,全連接層越多則加速越多。

最後總結一下我今天的分享。一是AI系統已經在雲端和霧端開始部署,二是我們使用TernGrad減少梯度通信,三是提出結構化的稀疏去壓縮模型,使其雲霧端推演得更快。我們還有更多的工作,大家有興趣可以直接去我們的網站上看我們相關的工作。網站鏈接:http://www.pittnuts.com/#Publications

以上就是雷鋒網對全部分享的整理,大家如果感興趣可以直接去看視頻回放:http://www.mooc.ai/open/course/484。


想在手機閱讀更多iPhone App資訊?下載【香港矽谷】Android應用
分享到Facebook
技術平台: Nasthon Systems