[英]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.