Model.get_model_path (model_name = "model") выдает ошибку: модель не найдена в кеше или в root в - PullRequest
1 голос
/ 25 марта 2020

У меня есть модель, которую я зарегистрировал с помощью конвейера:

register_step = PythonScriptStep(name = "Register Model",
                                source_directory = training_folder,
                                script_name = "register_model.py",
                                arguments = ['--model_folder', model_folder],
                                inputs=[model_folder],
                                compute_target = pipeline_cluster,
                                runconfig = pipeline_run_config,
                                allow_reuse = True)

А вот мой register_model.py:

import argparse
import joblib
from azureml.core import Workspace, Model, Run

# Get parameters
parser = argparse.ArgumentParser()
parser.add_argument('--model_folder', type=str, dest='model_folder', default="model", help='model location')
args = parser.parse_args()
model_folder = args.model_folder

# Get the experiment run context
run = Run.get_context()

# Load the model
print("Loading model from " + model_folder)
model_file = model_folder + "/model.pkl"
model = joblib.load(model_file)

Model.register(workspace=run.experiment.workspace,
               model_path = model_file,
               model_name = 'model',
               tags={'Training context':'Pipeline'})

run.complete() 

Я вижу, что модель зарегистрирована, когда il oop существующие модели, использующие следующее:

from azureml.core import Model

for model in Model.list(ws):
    print(model.name, 'version:', model.version)
    for tag_name in model.tags:
        tag = model.tags[tag_name]
        print ('\t',tag_name, ':', tag)
    for prop_name in model.properties:
        prop = model.properties[prop_name]
        print ('\t',prop_name, ':', prop)
    print('\n')

Однако, когда я пытаюсь загрузить модель в свой Score.py (ниже), чтобы развернуть модель как серв cie, я получить следующую ошибку:

Я полагаю, что именно отсюда и возникает ошибка:

model_path = Model.get_model_path(
        model_name="model", version=1)

Ошибка:

ModelNotFoundException                    Traceback (most recent call last)
/anaconda/envs/azureml_py36/lib/python3.6/site-packages/azureml/core/model.py in get_model_path(model_name, version, _workspace)
    751             try:
--> 752                 return Model._get_model_path_local(model_name, version)
    753             except ModelNotFoundException as ee:

/anaconda/envs/azureml_py36/lib/python3.6/site-packages/azureml/core/model.py in _get_model_path_local(model_name, version)
    783         if not os.path.exists(candidate_model_path):
--> 784             return Model._get_model_path_local_from_root(model_name)
    785         else:

/anaconda/envs/azureml_py36/lib/python3.6/site-packages/azureml/core/model.py in _get_model_path_local_from_root(model_name)
    826         raise ModelNotFoundException("Model not found in cache or in root at ./{}. For more info,"
--> 827                                      "set logging level to DEBUG.".format(candidate_model_path))
    828 

ModelNotFoundException: ModelNotFoundException:
    Message: Model not found in cache or in root at ./model. For more info,set logging level to DEBUG.
    InnerException None
    ErrorResponse 
{
    "error": {
        "message": "Model not found in cache or in root at ./model. For more info,set logging level to DEBUG."
    }
}

During handling of the above exception, another exception occurred:

WebserviceException                       Traceback (most recent call last)
<ipython-input-6-27e8df94d66f> in <module>
      1 model_path = Model.get_model_path(
----> 2         model_name="model", version=1)

/anaconda/envs/azureml_py36/lib/python3.6/site-packages/azureml/core/model.py in get_model_path(model_name, version, _workspace)
    756                     module_logger.debug("Getting model from remote")
    757                     return Model._get_model_path_remote(model_name, version, active_workspace)
--> 758                 raise WebserviceException(ee.message, logger=module_logger)
    759         else:
    760             if active_workspace is not None:

WebserviceException: WebserviceException:
    Message: Model not found in cache or in root at ./model. For more info,set logging level to DEBUG.
    InnerException None
    ErrorResponse 
{
    "error": {
        "message": "Model not found in cache or in root at ./model. For more info,set logging level to DEBUG."
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...