剪枝需有的放矢,快手&羅切斯特大學提出基於能耗建模的模型壓縮

2020-12-22 機器之心Pro

最近,快手 Y-Tech 西雅圖 AI lab 聯合羅切斯特大學等研究者提出了一種基於能耗建模的壓縮方法,他們一脈相承的兩篇論文分別被 ICLR 2019 和 CVPR 2019 接收。在這篇文章中,我們將介紹這種新型模型壓縮的核心思想及主要做法,神經網絡壓縮也許該走向有目標的前進之路了。

模型壓縮的應用

目前快手的手機端應用,基本上都會進行模型壓縮,因為不管是能耗、效率,還是推斷速度,都需要滿足很多條件才能投入使用。不管是將深度學習模型部署到雲端還是移動端,模型壓縮都必不可少。

快手 Y-Tech 西雅圖 AI 團隊的負責人劉霽教授表示部署到手機端的模型,例如美顏相機、視頻的人臉識別、姿態識別等應用都會經過模型壓縮,其重點在於減小模型體積、降低模型能耗,以及保證推斷效率。

部署到伺服器也面臨類似問題,因為每一秒都會有成千上萬條調用請求,而這些請求需要在規定時間內得到響應。例如更新一次推薦視頻,快手的伺服器在接到請求以後需要立即計算,把最合適的 Top-N 視頻反饋到客戶端,這種響應甚至要控制在幾毫秒才能滿足用戶良好的體驗。

正因為有很多實際需求,快手嘗試構建更高效和有目的性的模型壓縮算法。在本文介紹的這兩篇論文中,他們以能耗為約束構建更高效和合理的壓縮方法。雖然論文以能耗為目標,但實際上可以把它換成推斷時間等不同的度量,因此這類神經網絡壓縮方法有更廣泛的應用。

除了這種適用於各種任務的模型壓縮,快手還會提出新方法以構建更緊湊的神經網絡,這本質上也是一種模型壓縮。例如在 Interspeech 2018 的 oral 論文中,語音組提出了一種能使用下文信息的門控循環單元,該模型能在極低延遲的情況下為快手提供語音識別、語音特效和語音評論等應用。

神經網絡壓縮新觀點

在模型壓縮方法中,最常見的就是剪枝、量化和知識蒸餾等,我們認為當參數和運算量減少時,模型的能耗和推斷延遲等也都會下降。但實際上,它們與能耗等度量並非簡單的正比關係,因此這種「想當然」的做法並非是最優方案。

例如模型剪枝,我們希望刪除單個不重要的神經元連接,或者直接刪除一組不重要的連接(channel 級的剪枝)。通常情況下,這種剪枝只關注減少參數量(或者模型大小)和運算量,並不考慮硬體條件或具體能耗等約束。劉霽表示經典的模型壓縮有一個隱含的假設:「在不同層刪除一條邊所節省的能量,或者說所提升的效率是等價的。」然而,由於物理硬體的複雜性,這個基本假設實際上並不絕對正確。有時候大模型可能比小模型的能量消耗更少或者推斷時間更短。

物理硬體實際上很複雜,如果我們用能耗作為約束,它會由幾部分組成:計算和數據加載等產生的能耗。算法工程師一般只關注計算複雜度,且通常不太關注數據加載的能耗。因此劉霽表示:「以前的研究工作對硬體本身缺乏足夠的關注,不同的硬體都是用同一個壓縮的模型,現在我們需要在充分理解硬體的基礎上,設計符合各種硬體的模型。」

劉霽等研究者認為目前的模型壓縮缺少一種導向,即為某個明確的目的進行壓縮,這種導向對當前模型壓縮研究很重要。他表示:「與標準剪枝或量化等壓縮方法相比,我們的研究重點在於找到指導模型進行剪枝或量化的目標。標準方法只需要模型變小變瘦就行了,但我們需要一種約束來引導優化模型,例如降低能耗或減少模型推斷時間等。」

也就是說,我們應該在給定能耗或延遲的約束下,找到滿足約束的最「精準」的模型。為了引入這種約束,我們需要解決兩大問題:如何對模型能耗或延遲建模;如何解這種帶約束的最優化問題。

針對這兩個問題,快手 Y-Tech 聯合羅切斯特大學近來提出了兩套解決方案,它們一脈相承且分別被 ICLR 2019 和 CVPR 2019 兩大頂會接收。以能耗為約束,表明這種模型壓縮框架能更有效地剪枝,從而滿足各種不同的應用。

基於能耗的模型壓縮

