Я обучил модель семантической сегментации с помощью sagemaker, и результаты были сохранены в корзине s3. Я хочу загрузить эту модель из s3, чтобы предсказать некоторые изображения в sagemaker.
Я знаю, как предсказать, оставлю ли я экземпляр ноутбука работающим после обучения, так как это простое развертывание, но на самом деле это не поможет, если я хочу использовать более старую модель.
Я просмотрел эти источники и смог сам кое-что придумать, но это не работает, поэтому я здесь:
https://course.fast.ai/deployment_amzn_sagemaker.html#deploy-to-sagemakerhttps://aws.amazon.com/getting-started/tutorials/build-train-deploy-machine-learning-model-sagemaker/
https://sagemaker.readthedocs.io/en/stable/pipeline.html
Мой код таков:
from sagemaker.pipeline import PipelineModel
from sagemaker.model import Model
s3_model_bucket = 'bucket'
s3_model_key_prefix = 'prefix'
data = 's3://{}/{}/{}'.format(s3_model_bucket, s3_model_key_prefix, 'model.tar.gz')
models = ss_model.create_model() # ss_model is my sagemaker.estimator
model = PipelineModel(name=data, role=role, models= [models])
ss_predictor = model.deploy(initial_instance_count=1, instance_type='ml.c4.xlarge')
На самом деле вы можете создать экземпляр объекта Python SDK model
из существующих артефактов и развернуть его в конечной точке. Это позволяет развернуть модель из обученных артефактов без повторного обучения в блокноте. Например, для модели семантической сегментации:
trainedmodel = sagemaker.model.Model(
model_data='s3://...model path here../model.tar.gz',
image='685385470294.dkr.ecr.eu-west-1.amazonaws.com/semantic-segmentation:latest', # example path for the semantic segmentation in eu-west-1
role=role) # your role here; could be different name
trainedmodel.deploy(initial_instance_count=1, instance_type='ml.c4.xlarge')
Точно так же вы можете создать экземпляр объекта-предиктора на развернутой конечной точке из любого аутентифицированного клиента, поддерживающего SDK, с помощью следующей команды:
predictor = sagemaker.predictor.RealTimePredictor(
endpoint='endpoint name here',
content_type='image/jpeg',
accept='image/png')
Подробнее об этих абстракциях:
Model
: https://sagemaker.readthedocs.io/en/stable/model.htmlPredictor
:
https://sagemaker.readthedocs.io/en/stable/predictors.htmlПриятно! если это решило проблему, не могли бы вы принять ответ, чтобы другие люди могли его повторно использовать? большое спасибо за использование SageMaker и StackOverflow
input_features_data — это фрейм данных
import sagemaker
from sagemaker.predictor import csv_serializer, json_deserializer
predictor = sagemaker.predictor.RealTimePredictor(
endpoint= PREDICTOR_ENDPOINT_NAME,
sagemaker_session=sagemaker.Session(),
serializer=csv_serializer,
deserializer=json_deserializer,
content_type='text/csv',
)
test_batch_size = 5
num_batches = -(-len(input_features_data) // test_batch_size)
count=0
predicted_values = []
for i in range(num_batches):
predicted_values += [predictor.predict(x) for x in
input_features_data[i * test_batch_size:(i + 1) * test_batch_size]]
return np.asarray(predicted_values)
Спасибо большое. Это было именно то, что я пытался сделать.