Как мне загрузить артефакт модели из встроенного контейнера AWS Sagemaker?

#python #amazon-web-services #machine-learning #amazon-sagemaker

#python #amazon-веб-сервисы #машинное обучение #amazon-sagemaker

Вопрос:

Я использую контейнер для линейного обучения от Sagemaker для обучения модели. Обучение завершено, и артефакт модели сохранен в S3. Я загружаю его, который является .tar.gz файл, в котором хранится фактический файл модели, называется model-algo-1 без расширения формата. Я пытаюсь загрузить эту модель и проверить коэффициенты модели, но не уверен, как это сделать.

Я пробовал pickle и joblib, но они не сработали. Кто-нибудь знает, как загрузить файл модели, подготовленный из встроенного контейнера Sagemaker? Или есть какой-либо другой способ проверить коэффициенты модели? Это модель логистической регрессии.

Спасибо

Комментарии:

1. Немного поздно, но мне было интересно, нашли ли вы ответ на этот вопрос

Ответ №1:

Мне удалось заставить это работать.

Из документации SageMaker есть два класса, которые можно использовать для загрузки уже развернутого Linear Learner

Вариант 1: используйте sagemaker.LinearLearnerModel для построения предиктора из S3 artificat

Согласно документации, этот класс:

«Ссылка на данные модели LinearLearner s3»

Вы можете использовать его следующим образом:

Шаг 1: Создайте модель LinearLearner, используя артефакты, размещенные на S3

 from sagemaker import LinearLearnerModel, get_execution_role, Session
import boto3
sess = boto3.Session(region_name=region_name)
sagemaker_session = Session(boto_session=sess)
role = get_execution_role(sagemaker_session)
model = LinearLearnerModel(model_data, role, sagemaker_session=sagemaker_session)
  

Шаг 2: Развертывание модели на конечной точке (в данном примере это бессерверная конечная точка)

 my_serverless_inference_config = ServerlessInferenceConfig(memory_size_in_mb=2048, max_concurrency=1)
linear_predictor = model .deploy(endpoint_name=my_endpoint_name,serverless_inference_config=my_serverless_inference_config,serializer=CSVSerializer(), deserializer=JSONDeserializer())
from sagemaker.predictor import csv_serializer, json_deserializer
linear_regressor.serializer = csv_serializer
linear_regressor.deserializer = json_deserializer
  

Шаг 3: используйте объект sagemaker.predictor, возвращаемый функцией deploy

 result = linear_predictor.predict(X_test)
#Iterate the result JSON to get an NP array of all the predictions so we can compare to Y test
predictions = np.array([res['score'] for res in result['predictions']])
  

Вариант 2. Используйте LinearLearnerPredictor для создания предиктора из уже существующей конечной точки

Вы можете использовать этот параметр, если ваша модель имеет уже развернутую конечную точку

 from sagemaker import LinearLearnerPredictor, get_execution_role, Session
import boto3
sess = boto3.Session(region_name=region_name)
sagemaker_session = Session(boto_session=sess)
role = get_execution_role(sagemaker_session)
predictor = LinearLearnerPredictor(endpoint_name, sagemaker_session=sagemaker_session)