總的而言,這兩篇論文都在思考如何設計一種深度神經網絡,它能在滿足給定能耗的情況下最大化準確率。這兩篇論文都將這種能耗約束加入到最優化過程,並通過端到端的方法學習如何進行更高效的剪枝。

論文:Energy-Constrained Compression for Deep Neural Networks via Weighted Sparse Projection and Layer Input Masking(ICLR 2019)論文地址:https://openreview.net/pdf?id=BylBr3C9K7

論文:ECC: Energy-Constrained Deep Neural Network Compression via a Bilinear Regression Model(CVPR 2019)論文地址:https://arxiv.org/pdf/1812.01803.pdf從方法上來說,劉霽教授表示我們既可以通過數學分析的形式對模型能耗建模,也可以通過數據驅動的方式建模能耗,為了對硬體的行為了解更加深刻和清晰,此該工作與羅切斯特大學計算機體系結構教授緊密配合。ICLR 那篇就通過研究核心的底層硬體確定近似能耗,這種對 GPU 等晶片的分析方法可以快速計算不同剪枝網絡的能耗,從而指導剪枝過程。CVPR 那篇通過我們更熟的數據驅動方法,希望模型能學習不同網絡與具體能耗的關係。

對於帶約束的最優化方法,其解法並非被廣泛熟知。目前深度學習大多數都是無約束優化,直接調用各種優化器就能解決。反觀帶約束的最優化方法,我們沒有成熟的優化器,很多都需要根據針對具體問題實現新的最優化方法。正如劉霽教授所言:「並不是大家沒從約束的角度考慮模型壓縮,而是帶約束的最優化確實需要更多技巧與方法,我們需要更深入的工作來解決這些問題。」

總體而言,基於能耗的模型壓縮過程如 ECC 那篇論文的圖 1 所示:ECC 通過數據驅動離線建模能耗,再將其應用到帶約束的在線最優化過程中。

能耗的直接建模

前面已經介紹能耗的建模可以通過數學分析,但這需要我們對硬體的理解比較充分。在 ICLR 的那篇論文中,劉霽等研究者重點關注如何對卷積層與全連接層的能耗建模,因為它們在推斷過程中佔了 90% 以上的執行時間與能耗。其它模塊的能耗比較少,可以近似地看作一個很小的常量。

神經網絡的推斷能耗與硬體底層架構有關,該論文研究了 TPU 和 Volta GPU 等硬體都採用的矩陣運算方法脈動陣列(systolic array)。對該硬體進行能耗建模最終就能計算出不同模型的能耗,如下所示為計算矩陣乘法時的主要能耗,其中脈動陣列包含一些能執行乘加運算(MAC)的計算單元。

總能耗主要可以分為 MAC 的計算能耗與數據讀寫的能耗,這篇論文的總體建模即弄清楚模型稀疏性如何影響這兩部分能耗。

由於硬體的多樣性和複雜性,對能耗進行分析建模通常並不容易,機器學習研究者對底層硬體也不是那麼了解。為此在最近 CVPR 2019 提出的 ECC 中,Y-Tech 團隊提出另一種「更優美」的數據驅動方法。劉霽教授表示這種方法的核心思想即:「給定一個網絡,我們隨機選擇每一層的節點數,然後把這樣的模型放到硬體測試它的能耗或延遲,這樣就能構造一個很全面的數據集。如果再用某個模型根據這個數據集建模就能學會神經網絡與能耗之間的關係。」

值得注意的是,這兩種方法雖然都在建立神經網絡稀疏性與能耗之間的關係,但第一篇 ICLR 2019 論文主要通過權重級的細粒度剪枝獲得稀疏性,第二篇 CVPR 2019 論文主要通過 Channel 級的粗粒度剪枝獲得稀疏性。除了剪枝,量化等方法在這裡也可以同時使用。不過 Channel 級的剪枝更適用於各種硬體,我們不需要為它準備特殊的硬體架構。

在第二篇 ECC 中,研究者通過雙線性模型和構造的數據集對稀疏性和能耗之間的關係進行建模。這種 DNN 能耗模型能移植到不同的硬體架構中,它只需要將硬體平臺視為黑盒就行了。此外,因為雙線性模型是可微的,所以學習過程也極其簡單,使用傳統基於梯度的方法就夠了。

具體而言,對於能耗模型 ε(s),可微的目標函數可以表示為以下:

其中ε(s) 表示在給定稀疏性 s 情況下的真實能耗,我們希望用雙線性函數 f(s) 逼近真實能耗。一般而言,DNN 層級的能耗是受輸入通道數與輸出通道數影響的,它們又相當於當前層和後一層的稀疏性。因此可以簡單地用雙線性模型為 s 建模:

