我是靠谱客的博主 甜美方盒,最近开发中收集的这篇文章主要介绍量化部署意义,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

       模型量化将模型的参数离散化,原本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:使用原始的权重。

最后

以上就是甜美方盒为你收集整理的量化部署意义的全部内容,希望文章能够帮你解决量化部署意义所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(54)

评论列表共有 0 条评论

立即
投稿
返回
顶部