當前位置:
首頁 > 新聞 > 斯坦福大學博士韓松畢業論文:面向深度學習的高效方法與硬體

斯坦福大學博士韓松畢業論文:面向深度學習的高效方法與硬體

選自arXiv

機器之心編譯

參與:路雪、蔣思源


韓松,2017 年斯坦福大學電子工程系博士畢業,師從 NVIDIA 首席科學家 Bill Dally 教授。他的研究也廣泛涉足深度學習和計算機體系結構,他提出的 Deep Compression 模型壓縮技術曾獲得 ICLR"16 最佳論文,ESE 稀疏神經網路推理引擎獲得 FPGA"17 最佳論文,對業界影響深遠。他的研究成果在 NVIDIA、Google、Facebook 得到廣泛應用,博士期間創立了深鑒科技,2018 年將任職 MIT 助理教授。本文對韓松博士的畢業論文做了介紹。

未來將出現大量廉價、低功耗的智能設備。深度神經網路已經發展出適合機器學習任務的頂尖技術。但是,這些演算法計算量很大,使得它們難以部署到硬體資源有限、能量預算緊張的嵌入式設備中。由於摩爾定律和工藝尺寸縮小正在變慢,僅依賴工藝進步無法解決這個問題。為了解決該問題,我們研究高效的演算法和專用體系架構。我們通過硬體在應用中執行全棧優化,從而通過更小的模型規模、更高的預測準確度、更快的預測速度和更低的電量消耗來提高深度學習的效率。我們的方法從使用「深度壓縮」改變演算法開始,「深度壓縮」通過剪枝、量化訓練(trained quantization)和可變長度編碼(variable length coding)/霍夫曼編碼大幅減少參數數量和深度學習模型的計算要求。「深度壓縮」可以在不損害預測準確度的前提下把模型大小減小 18 倍 到 49 倍。我們還發現剪枝和稀疏約束(sparsity constraint)不僅能夠用於模型壓縮,還能夠用於正則化。我們提出 dense-sparse-dense 訓練(DSD),可以提高多種深度學習模型的預測準確度。為了在硬體中高效實現「深度壓縮」,我們開發了一種特定領域的硬體加速器 EIE(Efficient Inference Engine,高效推斷機),它能夠在壓縮後的模型上直接執行推斷,顯著節約了內存帶寬。EIE 利用壓縮模型,能夠高效處理非常規計算模式,從而把速度提高了 13 倍,能量效率比 GPU 高出 3400 倍。

第一章 引言

本文,我們協同設計了適合深度學習的演算法和硬體,使之運行更快更節能。我們提出的技術能夠使深度學習的工作負載更加高效、緊密,然後我們設計了適合優化 DNN 工作負載的硬體架構。圖 1.1 展示了本文的設計方法。打破演算法和硬體棧之間的界限創造了更大的設計空間(design space),研究者獲得之前從未有過的自由度,這使得深度學習能夠實現更好的優化。

在演算法方面,我們研究如何簡化和壓縮 DNN 模型,以減少計算量和內存的佔用。在 ImageNet 上,我們在不損失預測準確度的情況下將 DNN 壓縮了 49 倍 [25,26]。我們還發現模型壓縮演算法能夠去除冗餘、防止過擬合,可以作為合適的正則化方法 [27]。

在硬體方面,壓縮後的模型具備提速和降低能耗的極大潛力,因為它所需的算力和內存減少。然而,模型壓縮演算法使計算模式變的非常規,很難並行化。因此,我們為壓縮後的模型設計了一種定製化硬體,設計模型壓縮的數據結構和控制流程。該硬體加速器的能量效率比 GPU 高出 3400 倍,比之前的加速器高出一個數量級 [28]。該架構的原型在 FPGA 上,且已用於加速語音識別系統 [29]。

斯坦福大學博士韓松畢業論文:面向深度學習的高效方法與硬體

圖 1.1:本文重點是協同設計適合深度學習的演算法和硬體。本文回答了兩個問題:哪些方法可以使深度學習演算法更加高效,哪些硬體架構最適合這類演算法。

斯坦福大學博士韓松畢業論文:面向深度學習的高效方法與硬體

圖 1.2:論文主題貢獻:正則化訓練、模型壓縮、加速推理

第二章 背景

本章首先介紹什麼是深度學習以及它的工作原理和應用;然後介紹我們實驗所用的神經網路架構、數據集、在數據集上訓練架構的框架。之後,我們介紹壓縮、正則化和加速方面之前的研究。

第三章 神經網路剪枝

