将预训练的 Tensorflow 模型部署到 sagemaker 中的一个端点(一个端点的多模型)时出错?

Error when deploying pre trained Tensorflow models to one endpoint (multimodel for one endpoint) in sagemaker?

我正在关注 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 无法知道如何处理请求。