![](/img/trans.png)
[英]ClientError: An error occurred (InternalFailure) when calling the Publish operation (reached max retries: 4)
[英]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.