如何排查我的 Amazon SageMaker 端点的延迟问题?

上次更新日期:2022 年 10 月 14 日

我在调用我的 Amazon SageMaker 端点时遇到了长时间的延迟。

简短描述

您可以使用 Amazon CloudWatch 监控为单一模型提供服务的 SageMaker 端点的延迟指标 ModelLatencyOverheadLatency

  • ModelLatency 是 SageMaker 所查看的模型响应推理请求所用的时间。该持续时间包括发送请求和获取响应所需的本地通信时间,以及在模型容器内完成推理所用的时间。
  • OverheadLatency 是使用 SageMaker 开销响应调用请求所用的时间。此时间的计算方式是:从 SageMaker 收到请求到返回响应的时间,再减去 ModelLatency

当您使用 SageMaker 多模型端点时,CloudWatch 中提供了以下额外指标:

  • ModelLoadingWaitTime 是调用请求在执行推理之前等待目标模型下载或加载的时间。
  • ModelDownloadingTime 是从 Amazon Simple Storage Service(Amazon S3)下载模型所用的时间。
  • ModelLoadingTime 是从容器加载模型所用的时间。
  • ModelCacheHit 是发送到已加载模型的端点的 InvokeEndpoint 请求数量。

多模型端点会在模型的整个生命周期内加载和卸载模型。您可以使用在 CloudWatch 中发布的 LoadedModelCount 指标来查看端点的已加载模型数量。

解决方法

高 ModelLatency

ModelLatency 是 SageMaker 向模型容器发送调用请求,然后收到结果所用的时间。这意味着您可以通过采取以下措施来减少这种延迟:

  • 在 SageMaker 端点之外对模型进行基准测试以测试性能。
  • 如果您的模型受到 SageMaker Neo 的支持,可以对模型进行编译。SageMaker Neo 可将模型的运行速度优化到两倍,同时所占用的内存不到十分之一,也不会对准确性造成任何影响。
  • 如果您的模型受到 AWS Inferentia 的支持,您可以为 Inferentia 编译模型,与基于 AWS GPU 的实例相比,该模型可提供多三倍的吞吐量,并将每次推理的成本降低多达 45%。
  • 如果您使用的是 CPU 实例,并且该模型支持 GPU 加速,则可以使用 GPU 实例或 Amazon Elastic Inference 为实例添加 GPU 加速。
    注意:推理代码可能会影响模型延迟,具体取决于代码处理推理的方式。代码中的任何延迟都会增加延迟。
  • 如果端点被过度使用,可能会导致更高的模型延迟。您可以向端点添加 Auto Scaling,以动态增加和减少实例的可用实例数量。

高 OverheadLatency

OverheadLatency 是 SageMaker 响应请求所用的时间,不包括 ModelLatency。多种因素可能会增加 OverheadLatency。这些因素包括请求和响应的有效负载大小、请求频率,以及请求的身份验证或授权。

由于冷启动,端点的首次调用可能会增加延迟。第一次调用请求会遇到这种情况。为避免此问题,您可以向端点发送测试请求,对其进行预热。请注意,不频繁的请求也可能会导致 OverheadLatency 增加。


这篇文章对您有帮助吗?


您是否需要账单或技术支持?