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

Logo

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。

更多推荐