現代深度神經網路使用非常多的參數以提供足夠強大的模型,因此這種方法在計算量和內存上都需要足夠的資源。此外,傳統的神經網路需要在訓練前確定與修正架構,因此訓練過程並不會提升架構的性能。而若直接選擇複雜的架構,那麼過多的參數又會產生過擬合問題。因此,選擇適當容量(capacity)的模型和消除冗餘對計算效率和準確度的提升至關重要。

為了解決這些問題,我們發展了一種剪枝方法(pruning method)來移除冗餘並保證神經網路連接的有效性,這種方法能降低計算量和內存的要求以提升推斷的效果。這種方法關鍵的挑戰是如何在模型剪枝後還保留原來的預測準確度。

我們的剪枝方法移除了冗餘連接,並僅通過重要的連接學習(下圖 3.1)。在該圖的案例中,共有三層神經網路,剪枝前第 i 層和 i+1 層間的連接為密集型連接,剪枝後第 i 層和 i+1 層間的連接為稀疏連接。當所有與神經元相聯結的突觸都被移除掉,那麼該神經元也將移除。神經網路剪枝將密集型神經網路轉化為稀疏型神經網路,並且在減少了參數與計算量的情況下完全保留預測準確度。剪枝不僅提高了推斷速度,同時還降低了運行大型網路所需要的計算資源與能源,因此它可以在電池受限的移動設備上使用。剪枝同樣有利於將深度神經網路儲存並傳遞到移動應用中。

斯坦福大學博士韓松畢業論文:面向深度學習的高效方法與硬體

圖 3.1:對深度神經網路的神經元與突觸進行剪枝。

在初始化訓練階段後,我們通過移除權重低於閾值的連接而實現 DNN 模型的剪枝,這種剪枝將密集層轉化為稀疏層。第一階段需要學習神經網路的拓撲結構,並關注重要的連接而移除不重要的連接。然後我們重新訓練稀疏網路,以便剩餘的連接能補償移除的連接。剪枝和再訓練的階段可以重複迭代地進行以減少神經網路複雜度。實際上,這種訓練過程除了可以學習神經網路的權重外,還可以學習神經元間的連通性。這與人類大腦的發育過程 [109] [110] 十分相似,因為生命前幾個月所形成的多餘突觸會被「剪枝」掉,神經元會移除不重要的連接而保留功能上重要的連接。

在 ImageNet 數據集中,剪枝方法可以將 AlexNet 的參數數量減少 9 倍(6100 萬降低為 670 萬)而沒有準確度上的損失。VGG-16 同樣有類似的現象,參數總量可以減少 13 倍左右(1.38 億降低為 1.03 千萬)而完全沒有準確度損失。我們還試驗了更多高效的全卷積神經網路:GoogleNet(Inception-V1)、SqueezeNet 和 ResNet-50,它們不具有或有很少的全連接層。在這些實驗中,我們發現在準確度降低前它們有相似的剪枝率,即 70% 左右的全卷積神經網路參數可以被剪枝。GoogleNet 從 700 萬參數降低到 200 萬參數,SqueezeNet 從 120 萬參數降低到 38 萬參數,而 ResNet-50 從 2550 萬參數降低到 747 萬參數,這些網路在 ImageNet Top-1 和 Top-5 準確度上都完全沒有損失。

在本章節以下部分中,我們提供了如何剪枝神經網路和再訓練模型以保留預測準確度的方法。我們還展示了剪枝後模型在商業化硬體上運行所產生的速度與能源效率提升。

斯坦福大學博士韓松畢業論文:面向深度學習的高效方法與硬體

第四章 量化訓練與深度壓縮

本章節介紹了用於壓縮深度神經網路的量化訓練(trained quantization)技術,但它與前一章所介紹的剪枝技術相結合時,我們就能構建「深度壓縮」[26],即一種深度神經網路的模型壓縮流程。深度壓縮(Deep Compression)由剪枝、量化訓練和可變長度編碼(variable-length coding)組成,它可以壓縮深度神經網路數個量級而沒有什麼預測準確度損失。這種大型壓縮能使機器學習在移動設備上運行。

「深度壓縮」是一種三階段流程(圖 4.1),它可以在保留原始準確度的情況下減小深度神經網路的模型大小。首先我們可以移除冗餘連接而剪枝網路,這一過程只需要保留提供最多信息的連接(如第三章所述)。下一步需要量化權重,並令多個連接共享相同的權重。因此只有 codebook(有效權重)和索引需要儲存,且每個參數只需要較少的位就能表示。最後,我們可以應用可變長度編碼(Huffman 編碼)來利用有效權重的不均勻分布,並在沒有訓練準確度損失情況下使用可變長度編碼表征權重。

