<b>摘要:</b>随着深度學習網絡規模的增大,計算複雜度随之增高,嚴重限制了其在手機等智能裝置上的應用。如何使用深度學習來對模型進行壓縮和加速,并且保持幾乎一樣的精度?本文将為大家詳細介紹兩種模型壓縮算法,并展示了阿裡巴巴模型壓縮平台和前向推理工具。
<b>演講嘉賓簡介:</b>
李昊(花名:遼玥),阿裡巴巴機器智能技術實驗室進階算法專家,畢業于中科院,擁有工學博士學位,緻力于深度學習基礎技術研究以及在各個行業的應用。
以下内容根據演講嘉賓視訊分享以及PPT整理而成。
本文将圍繞一下幾個方面進行介紹:
1. 深度學習模型壓縮與加速
Extremely Low Bit Neural Networks
Extremely Sparse Network
2. 訓練平台
3. 高效前向推理工具
<b>一. 深度學習模型壓縮與加速</b>
随着深度學習網絡規模的增大,計算複雜度随之增高,嚴重限制了其在手機等智能裝置上的應用。例如下圖一展示的VGGNet和圖二的殘差網絡,如此大規模的複雜網絡模型在端裝置上使用并不現實。
是以需要采用深度學習模型來進行壓縮和加速,下面介紹兩種壓縮算法。
1. Extremely Low Bit Neural Networks
Low Bit模型是指将連續的權重壓縮成離散的低精度權重。如下圖所示,原始深度學習的網絡參數為float型,需要32bit存儲空間,将其轉化成隻有三值(0,+1,-1)的狀态,存儲隻需要2bit,極大地壓縮存儲空間,同時也可以避免乘法運算,隻是符号位的變化和加減操作,進而提升計算速度。
接下來以二值網絡為例講解上述的壓縮過程。首先假設原始神經網絡的優化目标函數為f(w),限制條件為深度學習網絡的參數包含在C内,如果C為{-1,1},則該網絡便為二值網絡,如下所示:
這裡引入了一種解決分布式優化和限制優化的常用方法ADMM(Alternating Direction Method of Multipliers),來求解以上離散非凸限制優化問題,其形式如下:
ADMM用于解決當目标函數為f(x)+g(z),其中限制條件是Ax+Bz=c的優化。首先寫出增廣拉格朗日函數,然後将上述問題轉化成求解如下所示的xyz:
即先求解xz的極小值,然後得到y的更新。上述即為ADMM标準解法,接下來,如何将Low Bit Neural Networks問題轉化成ADMM問題呢?
首先需要引入訓示函數,形式如下所示:
此時二值神經網絡的目标函數等價于優化目标函數和訓示函數之和:
這意味着,當訓示函數屬于C時,優化目标即為初始目标,沒有變化;當訓示函數不屬于C時,訓示函數為正無窮,此時會首先優化訓示函數。
然後需要引入一緻性限制,這裡引入輔助變量G,并限制W=G,則目标函數等價于:
加入輔助變量後,就可以将二值神經網絡的優化問題轉化為ADMM标準問題。接下來,寫出上式增廣拉格朗日公式,使用ADMM算法求解完成優化目标,如下所示:
除上述二值網絡外,還有以下幾種常用的參數空間:
參數空間中加入2、4、8等值後,仍然不需要乘法運算,隻需進行移位操作。是以,通過這種方法将神經網絡中的乘法操作全部替換為移位和加操作。
将上述Low Bit模型應用至ImageNet進行分類,最終的優化結果如下表所示:
表一展示了該算法在AlexNet和VGG-16的應用結果,可以發現該算法在二值和三值網絡中的效果明顯優于原始範圍的應用,并且三值網絡中的分類結果與全精度的分類結果相比,幾乎是無損的。表二是該算法在ResNet-18和ResNet-50中的應用,結果也與表一中類似。
在檢測方面,該算法仍具有較高的可用性。如下表所示:
本次實驗的資料集為Pascal VOC 2007。根據上表中資料可知,三值空間内的檢測結果精度與全精度參數空間相比,誤差幾乎可以忽略不計。
2. Extremely Sparse Networks
稀疏神經網絡适用于網絡中大部分參數為零的情況,存儲參數可以通過簡單的壓縮算法,例如遊程編碼,極大的減小參數存儲空間,并且由于0可不參與計算,進而節約大量的計算空間,提升計算速度。稀疏網絡中,優化目标仍然和上述相同,限制條件改為如下所示:
對f(W)求梯度下降值(Gradient Descent),将其進行疊代,每疊代一次,就進行一次連接配接剪枝(Connection Pruning),裁剪的标準是,W的參數越小,重要性越低,将比較小的參數置零,進而保證稀疏度。
但上述解法存在一個明顯的問題是,如下圖所示:
w1與w2相比,w1與0更近,但若将w1置零,對函數的損失更大,是以在決定w的重要性時,必須同時考慮w本身大小和斜率。隻有在w值和斜率都比較小時,才可以将其置零。基于上述标準,完成了對Alexnet和GoogleNet的稀少度實驗,如下圖所示:
由上圖結果可知,無論是純卷積網絡,還是包含全連接配接層網絡,都可以達到90%以上的稀疏度。
3. 實驗結果對比
上文中介紹了稀疏和量化兩種方法,實驗一将這兩種方法同時作用于Alexnet,結果如下所示:
由上圖可以得知,在3Bits,稀疏度為90%以上時,精度損失幾乎可以忽略不計,此時壓縮率可以達到82倍以上。
實驗二中,将兩種方法作用于InageNet和Pascal VOC,其中P是稀疏,Q是量化,由圖中結果可知,實驗過程精度損失極小,并且InageNet中inference的速度有明顯提升,Pascal VOC可以達到稀疏度88.7%,量化為3bits,40倍的壓縮率下,相對于全精度網絡mAP隻有1點的下降幅度。
<b>二. 訓練平台</b>
基于上述兩種方法,建立起Gauss訓練平台。目前Gauss訓練平台支援多種常見訓練任務(例如人臉、ocr、分類、監測等)和模型(例如CNN、LSTM等),并且支援多機訓練,能夠以盡可能少的參數設定,減少使用者使用成本。
同時Gauss訓練平台支援兩種模型訓練工具:Data-dependent和Data-independent。Data-dependent模型訓練工具需要使用者提供訓練資料,訓練時間較長,适合壓縮和加速要求較高的場景。Data-independent模型訓練工具無需使用者提供任何訓練資料,一鍵式處理,處理時間在秒級。
<b>三. 高效前向推理工具</b>
建立起訓練平台之後,模型的真正運用還需要高效的前向推理工具。基于低精度矩陣計算工具AliNN&BNN,快速實作低比特矩陣乘法計算。實作後的推理工具在ARM平台上相比競品提速2-5倍,Intel平台上提速3倍。
<b>本文由雲栖志願小組郭雪整理,編輯百見</b>