廣州做網(wǎng)站海珠新科優(yōu)化疫情防控措施
可點此跳轉(zhuǎn)看全篇
目錄
- 神經(jīng)網(wǎng)絡(luò)量化
- 量化的必要性
- 量化方法簡介
- 線性對稱量化
- 線性非對稱量化方法
神經(jīng)網(wǎng)絡(luò)量化
量化的必要性
Network | Model size (MB) | GFLOPS |
---|---|---|
AlexNet | 233 | 0.7 |
VGG-16 | 528 | 15.5 |
VGG-19 | 548 | 19.6 |
ResNet-50 | 98 | 3.9 |
ResNet-101 | 170 | 7.6 |
ResNet-152 | 230 | 11.3 |
GoogleNet | 27 | 1.6 |
InceptionV3 | 89 | 6 |
MobileNet | 38 | 0.58 |
SequeezeNet | 30 | 0.84 |
隨著網(wǎng)絡(luò)的深度變大,參數(shù)變多,神經(jīng)網(wǎng)絡(luò)消耗越來越多的算力,占用原來越大的存儲資源。
若想在移動設(shè)備和嵌入式設(shè)備上運行深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò),如此龐大的網(wǎng)絡(luò)參數(shù)將對移動設(shè)備的運行內(nèi)存和總線帶寬資源造成巨大消耗。目前三個方向:
1)研究新型的輕量網(wǎng)絡(luò)或者微型網(wǎng)絡(luò):設(shè)計更高效的新型網(wǎng)絡(luò)架構(gòu),用相對較小的網(wǎng)絡(luò)模型達到可接受的預(yù)測準(zhǔn)確度(如MobileNet和SequeezeNet等)。
2)研究現(xiàn)有網(wǎng)絡(luò)的參數(shù)縮減:如網(wǎng)絡(luò)剪枝,參數(shù)量化等;
3)研究新型計算模型、體系結(jié)構(gòu)和計算部件:如內(nèi)存中計算、憶阻器等
量化方法簡介
大多數(shù)網(wǎng)絡(luò)模型都采用32位浮點數(shù)(FP32)來存儲網(wǎng)絡(luò)參數(shù)。如果改用較低精度的16位浮點數(shù)(FP16)來存儲網(wǎng)絡(luò)參數(shù),那么網(wǎng)絡(luò)模型就可以減小一半。
常用的低精度表示方法有16位定點數(shù)(INT16)、8位定點數(shù)(INT8)、4位定點數(shù)(INT4)、二進制(INT1)等。其中,使用INT1量化的網(wǎng)絡(luò)稱為二元神經(jīng)網(wǎng)絡(luò)(Binary Neural Network, BNN)。
根據(jù)網(wǎng)絡(luò)參數(shù)到特定位寬定點數(shù)的映射類型,可將量化策略可分為線性量化和非線性量化兩種。線性量化策略將所有的網(wǎng)絡(luò)參數(shù)線性映射到特定量化精度的數(shù)據(jù)范圍中。例如,如果某神經(jīng)網(wǎng)絡(luò)的參數(shù)值在[0.05, 12]范圍內(nèi),假設(shè)采用INT8的線性量化策略,那么區(qū)間[0.05, 12]將被線性映射到[0, 255]。非線性策略則根據(jù)神經(jīng)網(wǎng)絡(luò)的參數(shù)密度,在線性量化策略的基礎(chǔ)上進行調(diào)整。與線性量化策略相比,非線性量化策略能夠?qū)⒕W(wǎng)絡(luò)參數(shù)更均勻地映射到定點數(shù)區(qū)間,因此其量化效果較好,對預(yù)測精度的影響較小。
此外,根據(jù)量化后的網(wǎng)絡(luò)參數(shù)是否關(guān)于坐標(biāo)軸原點對稱,可將量化策略分為對稱量化和非對稱量化兩種。對稱量化策略將網(wǎng)絡(luò)參數(shù)映射到關(guān)于坐標(biāo)原點對稱的區(qū)間。例如,假設(shè)網(wǎng)絡(luò)參數(shù)的取值范圍是[-3, 6],若采用INT8的對稱量化策略,則[-3, 6]將被映射到[-127, 127]。非對稱量化允許將網(wǎng)絡(luò)參數(shù)映射到不對稱的區(qū)間。與對稱量化策略相比,非對稱量化策略能夠?qū)⒕W(wǎng)絡(luò)參數(shù)更均勻地映射到定點數(shù)區(qū)間,因此其量化效果較好,對預(yù)測精度的影響較小。
從經(jīng)驗上講,當(dāng)量化精度低于INT8時,量化后網(wǎng)絡(luò)的精度急速下降。因此工業(yè)界目前普遍采用INT8的量化精度。
線性對稱量化
首先找出每個網(wǎng)絡(luò)層中參數(shù)取值區(qū)間端點絕對值的最大值MAX,然后將網(wǎng)絡(luò)參數(shù)所在的[-MAX, MAX]的區(qū)間線性映射到[-127, 127]。
[!Note] 舉例
假設(shè)某個網(wǎng)絡(luò)層的參數(shù)在[-3,6]之間,最大值MAX為6。需要將[-6,6]線性映射到[-127,127],那么6可以用127表示,-3用-63表示。因為原本參數(shù)為FP32,而現(xiàn)在是INT8,所以能夠?qū)⒕W(wǎng)絡(luò)參數(shù)的大小縮小75%。
INT8線性對稱量化步驟如下:
- 計算參數(shù)所在區(qū)間的端點 [ a , b ] [a,b] [a,b]絕對值的最大值 M A X = m a x { ∣ a ∣ , ∣ b ∣ } MAX=max\{|a|,|b|\} MAX=max{∣