我們最重要的觀點是,剪枝與量化訓練可以在不相互影響的情況下壓縮神經網路,因此可以產生驚人的高壓縮率。深度壓縮令存儲需求變得很小(兆位元組空間),所有的權重都可以在晶元上緩存而不需要晶元外的 DRAM。而動態隨機儲存器不僅慢同時能耗還比較高,因此深度壓縮可以令模型更加高效。深度壓縮是第六章高效推斷機(efficient inference engine/EIE)的基礎,其通過壓縮模型實現了顯著的速度和能源效率提升。

斯坦福大學博士韓松畢業論文:面向深度學習的高效方法與硬體

圖 4.1:深度壓縮的流程:剪枝、量化學習和可變長度編碼

斯坦福大學博士韓松畢業論文:面向深度學習的高效方法與硬體

表 4.1:深度壓縮在沒有準確度損失的情況下節約了 17 倍到 49 倍的參數存儲需求。

斯坦福大學博士韓松畢業論文:面向深度學習的高效方法與硬體

表 4.9:使用不同更新方法比較均勻量化和非均勻量化的結果。-c 僅更新形心(centroid),-c+1 同時更新形心和標籤。ResNet-50 的基線準確度分別為 76.15% 和 92.87%。所有結果都經過再訓練。

斯坦福大學博士韓松畢業論文:面向深度學習的高效方法與硬體

圖 4.10:非均勻量化的表現要好於均勻量化。

圖 4.10 和表 4.9 比較了均勻量化和非均勻量化的性能。非均勻量化指的是相鄰編碼的距離不為常數。量化訓練是非均勻量化的一種形式,因為其不同編碼的距離並不相同。對於非均勻量化(本研究),基線 ResNet-50 所有層級的參數可以壓縮為 4 比特而沒有準確度損失。然而對於均勻量化,基線 ResNet 所有層的參數只能壓縮到 8 比特而沒有準確度損失(壓縮到 4 比特會產生 1.6% 的 Top-1 準確度損失)。非均勻量化可以很好的捕捉到權重的不均勻分布,而均勻量化不能很好的實現這一點。

第五章 DSD: Dense-Sparse-Dense Training

現代高性能硬體的出現使得訓練複雜、模型容量巨大的 DNN 模型變得更加簡單。複雜模型的優勢是它們對數據的表達能力很強並且能捕捉到特徵和輸出之間的高度非線性的關係。而複雜模型的劣勢在於,比起訓練數據中所需要的模式,它們更容易捕捉到雜訊。這些雜訊並不會在測試數據中生成,從而使模型產生過擬合和高方差。

然而,只是簡單的減少模型容量會導致另一個極端:欠擬合和高偏差(機器學習系統不能準確捕捉特徵和輸出之間的關係)。所以,偏差和方差很難同時優化。為了解決這個問題,我們提出了 dense-sparse-dense(DSD)訓練流,以正則化深度神經網路,防止過擬合併達到更高的準確度。

傳統的訓練方法通常是同時訓練所有的參數,而 DSD 訓練法會周期性的修剪和恢復神經連接,訓練過程中的有效連接數量是動態變化的。剪枝連接允許在低維空間中進行優化,捕捉到魯棒性特徵;恢復連接允許增大模型的容量。傳統的訓練方法只在訓練開始的時候將所有權重初始化一次,而 DSD 訓練法允許連接在周期性剪枝和恢復的中有多於一次的機會執行初始化。

DSD 的一個優勢是最後的神經網路仍然擁有和初始的密集模型同樣的架構和維度,因此 DSD 訓練不會產生任何額外的推斷成本。使用 DSD 模型進行推斷不需要指定專門的硬體或專門的深度學習框架。實驗證明 DSD 可以可以提高多種 CNN、RNN 和 LSTM 在圖像分類、生成文字描述和語音識別任務的性能。在 ImageNet 上,DSD 提升了 GoogleNet Top-1 準確度 1.1%、VGG-16 Top-1 準確度 4.3%、ResNet-18 Top-1 準確度 1.2%、ResNet-50 Top-1 準確度 1.1%。在 WSJ』93 數據集上,DSD 把 DeepSpeech 和 DeepSpeech2 的錯誤率(WER)分別降低了 2.0% 和 1.1%。在 Flickr-8K 數據集上,DSD 將 NeuralTalk BLEU 的分數提高了 1.7 以上。

斯坦福大學博士韓松畢業論文:面向深度學習的高效方法與硬體

圖 5:DSD(Dense-Sparse-Dense)訓練法中迭代進行剪枝和恢復權重的過程。

第六章 EIE:用於稀疏神經網路的高效推斷機

6.1 介紹

第三、四、五章介紹了三種提高深度學習效率的方法,本章著重介紹高效實現這些方法的硬體,「高效推斷機」(EIE)[28]。該機器可以在稀疏的壓縮模型上直接執行推斷,節省內存帶寬,實現大幅加速和能耗節約。

