我正在尝试托管我在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
根据错误建议,无法通过基本计划联系客户支持
我解决了这个问题,尝试单独托管每个端点,而不是使用MultiDataModel,后者在CloudWatch中提供了更详细的日志错误
对我来说,错误在于我的模型保存为:
型号-1.tar.gz->;型号/型号-1
默认情况下,XGBoost容器将搜索“model-1-tar.gz”文件夹中的文件(解压后),同时在子文件夹中找到我的模型。将其提升到一个级别解决了问题
相关问题 更多 >
编程相关推荐