转换后的模型出现精度损失时, 请按照以下推荐方式排查出现问题的 stage
或 layer
。
- 第一步, 明确发生精度损失的硬件平台
- 仅发生在
AX
平台上请继续往下排查.其他平台均有掉点问题发生
共性问题, 需要用户自行斟酌是否要训练一个更好的模型然后再重新量化;
- 仅发生在
- 第二步, 确定发生精度损失的阶段
pulsar2 build
对分精度低 (Cosin Distance < 98%
)请按照 [第三步] 建议继续往下排查
- 上板接入用户 后处理 程序, 解析之后精度很低
请按照 [第四步] 建议继续往下排查
- 第三步,
Cosin Distance
低于 98%- 排查建议
- 使用逐层对分查看发生精度损失的
layer
,并参考精度调优建议进行调优。
- 使用逐层对分查看发生精度损失的
- 排查建议
- 第四步, 上板精度低,
- 排查建议
- 确定后处理是否有误
- 后处理没问题,联系
AX
反馈问题
- 排查建议
- 第五步, 寻求 AXera 帮助
- 当用户通过前四步排查建议依然无法解决问题时, 请将相关
log
以及结论
发送给FAE
同学, 以便AX
工程师定位问题
- 当用户通过前四步排查建议依然无法解决问题时, 请将相关
pulsar2 build
提供了一套浮点模型与量化后模型的逐层精度对比工具。具体使用方式请参考 :ref:`《逐层对分》 <perlayer_precision_debug>` 章节
如果需要 AX
工程师排查问题, 请提供详细的日志信息以及相关实验结论.
Note
如果能够提供最小复现集可以提高解决问题的效率.
- 调整
mean
和std
:保证mean
和std
与训练时模型的预处理参数一致; - 调整
rgb/bgr
顺序:该参数也会影响量化精度,需要保证与模型训练时输入一致;可通过quant
中的input_configs.tensor_format
字段配置; - 量化数据:
- 校准图片与使用场景尽量相同
- 各类别样本数量应当均衡且覆盖所有类别
目前支持 MinMax
, MSE
, Percentile
三种量化策略。可以通过修改 quant
字段中的 calibration_method
进行设置。建议如下:
- 先使用
MinMax
策略进行量化,如精度不理想再尝试其它量化策略; - 针对分类和检测模型:建议使用
MinMax
以及Percentile
进行量化; - 针对序列模型:建议使用
MSE
策略进行量化。
如果尝试了不同量化策略后精度依然不满足需求,可以通过逐层精度分析对比,找到余弦相似度值低于 98% 的层,将该层量化精度设置为 U16
。
详请可参考 :ref:`《混合精度量化详解》 <mix_precision_quantization>`