繁体   English   中英

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

[英]An error occurred (InternalFailure) when calling the InvokeEndpoint operation: An exception occurred while sending request to model

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

调用 InvokeEndpoint 操作时发生错误 (InternalFailure)(达到最大重试次数:4):向模型发送请求时发生异常。 有关请求,请联系客户支持。

该模型在本地按预期工作,我在上传到 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

根据错误提示,无法通过基本计划联系客户支持。

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

对我来说,错误是我的模型被保存为:

模型-1.tar.gz -> 模型/模型-1

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

暂无
暂无

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

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