S3 читать Sagemaker обученную модель

Используя Amazon Sagemaker, я создал модель Xgboost. После распаковки получившегося файла tar.gz я получаю файл "xgboost-model".

Следующим шагом будет загрузка модели непосредственно из моей корзины S3, без загрузки ее с помощью pickle. Вот что я попробовал:

obj = client.get_object(Bucket='...',Key='xgboost-model')

xgb_model = pkl.load(open((obj['Body'].read())),"rb")

Но это выдает мне ошибку:

TypeError: embedded NUL character

Также попробовал это:

xgb_model = pkl.loads(open((obj['Body'].read())),"rb")

результат был тот же.

Другой подход:

bucket='...'
key='xgboost-model'

with s3io.open('s3://{0}/{1}'.format(bucket, key),mode='w') as s3_file:
  pkl.dump(mdl, s3_file)

Это дает ошибку:

CertificateError: hostname bucket doesn't match either of '*.s3.amazonaws.com', 's3.amazonaws.com'

Это, хотя ведро то же самое.

Как я могу загрузить модель в объект маринования, чтобы затем использовать ее для прогнозов?

1 ответ

Решение

Я предполагаю, что вы обучили модель, используя встроенный алгоритм Sagemaker XGBoost. Вы хотели бы использовать эту модель и делать прогнозы в своей собственной среде хостинга (не хостинг Sagemaker).

pickle.load(file) читает маринованный объект из открытого файла объекта файла и pickle.loads(bytes_object) читает выбранный объект из объекта байтов и возвращает десериализованный объект. Поскольку объект S3 уже загружен (в память) в виде байтов, вы можете использовать pickle.loads без использования open

xgb_model = pkl.loads(obj['Body'].read())

Если вы обучили модель с помощью встроенного алгоритма SageMaker XGBoost в какой-то момент и хотели бы использовать эту модель для прогнозирования в среде Sagemaker на более позднем этапе, вы используете метод "прикрепления" оценщика.

Сразу после установки XGBoost вы можете использовать

model_job_name = xgb_model._current_job_name

для определения названия учебного задания. В качестве альтернативы вы можете перейти в раздел "работа по обучению" на панели инструментов SageMaker и найти название выполняемой вами работы:панель задач по обучению.

Позже, когда вы захотите повторно использовать модель, вы сделаете:

import sagemaker
reloaded_xgb_model = sagemaker.estimator.Estimator.attach(model_job_name)
Другие вопросы по тегам