模型壓縮:剪枝算法

過(guò)參數(shù)化主要是指在訓(xùn)練階段迂尝,在數(shù)學(xué)上需要進(jìn)行大量的微分求解撰筷,去捕抓數(shù)據(jù)中的微小變化信息,一旦完成迭代式的訓(xùn)練之后疏咐,網(wǎng)絡(luò)模型推理的時(shí)候就不需要這么多參數(shù)。而剪枝算法正是基于過(guò)參數(shù)化的理論基礎(chǔ)而提出的脐供。

剪枝算法核心思想就是減少網(wǎng)絡(luò)模型中參數(shù)量和計(jì)算量浑塞,同時(shí)盡量保證模型的性能不受影響。

那在AI框架中政己,實(shí)際上剪枝主要作用在右下角的端側(cè)模型推理應(yīng)用場(chǎng)景中酌壕,為的就是讓端側(cè)模型更小,無(wú)論是平板、手機(jī)卵牍、手表果港、耳機(jī)等小型IOT設(shè)備都可以輕松使用AI模型蚪燕。而實(shí)際在訓(xùn)練過(guò)程更多體現(xiàn)在剪枝算法和框架提供的剪枝API上面帕胆。

image

剪枝算法分類

實(shí)際上大部分剛接觸剪枝算法的時(shí)候,都會(huì)從從宏觀層面去劃分剪枝技術(shù)丰榴,主要是分為Drop Out和Drop Connect兩種經(jīng)典的剪枝算法溅蛉,如下圖所示公浪。

1)Drop Out:隨機(jī)的將一些神經(jīng)元的輸出置零,稱之為神經(jīng)元剪枝船侧。

2)Drop Connect:隨機(jī)將部分神經(jīng)元間的連接Connect置零欠气,使得權(quán)重連接矩陣變得稀疏。

image

結(jié)構(gòu)化剪枝 VS 非結(jié)構(gòu)化剪枝

下面會(huì)把剪枝的更多種方式呈現(xiàn)出來(lái)镜撩,可能會(huì)稍微復(fù)雜哈预柒。從剪枝的粒度來(lái)劃分,可以分為結(jié)構(gòu)化剪枝和非結(jié)構(gòu)化剪枝袁梗,2個(gè)剪枝結(jié)構(gòu)方法宜鸯。下面來(lái)看看具體的剪枝方法有4種:

  1. 細(xì)粒度剪枝(fine-grained):即對(duì)連接或者神經(jīng)元進(jìn)行剪枝,是粒度最小的剪枝遮怜,上面Drop Out和Drop Connect都是屬于細(xì)粒度剪枝淋袖。

  2. 向量剪枝(vector-level):它相對(duì)于細(xì)粒度剪枝粒度稍大,屬于對(duì)卷積核內(nèi)部(intra-kernel) 的剪枝锯梁。

  3. 核剪枝(kernel-level):即去除某個(gè)卷積核即碗,丟棄對(duì)輸入通道中對(duì)應(yīng)卷積核的計(jì)算。

  4. 濾波器剪枝(Filter-level):對(duì)整個(gè)卷積核組進(jìn)行剪枝陌凳,推理過(guò)程中輸出特征通道數(shù)會(huì)改變剥懒。

image

細(xì)粒度剪枝、向量剪枝合敦、核剪枝在參數(shù)量與模型性能之間取得了一定的平衡初橘,但是網(wǎng)絡(luò)模型單層的神經(jīng)元之間的組合結(jié)構(gòu)發(fā)生了變化,需要專門(mén)的算法或者硬件結(jié)構(gòu)來(lái)支持稀疏的運(yùn)算充岛,這種叫做結(jié)構(gòu)化剪枝(Unstructured Pruning)保檐。

其中,非結(jié)構(gòu)化剪枝能夠?qū)崿F(xiàn)更高的壓縮率裸准,同時(shí)保持較高的模型性能展东,然而會(huì)帶來(lái)網(wǎng)絡(luò)模型稀疏化,其稀疏結(jié)構(gòu)對(duì)于硬件加速計(jì)算并不友好炒俱,除非底層硬件和計(jì)算加速庫(kù)對(duì)稀疏計(jì)算有比較好的支持,否則剪枝后很難獲得實(shí)質(zhì)的性能提升。

濾波器剪枝(Filter-level)主要改變網(wǎng)絡(luò)中的濾波器組和特征通道數(shù)目权悟,所獲得的模型不需要專門(mén)的算法和硬件就能夠運(yùn)行砸王,被稱為結(jié)構(gòu)化剪枝(Structured Pruning)。結(jié)構(gòu)化剪枝又可進(jìn)一步細(xì)分:可以是channel-wise峦阁,也可以是filter-wise谦铃,還可以是在shape-wise。