其中 a_0 到 a_j 為可學習參數,|U| 表示層級數量。注意 a_0 這個偏置項常數,劉霽教授表示:「我們採集的硬體平臺數據會包含一些基礎能耗,這一部分是和模型推斷無關的,因此雙線性模型中的常數項很好地對這些能耗進行了建模。」

使用雙線性建模 Channel 級剪枝的能耗也是很有道理的,因為 DNN 在推斷過程中總的算術運算數大致上是一種雙線性形式。劉霽教授表示其它壓縮方法可能並不適合雙線性模型,但是我們可以用神經網絡等非線性模型對能耗建模。只不過在這個案例中因為雙線性模型的簡單和緊湊,它的效果非常好。

最後,給定硬體和神經網絡的組合,ECC 中能耗模型的建立完全是離線完成的,它沒有運行時開銷。

帶約束的最優化

如果我們將能耗模型作為剪枝操作的指導,那麼就可以構建一個帶約束的最優化過程。這兩篇論文的解法並不相同,劉霽教授表明:「一般帶約束的最優化方法有幾種常見解法,首先如同 ICLR 那篇採用的是 Projection 方法,即先執行 SGD,然後執行 Projection 將解映射到約束中以令它強行滿足條件。如果約束比較複雜,那麼 Projection 可能很難計算,這個時候就需要 CVPR 那篇採用的 ADMM 算法了。」

這一部分主要介紹第二篇 CVPR 所採用的 ADMM+ Adam 解法,當然這裡只簡要介紹核心思想,詳細的更新過程可參考原論文。對於 Channel 級的權重剪枝,首先我們需要形式化地表達整個帶約束的最優化問題:

因為 ADMM 方法並不能直接使用,我們需要把複雜約束換為多個簡單約束。其中我們希望在給定權重 W 的情況下最小化損失函數,且每一層的權重 w 都需要滿足某種程度的稀疏性,而這些稀疏性又需要滿足總體的能耗約束。

劉霽教授表示,ADMM 本質上會根據約束的滿足程度給出一個懲罰:如果解滿足約束,那麼就不會給解加上懲罰,如果解不滿足約束,那麼懲罰會根據不滿足程度變大而強行令解滿足約束。所以一定意義上,ADMM 可以看作是一種特殊的增廣拉格朗日乘子法。拉格朗日乘子法算我們比較熟悉的了,那麼上面方程 2 可以等價地構造為增廣拉格朗日函數的極小極大問題:

其中新引入的 y 和 z 分別是方程 2b 和 2c 的對偶變量,L 為增廣拉格朗日函數:即 L(W, s, y, z) := l(W) + L_1(W, s, y) + L_2(s, z)。

對於 ADMM 而言,基本步驟還是使用 SGD 類的迭代方法如 Adam 更新權重,不過這一更新會加上一個「罰項」L_1,即在更新權重時希望它滿足某個權重稀疏性的約束。其次在更新稀疏性 s 時,因為 L_1 與 L_2 兩項(2b 和 2c)都與稀疏性 s 相關,所以 SGD 可直接極小化這兩項而更新 s。最後,按照拉格朗日乘子法的常規解法,再更新對偶變量 y 和 z 就行了。我們可以直觀理解為,如果不滿足程度越大,那麼對偶變量會增大,它們給出的懲罰也會變大。

如下所示為增廣拉格朗日函數兩個子項 L_1 與 L_2 的表達式:

劉霽教授表示,L_1 和 L_2 的第一項可以看成二階的懲罰項,其中「+」號表示滿足條件下是沒任何懲罰的,只懲罰不滿足條件的解。而第二項可以看作一階的罰項,它在滿足條件下甚至還有「獎勵」(罰項為負)。另外,我們也可以從拉格朗日乘子法的角度理解,前一項表示增廣拉格朗日函數項,後一項一般表示拉格朗日函數項。

解決這個帶約束的最優化問題後,有目的地剪枝就不成問題了。最後,兩篇論文的實驗結果表明,在不同的硬體上對不同的神經網絡進行壓縮,能耗都要顯著低於其它方法,感興趣的讀者可以查閱原論文。

