文章目录
- 一、离线量化基础概念
- 1)离线量化定义
- 2)离线量化优缺点
- 3)如何生产一个硬件能跑的量化模型?
- 4)离线量化的类型
- 5)如何计算scale,zero_point?
- 6)离线量化概念
- 7)PTQ与QAT区别
- 8)离线量化流程
- 9)校准数据的选择
- 10)量化模式选择
- 11)校准方式的选择
- 12)量化算法的选择(展示离线量化的pipeline)
- 13)写入量化参数
- 二、离线量化难点
- 三、离线量化算法介绍
- 1)问题点
- 2)Weight equalization(WE):使每个channel分布更接近,从而更适用于per-tensor量化
- 3)Bias Correction(BC):从卷积或全连接层的bias剪掉权重的误差,准确率更接近per-channel量化
- 4)AdaRound
- 5)Brecq:解决AdaRound逐层重建忽略层间依赖关系的问题
- 6)QDrop:随机失活激活量化
- 7)离线量化算法--总结
- 四、离线量化工具介绍
- 1)业界常见量化框架与工具
- 2)Dipoorlet离线量化工具介绍
- 3)Dipoorlet离线量化工具使用
- 五、离线量化工具整体设计结构
- 1)回顾:如何生产一个硬件能跑的量化模型?
- 2)Dipoorlet:支持多后端部署的离线量化框架
- 六、离线量化工具代码解读
- 1)自定义数据结构ONNXGraph
- 2)可选参数
- 3)量化流程之加载模型
- 4)量化流程之校准
- 5)量化流程之权重微调
- 6)权重流程之量化分析
- 7)导出量化部署配置
- 七、实践:Dipoorlet量化MobileNet
一、离线量化基础概念
1)离线量化定义
2)离线量化优缺点
3)如何生产一个硬件能跑的量化模型?
4)离线量化的类型
①对称量化:速度更快
②非对称量化:精度更好
5)如何计算scale,zero_point?
①权重weights是一个常量张量
②activation激活值的实际动态范围必须经过数据集采样获取
,一般把这个过程称为数据校准calibration
6)离线量化概念
7)PTQ与QAT区别
8)离线量化流程
9)校准数据的选择
10)量化模式选择
11)校准方式的选择
- 不同的方式
①min_max:可能一些极端值会进来
②KL Divergence(TensorRT所使用的方法):
③Histogram(统计直方图):选定直方图的百分位点作为阶段之,根据百分比来调整截断值大小
④MSE:使用均方误差
作为模型量化前后输出的损失的衡量指标。此方法较为耗时
,但是效果常常优于其他方法
12)量化算法的选择(展示离线量化的pipeline)
①经过预训练的模型经过CLE调整,使得模型更方便量化
②给模型建立更容易量化的节点,对称性权重和非对称性激活值
③用MSE做权重的range设置
④使用数据就用AdaRound的方法,不使用数据就用Bias Correction的方法
⑤真正数据对激活值的范围做校准
13)写入量化参数
二、离线量化难点
- 难点
①校准数据有限
②异常数据分布
③优化空间有限
④优化粒度选择
三、离线量化算法介绍
1)问题点
①问题点一:
②问题点二:
2)Weight equalization(WE):使每个channel分布更接近,从而更适用于per-tensor量化
特点:跨层动态范围均衡
3)Bias Correction(BC):从卷积或全连接层的bias剪掉权重的误差,准确率更接近per-channel量化
方法:用量化统计数据集前后变化的偏移
4)AdaRound
- 备注
在前面data-free-quantization中,对权重和bias只是采用比较简单的线性偏移;而AdaRound剔除的方法让weight做更灵活的变换
5)Brecq:解决AdaRound逐层重建忽略层间依赖关系的问题
6)QDrop:随机失活激活量化
7)离线量化算法–总结
- 硬件和推理库离线量化工具的能力
四、离线量化工具介绍
1)业界常见量化框架与工具
2)Dipoorlet离线量化工具介绍
3)Dipoorlet离线量化工具使用
五、离线量化工具整体设计结构
1)回顾:如何生产一个硬件能跑的量化模型?
2)Dipoorlet:支持多后端部署的离线量化框架
①部署支持能力
②精度提升能力
③框架代码结构