

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 纠正 Inference Recommender 错误
<a name="inference-recommender-troubleshooting"></a>

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

## 如何进行问题排查
<a name="inference-recommender-troubleshooting-how-to"></a>

您可以尝试执行以下步骤来纠正错误：
+ 检查您是否已满足使用 Inference Recommender 的所有先决条件。请参阅 [Inference Recommender 先决条件](https://docs.amazonaws.cn/sagemaker/latest/dg/inference-recommender-prerequisites.html)。
+ 检查您是否能将模型从模型注册表部署到端点，以及它是否能处理您的负载而不出错。请参阅[从注册表部署模型](https://docs.amazonaws.cn/sagemaker/latest/dg/model-registry-deploy.html)。
+ 当你启动推理推荐器作业时，你应该会在控制台中看到终端节点正在创建，你可以查看日 CloudWatch 志。

## 常见错误
<a name="inference-recommender-troubleshooting-common"></a>

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


| 错误 | 解决方案 | 
| --- | --- | 
| 在模型包版本 1 中指定 `Domain`。`Domain` 是作业的必需参数。 | 请务必提供机器学习域或 `OTHER`（如果未知）。 | 
| 无法假定所提供的角色 ARN，并出现 `AWSSecurityTokenServiceException` 错误。 | 确保提供的执行角色具有先决条件中指定的必要权限。 | 
| 在模型包版本 1 中指定 `Framework`。`Framework` 是作业的必需参数。 | 请务必提供机器学习框架或 `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 实例系列上进行负载测试，因为可突增实例无法提供一致的性能。 | 
| ResourceLimitExceeded 调用 CreateEndpoint操作时 | 您已超过 A SageMaker I 资源限制。例如，如果账户已达到端点限额，Inference Recommender 可能无法预置端点来进行基准测试。有关 SageMaker AI 限制和配额的更多信息，请参阅 [Amazon A SageMaker I 终端节点和配额](https://docs.amazonaws.cn/general/latest/gr/sagemaker.html)。 | 
| ModelError 调用 InvokeEndpoint 操作时 | 导致出现模型错误的原因如下：[See the AWS documentation website for more details](http://docs.amazonaws.cn/sagemaker/latest/dg/inference-recommender-troubleshooting.html) | 
| PayloadError 调用 InvokeEndpoint 操作时 | 导致出现负载错误的原因如下：[See the AWS documentation website for more details](http://docs.amazonaws.cn/sagemaker/latest/dg/inference-recommender-troubleshooting.html) | 

## 查看 CloudWatch
<a name="inference-recommender-troubleshooting-check-cw"></a>

启动 Inference Recommender 作业时，您将在控制台中看到正在创建端点。选择其中一个端点并查看 CloudWatch 日志以监控任何 4xx/5xx 错误。如果您成功完成了 Inference Recommender 作业，则将能够在结果中看到端点名称。即使您的推理推荐器任务不成功，您仍然可以按照以下步骤检查已删除终端节点的 CloudWatch 日志：

1. 打开亚马逊 CloudWatch 控制台，网址为[https://console.aws.amazon.com/cloudwatch/](https://console.amazonaws.cn/cloudwatch/)。

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

1. 在的导航窗格中 CloudWatch，选择**日志**，然后选择**日志组**。

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

您也可以通过查看推理推荐器 CloudWatch 日志来排除任务故障。在日志组中发布的 Inference Recommerder `/aws/sagemaker/InferenceRecommendationsJobs` CloudWatch 日志提供了`{{<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 警报](https://docs.amazonaws.cn/AmazonCloudWatch/latest/monitoring/Create_alarm_log_group_metric_filter.html)。

## 查看基准测试
<a name="inference-recommender-troubleshooting-check-benchmarks"></a>

在启动 Inference Recommender 作业时，Inference Recommender 会创建多个基准测试来评估您的模型在不同实例类型上的性能。您可以使用 [ListInferenceRecommendationsJobSteps](https://docs.amazonaws.cn/sagemaker/latest/APIReference/API_ListInferenceRecommendationsJobSteps.html)API 查看所有基准测试的详细信息。如果您的基准测试失败，则可以在结果中查看失败原因。

要使用 [ListInferenceRecommendationsJobSteps](https://docs.amazonaws.cn/sagemaker/latest/APIReference/API_ListInferenceRecommendationsJobSteps.html)API，请提供以下值：
+ 对于 `JobName`，请提供 Inference Recommender 作业的名称。
+ 对于 `StepType`，使用 `BENCHMARK` 返回有关作业的基准测试的详细信息。
+ 对于 `Status`，使用 `FAILED` 仅返回有关失败的基准测试的详细信息。有关其他状态类型的列表，请参阅 [ListInferenceRecommendationsJobSteps](https://docs.amazonaws.cn/sagemaker/latest/APIReference/API_ListInferenceRecommendationsJobSteps.html)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)
```