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

選自Stanford
機器之心編譯
參與:路雪、蔣思源
韓鬆,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 介紹
第3、4、五章介紹了三種提升深度學習效率的方法,本章着重介紹高效實現這些方法的硬件,「高效推斷機」(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)。這三個方面遵循相同的原則:利用神經網絡的稀疏性進行壓縮、正則化和加速。

論文地址:https://stacks.stanford.edu/file/druid:qf934gh3708/EFFICIENT%20METHODS%20AND%20HARDWARE%20FOR%20DEEP%20LEARNING-augmented.pdf
相關文章
相關標籤/搜索