Как передать аргументы в файл скоринга при развертывании модели в AzureML - PullRequest
2 голосов
/ 11 марта 2020

Я внедряю обученную модель в конечную точку ACI на Azure Машинное обучение, используя Python SDK. Я создал свой файл Score.py, но я бы хотел, чтобы этот файл вызывался с передаваемым аргументом (как и с обучающим файлом), который я могу интерпретировать с помощью argparse. Тем не менее, я не вижу, как я могу передавать аргументы. Это код, который я должен создать среду InferenceConfig и который, очевидно, не работает. Должен ли я использовать дополнительные Docker шаги файла или около того?

from azureml.core.conda_dependencies import CondaDependencies
from azureml.core.environment import Environment
from azureml.core.model import InferenceConfig

env = Environment('my_hosted_environment')
env.python.conda_dependencies = CondaDependencies.create(
    conda_packages=['scikit-learn'],
    pip_packages=['azureml-defaults'])
scoring_script = 'score.py --model_name ' + model_name
inference_config = InferenceConfig(entry_script=scoring_script, environment=env)

Добавляем Score.py для справки о том, как я хотел бы использовать аргументы в этом сценарии:

#removed imports
import argparse

def init():
    global model

    parser = argparse.ArgumentParser(description="Load sklearn model")
    parser.add_argument('--model_name', dest="model_name", required=True)
    args, _ = parser.parse_known_args()

    model_path = Model.get_model_path(model_name=args.model_name)
    model = joblib.load(model_path)

def run(raw_data):
    try:
        data = json.loads(raw_data)['data']
        data = np.array(data)
        result = model.predict(data)
        return result.tolist()

    except Exception as e:
        result = str(e)
        return result

Интересно услышать ваши мысли

1 Ответ

0 голосов
/ 12 марта 2020

Как выполнить развертывание с использованием сред можно найти здесь model-register-and-deploy.ipynb . Класс InferenceConfig принимает source_directory и entry_script parameters , где source_directory - это путь к папке, содержащей все файлы (Score.py и любые другие дополнительные файлы) для создания изображения.

Этот multi-model-register-and-deploy.ipynb содержит фрагменты кода о том, как создать InferenceConfig с помощью source_directory и entry_script.

from azureml.core.webservice import Webservice
from azureml.core.model import InferenceConfig
from azureml.core.environment import Environment

myenv = Environment.from_conda_specification(name="myenv", file_path="myenv.yml")
inference_config = InferenceConfig(entry_script="score.py", environment=myenv)

service = Model.deploy(workspace=ws,
                       name='sklearn-mnist-svc',
                       models=[model], 
                       inference_config=inference_config,
                       deployment_config=aciconfig)

service.wait_for_deployment(show_output=True)

print(service.scoring_uri)
...