自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

提高深度學(xué)習(xí)模型效率的三種模型壓縮方法 原創(chuàng)

發(fā)布于 2024-11-18 08:05
瀏覽
0收藏

模型壓縮是深度學(xué)習(xí)模型實(shí)時(shí)部署的關(guān)鍵組成部分,本文探討了提高深度學(xué)習(xí)模型效率的不同方法。

近年來(lái),深度學(xué)習(xí)模型在自然語(yǔ)言處理(NLP)和計(jì)算機(jī)視覺(jué)基準(zhǔn)測(cè)試中的性能穩(wěn)步提高。雖然這些收益的一部分來(lái)自架構(gòu)和學(xué)習(xí)算法的改進(jìn),但數(shù)據(jù)集大小和模型參數(shù)的增長(zhǎng)是重要的驅(qū)動(dòng)因素。

下圖顯示了top-1 ImageNet分類精度作為GFLOPS的函數(shù),GFLOPS可以用作模型復(fù)雜性的指標(biāo)。

提高深度學(xué)習(xí)模型效率的三種模型壓縮方法-AI.x社區(qū)

擴(kuò)大數(shù)據(jù)規(guī)模和模型復(fù)雜性增加似乎是主要趨勢(shì),擁有數(shù)十億個(gè)甚至萬(wàn)億個(gè)參數(shù)的模型并不罕見(jiàn)。雖然這些大型模型具有令人印象深刻的性能,但這些模型的龐大規(guī)模使得它不可能用于邊緣設(shè)備或延遲關(guān)鍵的應(yīng)用程序。

這正是模型壓縮發(fā)揮作用的地方。模型壓縮的目標(biāo)是減少模型的參數(shù)數(shù)量和/或延遲,同時(shí)力求將對(duì)模型性能的負(fù)面影響降至最低。雖然有一些方法,但它們可以分為三大類:

  • 剪枝(Pruning)
  • 量化(Quantization)
  • 知識(shí)蒸餾(KD)

雖然還有其他方法(例如低秩張量分解),但本文不涵蓋這些方法。以下詳細(xì)討論這三種主要技術(shù)。

剪枝

通過(guò)剪枝,可以從神經(jīng)網(wǎng)絡(luò)中移除不太重要的權(quán)重(神經(jīng)元連接)或?qū)?,從而使模型變得更小。一個(gè)簡(jiǎn)單的策略是,如果某個(gè)神經(jīng)元連接的權(quán)重低于某個(gè)閾值,則將其移除。這被稱為權(quán)重剪枝,它確保移除的是冗余的連接或者是對(duì)最終結(jié)果影響不大的連接。

同樣,可以根據(jù)神經(jīng)元重要性的一些指標(biāo)來(lái)移除神經(jīng)元本身,例如輸出權(quán)重的L2范數(shù)。這被稱為神經(jīng)元剪枝,通常比權(quán)重剪枝更有效。

提高深度學(xué)習(xí)模型效率的三種模型壓縮方法-AI.x社區(qū)

與節(jié)點(diǎn)剪枝相比,權(quán)值剪枝會(huì)導(dǎo)致稀疏網(wǎng)絡(luò),這在GPU等硬件上很難優(yōu)化。雖然它會(huì)減少內(nèi)存占用和FLOPS,但可能不會(huì)降低延遲。剪枝的思想也可以擴(kuò)展到卷積神經(jīng)網(wǎng)絡(luò)(CNN),其中過(guò)濾器/內(nèi)核的相對(duì)重要性可以根據(jù)其L1/L2范數(shù)來(lái)確定,并且只能保留重要的過(guò)濾器。在實(shí)踐中,剪枝是一個(gè)迭代過(guò)程,將在剪枝和微調(diào)模型之間交替進(jìn)行。

使用這種方法,可以在性能下降最小的情況下,將網(wǎng)絡(luò)參數(shù)減少50%以上,如下圖所示:

提高深度學(xué)習(xí)模型效率的三種模型壓縮方法-AI.x社區(qū)

量化

基于量化的模型壓縮背后的主要思想是降低模型權(quán)重的精度,以減少內(nèi)存和延遲。通常情況下,深度學(xué)習(xí)模型在訓(xùn)練期間或訓(xùn)練后將其權(quán)重存儲(chǔ)為32位浮點(diǎn)數(shù)(FP32)。通過(guò)量化,這些權(quán)重通常被轉(zhuǎn)換為16位(FP16)或8位(INT8)精度,以便在運(yùn)行時(shí)部署。

