如何处理MindSpore Lite推理失败的问题
现象描述
使用MindSpore Lite进行模型部署时,转换出的*.ms模型推理失败。
原因分析
模型推理失败的问题需要借助日志报错信息来分析,出现该问题的可能原因及对应日志信息如下:
-
模型文件错误,日志报错信息:
[mindspore/lite/src/lite_model.cc:**] ConstructModel] The model buffer is invalid and fail to create graph. [mindspore/lite/src/lite_model.cc:**] ImportFromBuffer] construct model failed.
-
模型文件和推理包版本不兼容,日志报错信息:
[mindspore/lite/src/lite_model.cc:**] ConstructModel] Maybe this is a model transferred out using the conversion tool before 1.1.0. [mindspore/lite/src/lite_model.cc:**] ImportFromBuffer] construct model failed.
-
模型输入为动态shape,需指定,日志报错信息:
[mindspore/lite/src/common/tensor_util.cc:**] CheckTensorsInvalid] The shape of tensor contains negative dimension, check the model and assign the input shape with method Resize(). [mindspore/lite/src/lite_session.cc:**] RunGraph] CheckInputs failed.
解决办法
检查报错日志,查找是否包含上述场景中所展示的错误信息。
步骤1:检查模型文件是否有效。
- 确认推理使用的模型是直接通过转换工具转出的ms模型文件,若模型文件为经过传输或下载得到的,可以通过检查md5值进行校验以查看ms模型文件是否损坏。
步骤2:检查模型文件和推理框架的版本是否匹配。
- 使用和转换模型使用的转换工具版本相同的MindSpore Lite进行推理。通常情况下,MindSpore Lite推理兼容较低版本ms模型但是版本差异过大的情况下可能存在兼容性问题;同时,MindSpore Lite推理不保证向后兼容较高版本转换出的ms模型。
步骤3:检查模型输入shape是否有效。
- MindSpore Lite在对包含动态shape输入的模型推理时要求指定合理的shape,使用benchmark工具时可通过设置inputShapes 参数指定,使用MindSpore Lite集成开发时可通过调用Resize 方法设置。