熟女俱乐部五十路二区av,又爽又黄禁片视频1000免费,国产卡一卡二卡三无线乱码新区,中文无码一区二区不卡αv,中文在线中文a

"); //-->

博客專欄

EEPW首頁 > 博客 > 輕量級(jí)網(wǎng)絡(luò)如MobileNet還適合繼續(xù)剪枝操作,進(jìn)一步壓縮模型嗎?

輕量級(jí)網(wǎng)絡(luò)如MobileNet還適合繼續(xù)剪枝操作,進(jìn)一步壓縮模型嗎?

發(fā)布人:計(jì)算機(jī)視覺工坊 時(shí)間:2022-06-16 來源:工程師 發(fā)布文章
作者丨LiteAI@知乎(已授權(quán))

來源丨h(huán)ttps://www.zhihu.com/question/343562568/answer/2514880247編輯丨極市平臺(tái)

導(dǎo)讀

 

分享一篇ICML2022文章,關(guān)于實(shí)現(xiàn)硬件友好方式壓縮網(wǎng)絡(luò)的新范式,其能在基于MobileNetV2的網(wǎng)絡(luò)上進(jìn)行剪枝,且在移動(dòng)端/邊緣端Google Pixel 3/Raspberry Pi 4的性能超過通道和層剪枝SOTA方法。

分享一篇ICML2022文章,關(guān)于實(shí)現(xiàn)硬件友好方式壓縮網(wǎng)絡(luò)的新范式,其能在基于MobileNetV2的網(wǎng)絡(luò)上進(jìn)行剪枝,且在移動(dòng)端/邊緣端Google Pixel 3/Raspberry Pi 4的性能超過通道和層剪枝SOTA方法。由萊斯大學(xué)&Meta提出的《DepthShrinker:一種面向增強(qiáng)實(shí)際硬件效率的緊湊型神經(jīng)網(wǎng)絡(luò)的新的壓縮范式》。

圖片圖片

文章鏈接: https://arxiv.org/abs/2206.00843

項(xiàng)目鏈接: https://github.com/RICEEIC/DepthShrinker

高效的深層神經(jīng)網(wǎng)絡(luò)(DNN)模型配備緊湊型算子(例如深度卷積),降低DNN的理論復(fù)雜度(例如總的權(quán)重/計(jì)算量),同時(shí)保持較好的模型準(zhǔn)確度。然而,現(xiàn)有高效的DNN在實(shí)現(xiàn)其承諾提高實(shí)際硬件效率方面是有限的,由于其常用的緊致算子的硬件利用率低。在這項(xiàng)工作中,我們提出一種新的壓縮范式,用于開發(fā)真正的硬件高效DNN,從而在保持模型準(zhǔn)確性的同時(shí)提高硬件效率。有趣的是,我們觀察到一些DNN層的激活函數(shù)有助于DNN的訓(xùn)練優(yōu)化和提升準(zhǔn)確度,可以在不影響模型準(zhǔn)確度的情況下,在訓(xùn)練后以適當(dāng)?shù)姆绞饺コ?。受此啟發(fā),我們提出了DepthShrinker,開發(fā)硬件友好型緊致網(wǎng)絡(luò),通過將具有不規(guī)則計(jì)算模式的現(xiàn)有高效DNN的基本構(gòu)建塊收縮為密集的,從而實(shí)現(xiàn)網(wǎng)絡(luò)的緊致化,硬件利用率大大提高,從而實(shí)現(xiàn)真正的硬件效率。令人興奮的是, 我們的DepthShrinker框架實(shí)現(xiàn)了硬件友好緊湊型網(wǎng)絡(luò),超過現(xiàn)有SOTA高效DNN和壓縮方法,例如,準(zhǔn)確度提高3.06%,在Tesla V100實(shí)現(xiàn)1.53× 現(xiàn)有逐通道剪枝方法MetaPruning的吞吐量。

以下為文章詳細(xì)解讀:

1 文章提出的的深度收縮框架1.1 概述

