常见模型量化方法介绍
隨著深度學習技術的快速發展,越來越多的領域開始與之融合在一起。許多傳統領域借助深度學習的賦能解決了很多之前解決不了的問題或者更好的解決了之前的一些問題。于此同時,成本因素也是深度學習技術在各行各業深度融合中不可忽視的因素。所以將深度學習模型部署在邊緣設備上對該技術的廣泛應用有重要意義。其中模型量化就是一個在減小模型計算量和縮減模型大小的同時保障精度基本不變的技術,這對模型的部署而言有重要意義。在本文中將介紹工業中一些常見的模型量化方法。
經典量化論文《Quantizing deep convolutional networks for efficient inference: A whitepaper》鏈接: link
文章目錄
- 一、對稱量化
- 二、非對稱量
- 三、通道量化、逐組量化、逐層量化、組合量化
- 四、dynamic_point_fixed定點量化
- 五、混合量化
- 六、總結
一、對稱量化
對稱量化的一個關鍵點是零點,即原始的輸入數據中的零點通過映射關系轉換后仍然對應int8表示的范圍[-128,127]中的零點。但是該量化方式的缺點是為了保持量化效果的對齊,存在無法完全有效利用范圍。
原輸入:max_float = 0.7,min_float = 0.4
對應輸出:s = 127/0.7 = 181.42…
max_int8 = 127, min_int8=72.568
本質上就是將浮點數的范圍由[min_float,max_float]轉換成了[-max_int8,max_int8],
其中:
s = 127/(max(|max_float|,|min_float|))
max_int8 = max_floatS
min_int8 = min_floatS
二、非對稱量
非對稱量的操作簡而言之就是將輸入數據映射在[0,255]的范圍內,我們只需要確定Z參數(zero_point)和S參數就能求解到對應的映射轉換關系。該量化方法使用較多,量化效果較好。
對應轉換公式:
S = 255/(max_float - min_float)
Z = 255 - max_float/S
三、通道量化、逐組量化、逐層量化、組合量化
當group為1時 逐層量化等于逐組量化,但使用深度可分離卷積時逐組量化等于通道量化。
通道量化、逐組量化、逐層量化即以單一通道、組、層為單位計算對應float變量范圍進行量化,組合量化即將對各神經網絡多個結構融合成一塊兒進行量化,例如將conv,bn,relu組成一個模塊,對對應的范圍進行量化。
四、dynamic_point_fixed定點量化
該量化方式即用一部分位數表示整數,一部分位數表示小數位。
例如 以int8為例子 對應 max_float = 2.8,min_float = 0.1,由于整個整數范圍0~2 需要兩位才能表示對應范圍,所以該定點量化方式會用8-1-2=5位去量化小數位
五、混合量化
混合量化,即顧名思義即模型在轉換過程中包含了不同的量化方式。該技術主要針對特點結構對量化精度要求較高時,通過對單一結構使用高精度量化的方式,在保證整體計算時間基本不變的基礎上,提高模型的推理性能。
六、總結
本文介紹了工業中常見的一些線性量化的方法,具體量化方式的選擇還需要看實際的應用需求和設備條件。
總結
以上是生活随笔為你收集整理的常见模型量化方法介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: tensorflow whl文件下载网址
- 下一篇: 计算机最新会议合集:可推优发表SCI