通過剪枝和量化訓練 [25] [26] 實現的深度壓縮能夠大幅降低模型大小和讀取深度神經網路參數的內存帶寬。但是,在硬體中利用壓縮的 DNN 模型是一項具有挑戰性的任務。儘管壓縮減少了運算的總數,但是它引起的計算不規則性對高效加速帶來阻礙。例如,剪枝導致的權重稀疏使並行變的困難,也使優秀的密集型線性代數庫無法正常實現。此外,稀疏性激活值依賴於上一層的計算輸出,這隻有在演算法實施時才能知道。為了解決這些問題,實現在稀疏的壓縮 DNN 模型上高效地運行,我們開發了一種專門的硬體加速器 EIE,它通過共享權重執行自定義的稀疏矩陣乘法,從而減少內存佔用,並在執行推斷時實現大幅加速和能耗節約。

EIE 是處理單元(processing element/PE)的一種可擴展數組(scalable array)。它通過在處理單元上交織(interleave)矩陣的行來分配稀疏矩陣並實現並行計算。每個處理單元在 SRAM 中存儲一個網路分區,與子網路共同執行計算。EIE 利用了靜態權重稀疏性、動態激活向量稀疏性、相對索引(relative indexing)、共享權重和極窄權重(4 比特/extremely narrow weights)。

斯坦福大學博士韓松畢業論文:面向深度學習的高效方法與硬體

圖 6.1:壓縮 DNN 模型在 EIE 上運行。

EIE 架構如圖 6.1 所示。EIE 以壓縮稀疏列(compressed sparse column,CSC)格式存儲權重不為零的稀疏權重矩陣 W。EIE 只在權重和激活值都不為零的情況下執行乘法。EIE 以遊程編碼(run-length encoded)格式存儲每個權重的地址索引。在量化訓練和共享權重之後,每個權重只佔用 4 比特,它們可訪問由 16 個寄存器實現的查找表以解碼成 16 比特權重。

為評估 EIE 的性能,我們創建了行為級模擬和 RTL 模型,然後將 RTL 模型綜合、布局布線,以提取準確的能量和時鐘頻率。將 EIE 在九個 DNN 基準上進行評估,它的速度分別是未壓縮 DNN 的 CPU 和 GPU 實現的 189 和 13 倍。EIE 在稀疏網路上的處理能力為 102 GOPS/s,相當於在同等準確度的稠密網路上 3 TOPS/s 的處理能力,且僅耗散 600mW 的能量消耗。EIE 的能耗分別比 CPU 和 GPU 少了 24,000 倍和 3,400 倍。EIE 的貢獻如下:

  • 稀疏權重:EIE 是第一個用於稀疏和壓縮深度神經網路的加速器。直接在稀疏壓縮模型上運行可使神經網路的權重適應晶元上 SRAM,比訪問外部 DRAM 節省 120 倍的能耗。通過跳過零權重,EIE 節省了 10 倍的計算周期。

  • 稀疏激活值:EIE 利用激活函數的動態稀疏性來節約算力和內存。EIE 通過避免在 70% 的激活函數上的計算節約了 65.16% 的能量,這些激活函數在典型深度學習應用中的值為零。

  • 權重編碼:EIE 是第一個用非統一量化、極窄權重(每個權重 4 比特)利用查找表執行推斷的加速器。與 32 比特浮點相比,它獲取權重節約了 8 倍的內存佔用,與 int-8 相比,它節約了 2 倍的內存佔用。

  • 並行化:EIE 引入了在多個處理單元上分配存儲和算力的方法,以並行化稀疏層。EIE 還引入架構改變以達到負載平衡和優秀的擴展性。

第七章 結論

深度神經網路改變了大量 AI 應用,也正在改變我們的生活。但是,深度神經網路需要大量的計算量和內存。因此,它們很難部署到計算資源和能源預算有限的嵌入式系統中。為了解決該問題,我們提出了改善深度學習效率的方法和硬體。

斯坦福大學博士韓松畢業論文:面向深度學習的高效方法與硬體

圖 7.1:論文總結

本文從三方面研究如何提高深度學習的效率:利用深度壓縮實現更小的模型大小、利用 DSD 正則化實現更高的預測準確度,以及利用 EIE 加速實現快速、能耗低的推斷(圖 7.1)。這三個方面遵循相同的原則:利用神經網路的稀疏性進行壓縮、正則化和加速。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 機器之心 的精彩文章:

吳恩達deeplearning.ai實習生招募開放:僅要求MOOC課程證書
要「自我顛覆」的Mate 10發布後,華為積極跟進3D人臉識別
始於城市大腦,ET大腦正接管阿里雲人工智慧技術
機器學習新手工程師常犯的6大錯誤
要自我顛覆的華為Mate 10來了

TAG:機器之心 |