關(guān)鍵理念。 DepthShrinker旨在開發(fā)真正的硬件 高效的DNN,通過刪除冗余激活功能,然后合并連續(xù)線性操作。關(guān)鍵理念是通過刪除帶有兩個(gè)激活函數(shù)的反向殘差塊(Sandler等人2018),即大部分高效DNN的基本構(gòu)建塊,整個(gè)塊合并成一個(gè)密集的卷積層,卷積核大小與原始?jí)K的深度卷積相同,輸入/輸出通道數(shù)與原始?jí)K相同。

框架概述。 為了實(shí)現(xiàn)上述目標(biāo),存在兩個(gè)重要的挑戰(zhàn):哪些激活函數(shù)需要去除,如何在剩余激活函數(shù)較少的情況下恢復(fù)準(zhǔn)確度。為了解決這些問題, 建立在現(xiàn)有SOTA高效DNN之上的深度收縮器集成了三個(gè)階段的工作,如圖2所示:(1)識(shí)別冗余激活函數(shù),(2)去除已識(shí)別的激活函數(shù)并微調(diào)階段(1)生成的DNN和(3)合并在前一階段刪除激活函數(shù)后的網(wǎng)絡(luò),以得到最終的網(wǎng)絡(luò)。請(qǐng)注意,我們?cè)诠_可用的預(yù)訓(xùn)練模型之上應(yīng)用DepthShrinker,以下為常見模型壓縮方法(He等人2018;Wen等人2016年;Han等人2015;Jacob等人2018)。

圖片

圖2 DepthShrinker三個(gè)階段設(shè)計(jì)的整體框架。

1.2 階段1:識(shí)別冗余激活函數(shù)

為了識(shí)別不重要的激活函數(shù),預(yù)定義的標(biāo)準(zhǔn)如分層修剪(Li等人2016;Wen 等人2016)對(duì)于不同層耦合的激活函數(shù)是不合適的, 比如去除前面層的激活函數(shù)可能會(huì)更改后面層的特征分布。因此,我們提出了一種可微搜索方法來了解所有激活函數(shù)的重要性,通過考慮其聯(lián)合影響而實(shí)現(xiàn),靈感來自最近的剪枝工作(Kang&Han2020;Ramanujan等人2020; Fu等人2021)。

搜索方法概述。 我們的搜索方法指定可學(xué)習(xí)掩碼(N是激活函數(shù)的總數(shù))到所有激活函數(shù),其用作激活函數(shù)代理的重要性得分。在搜索過程中更新m時(shí),應(yīng)考慮不同激活函數(shù)的耦合情況,同時(shí)確保m的稀疏性足夠高,例如應(yīng)高于 (1 ? k/N),其中k是剩余激活函數(shù)的數(shù)量,以滿足合并后階段的目標(biāo)效率(見第1.4節(jié))。在DepthShrinker中,搜索方法聯(lián)合學(xué)習(xí)掩碼m和模型權(quán)重θ。

搜索方法表示。 推導(dǎo)最佳θ和m本質(zhì)上是一個(gè)雙層優(yōu)化問題(Liu等人2018)。在DepthShrinker中,我們將其近似為一級(jí)優(yōu)化方式(Xie等人2018;Hu等人2020;Bi等人2020年)共同更新θ和m:

其中|是損失函數(shù),  和  是第 i個(gè)輸入和標(biāo)簽對(duì),  (這里是y尖號(hào)) 是在參數(shù)  和激 活掩碼  下的預(yù)測(cè)標(biāo)簽。為了達(dá)到目標(biāo)稀疏性 , 我們通過在正向過程中僅激活  的前  個(gè)元素來對(duì) m施加  約束。具體而言, 我們采用二進(jìn)制掩碼  (這里是m尖號(hào))使用元素1和 0 來 近似前  個(gè)元素, 否則直接進(jìn)行前向, 而m中的所有元素都是通過直通更新估計(jì),Bengio等人2013 年)進(jìn)行更新。特別地, 前向函數(shù)可以表示為:

其中  (這里是m尖號(hào)) 是第一個(gè)1層的網(wǎng)絡(luò)函數(shù),?是函數(shù)合成的運(yùn)算符,  是激活函數(shù),  是一個(gè)變換(例如卷積或其他線性操作), 其由  參數(shù)化。等式 (2) 中的二進(jìn)制掩碼使得第I層 中的激活函數(shù)完全啟用或禁用。在反向傳播過程中, 我們直接傳遞二進(jìn)制掩碼的梯度  (這里是m 尖號(hào))至 , 即  (這里是m尖號(hào))。因?yàn)橹挥袑?duì)應(yīng)于掩碼  的前  個(gè)值的激活函數(shù)參與前

搜索方法實(shí)現(xiàn)。 我們的搜索方法進(jìn)行兩種設(shè)置:(1)塊收縮和(2)m的延遲感知衰減。對(duì)于前者,由于我們的目標(biāo)是將整個(gè)反向殘差塊合并為一個(gè)密集卷積,我們共享對(duì)應(yīng)于一個(gè)塊中的兩個(gè)激活函數(shù)的掩碼值m,即刪除或保留兩個(gè)激活功能。對(duì)于后者,我們對(duì)m的每個(gè)元素額外增加衰減,其通過相應(yīng)成本塊的權(quán)重來進(jìn)行加權(quán)。在這項(xiàng)工作中,我們直接采用搜索過程中在RTX 2080Ti GPU上預(yù)先測(cè)量的延遲,使其對(duì)于平臺(tái)感知,以增強(qiáng)更長搜索時(shí)間的效率。

1.3 階段2:如何微調(diào)

在上述搜索過程之后,具有最不重要m的激活函數(shù)被去除,并進(jìn)行微調(diào)以恢復(fù)精度。

自由額外添加激活函數(shù)。 密集卷積后沒有了激活函數(shù),是因?yàn)榉聪驓堄鄩K(Sandler等人2018)僅包含兩個(gè)激活函數(shù)。為了提高所達(dá)到的準(zhǔn)確度,我們?cè)诿看魏喜⒑?,在每個(gè)密集卷積后額外添加一個(gè)激活函數(shù)(本工作中使用ReLU6),其硬件成本可以忽略不計(jì)。