量化可以分為兩類:

訓(xùn)練后量化(PTQ)

這涉及到訓(xùn)練后權(quán)重和激活的量化,并通過(guò)一個(gè)稱為校準(zhǔn)的過(guò)程來(lái)實(shí)現(xiàn)。該過(guò)程的目標(biāo)是在最小化信息損失的同時(shí),找出從原始到目標(biāo)精度的映射。為了實(shí)現(xiàn)這一點(diǎn),使用數(shù)據(jù)集中的一組樣本,并在模型上運(yùn)行推理,跟蹤模型中不同激活的動(dòng)態(tài)范圍,以確定映射函數(shù)。

量化感知訓(xùn)練(QAT)

使用較低精度權(quán)重和激活進(jìn)行訓(xùn)練的主要問(wèn)題是沒(méi)有正確定義梯度,因此無(wú)法進(jìn)行反向傳播。為了使用QAT解決這個(gè)問(wèn)題,該模型模擬了前向傳播過(guò)程中的目標(biāo)精度,但使用后向傳播的原始精度來(lái)計(jì)算梯度。

雖然PTQ易于實(shí)施并且無(wú)需重新訓(xùn)練模型,但它可能會(huì)導(dǎo)致性能下降。另一方面,QAT與PTQ相比通常具有更高的準(zhǔn)確性,但其實(shí)施起來(lái)不那么容易,并且會(huì)增加訓(xùn)練代碼的復(fù)雜性。

從數(shù)學(xué)的角度來(lái)看,給定權(quán)重/激活的量化和校準(zhǔn)涉及確定兩個(gè)值:比例因子和零點(diǎn)。假設(shè)想要將FP32轉(zhuǎn)換為INT8:

Python 
1 # max_int for INT8 would be 255 and min_int 0
2 # max_float, min_float are deteremined in the calibration process
3 scale = (max_float - min_float) / (max_int - min_int)
4
5 # to allow for both positive and negative values to be quantized
6 zero_point = round((0 - min_float) / scale)
7
?8 int8_value = round(fp32_value / scale) + zero_point

知識(shí)蒸餾(KD)

顧名思義,知識(shí)蒸餾(KD)試圖將原始模型(在這種情況下稱為教師模型)中的知識(shí)提煉或轉(zhuǎn)移到一個(gè)較小的模型(可以稱之為學(xué)生模型)中。實(shí)現(xiàn)這一目標(biāo)的方法有多種,但最常見(jiàn)的方法是嘗試使教師模型的輸出或中間特征表示與學(xué)生模型相匹配。有趣的是,使用真實(shí)標(biāo)簽和教師模型輸出的軟標(biāo)簽組合訓(xùn)練的學(xué)生模型,其性能優(yōu)于僅使用真實(shí)標(biāo)簽訓(xùn)練的學(xué)生模型,有時(shí)甚至能達(dá)到教師模型的性能。對(duì)于這種行為的一種假設(shè)是,由于軟標(biāo)簽包含比真實(shí)標(biāo)簽(硬標(biāo)簽,例如zero-shot)更多的信息,它有助于學(xué)生模型更好地泛化。

提高深度學(xué)習(xí)模型效率的三種模型壓縮方法-AI.x社區(qū)

知識(shí)蒸餾是一種更靈活的模型壓縮技術(shù),因?yàn)樯傻哪P涂梢跃哂信c原始模型不同的架構(gòu),并且與剪枝或量化相比,具有更大的內(nèi)存和延遲減少潛力。然而,它也是訓(xùn)練最復(fù)雜的技術(shù),因?yàn)樗婕坝?xùn)練教師模型,然后設(shè)計(jì)和訓(xùn)練學(xué)生模型。

結(jié)論

在實(shí)踐中,通常將多種壓縮技術(shù)結(jié)合在一起(例如,知識(shí)蒸餾之后PTQ或剪枝)來(lái)實(shí)現(xiàn)所需的壓縮和準(zhǔn)確性結(jié)果。
原文標(biāo)題:??Model Compression: Improving Efficiency of Deep Learning Models?,作者:Inderjot Singh Saggu

?著作權(quán)歸作者所有,如需轉(zhuǎn)載,請(qǐng)注明出處,否則將追究法律責(zé)任
收藏
回復(fù)
舉報(bào)
回復(fù)
相關(guān)推薦