4. 浮点模型转定点模型指导手册¶
地平线为您提供了两种浮点模型转定点模型的方法,分别为PTQ模型量化手段和QAT模型量化手段, 本章内容包括 训练后量化(PTQ) 和 量化感知训练(QAT) ,为您详细介绍两种方法的原理及使用指导。
- 4.1. 训练后量化(PTQ)
- 4.1.1. PTQ原理及步骤
- 4.1.1.1. PTQ转换的流程与步骤
- 4.1.1.2. 算子约束
- 4.1.1.3. 浮点模型准备
- 4.1.1.4. 验证模型
- 4.1.1.5. 校准数据准备
- 4.1.1.6. 模型量化与编译
- 4.1.1.7. 模型性能分析与调优
- 4.1.1.8. 模型精度分析与调优
- 4.1.1.9. 其他模型工具(可选)
- 4.1.1.10. 训练后量化(PTQ)常见问题
- 4.1.1.10.1. 如何理解算子约束中提及的BPU加速和CPU计算两种形式?
- 4.1.1.10.2. 如何理解模型分段的性能影响?
- 4.1.1.10.3. 如何理解模型尾部部分BPU可加速算子运行在CPU上?
- 4.1.1.10.4. 是否支持非对称量化?
- 4.1.1.10.5. 如何理解地平线的default校准方式?
- 4.1.1.10.6. 如何理解地平线的mix校准方式?
- 4.1.1.10.7. 如何理解yaml文件中的编译器优化等级参数?
- 4.1.1.10.8. 为何nv12 模型 hb_perf 得出的输入大小和预测库不一致?
- 4.1.1.10.9. 量化模型和上板bin模型的输入的数据排布是否一定一致?
- 4.1.1.10.10. 如何编译得到多 batch 模型?
- 4.1.1.10.11. 多输入模型在转换过程中,模型输入顺序发生变化,此种情况正常么?
- 4.1.1.10.12. 如何理解PTQ模型转换过程中的主动量化和被动量化?
- 4.1.1.11. 自定义算子开发
- 4.1.2. PTQ工具文档
- 4.1.3. PTQ模型转换示例手册
- 4.1.3.1. 发布物介绍
- 4.1.3.2. 常见算法模型示例
- 4.1.3.2.1. 位置路径
- 4.1.3.2.2. 如何准备数据集
- 4.1.3.2.3. 如何准备模型
- 4.1.3.2.3.1. fcos_efficientnetb0
- 4.1.3.2.3.2. fcos_efficientnetb1
- 4.1.3.2.3.3. fcos_efficientnetb2
- 4.1.3.2.3.4. MobileNetv1/v2
- 4.1.3.2.3.5. GoogleNet
- 4.1.3.2.3.6. ResNet18
- 4.1.3.2.3.7. mobilenet_onnx
- 4.1.3.2.3.8. EfficientNet_Lite0/1/2/3/4
- 4.1.3.2.3.9. YOLOv2_Darknet19
- 4.1.3.2.3.10. YOLOv3_Darknet53
- 4.1.3.2.3.11. YOLOv5s
- 4.1.3.2.3.12. SSD_MobileNetv1
- 4.1.3.2.3.13. EfficientNetDetd0
- 4.1.3.2.3.14. CenterNet_Resnet50
- 4.1.3.2.3.15. Fcos_efficientnetb0
- 4.1.3.2.3.16. UNet_mobilenet
- 4.1.3.2.3.17. DeeplabV3plus_efficientnetb0
- 4.1.3.2.3.18. Fastscnn_efficientnetb0
- 4.1.3.2.4. 算法模型示例的使用演示
- 4.1.3.2.5. 常见问题
- 4.1.3.3. 其他算法模型示例
- 4.1.4. 附录
- 4.1.4.1. norm_type配置说明
- 4.1.4.2. 图片处理transformer说明
- 4.1.4.2.1. AddTransformer
- 4.1.4.2.2. MeanTransformer
- 4.1.4.2.3. ScaleTransformer
- 4.1.4.2.4. NormalizeTransformer
- 4.1.4.2.5. TransposeTransformer
- 4.1.4.2.6. HWC2CHWTransformer
- 4.1.4.2.7. CHW2HWCTransformer
- 4.1.4.2.8. CenterCropTransformer
- 4.1.4.2.9. PILCenterCropTransformer
- 4.1.4.2.10. LongSideCropTransformer
- 4.1.4.2.11. PadResizeTransformer
- 4.1.4.2.12. ResizeTransformer
- 4.1.4.2.13. PILResizeTransformer
- 4.1.4.2.14. ShortLongResizeTransformer
- 4.1.4.2.15. PadTransformer
- 4.1.4.2.16. ShortSideResizeTransformer
- 4.1.4.2.17. PaddedCenterCropTransformer
- 4.1.4.2.18. BGR2RGBTransformer
- 4.1.4.2.19. RGB2BGRTransformer
- 4.1.4.2.20. RGB2GRAYTransformer
- 4.1.4.2.21. BGR2GRAYTransformer
- 4.1.4.2.22. RGB2GRAY_128Transformer
- 4.1.4.2.23. RGB2YUV444Transformer
- 4.1.4.2.24. BGR2YUV444Transformer
- 4.1.4.2.25. BGR2YUV444_128Transformer
- 4.1.4.2.26. RGB2YUV444_128Transformer
- 4.1.4.2.27. BGR2YUVBT601VIDEOTransformer
- 4.1.4.2.28. RGB2YUVBT601VIDEOTransformer
- 4.1.4.2.29. YUVTransformer
- 4.1.4.2.30. ReduceChannelTransformer
- 4.1.4.2.31. BGR2NV12Transformer
- 4.1.4.2.32. RGB2NV12Transformer
- 4.1.4.2.33. NV12ToYUV444Transformer
- 4.1.4.2.34. WarpAffineTransformer
- 4.1.4.2.35. F32ToS8Transformer
- 4.1.4.2.36. F32ToU8Transformer
- 4.1.4.3. 常见故障处理
- 4.1.1. PTQ原理及步骤
- 4.2. 量化感知训练(QAT)
- 4.2.1. 术语约定
- 4.2.1.1. Float 模型 / 浮点模型
- 4.2.1.2. Calibration
- 4.2.1.3. Calibration 模型
- 4.2.1.4. QAT / 量化训练
- 4.2.1.5. QAT 模型
- 4.2.1.6. 伪量化
- 4.2.1.7. 伪量化模型
- 4.2.1.8. Quantized 模型 / 定点模型 / 量化模型
- 4.2.1.9. Traced 模型
- 4.2.1.10. TorchScript 模型
- 4.2.1.11. pt 模型
- 4.2.1.12. Bernoulli2,Bayes
- 4.2.1.13. X3,J3,J5
- 4.2.1.14. BPU 架构和处理器的对应关系
- 4.2.2. 环境依赖
- 4.2.3. 快速入门
- 4.2.4. 开发指南
- 4.2.4.1. 浮点模型的要求
- 4.2.4.2. Calibration 指南
- 4.2.4.3. 量化训练指南
- 4.2.4.4. 异构模型指南
- 4.2.4.5. 分析工具使用指南
- 4.2.4.5.1. 总览
- 4.2.4.5.2. 集成接口
- 4.2.4.5.3. fuse 检查
- 4.2.4.5.4. 共享 op 检查
- 4.2.4.5.5. 量化配置检查
- 4.2.4.5.6. 可视化:ONNX 模型可视化
- 4.2.4.5.7. 相似度对比
- 4.2.4.5.8. 统计量
- 4.2.4.5.9. 模型 weight 比较
- 4.2.4.5.10. 分步量化
- 4.2.4.5.11. 单算子转换精度调试
- 4.2.4.5.12. 异构模型部署 device 检查
- 4.2.4.5.13. torchscript 和 hbdk 结果对比
- 4.2.4.5.14. 不同版本 torchscript 模型的结果对比
- 4.2.4.5.15. 模型显存占用分析工具
- 4.2.4.6. 量化训练精度调优建议
- 4.2.4.7. 量化部署 PT 模型的跨设备 Inference 说明
- 4.2.4.8. 常见问题
- 4.2.4.9. 常见使用误区
- 4.2.5. 深入探索
- 4.2.6. API Reference
- 4.2.7. 附录
- 4.2.1. 术语约定