相關焦點

  • 滴滴、東北大學提自動結構化剪枝壓縮算法框架,性能提升高達120倍
    滴滴 AI Labs 與美國東北大學王言治教授研究組合作,聯合提出了一種基於 AutoML 思想的自動結構化剪枝的算法框架 AutoCompress,能自動化的去尋找深度模型剪枝中的超參數,去除模型中不同層的參數冗餘,替代人工設計的過程並實現了超高的壓縮倍率。從而滿足嵌入式端上運行深度模型的實時性能需求。
  • ...量顯著減少,紀榮嶸教授團隊提出基於高秩特徵圖的濾波器剪枝方法
    在一篇 CVPR 2020 Oral 論文中,來自廈門大學紀榮嶸教授團隊的研究者提出了一種新的基於高秩特徵圖的濾波器剪枝方法(HRank)。在不引入任何附加約束的情況下,與其他精度相似的現有算法相比,HRank 在浮點計算量和參數量上有了顯著減少。
  • CVPR 2019Oral論文解讀|百度提出關於網絡壓縮和加速的新剪枝算法
    雷鋒網(公眾號:雷鋒網) AI 科技評論按:百度關於網絡壓縮和加速的論文《 Filter Pruning via Geometric Median for Deep Convolutional Neural Networks Acceleration》被 CCF A 類學術會議 CVPR 2019 收錄為 Oral 論文,這篇論文提出了新的基於濾波器的幾何中心
  • 模型壓縮95%,MIT韓松等人提出新型Lite Transformer
    韓松的研究廣泛涉足深度學習和計算機體系結構,他提出的 Deep Compression 模型壓縮技術曾獲得 ICLR2016 最佳論文,論文 ESE 稀疏神經網絡推理引擎 2017 年曾獲得晶片領域頂級會議——FPGA 最佳論文獎,引領了世界深度學習加速研究,對業界影響深遠。
  • 邊緣計算中深度神經網絡剪枝壓縮的研究簡介
    深度神經網絡與其他很多機器學習模型一樣,可分為訓練和推理兩個階段。訓練階段根據數據學習模型中的參數(對神經網絡來說主要是網絡中的權重);推理階段將新數據輸入模型,經過計算得出結果。過參數化是指在訓練階段,網絡需要大量的參數來捕捉數據中的微小信息,而一旦訓練完成到了推理階段,就不需要這麼多的參數。基於這樣的假設,就可以在部署前對模型進行簡化。
  • 只需一個損失函數、一個超參數即可壓縮BERT,MSRA提出模型壓縮新方法
    機器之心報導參與:魔王來自武漢大學、北京航空航天大學和微軟亞洲研究院的這項研究為模型壓縮提供了新方向。這些模型從其「過參數化」屬性中獲益,它們往往包含數百萬甚至數十億個參數,這就使得此類模型計算成本高昂,且從內存消耗和高延遲的角度來看其計算是低效的。這一缺陷極大地阻礙了此類模型在生產環境中的應用。為了解決該問題,研究者提出很多神經網絡壓縮技術。一般而言,這些技術可分為三類:量化、權重剪枝和知識蒸餾(KD)。其中,KD 能夠壓縮預訓練語言模型,並因此得到了極大關注。
  • 微軟亞洲研究院的研究員們提出了一種模型壓縮的新思路
    然而,這些模型所包含的參數量巨大,計算成本高昂,極大地阻礙了此類模型在生產環境中的應用。為了解決該問題,來自微軟亞洲研究院自然語言計算組的研究員們提出了一種模型壓縮的新思路。 隨著深度學習的流行,很多大型神經網絡模型誕生,並在多個領域中取得當前最優的性能。尤其是在自然語言處理(NLP)領域中,預訓練和調參已經成為其中大多數任務的新範式。
  • 深度學習模型壓縮與加速綜述
    1、簡介深度學習模型壓縮與加速是指利用神經網絡參數和結構的冗餘性精簡模型,在不影響任務完成度的情況下,得到參數量更少、結構更精簡的模型。被壓縮後的模型對計算資源和內存的需求更小,相比原始模型能滿足更廣泛的應用需求。
  • [Google]BERT壓縮到7MB!最新基於最優子詞和共享投影的極限語言壓縮模型
    使用雙訓練和共享變量投影的組合,我們訓練了一個12層的高度壓縮的學生BERT模型,與教師BERT基本模型相比,最大壓縮比為61.94(尺寸為48維)。我們進行了測試通用語言建模視角和下遊任務的實驗,證明了這兩類任務都具有高壓縮比的競爭性能。隨著神經網絡本身的普及,對神經網絡模型壓縮的研究也隨之興起,因為這些模型對於當時的硬體來說往往是內存密集型的。
  • 閒話模型壓縮之網絡剪枝(Network Pruning)|綜述
    細分來說,模型壓縮又可分很多方法,如剪枝(Pruning)、量化(Quantization)、低秩分解(Low-rank factorization)、知識蒸餾(Knowledge distillation)。每一子類方法展開都可以是很大的話題,所以我們一個個來,今天主要只限於pruning方法。它基於一個假設,或者說目前的共識。
  • 深度學習模型壓縮方法
    該算法採取了剪枝與嫁接相結合、訓練與壓縮相同步的策略完成網絡壓縮任務。通過網絡嫁接操作的引入,避免了錯誤剪枝所造成的性能損失,從而在實際操作中更好地逼近網絡壓縮的理論極限。因此作者提出了一種基於熵值的裁剪方式,利用熵值來判定filter的重要性。
  • 如何測量模型剪枝的「舍」?
    雷鋒網 AI 科技評論按:深度學習模型運行需要大量的計算、內存和功耗,為了解決模型模型運行的瓶頸,研究者提出了一系列模型壓縮方法,其中就包括模型剪枝,能夠有效地減小內存、功耗,提高計算效率。然而,「每一枚硬幣都有正反兩面」,模型剪枝在獲得諸多益處的同時,勢必也會造成一定的「舍」。這些損失到底是什麼?
  • 綜述論文:當前深度神經網絡模型壓縮和加速方法速覽
    [9] 中的研究在基於隨機修約(stochastic rounding)的 CNN 訓練中使用 16 比特定點表示法(fixed-point representation),顯著降低內存和浮點運算,同時分類準確率幾乎沒有受到損失。[10] 提出的方法是首先修剪不重要的連接,重新訓練稀疏連接的網絡。
  • 模型剪枝,不可忽視的推斷效率提升方法 - 機器之心Pro
    選自TowardsDataScience作者:Ranjeet Singh機器之心編譯參與:路剪枝是常用的模型壓縮方法之一,本文對剪枝的原理、效果進行了簡單介紹。目前,深度學習模型需要大量算力、內存和電量。
  • 騰訊聯合港中文提出新型神經網絡壓縮方法
    騰訊 AI Lab 與香港中文大學合作完成的論文《通過交叉知識蒸餾實現少樣本神經網絡壓縮(Few Shot Network Compression via Cross Distillation)》提出的新方法能很好地在保證實時性和準確性平衡的前提下兼顧隱私和安全性。該論文已被 AAAI 2020 會議接收,且相關原始碼也已在 GitHub 發布。
  • 網絡剪枝中的AutoML方法
    前言傳統的模型剪枝方法,與模型結構設計相同,大多依據經驗手工設計度量指標,然後給定壓縮比例進行剪枝(例如,基於權重的L2-NORM排序,剪掉30%的channel)。這種剪枝的方法存在很明顯的弊端:第一,需要依賴大量經驗設計合適的度量指標(如,L2-NORM、L1-NORM稀疏化、激活程度等等);第二,需要設定合適的壓縮比例,而這個往往需要大量的嘗試。
  • ThiNet:模型通道結構化剪枝
    【GiantPandaCV】ThiNet是一種結構化剪枝,核心思路是找到一個channel的子集可以近似全集,那麼就可以丟棄剩下的channel,對應的就是剪掉剩下的channel對應的filters。剪枝算法還是三步剪枝:train-prune-finetune,而且是layer by layer的剪枝。
  • 獨家解讀快手商業廣告模型 GPU 訓練平臺...
    近期,快手宣布將在2020年春節前實現3億DAU,快手商業化營收步伐也隨之加速。快手從2018年「商業化元年」開始推行個性化的廣告推薦。截止5月底,快手DAU已經突破2億。隨著用戶和使用時長的迅速增長,為了更好地挖掘海量用戶和實時數據的核心價值,推薦模型需要快速迭代,從而對用戶興趣遷移的做出迅捷的反應。
  • 在TensorFlow中使用模型剪枝將機器學習模型變得更小
    學習如何通過剪枝來使你的模型變得更小剪枝是一種模型優化技術,這種技術可以消除權重張量中不必要的值。這將會得到更小的模型,並且模型精度非常接近標準模型。在本文中,我們將通過一個例子來觀察剪枝技術對最終模型大小和預測誤差的影響。
  • 學者故事:從深鑑科技創始人到MIT教授,韓松帶你探尋深度壓縮模型世界的奧妙
    韓松  本科畢業於清華大學,博士畢業於史丹福大學,師從 NVIDIA 首席科學家 Bill Dally 教授。他的研究也廣泛涉足深度學習和計算機體系結構,他提出的 Deep Compression 模型壓縮技術曾獲得 ICLR'16 最佳論文,ESE 稀疏神經網絡推理引擎獲得 FPGA'17 最佳論文,對AI算法在移動端的高效部署影響深遠。