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.2.1. 模型转换过程详解
- 4.1.2.2. hb_mapper 工具
- 4.1.2.3. hb_perf 工具
- 4.1.2.4. vec_diff 工具
- 4.1.2.5. hb_model_info 工具
- 4.1.2.6. hb_pack 工具
- 4.1.2.7. hb_verifier 工具
- 4.1.2.8. hb_model_modifier 工具
- 4.1.2.9. hb_custom_op 工具
- 4.1.2.10. hb_eval_preprocess 工具
- 4.1.2.11. HB_ONNXRuntime 推理库
- 4.1.2.12. 精度 debug 工具
- 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. EfficientDetd0
- 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,Bayes-e
- 4.2.1.13. X3
- 4.2.1.14. 处理器,BPU 架构,代码中 enum 的对应关系
- 4.2.2. 环境依赖
- 4.2.3. 快速入门
- 4.2.4. 开发指南
- 4.2.4.1. 浮点模型的要求
- 4.2.4.2. qconfig 详解
- 4.2.4.3. Calibration 指南
- 4.2.4.4. 量化感知训练指南
- 4.2.4.5. 异构模型指南
- 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. 术语约定