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

評論