我有一个量化分类模型。我使用命令将其转换为 NPU tflite 模型
./neutron-converter \
--输入 QAT.tflite \
--输出 QAT_NPU.tflite \
--target imxrt700 \
--dump-header-file-output \
--dump-header-file-input \
--使用序列器
之后,我使用了 2 个生成的模型头文件,分别用于 NPU 和 CPU。
我使用了针对我们模型修改过的示例 tflm_cifar10_cm33_core0。我使用了示例 image_data.h(已将图像调整大小以适应模型输入尺寸)。但是两个模型(在 CPU 和 NPU 模式下)的最终结果却不同:
- 在大多数情况下,预测的类别相同,概率也相似(数值不完全匹配)。
- 在某些情况下,两种模式下的预测类别不同 ==>您对此问题有什么看法?抱歉,我无法分享我的模型。
我尝试使用示例tflm_cifar10_cm33_core0来验证这个问题。但在这个示例中,只有 NPU tflite 模型,我没有看到另一个(CPU tflite 模型)。我想用不同的图像比较预测结果,看看这个问题是否也出现在 NXP 预训练的模型中。
如果您有 CPU tflite 型号(对应 NPU tflite 型号tflm_cifar10_cm33_core0),请与我分享。
我很好奇从 tflite 模型转换为 NPU tflite 模型是否会导致推理结果的差异。
谢谢!
@mayliu1你好,请问你能帮我解决这个问题吗?
抱歉,我觉得 NXP 在 i.MX RT 的支持者人数较少,所以有时会错过一些问题。之前我用过 MIMXRT1060 和 N947,响应速度非常快。
嗨@nnxxpp ,
预计在模型转换过程之后,输出值会略有不同,这是因为 Neutron Converter 将模型重组为 NeutronGraph 节点以进行 NPU 执行,而不是像在基于 CPU 的 TFLM 上那样按运算符执行原始图。
也就是说,如果输出结果差异过大,导致预测错误类别的情况过多,则需要检查以下事项:运行时使用的 Neutron 转换器版本和 Neutron 库版本,以确保软件匹配;NPU 使用的内存配置;以及检查转换后的节点,以确保整个模型都已正确转换,而不是仅部分转换。
BR,
埃德温。
嗨@nnxxpp ,
感谢您分享反馈意见。
您的案件目前由我的同事埃德温负责跟进,他正在积极处理。调查仍在进行中,敬请您耐心等待。埃德温将继续跟进此事,并随时向您通报进展情况。
感谢您的理解。
顺祝商祺!
5月
哦,听到你这么说我非常高兴。非常感谢您的支持。我会等你带来好消息。
非常感谢您的支持。
是的。我知道这是预期之内的,所以在这种情况下,我需要评估板载 NPU tflite(不是 tflite 模型)以了解确切的性能。谢谢。