1. 模型量化需求
為了滿足各種 AI 應(yīng)用對檢測精度的要求,深度神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的寬度、層數(shù)、深度以及各類參數(shù)等數(shù)量急速上升,導(dǎo)致深度學(xué)習(xí)模型占用了更大的存儲空間,需要更長的推理時(shí)延,不利于工業(yè)化部署;目前的模型都運(yùn)行在 CPU,GPU,FPGA,ASIC 等四類芯片上,芯片的算力有限;對于邊緣設(shè)備上的芯片而言,在存儲、內(nèi)存、功耗及時(shí)延性方面有許多限制,推理效率尤其重要。
作為通用的深度學(xué)習(xí)優(yōu)化的手段之一,模型量化將深度學(xué)習(xí)模型量化為更小的定點(diǎn)模型和更快的推理速度,而且?guī)缀醪粫芯葥p失,其適用于絕大多數(shù)模型和使用場景。此外,模型量化解鎖了定點(diǎn)硬件(Fixed-point hardware) 和下一代硬件加速器的處理能力,能夠?qū)崿F(xiàn)相同時(shí)延的網(wǎng)絡(luò)模型推理功能,硬件價(jià)格只有原來的幾十分之一,尤其是 FPGA,用硬件電路去實(shí)現(xiàn)網(wǎng)絡(luò)推理功能,時(shí)延是各類芯片中最低的。
TensorFlow 模型優(yōu)化工具包是一套能夠優(yōu)化機(jī)器學(xué)習(xí)模型以便于部署和執(zhí)行的工具。該工具包用途很多,其中包括支持用于以下方面的技術(shù):
通過模型量化等方式降低云和邊緣設(shè)備(例如移動(dòng)設(shè)備和 IoT 設(shè)備)的延遲時(shí)間和推斷成本。將優(yōu)化后的模型部署到邊緣設(shè)備,這些設(shè)備在處理、內(nèi)存、耗電量、網(wǎng)絡(luò)連接和模型存儲空間方面存在限制。在現(xiàn)有硬件或新的專用加速器上執(zhí)行模型并進(jìn)行優(yōu)化。
根據(jù)您的任務(wù)選擇模型和優(yōu)化工具:
利用現(xiàn)成模型提高性能在很多情況下,預(yù)先優(yōu)化的模型可以提高應(yīng)用的效率。
2. 模型量化過程
大家都知道模型是有權(quán)重 (w) 和偏置 (b) 組成,其中 w,b 都是以 float32 存儲的,float32 在計(jì)算機(jī)中存儲時(shí)占 32bit,int8 在計(jì)算機(jī)中存儲時(shí)占 8bit;模型量化就是用 int8 等更少位數(shù)的數(shù)據(jù)類型來代替 float32 表示模型的權(quán)重 (w) 和偏置 (b) 的過程,從而達(dá)到減少模型尺寸大小、減少模型內(nèi)存消耗及加快模型推理速度等目標(biāo)。
模型量化以損失推理精度為代價(jià),將網(wǎng)絡(luò)中連續(xù)取值或離散取值的浮點(diǎn)型參數(shù)(權(quán)重 w 和輸入 x)線性映射為定點(diǎn)近似 (int8/uint8) 的離散值,取代原有的 float32 格式數(shù)據(jù),同時(shí)保持輸入輸出為浮點(diǎn)型,從而達(dá)到減少模型尺寸大小、減少模型內(nèi)存消耗及加快模型推理速度等目標(biāo)。定點(diǎn)量化近似表示卷積和反卷積如下圖 所示,左邊是原始權(quán)重 float32 分布,右邊是原始權(quán)重 float32 經(jīng)過量化后又反量化后權(quán)重分布。
圖 2.1 Int8 量化近似表示卷積
圖 2.2 Int8 量化近似表示反卷積
3. 模型量化好處
減小模型尺寸,如 8 位整型量化可減少 75% 的模型大小;
減少存儲空間,在邊緣側(cè)存儲空間不足時(shí)更具有意義;
減少內(nèi)存耗用,更小的模型大小意味著不需要更多的內(nèi)存;
加快推理速度,訪問一次 32 位浮點(diǎn)型可以訪問四次 int8 整型,整型運(yùn)算比浮點(diǎn)型運(yùn)算更快;CPU 用 int8 計(jì)算的速度更快
減少設(shè)備功耗,內(nèi)存耗用少了推理速度快了自然減少了設(shè)備功耗;
支持微處理器,有些微處理器屬于 8 位的,低功耗運(yùn)行浮點(diǎn)運(yùn)算速度慢,需要進(jìn)行 8bit 量化。
某些硬件加速器如 DSP/NPU 只支持 int8
4. 模型量化原理
模型前向推理過程中所有的計(jì)算都可以簡化為 x= w*x +b; x 是輸入,也叫作 FeatureMap,w 是權(quán)重,b 是偏置;實(shí)際過程中 b 對模型的推理結(jié)果影響不大,一般丟棄。原本 w,x 是 float32,現(xiàn)在使用 int8 來表示為 qw,qx;模型量化的原理就是定點(diǎn) (qw qx) 與浮點(diǎn) (w,x),建立了一種有效的數(shù)據(jù)映射關(guān)系.。不僅僅量化權(quán)重 W ,輸入 X 也要量化;詳解如下:
R 表示真實(shí)的浮點(diǎn)值(w 或者 x),
責(zé)任編輯:lq
-
模型
+關(guān)注
關(guān)注
1文章
3115瀏覽量
48660 -
機(jī)器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8353瀏覽量
132315 -
深度學(xué)習(xí)
+關(guān)注
關(guān)注
73文章
5466瀏覽量
120891
原文標(biāo)題:社區(qū)分享 | TensorFlow 模型優(yōu)化:模型量化
文章出處:【微信號:tensorflowers,微信公眾號:Tensorflowers】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論