文章目录
欢迎访问个人网络日志🌹🌹知行空间🌹🌹
1.计算平台运算能力评估
-
深度学习模型部署运算量的衡量使用的是乘累加运算次数
MAC, Multiply Accumulate,形如:
a ← a + b + c a\leftarrow a+b +c a←a+b+c -
硬件的运算速度使用的单位是
GOPS/TOPS/POPS/EOPS分别表示Giga/Tera/Peta/Exa Operations Per Second,对应的是 1 0 9 / 1 0 12 / 1 0 15 / 1 0 18 10^9/10^{12}/10^{15}/10^{18} 109/1012/1015/1018次运算,中文表示分别是十亿/万亿/京/艾。1TOPS相当于处理器有512个MAC单元,运行频率为1GHZ。
2.模型量化原因
机器学习模型训练时,通常使用如float32的浮点数进行计算,这样能够保持好的精度,但浮点数在提升计算精度的同时,也导致了更多的运算量和存储空间占用。在模型推理时,并不需要进行梯度的反向传播,因此不需要那么高的计算精度,这时可将模型映射到较低精度的运算上,降低运算量,提升运算速度。这样将模型从高精度运算转换到低精度运算的过程叫作模型量化。
3.模型量化方式
3.1 基本原理
参考自https://aistudio.baidu.com/aistudio/projectdetail/3875525
模型量化的关键是找到数据映射的关系,以浮点到定点数据的的转换公式为例:
Q = R S + Z R = ( Q − Z ) ∗ S Q = \frac{R}{S}+Z \\ R = (Q-Z)*S Q=SR+ZR=(Q−Z)∗S
R表示输入的浮点数据Q表示量化之后的定点数据Z表示零点(zero point)的数值S表示缩放因子
可以根据S和Z这两个参数来确定这个映射关系,一种MinMax求解方式如下:
S = R m a x − R m i n Q m a x − Q m i n Z = Q m a x − R m a x ÷ S S=\frac{R_{max} - R_{min}}{Q_{max} - Q_{min}} \\ Z = Q_{max} - R_{max} \div S S=Qmax−Qmin

本文介绍模型量化的基本原理及方法,包括int8和uint8量化,并详细讲解Per-Layer/Per-Tensor和Per-Channel量化。同时,针对RockchipNPU特性,探讨数据排列方式、rknn_output设置及开发板组件版本查询。
最低0.47元/天 解锁文章
883

被折叠的 条评论
为什么被折叠?



