调用InvokeEndpoint操作时发生错误(InternalFailure):向模型发送请求时发生异常

2024-10-02 18:23:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试托管我在AWS Sagemaker端点上本地培训过的XGBoost模型,但在调用端点时收到以下错误:

An error occurred (InternalFailure) when calling the InvokeEndpoint operation (reached max retries: 4): An exception occurred while sending request to model. Please contact customer support regarding request.

模型在本地按预期工作,在上传到S3之前,我使用以下方法保存它:

model.fit(args)
model.save_model(model_save_loc)
model_tar_loc = model_save_loc + '.tar.gz'
!tar czvf $model_tar_loc $model_save_loc

我通过MultiDataModel功能托管模型

container = retrieve("xgboost", region, "1.3-1")
mme = MultiDataModel(
    name=model_name,
    role=role,
    model_data_prefix=model_data_prefix,
    image_uri=container,
    sagemaker_session=sagemaker_session,
)

predictor = mme.deploy(
    initial_instance_count=1, instance_type=instance_type, endpoint_name=model_name,     
)

MultiDataModel部署按预期工作,没有错误,如果我这样做:

list(mme.list_models())

它返回预期的模型列表:

model_1.tar.gz
model_2.tar.gz
etc..

我使用以下方法调用模型:

runtime_client = boto3.client("runtime.sagemaker")

response = runtime_client.invoke_endpoint(
    EndpointName="model_name", ContentType="text/csv", Body=payload, TargetModel='model_1.tar.gz'
)
result = response["Body"].read().decode("ascii")

我已经尝试过各种创建有效负载的方法,但是没有一种方法可以改变错误消息

本地XGBoost模型使用XGBoost版本1.3.1(与Docker版本相同)进行培训

CloudWatch仅提供以下功能:

2021-06-26 10:48:36,865 [INFO ] pool-1-thread-1 ACCESS_LOG - /10.32.0.2:37106 "GET /ping HTTP/1.1" 200 0

根据错误建议,无法通过基本计划联系客户支持


Tags: 方法instancename模型modelsave错误tar
1条回答
网友
1楼 · 发布于 2024-10-02 18:23:20

我解决了这个问题,尝试单独托管每个端点,而不是使用MultiDataModel,后者在CloudWatch中提供了更详细的日志错误

对我来说,错误在于我的模型保存为:

型号-1.tar.gz->;型号/型号-1

默认情况下,XGBoost容器将搜索“model-1-tar.gz”文件夹中的文件(解压后),同时在子文件夹中找到我的模型。将其提升到一个级别解决了问题

相关问题 更多 >