Используйте сценарий пользовательской оценки для развертывания REST API
Шаги
- Создайте автоматизированный запуск машинного обучения
- Теперь перейдите к лучшей модели
- Перейдите к выходным данным/журналам, выберите выходные данные и загрузите model.pkl.
- Загрузите также файл партитуры
- Отредактируйте файл партитуры
# --------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. # --------------------------------------------------------- import json import logging import os import pickle import numpy as np import pandas as pd import joblib
import azureml.automl.core from azureml.automl.core.shared import logging_utilities, log_server from azureml.telemetry import INSTRUMENTATION_KEY
from inference_schema.schema_decorators import input_schema, output_schema from inference_schema.parameter_types.numpy_parameter_type import NumpyParameterType from inference_schema.parameter_types.pandas_parameter_type import PandasParameterType from inference_schema.parameter_types.standard_py_parameter_type import StandardPythonParameterType
data_sample = PandasParameterType(pd.DataFrame({"PassengerId": pd.Series([0], dtype="int64"), "Pclass": pd.Series([0], dtype="int64"), "Name": pd.Series(["example_value"], dtype="object"), "Sex": pd.Series(["example_value"], dtype="object"), "Age": pd.Series([0.0], dtype="float64"), "SibSp": pd.Series([0], dtype="int64"), "Parch": pd.Series([0], dtype="int64"), "Ticket": pd.Series(["example_value"], dtype="object"), "Fare": pd.Series([0.0], dtype="float64"), "Cabin": pd.Series(["example_value"], dtype="object"), "Embarked": pd.Series(["example_value"], dtype="object")})) input_sample = StandardPythonParameterType({'data': data_sample})
result_sample = NumpyParameterType(np.array([0])) output_sample = StandardPythonParameterType({'Results':result_sample})
try: log_server.enable_telemetry(INSTRUMENTATION_KEY) log_server.set_verbosity('INFO') logger = logging.getLogger('azureml.automl.core.scoring_script_v2') except: pass
def init(): global model # This name is model.id of model that we want to deploy deserialize the model file back # into a sklearn model model_path = os.path.join(os.getenv('AZUREML_MODEL_DIR'), 'model.pkl') path = os.path.normpath(model_path) path_split = path.split(os.sep) log_server.update_custom_dimensions({'model_name': path_split[-3], 'model_version': path_split[-2]}) try: logger.info("Loading model from path.") model = joblib.load(model_path) logger.info("Loading successful.") except Exception as e: logging_utilities.log_traceback(e, logger) raise
@input_schema('Inputs', input_sample) @output_schema(output_sample) def run(Inputs): data = Inputs['data'] result = model.predict_proba(data) return result.tolist()
- Теперь, если вы хотите провести ручное тестирование в блокноте Jupyter
- загрузите файл model.pkl в папку jupyterlab
- Создайте образец файла titanic4.json и добавьте его содержимое ниже.
[{"PassengerId":"1","Pclass":"3","Name":"Braund Mr. Owen Harris","Sex":"male","Age":"40","SibSp":"1","Parch":"0","Ticket":"A/5 21171","Fare":"7.25","Cabin":"c","Embarked":"S"},
{"PassengerId":"1","Pclass":"3","Name":"Braund Mr. Owen Harris","Sex":"female","Age":"40","SibSp":"1","Parch":"0","Ticket":"A/5 21171","Fare":"7.25","Cabin":"c","Embarked":"S"},
{"PassengerId":"1","Pclass":"3","Name":"Braund Mr. Owen Harris","Sex":"male","Age":"40","SibSp":"1","Parch":"0","Ticket":"A/5 21171","Fare":"7.25","Cabin":"c","Embarked":"S"},
{"PassengerId":"1","Pclass":"3","Name":"Braund Mr. Owen Harris","Sex":"female","Age":"40","SibSp":"1","Parch":"0","Ticket":"A/5 21171","Fare":"7.25","Cabin":"c","Embarked":"S"},
{"PassengerId":"1","Pclass":"3","Name":"Braund Mr. Owen Harris","Sex":"male","Age":"40","SibSp":"1","Parch":"0","Ticket":"A/5 21171","Fare":"7.25","Cabin":"c","Embarked":"S"}]
пакетная или ручная оценка
- создать новый блокнот
import json import logging import os import pickle import numpy as np import pandas as pd import joblib
import azureml.automl.core from azureml.automl.core.shared import logging_utilities, log_server from azureml.telemetry import INSTRUMENTATION_KEY
- Загрузите модель
model = joblib.load('model.pkl')
- загрузите файл данных json titanic4.json в каталог jupyterlab
import pandas as pd
data = pd.read_json ('titanic4.json')
- Предсказать результат
result = model.predict_proba(data)
- Теперь преобразуйте данные в массив
df = data.to_numpy()
- Теперь отобразите все вероятности
for i in range(len(df)):
print("X=%s, Predicted=%s" % (df[i], result[i]))
Развертывание RESP API
- Создание кластера аксов
- Требуется минимум 12 ядер
- Разверните автоматическую модель машинного обучения с настраиваемой конфигурацией
- Среда оценки и файл оценки доступны в папке RESTscoreFiles.
- Разверните остальную службу
- Займет несколько минут
- После успешного развертывания протестируйте службы.
- Пример данных
PassengerId,Pclass,Name,Sex,Age,SibSp,Parch,Ticket,Fare,Cabin,Embarked
1,3,Braund Mr. Owen Harris,male,22,1,0,A/5 21171,7.25,null,S
- на изображении ниже должны быть показаны вероятности
Оригинал статьи — Samples2021/probscore.md на главной · balakreshnan/Samples2021 (github.com)