Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
Paddle-Lite
提交
fb54e938
P
Paddle-Lite
项目概览
PaddlePaddle
/
Paddle-Lite
通知
331
Star
4
Fork
1
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
271
列表
看板
标记
里程碑
合并请求
78
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
Paddle-Lite
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
271
Issue
271
列表
看板
标记
里程碑
合并请求
78
合并请求
78
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
fb54e938
编写于
6月 08, 2020
作者:
C
cc
提交者:
GitHub
6月 08, 2020
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Update quantization method name, test=develop, test=document_fix (#3758)
上级
7e95c20f
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
23 addition
and
19 deletion
+23
-19
docs/user_guides/post_quant_no_data.md
docs/user_guides/post_quant_no_data.md
+15
-11
docs/user_guides/post_quant_with_data.md
docs/user_guides/post_quant_with_data.md
+8
-8
未找到文件。
docs/user_guides/post_quant_no_data.md
浏览文件 @
fb54e938
# 模型量化-
无校准数据训练后
量化
# 模型量化-
动态离线
量化
本文首先简单介绍
无校准数据训练后
量化,然后说明产出量化模型,最后阐述量化模型预测。
本文首先简单介绍
动态离线
量化,然后说明产出量化模型,最后阐述量化模型预测。
## 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 模型转换
...
...
docs/user_guides/post_quant_with_data.md
浏览文件 @
fb54e938
# 模型量化-
有校准数据训练后
量化
# 模型量化-
静态离线
量化
## 1 简介
有校准数据训练后
量化,使用少量校准数据计算量化因子,可以快速得到量化模型。使用该量化模型进行预测,可以减少计算量、降低计算内存、减小模型大小。
静态离线
量化,使用少量校准数据计算量化因子,可以快速得到量化模型。使用该量化模型进行预测,可以减少计算量、降低计算内存、减小模型大小。
有校准数据训练后
量化中,有两种计算量化因子的方法,非饱和量化方法和饱和量化方法。非饱和量化方法计算整个Tensor的绝对值最大值
`abs_max`
,将其映射为127。饱和量化方法使用KL散度计算一个合适的阈值
`T`
(
`0<T<mab_max`
),将其映射为127。一般而言,待量化Op的权重采用非饱和量化方法,待量化Op的激活(输入和输出)采用饱和量化方法 。
静态离线
量化中,有两种计算量化因子的方法,非饱和量化方法和饱和量化方法。非饱和量化方法计算整个Tensor的绝对值最大值
`abs_max`
,将其映射为127。饱和量化方法使用KL散度计算一个合适的阈值
`T`
(
`0<T<mab_max`
),将其映射为127。一般而言,待量化Op的权重采用非饱和量化方法,待量化Op的激活(输入和输出)采用饱和量化方法 。
使用条件:
*
有训练好的预测模型
*
有少量校准数据,比如100~500张图片
使用步骤:
*
产出量化模型:使用PaddleSlim调用
有校准数据训练后
量化接口,产出量化模型
*
产出量化模型:使用PaddleSlim调用
静态离线
量化接口,产出量化模型
*
量化模型预测:使用PaddleLite加载量化模型进行预测推理
优点:
...
...
@@ -24,7 +24,7 @@
## 2 产出量化模型
大家可以使用PaddleSlim调用
有校准数据训练后
量化接口,得到量化模型。
大家可以使用PaddleSlim调用
静态离线
量化接口,得到量化模型。
### 2.1 安装PaddleSlim
...
...
@@ -37,12 +37,12 @@
### 2.3 配置校准数据生成器
有校准数据训练后
量化内部使用异步数据读取的方式读取校准数据,大家只需要根据模型的输入,配置读取数据的sample_generator。sample_generator是Python生成器,
**必须每次返回单个样本数据**
,会用作
`DataLoader.set_sample_generator()`
的数据源。
静态离线
量化内部使用异步数据读取的方式读取校准数据,大家只需要根据模型的输入,配置读取数据的sample_generator。sample_generator是Python生成器,
**必须每次返回单个样本数据**
,会用作
`DataLoader.set_sample_generator()`
的数据源。
建议参考
[
异步数据读取文档
](
https://www.paddlepaddle.org.cn/documentation/docs/zh/advanced_guide/data_preparing/use_py_reader.html
)
和本文示例,学习如何配置校准数据生成器。
### 2.4 调用
有校准数据训练后
量化
### 2.4 调用
静态离线
量化
对于调用
有校准数据训练后
量化,首先给出一个例子,让大家有个直观了解。
对于调用
静态离线
量化,首先给出一个例子,让大家有个直观了解。
```
python
import
paddle.fluid
as
fluid
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录