纠正 Inference Recommender 错误 - Amazon SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

纠正 Inference Recommender 错误

此部分包含的信息介绍如何了解和预防常见错误,这些错误所生成的错误消息,以及如何解决这些错误的指南。

如何进行问题排查

您可以尝试执行以下步骤来纠正错误:

  • 检查您是否已满足使用 Inference Recommender 的所有先决条件。请参阅 Inference Recommender 先决条件

  • 检查您是否能将模型从模型注册表部署到端点,以及它是否能处理您的负载而不出错。请参阅从注册表部署模型

  • 启动 Inference Recommender 作业时,您将在控制台中看到正在创建端点,并且您可以查看 CloudWatch 日志。

常见错误

查看下表,了解常见的 Inference Recommender 错误及其解决方法。

错误 解决方案

在模型包版本 1 中指定 DomainDomain 是作业的必需参数。

请务必提供机器学习域或 OTHER(如果未知)。

无法假定所提供的角色 ARN,并出现 AWSSecurityTokenServiceException 错误。

确保提供的执行角色具有先决条件中指定的必要权限。

在模型包版本 1 中指定 FrameworkFramework 是作业的必需参数。

请务必提供机器学习框架或 OTHER(如果未知)。

上一阶段结束时的用户为 0,而当前阶段的初始用户为 1。

此处的用户是指用于发送请求的虚拟用户或线程。每个阶段以 A 用户开始,以 B 用户结束,并且 B > A。在连续阶段 x_1 和 x_2 之间,我们要求 abs(x_2.A - x_1.B) <= 3 且 >= 0。

总流量持续时间(跨越)不应超过作业持续时间。

您所有阶段的总持续时间不能超过作业持续时间。

不允许使用可突增实例类型 ml.t2.medium。

Inference Recommender 不支持在 t2 实例系列上进行负载测试,因为可突增实例无法提供一致的性能。

调用 CreateEndpoint 操作时出现 ResourceLimitExceeded

您已超过 SageMaker 资源限制。例如,如果账户已达到端点限额,Inference Recommender 可能无法预置端点来进行基准测试。有关 SageMaker 限制和限额的更多信息,请参阅 Amazon SageMaker 端点和限额

调用 InvokeEndpoint 操作时出现 ModelError

导致出现模型错误的原因如下:

  • 等待来自模型容器的响应时发生调用超时。

  • 模型无法处理输入负载。

调用 InvokeEndpoint 操作时出现 PayloadError

导致出现负载错误的原因如下:

  • 负载源不在 Amazon S3 存储桶中。

  • 负载采用非文件对象格式。

  • 负载的文件类型无效。例如,模型需要图像类型的有效载荷,但传递的是文本文件。

  • 负载为空。

查看 CloudWatch

启动 Inference Recommender 作业时,您将在控制台中看到正在创建端点。选择其中一个端点并查看 CloudWatch 日志以监控任何 4xx/5xx 错误。如果您成功完成了 Inference Recommender 作业,则将能够在结果中看到端点名称。即使您的 Inference Recommender 作业失败,您仍可以执行以下步骤来查看 CloudWatch 日志中是否有已删除的端点:

  1. 通过 https://console.aws.amazon.com/cloudwatch/ 打开 Amazon CloudWatch 控制台。

  2. 从右上角的区域下拉列表中选择您已在其中创建 Inference Recommender 作业的区域。

  3. 在 CloudWatch 的导航窗格中,选择日志,然后选择日志组

  4. 搜索名为 /aws/sagemaker/Endpoints/sm-epc-* 的日志组。根据您最近的 Inference Recommender 作业选择日志组。

您还可以通过查看 Inference Recommender CloudWatch 日志来对作业进行问题排查。在 /aws/sagemaker/InferenceRecommendationsJobs CloudWatch 日志组中发布的 Inference Recommender 日志提供了 <jobName>/execution 日志流中作业进度的高级视图。您可以在 <jobName>/Endpoint/<endpointName> 日志流中查找有关正在测试的每个端点配置的详细信息。

Inference Recommender 日志流概述

  • <jobName>/execution 包含总体作业信息,例如计划用于基准测试的端点配置、编译作业跳过原因和验证失败原因。

  • <jobName>/Endpoint/<endpointName> 包含资源创建进度、测试配置、负载测试停止原因和资源清理状态等信息。

  • <jobName>/CompilationJob/<compilationJobName> 包含有关 Inference Recommender 创建的编译作业的信息,例如编译作业配置和编译作业状态。

为 Inference Recommender 错误消息创建警报

Inference Recommender 将输出错误的日志语句,从而协助进行问题排查。利用 CloudWatch 日志组和指标筛选条件,您可以在此日志数据发送到 CloudWatch 时查找其中的词和模式。然后,您可以根据日志组指标筛选条件创建 CloudWatch 警报。有关更多选项,请参阅根据日志组指标筛选条件创建 CloudWatch 警报

查看基准测试

在启动 Inference Recommender 作业时,Inference Recommender 会创建多个基准测试来评估您的模型在不同实例类型上的性能。您可以使用 ListInferenceRecommendationsJobSteps API 来查看所有基准测试的详细信息。如果您的基准测试失败,则可以在结果中查看失败原因。

要使用 ListInferenceRecommendationsJobSteps API,请提供以下值:

  • 对于 JobName,请提供 Inference Recommender 作业的名称。

  • 对于 StepType,使用 BENCHMARK 返回有关作业的基准测试的详细信息。

  • 对于 Status,使用 FAILED 仅返回有关失败的基准测试的详细信息。有关其他状态类型的列表,请参阅 ListInferenceRecommendationsJobSteps API 中的 Status 字段。

# Create a low-level SageMaker service client. import boto3 aws_region = '<region>' sagemaker_client = boto3.client('sagemaker', region_name=aws_region) # Provide the job name for the SageMaker Inference Recommender job job_name = '<job-name>' # Filter for benchmarks step_type = 'BENCHMARK' # Filter for benchmarks that have a FAILED status status = 'FAILED' response = sagemaker_client.list_inference_recommendations_job_steps( JobName = job_name, StepType = step_type, Status = status )

您可以打印响应对象来查看结果。上一个代码示例将响应存储在名为 response 的变量中:

print(response)