概述
模型量化将模型的参数离散化,原本32bit的浮点数被映射到8bit的整数上,模型的大小压缩4倍左右;将计算层的输入进行离散化,原本32bit浮点数的乘加操作变为8bit的整数乘加操作,减少了模型推理的计算量,在cpu上能够有2到3倍的速度提升,在DSP上能够有10倍左右的速度提升。
对于量化效果的提升,华为海思部门给出了更改caffe框架、使用量化库进行网络finetune的方法。鉴于caffe训练框架更新维护不够,pytorch框架使用较多的情况,笔者写了基于pytorch的NNIE量化感知训练包nnieqat,方便进行量化感知训练和部署。
nnieqat 安装方便,直接 pip install 后加载模块进行使用, 训练过程中使用四个函数 register_quantization_hook 、merge_freeze_bn、 quant_dequant_weight、 unquant_weight ,增加不到10行代码就可以方便的进行nnie量化感知训练。
四个函数分别对应的功能如下:
-
register_quantization_hook: 为需要量化的层添加了register_forward_pre_hook, register_forward_hook,进行权重量化和激活量化。
-
merge_freeze_bn:合并convolution层和batchnorm层,并固定batchnorm参数防止出现训练不稳定现象。
-
quant_dequant_weight:使用量化反量化后的权重。
-
unquant_weight:使用原始的权重。
最后
以上就是甜美方盒为你收集整理的量化部署意义的全部内容,希望文章能够帮你解决量化部署意义所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复