自蒸餾。 在DepthShrinker中,我們?cè)谖⒄{(diào)期間啟用自蒸餾機(jī)制,即在原始網(wǎng)絡(luò)的激活函數(shù)指導(dǎo)下進(jìn)行知識(shí)蒸餾(Hinton等人2015),以進(jìn)一步提高生成網(wǎng)絡(luò)的準(zhǔn)確度。需要注意的是,我們僅將原始網(wǎng)絡(luò)作為教師網(wǎng)絡(luò),沒有引入額外的模型。

1.4 階段3:如何合并

微調(diào)移除不重要的激活函數(shù)后的網(wǎng)絡(luò),最后一步是合并相鄰的線性操作(例如卷積/全連接, 平均池化或BN層)。

合并兩個(gè)相鄰層。 在不喪失一般性的情況下, 這里我們考慮兩個(gè)相鄰的卷積層, 輸入特征 , 中間特征 , 輸出特征 , 以及第一層和 第二層的卷積核權(quán)重為  和  被移除, 并假定:

上述兩層可合并為一層。假設(shè)層  和  的步長均為 1 , 我們得到:

其中  和

其中  是大小為  的合并核。請(qǐng)注意, 如果層  和  的步長大于1, 則卷積核仍然可 以合并為一個(gè)步長為  、核大小為  的卷積 核。

合并反轉(zhuǎn)殘差塊。 從上面的分析可以看出,當(dāng)連續(xù)的卷積層合并到一個(gè)卷積層時(shí),產(chǎn)生的卷積層的輸入輸出通道僅由第一卷積層中的輸入通道數(shù)量和最后一個(gè)卷積層中的輸出通道數(shù)量決定,而不需要考慮中間層結(jié)構(gòu)。結(jié)果是,反向殘差塊的設(shè)計(jì)規(guī)則(Sandler等人2018),即三個(gè)卷積層的通道數(shù)先擴(kuò)展后減少,自然有利于我們的深度收縮器。我們相信該方法由于未來的硬件高效DNN設(shè)計(jì)。

1.5 DepthShrinker:展開然后收縮

上述DepthShrinker的常規(guī)設(shè)計(jì)為,即利用不重要的激活功能可在訓(xùn)練后適當(dāng)去除,不會(huì)損害推理準(zhǔn)確度。令人興奮的是,這種方式也可以用來改進(jìn)DNN訓(xùn)練。具體而言,我們建議通過對(duì)給定DNN先擴(kuò)展后收縮策略進(jìn)行訓(xùn)練,則將其命名為DepthShrinker。在深度收縮訓(xùn)練中,我們首先(1)將一個(gè)或一些卷積層展開為反轉(zhuǎn)殘差塊,由于在擴(kuò)展模型中增加了過參數(shù)化,則有利于訓(xùn)練優(yōu)化,(2)訓(xùn)練擴(kuò)展的DNN,然后(3)應(yīng)用DepthShrinker合并上述新引入的塊,用于恢復(fù)原始網(wǎng)絡(luò)結(jié)構(gòu)。該訓(xùn)練計(jì)劃可以被視為用于增強(qiáng)原始DNN的復(fù)雜度,有利于其訓(xùn)練優(yōu)化,從而得到可實(shí)現(xiàn)的準(zhǔn)確性,同時(shí)推理效率保持不變。

2 實(shí)驗(yàn)2.1 網(wǎng)絡(luò)和數(shù)據(jù)集

我們將DepthShrinker應(yīng)用于MobileNetV2(Howard等人2017)和EfficientNet-Lite(Google2020),即EfficientNet的硬件高效變體(Tan&Le 2019)系列,在ImageNet數(shù)據(jù)集之上(Russakovsky等人2015)進(jìn)行實(shí)驗(yàn)。

2.2 和SOTA剪枝方法的基線對(duì)比

和通道剪枝方法基線對(duì)比結(jié)果如表2和表3所示。

圖片

表2 DepthShrinker與SOTA通道剪枝方法MetaPruning對(duì)比結(jié)果。

圖片

表3 DepthShrinker與SOTA通道剪枝方法AMC對(duì)比結(jié)果。

和層剪枝基線對(duì)比結(jié)果如圖3所示。

圖片

圖3 DepthShrinker與SOTA層剪枝方法基線對(duì)比結(jié)果。

合并前后塊的延遲可視化結(jié)果如圖4所示,內(nèi)存可視化如圖5所示。

圖片

圖4 MobileNetV2-1.4合并前(實(shí)線)/后(虛線)的延遲可視化。

圖片

圖5 內(nèi)存可視化。

2.3 和SOTA高效DNN方法基線對(duì)比

和高效DNN方法對(duì)比如圖6所示。

圖片

圖6 與高效DNN方法對(duì)比結(jié)果。

2.4 消融實(shí)驗(yàn)

預(yù)訓(xùn)練和額外添加激活函數(shù)貢獻(xiàn)如表4所示。

圖片

表4 預(yù)訓(xùn)練和額外添加激活函數(shù)貢獻(xiàn)結(jié)果。

隨機(jī)搜索比較如表2和表3所示。

CPU設(shè)備(實(shí)驗(yàn)使用Google Pixel3和Raspberry Pi 4) 上的實(shí)驗(yàn)結(jié)果如表5所示。

圖片

表5 CPU設(shè)備Google Pixel 3和Raspberry Pi 4的測(cè)試結(jié)果。

DepthShrinker評(píng)估結(jié)果如表6所示。

圖片

表6 DepthShrinker評(píng)估結(jié)果。

本文僅做學(xué)術(shù)分享,如有侵權(quán),請(qǐng)聯(lián)系刪文。


*博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請(qǐng)聯(lián)系工作人員刪除。



關(guān)鍵詞: AI

相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