結(jié)構(gòu)化剪枝與非結(jié)構(gòu)化剪枝恰恰相反榔昔,可以方便改變網(wǎng)絡(luò)模型的結(jié)構(gòu)特征驹闰,從而達(dá)到壓縮模型的效果,例如知識(shí)蒸餾中的student網(wǎng)絡(luò)模型撒会、NAS搜索或者如VGG19和VGG16這種裁剪模型嘹朗,也可以看做變相的結(jié)構(gòu)化剪枝行為。

剪枝算法流程

雖然剪枝算法的分類看上去很多诵肛,但是核心思想還是對(duì)神經(jīng)網(wǎng)絡(luò)模型進(jìn)行剪枝屹培,目前剪枝算法的總體流程大同小異,可以歸結(jié)為三種:標(biāo)準(zhǔn)剪枝怔檩、基于子模型采樣的剪枝褪秀、以及基于搜索的剪枝,如下圖所示薛训。

image

標(biāo)準(zhǔn)剪枝算法流程

標(biāo)準(zhǔn)剪枝是目前最流行的剪枝流程媒吗,在Tensorflow、Pytroch都有標(biāo)準(zhǔn)的接口乙埃。主要包含三個(gè)部分:訓(xùn)練蝴猪、剪枝、以及微調(diào)膊爪。

1)訓(xùn)練:首先是對(duì)網(wǎng)絡(luò)模型進(jìn)行訓(xùn)練自阱。在剪枝流程中,訓(xùn)練部分主要指預(yù)訓(xùn)練米酬,訓(xùn)練的目的是為剪枝算法獲得在特定基礎(chǔ)SOTA任務(wù)上訓(xùn)練好的原始模型沛豌。

  1. 剪枝:在這里面可以進(jìn)行如細(xì)粒度剪枝、向量剪枝赃额、核剪枝加派、濾波器剪枝等各種不同的剪枝算法。其中很重要的就一點(diǎn)跳芳,就是在剪枝之后芍锦,對(duì)網(wǎng)絡(luò)模型結(jié)構(gòu)進(jìn)行評(píng)估。確定一個(gè)需要剪枝的層飞盆,設(shè)定一個(gè)裁剪閾值或者比例娄琉。實(shí)現(xiàn)上次乓,通過(guò)修改代碼加入一個(gè)與參數(shù)矩陣尺寸一致的Mask矩陣。Mask矩陣中只有0和1孽水,實(shí)際上是用于微調(diào)網(wǎng)絡(luò)票腰。

3)微調(diào):微調(diào)是恢復(fù)被剪枝操作影響的模型表達(dá)能力的必要步驟。結(jié)構(gòu)化模型剪枝會(huì)對(duì)原始模型結(jié)構(gòu)進(jìn)行調(diào)整女气,因此剪枝后的模型參數(shù)雖然保留了原始的模型參數(shù)杏慰,但是由于模型結(jié)構(gòu)的改變,剪枝后模型的表達(dá)能力會(huì)受到一定程度的影響炼鞠。實(shí)現(xiàn)上缘滥,微調(diào)網(wǎng)絡(luò)模型,參數(shù)在計(jì)算的時(shí)候先乘以該Mask谒主,Mask為1的參數(shù)值將繼續(xù)訓(xùn)練通過(guò)BP調(diào)整梯度朝扼,而Mask為0的部分因?yàn)檩敵鍪冀K為0則不對(duì)后續(xù)部分產(chǎn)生影響。

4)再剪枝:再剪枝過(guò)程將微調(diào)之后的網(wǎng)絡(luò)模型再送到剪枝模塊中瘩将,再次進(jìn)行模型結(jié)構(gòu)評(píng)估和執(zhí)行剪枝算法吟税。目的是使得每次剪枝都在性能更優(yōu)的模型上面進(jìn)行,不斷迭代式地進(jìn)行優(yōu)化剪枝模型姿现,直到模型能夠滿足剪枝目標(biāo)需求肠仪。

最后輸出模型參數(shù)儲(chǔ)存的時(shí)候,因?yàn)橛写罅康南∈璞傅洌钥梢灾匦露x儲(chǔ)存的數(shù)據(jù)結(jié)構(gòu)异旧, 僅儲(chǔ)存非零值以及其矩陣位置。重新讀取模型參數(shù)的時(shí)候提佣,就可以還原矩陣吮蛹。

image

基于子模型采樣流程

