如何在等待响应时增加 AWS Sagemaker 调用超时

Posted

技术标签:

【中文标题】如何在等待响应时增加 AWS Sagemaker 调用超时【英文标题】:How to increase AWS Sagemaker invocation time out while waiting for a response 【发布时间】:2021-01-22 13:13:57 【问题描述】:

我将一个大型 3D 模型部署到 aws sagemaker。推理需要 2 分钟或更长时间。从 Python 调用预测器时出现以下错误:

An error occurred (ModelError) when calling the InvokeEndpoint operation: Received server error (0) from model with message "Your invocation timed out while waiting for a response from container model. Review the latency metrics for each container in Amazon CloudWatch, resolve the issue, and try again."'

在 Cloud Watch 中,我还看到容器正在处理时出现一些 PING 超时:

2020-10-07T16:02:39.718+02:00 2020/10/07 14:02:39 https://forums.aws.amazon.com/ 106#106: *251 upstream timed out (110: Connection timed out) while reading response header from upstream, client: 10.32.0.2, server: , request: "GET /ping HTTP/1.1", upstream: "http://unix:/tmp/gunicorn.sock/ping", host: "model.aws.local:8080"

如何增加调用超时时间?

或者有没有办法对 sagemaker 端点进行异步调用?

【问题讨论】:

您的赏金将在几个小时后结束。我的回答够了吗?如果是这样,请考虑接受或授予赏金,否则请考虑澄清问题或就您遇到的任何问题对我的回答发表评论。 ***.com/help/bounty 【参考方案1】:

目前无法增加超时时间——这是 GitHub 中的一个未解决问题。查看有关 SO 的问题和类似问题,您似乎可以将批量转换与推理结合使用。

参考文献

https://***.com/a/55642675/806876

Sagemaker Python SDK 超时问题:https://github.com/aws/sagemaker-python-sdk/issues/1119

【讨论】:

【参考方案2】:

这个超时实际上是在服务器端指定的——具体的端点。您可以尝试bring your own container 也称为BYOC 的方式,这样您就可以完全控制端点端的所有内容,包括超时。

您还可以引用此 repo 的端点部分,它来自我的一位同事 - https://github.com/jackie930/yolov4-SageMaker

您应该更改的超时存在于serve.py model_server_timeout = os.environ.get('MODEL_SERVER_TIMEOUT', 60)

【讨论】:

我已经修改了默认的 sagemaker 容器并更改了两个超时。但是,这个超时似乎来自容器外部.. 是的,在客户端,SageMaker 运行时也有 60 的超时,并且无法更改,所以我的解决方案是在端点内部,我们让作业在 单独的进程中运行 并在作业完成之前响应调用。作业完成后,必须将结果发送回客户端。

以上是关于如何在等待响应时增加 AWS Sagemaker 调用超时的主要内容,如果未能解决你的问题,请参考以下文章

我们如何在 AWS Sagemaker 推理中添加复杂的预处理

如何将 AWS SageMaker 提供给组织外部的人员使用?

ClearML 如何在 AWS Sagemaker 中更改 clearml.conf 文件

如何在 AWS Sagemaker 中检索分段掩码中使用的标签

AWS Sagemaker Spark S3 访问问题

从 AWS SageMaker 访问 Google BigQuery