如何部署先前受Amazon Sagemaker训练并存储在S3存储桶中的现有pytorch模型

时间:2020-03-04 15:08:01

标签: amazon-web-services pytorch amazon-sagemaker

我已经使用SageMaker训练了Pytorch模型,该模型现在存储在S3存储桶中。 我正在尝试检索该模型并进行部署。

这是我正在使用的代码:

estimator = sagemaker.model.FrameworkModel(
    model_data= #link to  model location in s3
    image=  # image
    role=role,
    entry_point='train.py', 
    source_dir='pytorch_source',
    sagemaker_session = sagemaker_session
) 

predictor = estimator.deploy(initial_instance_count=1, instance_type="ml.p2.xlarge")

但是在部署过程(似乎运行顺利)之后,预测变量只是一个NoneType。 我没有在日志中找到任何奇怪的消息...

我还尝试了以下代码:

estimator = PyTorchModel(model_data= #link to model location in s3 
                             role=role,
                             image= #image
                             entry_point='pytorch_source/train.py',
                            predictor_cls = 'pytorch_source/train.py',
                           framework_version = '1.1.0')

predictor = estimator.deploy(initial_instance_count=1, instance_type="ml.p2.xlarge")

但是它甚至还没有完成部署。

任何人都可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

我实际上使用PyTorchModel进行了以下设置:

estimator = PyTorchModel(model_data='#path to model, 
                             role=role,
                             source_dir='pytorch_source',
                             entry_point='deploy.py',
                            predictor_cls = ImgPredictor,
                           framework_version = '1.1.0')

ImgPredictor在哪里

from sagemaker.predictor import RealTimePredictor, json_deserializer

class ImgPredictor(RealTimePredictor):
    def __init__(self, endpoint_name, sagemaker_session):
        super(ImgPredictor, self).__init__(endpoint_name, sagemaker_session, content_type='application/x-image', 
                                           deserializer = json_deserializer ,accept='application/json')

和deploy.py包含必需的函数input_fn,output_fn,model_fn和predict_fn。 另外,源目录中缺少requirements.txt文件。