除標(biāo)準(zhǔn)剪枝之外,基于子模型采樣的剪枝《EagleEye: Fast sub-net evaluation for efficient neural network pruning》最近也表現(xiàn)出比較好的剪枝效果拌屏。得到訓(xùn)練好的模型之后潮针,進(jìn)行子模型采樣過(guò)程。一次子模型采樣過(guò)程為:

1)對(duì)訓(xùn)練好的原模型中可修剪的網(wǎng)絡(luò)結(jié)構(gòu)倚喂,按照剪枝目標(biāo)進(jìn)行采樣每篷,采樣過(guò)程可以是隨機(jī)的,也可以按照網(wǎng)絡(luò)結(jié)構(gòu)的重要性或者通過(guò)KL散度計(jì)算進(jìn)行概率采樣端圈。

2)對(duì)采樣后的網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行剪枝焦读,得到采樣子模型。子模型采樣過(guò)程通常進(jìn)行 次舱权,得到 個(gè)子模型( ≥1), 之后對(duì)每一個(gè)子模型進(jìn)行性能評(píng)估矗晃。子模型評(píng)估結(jié)束之后,選取最優(yōu)的子模型進(jìn)行微調(diào)以得倒最后的剪枝模型宴倍。

基于搜索的剪枝流程

基于搜索的剪枝主要依靠強(qiáng)化學(xué)習(xí)等一系列無(wú)監(jiān)督學(xué)習(xí)或者半監(jiān)督學(xué)習(xí)算法张症,也可以是神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)搜索相關(guān)理論仓技。

給定剪枝目標(biāo)之后,基于搜索的剪枝在網(wǎng)絡(luò)結(jié)構(gòu)中搜索較優(yōu)的子結(jié)構(gòu)吠冤,這個(gè)搜索過(guò)程往往伴隨著網(wǎng)絡(luò)參數(shù)的學(xué)習(xí)過(guò)程浑彰,因此一些基于搜索的剪枝算法在剪枝結(jié)束后不需要再進(jìn)行微調(diào)恭理。

剪枝的發(fā)展

這幾年神經(jīng)網(wǎng)絡(luò)剪枝pruning作為模型壓縮技術(shù)的四小龍之一拯辙,正在受到越來(lái)越多的關(guān)注。當(dāng)然颜价,各種更好的pruning參數(shù)選取方法一定還會(huì)層出不窮涯保。另外,從趨勢(shì)來(lái)看周伦,以下幾個(gè)方向值得關(guān)注:

打破固定假設(shè):挑戰(zhàn)已有的固有的假設(shè)夕春,例如ICLR2019會(huì)議的best paper彩票假說(shuō)《The Lottery Ticket Hypothesis: Finding Sparse, Trainable Neural Networks 》的出現(xiàn)。還有一開(kāi)始提到的對(duì)于over-parameterization专挪,與重用已有參數(shù)是否有有益的反思非常有意思及志。這樣的工作會(huì)給剪枝算法非常大的啟發(fā),從而根本改變解決問(wèn)題的思路寨腔。

自動(dòng)化剪枝:隨著AutoML的大潮速侈,越來(lái)越多的算法開(kāi)始走向自動(dòng)化。模型壓縮能拉下嗎迫卢?當(dāng)然不能倚搬。經(jīng)過(guò)前面的介紹我們知道,像ADC乾蛤,RNP每界,N2N Learning這些工作都是試圖將剪枝中部分工作自動(dòng)化。如量化中的《HAQ: Hardware-Aware Automated Quantization》考慮網(wǎng)絡(luò)中不同層信息的冗余程度不一樣家卖,所以自動(dòng)化使用混合量化比特進(jìn)行壓縮眨层。

與NAS融合:如前面模型剪枝流程中提到,剪枝算法與神經(jīng)網(wǎng)絡(luò)搜索NAS的界限已經(jīng)模糊了上荡。NAS有針對(duì)結(jié)構(gòu)化剪枝進(jìn)行搜索方法趴樱,如One-Shot Architecture Search是先有一個(gè)大網(wǎng)絡(luò),然后做減法榛臼。NAS與模型壓縮兩個(gè)一開(kāi)始看似關(guān)系不是那么大的分支伊佃,在近幾年的發(fā)展過(guò)程中因?yàn)橄掠稳蝿?wù)和部署場(chǎng)景的需求,最后似乎會(huì)走到一塊去沛善。這兩個(gè)分支今天有了更多的交集航揉,也必將擦出更多的火花。

