当我创建或更新端点时,为什么我的 Amazon SageMaker 端点会进入失败状态?

1 分钟阅读
0

我想排查我的 Amazon SageMaker 端点的创建或更新失败的原因。

解决方法

当您的 SageMaker 端点创建或更新失败时,SageMaker 会提供失败的原因。使用以下任一选项来查看此原因:

  • 在 SageMaker 控制台中检查端点。控制台中报告了失败的原因。
  • 运行 AWS 命令行界面(AWS CLI)命令 describe-endpoint。检查 FailureReason 字段以了解失败的原因。

**注意:**如果在运行 AWS CLI 命令时收到错误,请确保您使用的是最新版本的 AWS CLI

以下是一些故障原因及其解决方法。

由于 InsufficientInstanceCapacity 错误,无法预置请求的 ML 计算容量

当您尝试创建端点时,可能会收到以下错误:

Unable to provision requested ML compute capacity due to InsufficientInstanceCapacity error

当 AWS 没有足够的容量为您的端点预置请求的实例时,就会出现此错误。

您可以尝试以下一种或多种方法来解决此错误:

  • 请等待几分钟,然后重试,因为容量可能会频繁转移。
  • 如果您为端点使用多个实例,请尝试使用较少数量的实例创建端点。如果您配置了 Auto Scaling,SageMaker 可以在需要和容量允许的情况下纵向扩展或缩减。
  • 尝试支持您的工作负载的其他实例类型。创建端点后,使用所需的实例类型更新该端点。由于 SageMaker 使用蓝绿部署方法来最大限度地提高可用性,您可以在不影响当前生产工作负载的情况下过渡到新的实例类型。

用于生产变体 <variant> 的容器未通过 ping 运行状况检查。请查看此端点的 CloudWatch 日志。

用于 SageMaker 端点的容器必须实现响应 /invocations/ping 端点的 Web 服务器。创建端点时,SageMaker 会在容器启动后开始定期向 /ping 端点发送 GET 请求。

容器至少必须使用 HTTP 200 OK 状态码和空主体进行响应,以表明容器已准备好接受推理请求。如果 SageMaker 在容器启动后的四分钟内没有从容器获得一致的响应,就会出现此错误。SageMaker 不认为该端点运行状况良好,因为该端点不响应运行状况检查。因此,该端点被标记为 Failed(失败)。

当您使用其中一个 AWS 深度学习容器映像时,运行状况检查也可能会失败。这些图像使用 TorchServe 或多模型服务器,为实现用于推理和运行状况检查的 HTTP 端点的模型提供服务。在通过 200 OK 响应来响应 SageMaker 之前,这些框架会检查模型是否已加载。如果服务器无法看到模型已加载,则运行状况检查失败。模型可能由于多种原因而无法加载,包括内存使用情况。相应的错误消息将记录到端点的 Amazon CloudWatch 日志中。如果加载到端点的代码导致了故障(例如 PyTorchmodel_fn),则错误会记录到 AWS CloudTrail 中。要增加这些日志的详细程度,请使用 Python 日志记录的日志级别更新模型的 SAGEMAKER_CONTAINER_LOG_LEVEL 环境变量。

运行状况检查请求必须在两秒钟内收到响应才能成功。请务必在本地启动模型容器并向容器发送 GET 请求以检查响应前,测试响应。

未能提取容器的模型数据存档

SageMaker 需要一个包含模型数据的 TAR 文件用于您的端点。SageMaker 下载 TAR 文件后,将提取数据存档。如果 SageMaker 无法提取此数据存档,则可能会出现此错误。例如,如果模型构件包含位于 TAR 文件中的文件的符号链接,则 SageMaker 无法提取数据存档。

创建端点时,请确保模型构件在 TAR 文件中不包含符号链接。要检查 TAR 文件是否包含符号链接,请提取模型数据,然后在构件内运行以下命令:

find . -type l -ls

此命令会返回在当前目录及其任何子目录中搜索后找到的所有符号链接。将返回的任何链接替换为文件的实际副本。

CannotStartContainerError

当 SageMaker 无法启动容器以准备推理容器时,就会出现此错误。

当 SageMaker 启动端点时,您的容器将使用以下命令启动:

docker run <image-id> serve

运行此命令时,您的容器必须启动服务进程。

要解决此错误,请使用 SageMaker Python 软件开发工具包的本地模式。或者,尝试使用 docker run 命令运行推理镜像。SageMaker Python 软件开发工具包加载您的模型时类似于 SageMaker 端点。但是,除非您配置命令或容器来加载模型,否则 Docker 不会加载模型。您可以使用与以下类似的命令在本地加载模型:

docker run -v $(pwd)/test_dir:/opt/ml -p 8080:8080 --rm ${image} serve

AWS 官方
AWS 官方已更新 1 年前