我遵循aws https://github.com/aws-samples/sagemaker-multi-model-endpoint-tensorflow-computer-vision/blob/main/multi-model-endpoint-tensorflow-cv.ipynb的这个例子使用两个预训练模型(在sagemaker之外训练)应用相同的工作流。
但是当我执行以下操作时,日志显示找不到模型:
import boto3
import datetime
from datetime import datetime
import time
import sagemaker
from sagemaker import get_execution_role
from sagemaker.tensorflow.serving import TensorFlowModel
from sagemaker.multidatamodel import MultiDataModel
model_data_prefix = f's3://{BUCKET}/{PREFIX}/mme/'
output = f's3://{BUCKET}/{PREFIX}/mme/test.tar.gz'
modele = TensorFlowModel(model_data=output,
role=role,
image_uri=IMAGE_URI)
mme = MultiDataModel(name=f'mme-tensorflow-{current_time}',
model_data_prefix=model_data_prefix,
model=modele,
sagemaker_session=sagemaker_session)
predictor = mme.deploy(initial_instance_count=1,
instance_type='ml.m5.2xlarge',
endpoint_name=f'mme-tensorflow-{current_time}')
当我给出一个图像作为输入来预测时,我有这样的消息:
ModelError: An error occurred (ModelError) when calling the InvokeEndpoint operation: Received server error (500) from model with message "<html>
<head>
<title>Internal Server Error</title>
</head>
<body>
<h1><p>Internal Server Error</p></h1>
</body>
</html>
".
日志给:
Could not find base path /opt/ml/models/.../model for servable ...
我错过了什么?
在示例笔记本中,模型是在SageMaker中训练的。因此,它是用某些环境变量创建的,例如"SAGEMAKER_PROGRAM"(我认为,需要检查文档),并将值设置为入口点脚本。
但是,当您使用在SageMaker之外训练的模型创建模型时,您需要添加这些环境变量。
如果没有入口点脚本,SageMaker就不知道该如何处理请求。
SageMaker支持在使用NVIDIA Triton推理服务器的gpu上部署多个深度学习模型。您可以使用triton模型配置和模型存储库将在SageMaker外部训练的模型和SageMaker MME一起部署。参考文档、示例和博客来开始