用户您好,请详细描述您所遇到的问题,这会帮助我们快速定位问题~
1.芯片型号:X3
2.天工开物开发包OpenExplorer版本:主要在oe 2.3.3测,oe 2.6.2问题类似
3.问题定位:模型转换
4.问题具体描述:
搭建了一个立体匹配任务的模型,训练和微调效果正常,但是量化完后掉点比较严重。
验证了makertbin过程中产生的original_float_model.onnx和optimized_float_model.onnx,和准备量化的浮点模型输出一致。
但是在X3上,采用多种量化策略得到的量化网络,用校准数据集进行测试掉点严重。结果如下
我们这边尝试QAT训练策略,请问能否同时协助微调网络量化?
颜值即正义
2
您好,地平线工具链在持续迭代优化,为了给您提供更好的服务,希望您能抽出3分钟左右的时间,将您在使用工具链期间的感受和建议告诉我们,您的宝贵意见对我们很重要,非常感谢!-
问卷链接:地平线算法工具链使用满意度反馈
颜值即正义
3
按照上述教程尝试了一下模型评估,得到的中间结果如下
下图为单独量化权重 / 激活的累积误差分布情况

可见精度问题来自激活量化。
随后分析了节点敏感

发现激活量化某些层问题较严重
随后比较了不同部分量化配置下的精度


发现每种配置下量化精度仍都有问题
颜值即正义
5
您好,模型精度损失大部分来自于激活节点的累积量化误差,由于XJ3不支持设置节点以Int16量化,这边建议您根据激活量化敏感度排序的节点,依次设置其run_on_cpu,然后测试模型精度改善情况(可能会对模型性能有较大影响,需要您权衡);如果激活节点run_on_cpu后模型精度仍无较大的改善,目前只能建议您尝试QAT~
颜值即正义
6
还麻烦您对我们的PTQ Debug工具做出评价,可以从使用上手、分析结果可视化以及对模型精度问题定位等角度反馈,您的反馈有助于我们迭代更好用的工具,We are glad to hear from you~~
再请问下,HZ_PREPROCESS_FOR_input.1_HzCalibration节点是最开始的之前仅做输入归一化的节点,为啥这个节点的cosine就很低了

颜值即正义
8
您好,这个激活校准节点的输入是上一个节点,也就是Hz_PREPROCESS节点的输出,它的量化敏感度高只能说明当前节点(Hz_PREPROCESS的后一个节点,可能是Conv)的节点输入对量化敏感,和Hz_PREPROCESS节点无关,所以基于此您可以选择让Hz_PREPROCESS节点高精度输出或者当前节点高精度输入,是这样的逻辑。
Hz_PREPROCESS前处理节点如果要进行图像格式转换的操作,例如bgr转nv12,可能会对模型精度产生影响,因为nv12是有损格式。