與GAN融合:這幾年機(jī)器學(xué)習(xí)最火熱的分支之一GAN金刁,正在不斷滲透到已有領(lǐng)域帅涂,在pruning中也開(kāi)始有它的身影议薪。如2019年《Towards Optimal Structured CNN Pruning via Generative Adversarial Learning》讓generator生成裁剪后網(wǎng)絡(luò),discrimintor來(lái)判別是否屬于原網(wǎng)絡(luò)還是裁剪后網(wǎng)絡(luò)媳友,從而進(jìn)行更有效的網(wǎng)絡(luò)結(jié)構(gòu)化裁剪斯议。

硬件稀疏性支持:剪枝會(huì)給神經(jīng)網(wǎng)絡(luò)模型帶來(lái)稀疏性特征,參數(shù)稀疏性在計(jì)算中會(huì)有大量的索引醇锚,所以并不能加速『哂現(xiàn)在雖然有像cuSPARSE這樣的計(jì)算庫(kù),但底層硬件AI芯片本身設(shè)計(jì)并不是專門(mén)為稀疏數(shù)據(jù)處理打造的焊唬。如果能將稀疏計(jì)算和處理能力做進(jìn)芯片那必將極大提高計(jì)算效率恋昼。僅2021年中國(guó)就推出了10+款基于ASIC的AI加速芯片,相信針對(duì)稀疏性場(chǎng)景的支持在未來(lái)會(huì)有所突破赶促。

總結(jié)

模型壓縮算法中針對(duì)已有的模型液肌,有:張量分解,模型剪枝鸥滨,模型量化嗦哆。針對(duì)新構(gòu)建的網(wǎng)絡(luò),有:知識(shí)蒸餾婿滓,緊湊網(wǎng)絡(luò)設(shè)計(jì)等方法老速。

剪枝只是模型壓縮方法中的一種,它與其它模型壓縮方法并不沖突空幻,因此會(huì)與量化烁峭、蒸餾、NAS秕铛、強(qiáng)化學(xué)習(xí)等方法慢慢融合约郁,這些都是很值得研究的方向。另外在上面的發(fā)展來(lái)看但两,打破固有的假設(shè)定義鬓梅,與NAS、GAN谨湘、AutoML绽快、RL等技術(shù)進(jìn)行相互的融合,可能到最后會(huì)模糊purning方式紧阔,出現(xiàn)新的范式或者壓縮模式也是很吸引的坊罢。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市擅耽,隨后出現(xiàn)的幾起案子活孩,更是在濱河造成了極大的恐慌,老刑警劉巖乖仇,帶你破解...
    沈念sama閱讀 211,194評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件憾儒,死亡現(xiàn)場(chǎng)離奇詭異询兴,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)起趾,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門(mén)诗舰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人训裆,你說(shuō)我怎么就攤上這事眶根。” “怎么了缭保?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,780評(píng)論 0 346
  • 文/不壞的土叔 我叫張陵汛闸,是天一觀的道長(zhǎng)蝙茶。 經(jīng)常有香客問(wèn)我艺骂,道長(zhǎng),這世上最難降的妖魔是什么隆夯? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,388評(píng)論 1 283
  • 正文 為了忘掉前任钳恕,我火速辦了婚禮,結(jié)果婚禮上蹄衷,老公的妹妹穿的比我還像新娘忧额。我一直安慰自己,他們只是感情好愧口,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,430評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布睦番。 她就那樣靜靜地躺著,像睡著了一般耍属。 火紅的嫁衣襯著肌膚如雪托嚣。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,764評(píng)論 1 290
  • 那天厚骗,我揣著相機(jī)與錄音示启,去河邊找鬼。 笑死领舰,一個(gè)胖子當(dāng)著我的面吹牛夫嗓,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播冲秽,決...
    沈念sama閱讀 38,907評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼舍咖,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了锉桑?” 一聲冷哼從身側(cè)響起排霉,我...
    開(kāi)封第一講書(shū)人閱讀 37,679評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎刨仑,沒(méi)想到半個(gè)月后郑诺,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體夹姥,經(jīng)...
    沈念sama閱讀 44,122評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,459評(píng)論 2 325
  • 正文 我和宋清朗相戀三年辙诞,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了辙售。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,605評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡飞涂,死狀恐怖旦部,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情较店,我是刑警寧澤士八,帶...
    沈念sama閱讀 34,270評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站梁呈,受9級(jí)特大地震影響婚度,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜官卡,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,867評(píng)論 3 312
  • 文/蒙蒙 一蝗茁、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧寻咒,春花似錦哮翘、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,734評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至叫挟,卻和暖如春艰匙,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背霞揉。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,961評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工旬薯, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人适秩。 一個(gè)月前我還...
    沈念sama閱讀 46,297評(píng)論 2 360
  • 正文 我出身青樓绊序,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親秽荞。 傳聞我的和親對(duì)象是個(gè)殘疾皇子骤公,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,472評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容