专栏算法工具链onnx和bc模型输出结果相差极大

onnx和bc模型输出结果相差极大

已解决
默认696002025-12-23
103
4

芯片:J6M

oe版本:3.2.0

问题背景:目前已经使用hb_compile工具完成了模型的PTQ量化,使用的fast-perf模式;使用hb_model_info验证onnx模型和bc模型输入输出的顺序、形状完全一致;使用hb_verify验证optimized_float_model.onnx和quantized.bc,二者的输出相似度相对较低,如下图所示。

但是使用HBruntime工具对onnx和bc模型进行推理时,发现二者的推理结果相差极大(使用的同一份npy输入)。Onnx模型的推理结果是正确的,但bc模型的推理结果完全不同且非常怪异,推理结果中大量出现-1.007874这个数字

问题描述:hb_verify工具显示onnx和bc模型输出头相似度有高有低,但从HBruntime的推理结果来看,bc和onnx的每一个输出头都完全不同,请问为什么bc模型推理结果会这个样子?是否需要使用full_complile模式来编译量化模型?或者对bc模型的npy输入进行stride空间对齐的处理?
附件:
算法工具链
征程6
评论2
0/1000
  • 默认69600
    Lv.1

    进一步检验过后,发现 optimized_float_model.onnx 和 original_float_model.onnx 的推理结果正常 calibrated_model.onnx 、 ptq_model.onnx 、 quantized_model.bc 这三个的推理结果一样,都存在问题

    2025-12-23
    0
    2
    • YCJ回复默认69600:

      您好,您的情况我的大致了解了。 calibrated_model.onnx 、 ptq_model.onnx 、 quantized_model.bc 这三个模型属于量化完成后生成的模型。 量化后精度损失较大的原因是您使用的是 fast-perf模式 ,不使用校准集进行校准的话本身就是无法保证精度的。校准集的作用在于根据您的样本数据计算出从fp32到int8的scale值。若要保证精度,建议您准备校准数据集。

      2025-12-25
      0
    • Huanghui回复默认69600:

      从流程和预期看是符合流程的,这里不一致主要的原因是量化损失,损失的原因主要两个方面:校准数据或校准流程不正确;模型结构、算子使用和数据分布异常。前者需要你检查一下流程,后者通过量化日志和DEBUG工具查找敏感算子后调试。你可以先全int16测试精度是否正常

      2025-12-25
      0
  • YCJ
    Lv.4

    您好,由于长时间未收到您的答复,相信问题已解。如对此尚存疑问欢迎新帖讨论,谢谢!

    2025-12-31
    0
    0