MindSpore Lite模型推理报错 LoadModelFromFileInner] Load model from file failed
收藏回复举报
MindSpore Lite模型推理报错 LoadModelFromFileInner] Load model from file failed
发表于2025-02-21 16:08:54
0 查看

1 系统环境

硬件环境(Ascend/GPU/CPU): Ascend910

MindSpore Lite版本: mindspore=2.2.0、mindspore lite=2.2.0

执行模式(PyNative/ Graph):不限

Python版本: Python=3.8

操作系统平台: Ubuntu 20.04.6 LTS

2 报错信息

2.1 问题描述

工作目录结构

.
|-- mindcv
|   |-- 1
|   |   |-- final.mindir
|   |   `-- label.txt
|   `-- servable_config.py
`-- serving_server.py

2.2 报错信息

/root/miniconda3/envs/mindspore2.2_py39/lib/python3.9/site-packages/pandas/compat/numpy/__init__.py:10: DeprecationWarning: distutils Version classes are deprecated. Use packaging.version instead.
  _nlv = LooseVersion(_np_version)
/root/miniconda3/envs/mindspore2.2_py39/lib/python3.9/site-packages/setuptools/_distutils/version.py:345: DeprecationWarning: distutils Version classes are deprecated. Use packaging.version instead.
  other = LooseVersion(other)
/root/miniconda3/envs/mindspore2.2_py39/lib/python3.9/site-packages/pandas/compat/numpy/function.py:120: DeprecationWarning: distutils Version classes are deprecated. Use packaging.version instead.
  if LooseVersion(__version__) >= LooseVersion("1.17.0"):
[WARNING] SERVING(44604:281473808879632,MainProcess):2024-12-20-09:04:44.588.023 [mindspore.py:59] MindSpore version 2.2.0 and MindSpore Serving version 2.0.2 are expected to be consistent. If not, there may be compatibility problems.
[ERROR] SERVING(44604,ffffba645010,python):2024-12-20-09:04:45.136.241 [mindspore_serving/ccsrc/worker/inference/mindspore_model_wrap.cc:221] LoadModelFromFileInner] Load model from file failed, model file: [/home/nfs/appnfs/HyperAI-Data/HyperAI-Groups/1548e8cead1b44d8/ty1/jobs/20241220-112558-0x421f/models/mindcv/1/final.mindir], device_type: 'Ascend', de...------------------------
- C++ Call Stack: (For framework developers)
----------------------------------------------------
mindspore/core/load_mindir/load_model.cc:310 CheckModelConfigureInfo

[ERROR] SERVING(44604,ffffba645010,python):2024-12-20-09:04:45.136.429 [mindspore_serving/ccsrc/worker/local_servable/local_model_loader.cc:154] LoadModel] Load model failed, servable directory: '/home/nfs/appnfs/HyperAI-Data/HyperAI-Groups/1548e8cead1b44d8/ty1/jobs/20241220-112558-0x421f/models', servable name: 'mindcv', model file: '[final.mind...------------------------
- C++ Call Stack: (For framework developers)
----------------------------------------------------
mindspore/core/load_mindir/load_model.cc:310 CheckModelConfigureInfo

[EXCEPTION] SERVING(44604,ffffba645010,python):2024-12-20-09:04:45.136.475 [mindspore_serving/ccsrc/python/worker/worker_py.cc:51] StartServable] Raise failed: Load model failed, servable directory: '/home/nfs/appnfs/HyperAI-Data/HyperAI-Groups/1548e8cead1b44d8/ty1/jobs/20241220-112558-0x421f/models', servable name: 'mindcv', model file...------------------------
- C++ Call Stack: (For framework developers)
----------------------------------------------------
mindspore/core/load_mindir/load_model.cc:310 CheckModelConfigureInfo

Traceback (most recent call last):
  File "/root/miniconda3/envs/mindspore2.2_py39/lib/python3.9/site-packages/mindspore_serving/server/start_worker.py", line 106, in <module>
    parse_args_and_start()
  File "/root/miniconda3/envs/mindspore2.2_py39/lib/python3.9/site-packages/mindspore_serving/server/start_worker.py", line 101, in parse_args_and_start
    start_worker(servable_directory, servable_name, version_number, device_type, device_id, master_address,
  File "/root/miniconda3/envs/mindspore2.2_py39/lib/python3.9/site-packages/mindspore_serving/server/start_worker.py", line 55, in start_worker
    worker.start_servable(servable_directory=servable_directory, servable_name=servable_name,
  File "/root/miniconda3/envs/mindspore2.2_py39/lib/python3.9/site-packages/mindspore_serving/server/worker/_worker.py", line 97, in handle_except
    func(*args, **kwargs)
  File "/root/miniconda3/envs/mindspore2.2_py39/lib/python3.9/site-packages/mindspore_serving/server/worker/_worker.py", line 158, in start_servable
    Worker_.start_servable(servable_directory, servable_name, version_number, master_address, worker_address,
RuntimeError: Raise failed: Load model failed, servable directory: '/home/nfs/appnfs/HyperAI-Data/HyperAI-Groups/1548e8cead1b44d8/ty1/jobs/20241220-112558-0x421f/models', servable name: 'mindcv', model file...------------------------
- C++ Call Stack: (For framework developers)
----------------------------------------------------
mindspore/core/load_mindir/load_model.cc:310 CheckModelConfigureInfo

2.3 脚本信息

serving_server.py

import os
import sys
from mindspore_serving import server

def start():
    servable_dir = os.path.dirname(os.path.realpath(sys.argv[0]))
    servable_config = server.ServableStartConfig(servable_directory=servable_dir, servable_name="mindcv", device_ids=(0,))
    server.start_servables(servable_configs=servable_config)
    server.start_grpc_server(address="127.0.0.1:5500")
    server.start_restful_server(address="127.0.0.1:1500")

if __name__ == "__main__":
    start()

servable_config.py

import os.path
import numpy as np
import mindspore.dataset.vision.c_transforms as VC
from mindspore_serving.server import register
from easydict import EasyDict as ed
import os

# from pathlib import Path
# work_dir = os.getcwd()

label_dir = r'mindcv'
list_dir =os.listdir(label_dir)
# list_dir = [i for i in list_dir if i != '__pycache__']
list_dir = [i for i in list_dir if i not in ('__pycache__', '.cache')]
new_list_dir = []
for file_dir in list_dir:
    path_file = os.path.join(label_dir,file_dir)
    if os.path.isdir(path_file):
        new_list_dir.append(file_dir)

new_list_dir.sort(key= lambda x:int(x))
path_v = os.path.join(label_dir,new_list_dir[-1])
label_path = os.path.join(path_v,'label.txt')

def get_class_num(names_file):
    with open(names_file, 'r') as f:
        names = f.readlines()
        names = [name.strip('\n') for name in names]
        return names

class_num = get_class_num(label_path)
params_config = ed({
    "image_size":244,
})

def preprocess_eager(image):
    """
    Define preprocess, input is image numpy, return preprocess result.
    Return type can be numpy, str, bytes, int, float, or bool.
    Use MindData Eager, this image processing can also use other image processing library, likes numpy, PIL or cv2 etc.
    """
    image_size = params_config.image_size
    mean = [0.485 * 255, 0.456 * 255, 0.406 * 255]
    std = [0.229 * 255, 0.224 * 255, 0.225 * 255]

    decode = VC.Decode()
    resize = VC.Resize([image_size,image_size])
    normalize = VC.Normalize(mean=mean, std=std)
    hwc2chw = VC.HWC2CHW()

    image = decode(image)
    image = resize(image)
    image = normalize(image)
    image = hwc2chw(image)
    return image

def postprocess_top1(score):
    """
    Define postprocess. This example has one input and one output.
    The input is the numpy tensor of the score, and the output is the label str of top one.
    """
    max_idx = np.argmax(score)
    return class_num[max_idx]
    # return max_idx

model = register.declare_model(model_file="final.mindir", model_format="MINDIR",with_batch_dim=True,without_batch_dim_inputs=1)

@register.register_method(output_names=["label"])
def detect(image):
    """Define method `classify_top1_v1` for servable `resnet50`.
     The input is `image` and the output is `label`. """
    x = register.add_stage(preprocess_eager, image,outputs_count=1)
    x = register.add_stage(model,x,outputs_count=1)
    label = register.add_stage(postprocess_top1, x,outputs_count=1)
    return label

3 根因分析

******此处由用户填写******

4 解决方案

******此处由用户填写******

包含文字方案和最终脚本代码

请将正确的脚本打包并上传附件

我要发帖子