最高加速超4倍!不依賴特定模型的統(tǒng)一模型壓縮框架CPD發(fā)布 精華
文章鏈接:https://arxiv.org/pdf/2408.03046
git鏈接:https://github.com/Cranken/CPD
亮點(diǎn)直擊
- 提出統(tǒng)一模型壓縮框架:包含梳理、剪枝和蒸餾三個(gè)步驟,其中梳理步驟提取架構(gòu)依賴,使剪枝不依賴特定模型。
- 結(jié)合剪枝與知識(shí)蒸餾:研究了這兩者的結(jié)合,進(jìn)一步提升剪枝后模型的性能。
- 性能提升與效率優(yōu)化:通過與基線模型對(duì)比,展示了在性能可接受的前提下顯著提高模型效率,如在ResNet-50上實(shí)現(xiàn)了超過2倍的加速效果。
輕量且高效的模型對(duì)于資源有限的設(shè)備(如自動(dòng)駕駛車輛)至關(guān)重要。結(jié)構(gòu)化剪枝提供了一種有前途的模型壓縮和效率提升方法。然而,現(xiàn)有方法通常將剪枝技術(shù)與特定的模型架構(gòu)或視覺任務(wù)綁定在一起。為了解決這一局限性,本文提出了一種新穎的統(tǒng)一剪枝框架:Comb, Prune, Distill (CPD),它同時(shí)解決了模型無關(guān)和任務(wù)無關(guān)的問題。本文的框架采用梳理步驟來解決分層層次依賴問題,從而實(shí)現(xiàn)架構(gòu)獨(dú)立性。此外,剪枝流程根據(jù)重要性評(píng)分指標(biāo)自適應(yīng)地移除參數(shù),無論視覺任務(wù)是什么。為了支持模型保留其學(xué)習(xí)到的信息,在剪枝步驟中引入了知識(shí)蒸餾。廣泛的實(shí)驗(yàn)表明,本文的框架具有廣泛的適用性,包括卷積神經(jīng)網(wǎng)絡(luò)(CNN)和Transformer模型,以及圖像分類和分割任務(wù)。在圖像分類中,實(shí)現(xiàn)了最高4.3倍的加速,準(zhǔn)確率損失為1.8%;在語義分割中,最高加速達(dá)1.89倍,mIoU損失為5.1%。
方法
A. 框架概述
下圖2展示了本文方法的概述。本文的方法依賴于三個(gè)組件的結(jié)合。如前所述,需要確保輸入到模型中特定操作(如加法和乘法)的維度匹配。為此,引入了一種分層依賴解析算法,旨在檢測這些依賴關(guān)系。該算法生成了一組耦合組,其中包括需要同時(shí)剪枝的參數(shù)以保持一致的通道維度。
基于這些耦合組,可以開始對(duì)給定模型進(jìn)行剪枝。不是隨機(jī)選擇一個(gè)組并剪枝其中的神經(jīng)元,而是使用基于Hessian的重要性評(píng)分對(duì)神經(jīng)元進(jìn)行排序,根據(jù)其重要性在每次迭代中移除最不重要的神經(jīng)元。為了輔助剪枝并保持預(yù)測性能,還研究了將知識(shí)蒸餾與模型的任務(wù)特定損失結(jié)合使用。
B. 梳理流程
此時(shí),這些耦合組僅用于指定在給定剪枝步驟中哪些操作的輸出通道應(yīng)一起剪枝。然而,每個(gè)耦合組中的操作也有一組直接后續(xù)操作。這些后續(xù)操作依賴于其前一個(gè)操作的輸出通道維度,從而導(dǎo)致固有的輸出依賴性。因此,還必須剪枝后續(xù)操作的輸入通道維度,以確保層之間輸入和權(quán)重的一致性。
C. 剪枝流程
一旦依賴解析算法識(shí)別出耦合組,模型的剪枝過程就可以開始。首先,需要決定在給定的剪枝步驟中要移除哪些操作和通道。為此,采用了一種基于Hessian的重要性評(píng)分方法,該方法量化了參數(shù)或通道對(duì)模型預(yù)測性能的重要性。為了在減少模型規(guī)模的同時(shí)保留性能,通過結(jié)合知識(shí)蒸餾來增強(qiáng)剪枝過程,使用未剪枝的模型作為教師模型。
重要性評(píng)分。盡管從模型中隨機(jī)移除參數(shù)可能會(huì)取得一定的成功,但采用系統(tǒng)的參數(shù)排序和選擇策略被證明是一種更有效的方法。這些策略通過給定模型量化參數(shù)的重要性。為此,已經(jīng)提出了多種重要性評(píng)分方法。在這項(xiàng)工作中,選擇基于Hessian重要性評(píng)分的貪婪策略。需要注意的是,本文的剪枝方法獨(dú)立于實(shí)際的重要性評(píng)分。本文提出了一種基于Hessian的重要性函數(shù),因?yàn)樗诩糁χ行Ч@著。研究表明,損失函數(shù)的平坦曲率輪廓對(duì)剪枝引入的小擾動(dòng)更具抵抗力。巧合的是,損失函數(shù)的曲率輪廓對(duì)應(yīng)于Hessian矩陣的特征值集合。對(duì)于給定的損失函數(shù)L,Hessian矩陣定義為
模型剪枝。通過制定一種對(duì)模型中神經(jīng)元重要性進(jìn)行排名的方法,可以逐步掩蔽它們,直到達(dá)到所需的總體剪枝參數(shù)閾值。為此,采用貪婪策略,在固定的訓(xùn)練迭代間隔內(nèi)剪枝參數(shù)。在這個(gè)間隔內(nèi),計(jì)算反向傳播過程中的每個(gè)神經(jīng)元的重要性評(píng)分,并在整個(gè)間隔內(nèi)累積這些評(píng)分。由于不僅僅剪枝單個(gè)神經(jīng)元,而是剪枝神經(jīng)元組,因此在迭代結(jié)束時(shí)匯總個(gè)別評(píng)分,以計(jì)算整個(gè)組的重要性評(píng)分。最后,通過掩蔽移除剪枝間隔內(nèi)重要性最低的神經(jīng)元組,即重要性評(píng)分最低的組。
D. 知識(shí)蒸餾
?繼承了基本形式的 vanilla KD,已經(jīng)引入了各種基于 logit 的 KD 框架,以對(duì)齊教師和學(xué)生模型的輸出,同時(shí)消除結(jié)構(gòu)冗余。選擇其中一些工作來研究它們?cè)谂c本文提出的剪枝流程相結(jié)合時(shí)的適用性和普遍性。這意味著嚴(yán)格關(guān)注模型無關(guān)的 KD 方法,并排除例如 transformer 特定的 KD 方法。相反,在實(shí)驗(yàn)中包括任務(wù)特定的 KD,因?yàn)樗粫?huì)影響本文剪枝流程的普遍性。
通道級(jí)知識(shí)蒸餾(CWD) 用于密集預(yù)測任務(wù)。與基本的基于 KL 的蒸餾方法相比,CWD 的主要區(qū)別在于最小化通道級(jí)輸出概率分布之間的 KL 距離。具體而言,CWD 不僅計(jì)算每個(gè)類別概率之間的 KL 距離,而是以通道級(jí)的方式計(jì)算每個(gè)像素的 KL 距離。
實(shí)驗(yàn)
A. 設(shè)置
實(shí)現(xiàn)細(xì)節(jié)。實(shí)驗(yàn)中使用的模型來自 MMPretrain 和 MMSegmentation 的現(xiàn)成模型。所有訓(xùn)練和評(píng)估均在 NVIDIA GeForce RTX 2080 Ti GPU 上進(jìn)行。為了訓(xùn)練和微調(diào)模型,使用了相應(yīng)模型作者提供的原始配置。
數(shù)據(jù)集。在 ImageNet 數(shù)據(jù)集上進(jìn)行實(shí)驗(yàn),以評(píng)估不同架構(gòu)的性能。為了驗(yàn)證本文在密集預(yù)測任務(wù)(如語義分割)上的剪枝方法,使用了 ADE20K 數(shù)據(jù)集。該數(shù)據(jù)集包含150種不同類別的物體和背景,分為超過 2 萬張訓(xùn)練圖像、2 千張驗(yàn)證圖像和 3 千張測試圖像。此外,本文還使用該數(shù)據(jù)集進(jìn)行剪枝過程中的知識(shí)蒸餾(KD)消融研究。
B. 圖像分類
下表 I 展示了本文剪枝方法與之前最先進(jìn)方法的對(duì)比結(jié)果。為了展示本文方法的廣泛適用性,選擇了幾種架構(gòu)不同的模型進(jìn)行測試,包括使用殘差連接的ResNet、使用深度卷積的MobileNet-v2,以及使用分組卷積的ResNext。結(jié)果表明,本文的方法結(jié)合了簡單的剪枝標(biāo)準(zhǔn)與知識(shí)蒸餾(KD),在保持精度損失在可接受范圍內(nèi)的同時(shí),達(dá)到了或超越了當(dāng)前最先進(jìn)的剪枝方法,實(shí)現(xiàn)了超過2.15倍的加速效果。以ResNext-50為例,甚至將FLOPs(浮點(diǎn)運(yùn)算次數(shù))減少了4.31倍,精度僅相對(duì)下降了1.8%。
C. 語義分割
在ADE20K數(shù)據(jù)集上評(píng)估了SeaFormer和ViT模型的語義分割性能。在下表II中,所有實(shí)驗(yàn)均使用了通道級(jí)知識(shí)蒸餾(CWD)作為本文的蒸餾方法。例如,將ViT-DeiT-S的延遲降低了47%以上。對(duì)于SeaFormer-L,雖然只實(shí)現(xiàn)了26%的延遲改進(jìn),但性能損失更小,僅為1.7%。延遲是在導(dǎo)出的ONNX模型上測量的,以模擬真實(shí)世界的使用場景。每個(gè)結(jié)果都是在大量(n≥1000)評(píng)估中計(jì)算出的平均延遲。
D. 消融研究
稀疏性與性能的權(quán)衡。在下圖 5 中,展示了稀疏性對(duì)模型預(yù)測性能的影響。稀疏性計(jì)算為模型中去除的參數(shù)的相對(duì)百分比。在這個(gè)例子中,使用了 CWD KD 和 ViT-DeiT-S 模型??梢杂^察到性能在稀疏性達(dá)到約 40% 之前有一個(gè)預(yù)期的、相對(duì)穩(wěn)定的下降,然后準(zhǔn)確率出現(xiàn)了相當(dāng)大的下降。其他模型也可以觀察到類似的行為,盡管稀疏性的臨界點(diǎn)可能會(huì)根據(jù)模型的不同而發(fā)生在更低或更高的值。假設(shè)臨界點(diǎn)可能會(huì)隨著原始模型的大小而變化,即較大的模型往往在較高的稀疏性下出現(xiàn)這一臨界點(diǎn),而較小的模型則相反。
教師選擇的影響。由于許多模型提供不同的架構(gòu)變體,測試了使用同一家族中的更大教師模型的優(yōu)勢,而不是使用相同的未剪枝模型作為教師。下表 III 顯示,在實(shí)驗(yàn)中,本文的方法可以使用未剪枝模型,而不是更大的教師模型。
KD 方法的影響。為了測試不同的 KD 方法,選擇使用 SeaFormer-Large 作為 ADE20K 數(shù)據(jù)集上的基線。在下表 IV 的實(shí)驗(yàn)中,發(fā)現(xiàn)使用 CWD 進(jìn)行剪枝時(shí)保留了原始模型最多的性能。在剪枝實(shí)驗(yàn)中,發(fā)現(xiàn) CWD 比 CIRKD 表現(xiàn)更好。假設(shè)這是因?yàn)樵诩糁^程中,使用的是已經(jīng)預(yù)訓(xùn)練的模型作為起點(diǎn),而不是從未訓(xùn)練的學(xué)生模型開始。因此,CIRKD 關(guān)注的更多的全局語義信息已經(jīng)由模型學(xué)習(xí)到,并且在剪枝過程中保持了這些信息,同時(shí)去除了較小的細(xì)節(jié)。因此,理論上認(rèn)為,在剪枝過程中,KD 的最重要部分是確保沒有細(xì)節(jié)丟失。
下圖 6 顯示了在 ADE20K 數(shù)據(jù)集上不同 KD 方法的一些單獨(dú)類別得分。由于類別數(shù)量眾多,本文選擇了未剪枝教師模型中 mIoU 最高的 16 個(gè)類別。每種 KD 方法在模型稀疏性為 20% 時(shí)進(jìn)行了評(píng)估??梢杂^察到,無論 KD 方法如何,剪枝模型的性能通常與其未剪枝的教師模型相似。KD 方法的選擇似乎對(duì)單獨(dú)類別的性能沒有大的影響,因?yàn)榧糁δP椭械念悇e得分相似。與未剪枝模型相比,最大的差異出現(xiàn)在較小和不常見的類別上。在這些類別中,也可以測量到 KD 方法之間的最大差異。
結(jié)論
本文提出了一個(gè)新穎的統(tǒng)一模型壓縮框架,稱為 CPD,包含三個(gè)主要步驟:梳理、剪枝和蒸餾。為了克服以前依賴于網(wǎng)絡(luò)架構(gòu)的模型特定剪枝方法的局限性,本文的框架結(jié)合了一個(gè)依賴關(guān)系解析算法,確保其靈活性,可以應(yīng)用于各種架構(gòu)。此外,將知識(shí)蒸餾(KD)結(jié)合到框架中,以改善剪枝后的模型。本文展示了與以前的最先進(jìn)方法相比,在剪枝過程中使用 KD 可以提高模型的性能保留。對(duì)兩個(gè)數(shù)據(jù)集的廣泛實(shí)驗(yàn)證明了 CPD 框架的有效性。
本文轉(zhuǎn)自 AI生成未來 ,作者:Ruiping Liu等
