文档首页 > > 推理场景> 开发辅助工具指南> 模型小型化工具使用指南(TensorFlow)> 概述> 工具原理及优点

工具原理及优点

分享
更新时间:2020/12/07 GMT+08:00

工具原理

模型小型化工具是基于TensorFlow框架的Python工具包,实现了神经网络模型中Conv+BN融合、Depthwise_Conv+BN融合、Group_conv+BN融合、数据与权重8比特量化的功能,该工具将量化和模型转换分开,实现对模型中可量化层的独立量化,并将量化后的模型存为pb文件。其中量化后的仿真模型可以在CPU或者GPU上运行,完成精度仿真;量化后的部署模型可以部署在昇腾AI处理器上运行,达到提升推理性能的目的。针对本手册,量化后的精度仿真模型和部署模型,合二为一。当前该工具仅支持对FP32数据类型的模型进行量化。

模型小型化工具运行流程如图1所示,蓝色部分为用户实现,灰色部分为用户调用模型小型化工具提供的API实现,用户在TensorFlow原始网络推理的代码中导入库,并在特定的位置调用相应API,即可实现量化功能。工具使用分为如下场景:

  • 基于calibration的量化
    • 场景1
      1. 用户首先构造TensorFlow的原始模型,然后使用create_quant_config生成量化配置文件。
      2. 根据TensorFlow模型和量化配置文件,即可调用quantize_model接口对原始TensorFlow模型进行优化,修改后的模型中包含了量化算法,用户使用该模型借助模型小型化工具提供的数据集和校准集,在TensorFlow环境中进行inference,可以得到量化因子。

        其中数据集用于在TensorFlow环境中对模型进行推理时,测试量化数据的精度;校准集用来产生量化因子,保证精度。

      3. 最后用户可以调用save_model接口保存量化后的模型,该模型即可在TensorFlow环境中进行精度仿真又可以昇腾AI处理器部署。

      关于接口的详细说明请参见接口说明

    • 场景2

      如果用户不使用 场景1中的接口,而是用自己计算得到的量化因子以及TensorFlow原始模型,生成量化模型,则需要使用convert_model接口完成相关量化动作。该场景下的量化示例请参见convert_model接口量化示例

  • 基于retrain的量化
    1. 用户首先构造TensorFlow的原始模型,然后使用create_quant_retrain_config生成量化配置文件。
    2. 调用create_quant_retrain_model接口对原始TensorFlow模进行优化,修改后的模型中包含了量化算法,用户使用该模型借助模型小型化工具提供的数据集和校准集,在TensorFlow模环境中进行retrain,可以得到量化因子。
    3. 最后用户可以调用save_quant_retrain_model接口保存模型,该模型即可在TensorFlow环境中进行精度仿真又可以昇腾AI处理器部署。
图1 工具原理示意图

工具实现的融合功能

  • Conv+BN融合:模型小型化工具在量化前会对模型中的"Conv2D+BatchNorm"结构做Conv+BN融合,融合后的"BatchNorm"层会被删除。
  • Depthwise_Conv+BN融合:模型小型化工具在量化前会对模型中的"DepthwiseConv2dNative+BatchNorm"结构做Depthwise_Conv+BN融合,融合后的"BatchNorm"层会被删除。
  • Group_conv+BN融合:如果模型中使用"Split+多路Conv2D+ ConcatV2(或Concat)"表示Group_conv,模型小型化工具在量化前会对模型中"Group_conv+BatchNorm"结构做融合,融合后的"BatchNorm"层会被删除。

    BN支持融合的算子类型为FusedBatchNorm, FusedBatchNormV2 和FusedBatchNormV3。

  • BN小算子融合为FusedBatchNormV3大算子(BN小算子融合为大算子,只支持BN小算子输入为4维的场景)。
    模型小型化工具tf.keras.layers.BatchNormalization产生的小算子结构的BN进行匹配,并且将匹配到的小算子BN结构替换为大算子的BN结构,具体支持的小算子BN结构的场景如下所示:

工具优点

  • 使用方便,安装工具包即可。
  • ​接口简单,在用户基于TensorFlow框架的推理脚本基础上,调用API即可完成量化。
  • ​与硬件配套,生成的量化模型(quantized模型)经过ATC工具转换后可在昇腾AI处理器上实现8比特推理。
  • ​量化可配置,用户可自行修改量化配置文件,调整量化策略,获取较优的量化结果。
分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!非常感谢您的反馈,我们会继续努力做到更好!
反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

智能客服提问云社区提问