• 如何处理使用MindSpore Lite的converter_lite工具转换模型失败的问题


    如何处理使用MindSpore Lite的converter_lite工具转换模型失败的问题

    现象描述

    使用MindSpore进行模型部署时需要首先使用MindSpore Lite的converter_lite工具进行模型转换,将*.mindir模型转换为*.ms模型。模型转换失败,日志包含CONVERT RESULT FAIL错误。

    1.converter_lite工具包括linux和windows两个版本,使用完全一致,问题案例分析中不做区分。 2.因不同版本中日志行号可能存在差异,下述示例日志报错信息中的行号信息均用”*”表示; 3.示例日志中只列出了通用信息,其他涉及具体场景的信息均用“***”表示。

    原因分析

    模型转换失败的问题需要借助日志报错信息来分析,出现该问题的可能原因及对应日志信息如下:

    • 读取原模型文件失败,日志报错信息:

      1. WARNING: Logging before InitGoogleLogging() is written to STDERR
      2. [WARNING] LITE(11979,7fbdc90a8ec0,converter_lite):2021-12-13-16:20:49.506.071 [mindspore/lite/tools/common/protobuf_utils.cc: **] ReadProtoFromBinaryFile] Parse ***.onnx failed.
      3. [ERROR] LITE(11979,7fbdc90a8ec0,converter_lite):2021-12-13-16:20:49.506.122 [mindspore/lite/build/tools/converter/parser/onnx/onnx_op_parser.cc: **] InitOriginModel] Read onnx model file failed, model path: ***.onnx
      4. [ERROR] LITE(11979,7fbdc90a8ec0,converter_lite):2021-12-13-16:20:49.506.131 [mindspore/lite/build/tools/converter/parser/onnx/onnx_op_parser.cc: **] Parse] init origin model failed.
      5. [ERROR] LITE(11979,7fbdc90a8ec0,converter_lite):2021-12-13-16:20:49.506.137 [mindspore/lite/tools/converter/converter.cc: **] BuildFuncGraph] Get funcGraph failed for fmk: ONNX
      6. [ERROR] LITE(11979,7fbdc90a8ec0,converter_lite):2021-12-13-16:20:49.506.143 [mindspore/lite/tools/converter/converter.cc: **] Convert] Parser/Import model return nullptr
      7. [ERROR] LITE(11979,7fbdc90a8ec0,converter_lite):2021-12-13-16:20:49.506.162 [mindspore/lite/tools/converter/converter.cc: **] RunConverter] CONVERT RESULT FAILED:-1 Common error code.
      8. CONVERT RESULT FAILED:-1 Common error code.
    • 存在不支持的算子,日志报错信息:

      1. [mindspore/lite/tools/converter/converter.cc:**] BuildFuncGraph] Get funcGraph failed for fmk: ****
      2. [mindspore/lite/tools/converter/converter.cc:**] Converter] Parser/Import model return nullptr
      3. [mindspore/lite/tools/converter/converter_context.h:**] PrintOps] ===========================================
      4. [mindspore/lite/tools/converter/converter_context.h:**] PrintOps] UNSUPPORTED OP LIST:
      5. [mindspore/lite/tools/converter/converter_context.h:**] PrintOps] FMKTYPE: ****, OP TYPE: ****
      6. [mindspore/lite/tools/converter/converter_context.h:**] PrintOps] ===========================================
      7. [mindspore/lite/tools/converter/converter.cc:**] RunConverter] CONVERT RESULT FAILED:-300 Failed to find operator.
    • 存在不支持的算子,日志报错信息包含:

      [mindspore/lite/tools/converter/parser/caffe/caffe_model_parser.cc:**] ConvertLayers] parse node **** failed.

    解决办法

    检查报错日志,查找是否包含上述场景中所展示的错误信息。

    步骤1:检查模型文件是否有效。

    1. 如检查发现读取原模型文件失败,则为模型路径无效或模型文件损坏。
    2. 检查模型路径无误后,若确认模型文件损坏,可以重新下载或导出原模型文件。

    步骤2:检查是否存在不支持的算子。

    1. 如检查发现Failed to find operator,则为存在不支持的算子,可以依据UNSUPPORTED OP LIST所展示内容查看具体的算子类型。
    2. 对于转换工具不支持的算子,可以尝试通过继承API接口NodeParser 自行添加parser并通过NodeParserRegistry 进行Parser注册;或者在社区提ISSUE 给MindSpore Lite开发人员处理。

    步骤3:检查是否存在算子解析与转换失败。

    1. 如检查发现parse node **** failed,则为转换工具支持该算子转换,但是不支持该算子的某种特殊属性或参数导致模型转换失败。
    2. 可以尝试通过继承API接口NodeParser 添加自定义算子parser并通过NodeParserRegistry 进行Parser注册;或者在社区提ISSUE 给MindSpore Lite开发人员处理。
  • 相关阅读:
    达梦 dameng 数据库之升级打怪数据库兼容问题记录(1)
    centos7离线时间同步
    图的遍历之深度优先搜索和广度优先搜索
    使用CMake构建一个简单的C++项目
    山东省专精特新申报条件是什么?各地市分别补贴多少钱?
    [附源码]计算机毕业设计springboot校园商铺
    Linux Cgroups
    Python语法:如何使用requirements.txt文件在Python环境中安装依赖?
    pytorch使用cuda时遇到了如下问题
    超好用R包(grafify)
  • 原文地址:https://blog.csdn.net/Kenji_Shinji/article/details/127103545