From 8dfa914ff5d04c7958eb8e7437bcc3be926337c5 Mon Sep 17 00:00:00 2001 From: cc <52520497+juncaipeng@users.noreply.github.com> Date: Mon, 8 Jun 2020 11:46:39 +0800 Subject: [PATCH] Update quantization method name, test=develop, test=document_fix (#3758) (#3760) --- docs/user_guides/post_quant_no_data.md | 26 ++++++++++++++---------- docs/user_guides/post_quant_with_data.md | 16 +++++++-------- 2 files changed, 23 insertions(+), 19 deletions(-) diff --git a/docs/user_guides/post_quant_no_data.md b/docs/user_guides/post_quant_no_data.md index 7443b4cac9..fa9b42ad9b 100644 --- a/docs/user_guides/post_quant_no_data.md +++ b/docs/user_guides/post_quant_no_data.md @@ -1,16 +1,20 @@ -# 模型量化-无校准数据训练后量化 +# 模型量化-动态离线量化 -本文首先简单介绍无校准数据训练后量化,然后说明产出量化模型,最后阐述量化模型预测。 +本文首先简单介绍动态离线量化,然后说明产出量化模型,最后阐述量化模型预测。 ## 1 简介 -无校准数据训练后量化,将模型中特定OP的权重从FP32类型量化成INT8/16类型,可以减小预测模型的大小。使用该量化模型预测,首先将INT8/16类型的权重反量化成FP32类型,然后再进行预测。 +动态离线量化,将模型中特定OP的权重从FP32类型量化成INT8/16类型。 + +该量化模型有两种预测方式:第一种是反量化预测方式,即是首先将INT8/16类型的权重反量化成FP32类型,然后再使用FP32浮运算运算进行预测;第二种量化预测方式,即是预测中动态计算量化OP输入的量化信息,基于量化的输入和权重进行INT8整形运算。 + +注意,目前PaddleLite仅仅支持第一种反量化预测方式。 使用条件: * 有训练好的预测模型 使用步骤: -* 产出量化模型:使用PaddlePaddle调用无校准数据训练后量化接口,产出量化模型 +* 产出量化模型:使用PaddlePaddle调用动态离线量化离线量化接口,产出量化模型 * 量化模型预测:使用PaddleLite加载量化模型进行预测推理 优点: @@ -18,11 +22,11 @@ * 权重量化成INT8类型,模型精度会受到影响,模型大小为原始的1/4 缺点: -* 只可以减小模型大小,不能加快模型推理 +* 目前只支持反量化预测方式,主要可以减小模型大小,对特定加载权重费时的模型可以起到一定加速效果 ## 2 产出量化模型 -因为目前该方法还没有在PaddleSlim中集成,大家可以使用PaddlePaddle调用无校准数据训练后量化接口,得到量化模型。 +目前该方法还没有在PaddleSlim中集成,大家可以使用PaddlePaddle调用动态离线量化接口,得到量化模型。 ### 2.1 安装PaddlePaddle @@ -32,9 +36,9 @@ 准备已经训练好的FP32预测模型,即 `save_inference_model()` 保存的模型。 -### 2.3 调用无校准数据训练后量化 +### 2.3 调用动态离线量化 -对于调用无校准数据训练后量化,首先给出一个例子。 +对于调用动态离线量化,首先给出一个例子。 ```python from paddle.fluid.contrib.slim.quantization import WeightQuantization @@ -52,7 +56,7 @@ weight_quant.quantize_weight_to_int(save_model_dir=save_model_dir, 执行完成后,可以在 `save_model_dir/quantized_model` 目录下得到量化模型。 -对于调用无校准数据训练后量化,以下对api接口进行详细介绍。 +对于调用动态离线量化,以下对api接口进行详细介绍。 ```python class WeightQuantization(model_dir, model_filename=None, params_filename=None) @@ -85,11 +89,11 @@ WeightQuantization.quantize_weight_to_int(self, ## 3 量化模型预测 -目前,对于无校准数据训练后量化产出的量化模型,只能使用PaddleLite进行预测部署。 +目前,对于动态离线量化产出的量化模型,只能使用PaddleLite进行预测部署。 很简单,首先使用PaddleLite提供的模型转换工具(opt)将量化模型转换成移动端预测的模型,然后加载转换后的模型进行预测部署。 -注意,PaddleLite 2.3版本才支持无校准数据训练后量化产出的量化,所以转换工具和预测库必须是2.3及之后的版本。 +注意,PaddleLite 2.3版本才支持动态离线量化产出的量化,所以转换工具和预测库必须是2.3及之后的版本。 ### 3.1 模型转换 diff --git a/docs/user_guides/post_quant_with_data.md b/docs/user_guides/post_quant_with_data.md index 11b33c06e3..a861a9e95a 100644 --- a/docs/user_guides/post_quant_with_data.md +++ b/docs/user_guides/post_quant_with_data.md @@ -1,17 +1,17 @@ -# 模型量化-有校准数据训练后量化 +# 模型量化-静态离线量化 ## 1 简介 -有校准数据训练后量化,使用少量校准数据计算量化因子,可以快速得到量化模型。使用该量化模型进行预测,可以减少计算量、降低计算内存、减小模型大小。 +静态离线量化,使用少量校准数据计算量化因子,可以快速得到量化模型。使用该量化模型进行预测,可以减少计算量、降低计算内存、减小模型大小。 -有校准数据训练后量化中,有两种计算量化因子的方法,非饱和量化方法和饱和量化方法。非饱和量化方法计算整个Tensor的绝对值最大值`abs_max`,将其映射为127。饱和量化方法使用KL散度计算一个合适的阈值`T` (`0