繁体   English   中英

贤者推理:如何加载model

[英]Sagemaker inference : how to load model

我已经在 sagemaker 上训练了一个 BERT model,现在我想让它准备好进行预测,即推理。

我已经使用 pytorch 来训练 model 和 model 在训练后保存到 s3 桶。

这是 model.tar.gz 文件中的结构,它存在于 s3 存储桶中。

模型

现在,我不明白如何对其进行预测。 我尝试遵循许多指南,但仍然无法理解。

这是我尝试过的东西:

inference_image_uri = sagemaker.image_uris.retrieve(
    framework='pytorch',
    version='1.7.1',
    instance_type=inference_instance_type,
    region=aws_region,
    py_version='py3',
    image_scope='inference'
)

sm.create_model(
    ModelName=model_name,
    ExecutionRoleArn=role,
    PrimaryContainer={
        'ModelDataUrl': model_s3_dir,
        'Image': inference_image_uri 
    }
)

sm.create_endpoint_config(
    EndpointConfigName=endpoint_config_name,
    ProductionVariants=[
        {
            "VariantName": "variant1", # The name of the production variant.
            "ModelName": model_name, 
            "InstanceType": inference_instance_type, # Specify the compute instance type.
            "InitialInstanceCount": 1 # Number of instances to launch initially.
        }
    ]
)

sm.create_endpoint(
    EndpointName=endpoint_name, 
    EndpointConfigName=endpoint_config_name
)

from sagemaker.predictor import Predictor
from sagemaker.serializers import JSONLinesSerializer
from sagemaker.deserializers import JSONLinesDeserializer

inputs = [
    {"inputs": ["I have a question  [EOT]  Hey Manish Mittal ! I'm OneAssist bot. I'm here to answer your queries. [SEP] thanks"]},
#     {"features": ["OK, but not great."]},
#     {"features": ["This is not the right product."]},
]


predictor = Predictor(
    endpoint_name=endpoint_name, 
    serializer=JSONLinesSerializer(), 
    deserializer=JSONLinesDeserializer(),
    sagemaker_session=sess
)

predicted_classes = predictor.predict(inputs)

for predicted_class in predicted_classes:
    print("Predicted class {} with probability {}".format(predicted_class['predicted_label'], predicted_class['probability']))
    

我可以看到创建的端点,但在预测时,它给我错误:

ModelError:调用 InvokeEndpoint 操作时发生错误 (ModelError):从主服务器收到服务器错误 (0),消息为“您的调用在等待来自主容器的响应时超时。查看 Amazon CloudWatch 中每个容器的延迟指标,解决问题,然后重试。”

我不明白如何让它工作,而且,我是否需要为推理提供任何入口脚本,如果是的话,在哪里。

这是有关部署 PyTorch 模型的详细文档 - https://sagemaker.readthedocs.io/en/stable/frameworks/pytorch/using_pytorch.html#deploy-pytorch-models

如果您使用估算器提供的默认model_fn ,则需要将 model 作为model.pt

要编写您自己的推理脚本并部署 model,请参阅自带 model部分。 pytorch_model.deploy function 会将其部署到实时端点,然后您可以在生成的端点变量上使用predictor.predict function。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM