

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

# 运行自定义负载测试
<a name="inference-recommender-load-test"></a>

Amazon SageMaker Inference Recommerder 负载测试根据延迟和吞吐量的生产要求、自定义流量模式以及您选择的无服务器终端节点或实时实例（最多 10 个）进行广泛的基准测试。

以下各节演示如何使用和以编程方式创建、描述和停止负载测试，或者如何使用 Amazon SageMaker Studio Classic 或 A SageMaker I 控制台以交互方式创建 AWS CLI、描述 适用于 Python (Boto3) 的 AWS SDK 和停止负载测试。

## 创建负载测试作业
<a name="load-test-create"></a>

使用、使用以编程方式创建负载测试 适用于 Python (Boto3) 的 AWS SDK，或者使用 Studio Classic 或 SageMaker AI 控制台以交互方式创建负载测试。 AWS CLI与推理推荐器推理建议一样，请指定负载测试的任务名称、IAM AWS 角色 ARN、输入配置以及您在模型注册表中注册模型时的模型包 ARN。负载测试还要求您指定流量模式和停止条件。

------
#### [ 适用于 Python (Boto3) 的 AWS SDK ]

使用 `CreateInferenceRecommendationsJob` API 创建 Inference Recommender 负载测试。为 `JobType` 字段指定 `Advanced` 并提供：
+ 负载测试的作业名称 (`JobName`)。职位名称在您所在的 AWS 地区和您的 AWS 账户中必须是唯一的。
+ IAM 角色的 Amazon 资源名称 (ARN)，此角色可让 Inference Recommender 代表您执行任务。为 `RoleArn` 字段定义此项。
+ 端点配置字典 (`InputConfig`)，可在其中指定以下项：
  + 对于 `TrafficPattern`，请指定阶段或阶梯流量模式。对于阶段流量模式，每分钟以您指定的速率生成新用户。对于阶梯流量模式，会以您指定的速率按时间间隔（或*步长*）生成新用户。选择下列选项之一：
    + 对于 `TrafficType`，请指定 `PHASES`。之后，对于 `Phases` 数组，指定 `InitialNumberOfUsers`（开始时的并发用户数，最小值为 1，最大值为 3）、`SpawnRate`（负载测试的特定阶段，1 分钟内生成的用户数，最小值为 0，最大值为 3）和 `DurationInSeconds`（流量阶段应持续的时长，最小值为 120，最大值为 3600）。
    + 对于 `TrafficType`，请指定 `STAIRS`。之后，对于 `Stairs` 数组，指定 `DurationInSeconds`（流量阶段应持续的时长，最小值为 120，最大值为 3600）、`NumberOfSteps`（阶段内使用的间隔数）和 `UsersPerStep`（每个间隔内添加的用户数）。请注意，每个步骤的长度为 `DurationInSeconds / NumberOfSteps` 的值。例如，如果您的 `DurationInSeconds` 为 `600`，并且您指定了 `5` 个步骤，则每个步骤的长度为 120 秒。
**注意**  
用户将定义为系统生成的角色，它在循环中运行，并作为 Inference Recommender 的一部分调用对端点的请求。对于在`ml.c5.large`实例上运行的典型 XGBoost 容器，端点可以达到每分钟 30,000 次调用（500 tps），只需 15-20 个用户。
  + 对于 `ResourceLimit`，指定 `MaxNumberOfTests`（Inference Recommender 作业的最大基准测试负载测试次数，最小值为 1，最大值为 10）和 `MaxParallelOfTests`（Inference Recommender 作业的并行基准测试负载测试的最大数量，最小值为 1，最大值为 10）。
  + 对于 `EndpointConfigurations`，您可以指定以下项之一：
    + `InstanceType` 字段，可以在其中指定要对其运行负载测试的实例类型。
    + `ServerlessConfig`，可以在其中指定无服务器端点的 `MaxConcurrency` 和 `MemorySizeInMB` 的理想值。有关更多信息，请参阅[无服务器推理文档](https://docs.aws.amazon.com/sagemaker/latest/dg/serverless-endpoints.html)。
+ 停止条件字典 (`StoppingConditions`)，如果满足任意条件，则 Inference Recommender 作业将停止。在此示例中，请在字典中指定以下字段：
  + 对于 `MaxInvocations`，指定端点每分钟预期的最大请求数，最小值为 1，最大值为 30000。
  + 对于 `ModelLatencyThresholds`，指定 `Percentile`（模型延迟百分位数阈值）和 `ValueInMilliseconds`（模型延迟百分位数值，以毫秒为单位）。
  + （可选）对于 `FlatInvocations`，您可以指定是否在 TPS（每分钟调用次数）速率趋于平稳时继续进行负载测试。平稳的 TPS 速率通常意味着端点已达到容量。但是，您可能需要在满容量条件下继续监控端点。要在发生此情况时继续进行负载测试，请将此值指定为 `Continue`。否则，默认值为 `Stop`。

```
# Create a low-level SageMaker service client.
import boto3
aws_region=<INSERT>
sagemaker_client=boto3.client('sagemaker', region=aws_region) 
                
# Provide a name to your recommendation based on load testing
load_test_job_name="<INSERT>"

# Provide the name of the sagemaker instance type
instance_type="<INSERT>"

# Provide the IAM Role that gives SageMaker permission to access AWS services 
role_arn='arn:aws:iam::<account>:role/*'

# Provide your model package ARN that was created when you registered your 
# model with Model Registry
model_package_arn='arn:aws:sagemaker:<region>:<account>:role/*'

sagemaker_client.create_inference_recommendations_job(
                        JobName=load_test_job_name,
                        JobType="Advanced",
                        RoleArn=role_arn,
                        InputConfig={
                            'ModelPackageVersionArn': model_package_arn,
                            "JobDurationInSeconds": 7200,
                            'TrafficPattern' : {
                                # Replace PHASES with STAIRS to use the stairs traffic pattern
                                'TrafficType': 'PHASES',
                                'Phases': [
                                    {
                                        'InitialNumberOfUsers': 1,
                                        'SpawnRate': 1,
                                        'DurationInSeconds': 120
                                    },
                                    {
                                        'InitialNumberOfUsers': 1,
                                        'SpawnRate': 1,
                                        'DurationInSeconds': 120
                                    }
                                ]
                                # Uncomment this section and comment out the Phases object above to use the stairs traffic pattern
                                # 'Stairs' : {
                                #   'DurationInSeconds': 240,
                                #   'NumberOfSteps': 2,
                                #   'UsersPerStep': 2
                                # }
                            },
                            'ResourceLimit': {
                                        'MaxNumberOfTests': 10,
                                        'MaxParallelOfTests': 3
                                },
                            "EndpointConfigurations" : [{
                                        'InstanceType': 'ml.c5.xlarge'
                                    },
                                    {
                                        'InstanceType': 'ml.m5.xlarge'
                                    },
                                    {
                                        'InstanceType': 'ml.r5.xlarge'
                                    }]
                                    # Uncomment the ServerlessConfig and comment out the InstanceType field if you want recommendations for a serverless endpoint
                                    # "ServerlessConfig": {
                                    #     "MaxConcurrency": value, 
                                    #     "MemorySizeInMB": value 
                                    # }
                        },
                        StoppingConditions={
                            'MaxInvocations': 1000,
                            'ModelLatencyThresholds':[{
                                'Percentile': 'P95', 
                                'ValueInMilliseconds': 100
                            }],
                            # Change 'Stop' to 'Continue' to let the load test continue if invocations flatten 
                            'FlatInvocations': 'Stop'
                        }
                )
```

有关您可以传递的可选参数和必填参数的完整列表，请参阅 [Amazon SageMaker API 参考指南](https://docs.aws.amazon.com/sagemaker/latest/APIReference/Welcome.html)`CreateInferenceRecommendationsJob`。

------
#### [ AWS CLI ]

使用 `create-inference-recommendations-job` API 创建 Inference Recommender 负载测试。为 `JobType` 字段指定 `Advanced` 并提供：
+ 负载测试的作业名称 (`job-name`)。职位名称在您所在的 AWS 地区和您的 AWS 账户中必须是唯一的。
+ IAM 角色的 Amazon 资源名称 (ARN)，此角色可让 Inference Recommender 代表您执行任务。为 `role-arn` 字段定义此项。
+ 端点配置字典 (`input-config`)，可在其中指定以下项：
  + 对于 `TrafficPattern`，请指定阶段或阶梯流量模式。对于阶段流量模式，每分钟以您指定的速率生成新用户。对于阶梯流量模式，会以您指定的速率按时间间隔（或*步长*）生成新用户。选择下列选项之一：
    + 对于 `TrafficType`，请指定 `PHASES`。之后，对于 `Phases` 数组，指定 `InitialNumberOfUsers`（开始时的并发用户数，最小值为 1，最大值为 3）、`SpawnRate`（负载测试的特定阶段，1 分钟内生成的用户数，最小值为 0，最大值为 3）和 `DurationInSeconds`（流量阶段应持续的时长，最小值为 120，最大值为 3600）。
    + 对于 `TrafficType`，请指定 `STAIRS`。之后，对于 `Stairs` 数组，指定 `DurationInSeconds`（流量阶段应持续的时长，最小值为 120，最大值为 3600）、`NumberOfSteps`（阶段内使用的间隔数）和 `UsersPerStep`（每个间隔内添加的用户数）。请注意，每个步骤的长度为 `DurationInSeconds / NumberOfSteps` 的值。例如，如果您的 `DurationInSeconds` 为 `600`，并且您指定了 `5` 个步骤，则每个步骤的长度为 120 秒。
**注意**  
用户将定义为系统生成的角色，它在循环中运行，并作为 Inference Recommender 的一部分调用对端点的请求。对于在`ml.c5.large`实例上运行的典型 XGBoost 容器，端点可以达到每分钟 30,000 次调用（500 tps），只需 15-20 个用户。
  + 对于 `ResourceLimit`，指定 `MaxNumberOfTests`（Inference Recommender 作业的最大基准测试负载测试次数，最小值为 1，最大值为 10）和 `MaxParallelOfTests`（Inference Recommender 作业的并行基准测试负载测试的最大数量，最小值为 1，最大值为 10）。
  + 对于 `EndpointConfigurations`，您可以指定以下项之一：
    + `InstanceType` 字段，可以在其中指定要对其运行负载测试的实例类型。
    + `ServerlessConfig`，可以在其中指定无服务器端点的 `MaxConcurrency` 和 `MemorySizeInMB` 的理想值。
+ 停止条件字典 (`stopping-conditions`)，如果满足任意条件，则 Inference Recommender 作业将停止。在此示例中，请在字典中指定以下字段：
  + 对于 `MaxInvocations`，指定端点每分钟预期的最大请求数，最小值为 1，最大值为 30000。
  + 对于 `ModelLatencyThresholds`，指定 `Percentile`（模型延迟百分位数阈值）和 `ValueInMilliseconds`（模型延迟百分位数值，以毫秒为单位）。
  + （可选）对于 `FlatInvocations`，您可以指定是否在 TPS（每分钟调用次数）速率趋于平稳时继续进行负载测试。平稳的 TPS 速率通常意味着端点已达到容量。但是，您可能需要在满容量条件下继续监控端点。要在发生此情况时继续进行负载测试，请将此值指定为 `Continue`。否则，默认值为 `Stop`。

```
aws sagemaker create-inference-recommendations-job\
    --region <region>\
    --job-name <job-name>\
    --job-type ADVANCED\
    --role-arn arn:aws:iam::<account>:role/*\
    --input-config \"{
        \"ModelPackageVersionArn\": \"arn:aws:sagemaker:<region>:<account>:role/*\",
        \"JobDurationInSeconds\": 7200,                                
        \"TrafficPattern\" : {
                # Replace PHASES with STAIRS to use the stairs traffic pattern
                \"TrafficType\": \"PHASES\",
                \"Phases\": [
                    {
                        \"InitialNumberOfUsers\": 1,
                        \"SpawnRate\": 60,
                        \"DurationInSeconds\": 300
                    }
                ]
                # Uncomment this section and comment out the Phases object above to use the stairs traffic pattern
                # 'Stairs' : {
                #   'DurationInSeconds': 240,
                #   'NumberOfSteps': 2,
                #   'UsersPerStep': 2
                # }
            },
            \"ResourceLimit\": {
                \"MaxNumberOfTests\": 10,
                \"MaxParallelOfTests\": 3
            },
            \"EndpointConfigurations\" : [
                {
                    \"InstanceType\": \"ml.c5.xlarge\"
                },
                {
                    \"InstanceType\": \"ml.m5.xlarge\"
                },
                {
                    \"InstanceType\": \"ml.r5.xlarge\"
                }
                # Use the ServerlessConfig and leave out the InstanceType fields if you want recommendations for a serverless endpoint
                # \"ServerlessConfig\": {
                #     \"MaxConcurrency\": value, 
                #     \"MemorySizeInMB\": value 
                # }
            ]
        }\"
    --stopping-conditions \"{
        \"MaxInvocations\": 1000,
        \"ModelLatencyThresholds\":[
                {
                    \"Percentile\": \"P95\", 
                    \"ValueInMilliseconds\": 100
                }
        ],
        # Change 'Stop' to 'Continue' to let the load test continue if invocations flatten 
        \"FlatInvocations\": \"Stop\"
    }\"
```

------
#### [ Amazon SageMaker Studio Classic ]

使用 Studio Classic 创建负载测试。

1. 在 Studio Classic 应用程序中，选择主页图标 (![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/studio/icons/house.png))。

1. 在 Studio Classic 的左侧边栏中，选择**部署**。

1. 从下拉列表中选择 **Inference Recommender**。

1. 选择**创建 Inference Recommender 作业**。这将打开一个标题为**创建 Inference Recommender 作业**的新选项卡。

1. 从下拉**模型组**字段中选择模型组的名称。该列表包括您账户中已注册到模型注册表的所有模型组，包括在 Studio Classic 外部注册的模型。

1. 从下拉**模型版本**字段中选择模型版本。

1. 选择**继续**。

1. 在**名称**字段中提供作业的名称。

1. （可选）在**描述**字段中提供作业的描述。

1. 选择一个 IAM 角色来授予推理推荐者访问服务的 AWS 权限。您可以创建角色并附加 `AmazonSageMakerFullAccess` IAM 托管式策略来实现此目标，或者您可以让 Studio Classic 为您创建角色。

1. 选择**停止条件**以扩展可用的输入字段。提供一组用于停止部署推荐的条件。

   1. 在**每分钟最大调用次数**字段中指定预计的针对端点的每分钟最大请求数。

   1. 在**模型延迟阈值**字段中指定模型延迟阈值（以微秒为单位）。**模型延迟阈值**描述了从 Inference Recommender 中查看的模型响应所花费的时间间隔。此时间间隔包括发送请求以及从模型容器提取响应的本地通信时间，以及在容器中完成推理所用的时间。

1. 选择**流量模式**以扩展可用的输入字段。

   1. 通过在**初始用户数**字段中指定一个整数来设置初始虚拟用户数。

   1. 为**生成速率**字段提供一个整数。生成速率设置每秒创建的用户数。

   1. 通过在**持续时间**字段中指定一个整数来设置阶段的持续时间（以秒为单位）。

   1. （可选）添加其他流量模式。要做到这一点，请选择**添加**。

1. 选择**其他**设置以显示**最长测试持续时间**字段。指定作业期间测试可花费的最长时间（以秒为单位）。在定义的持续时间之后不会安排新作业。这有助于确保正在进行的作业不会停止，并且您只能查看已完成的作业。

1. 选择**继续**。

1. 选择**选定实例**。

1. 在**用于基准测试的实例**字段中，选择**将实例添加到测试**。为 Inference Recommender 选择最多 10 个实例以用于负载测试。

1. 选择**其他设置**。

   1. 为**最大测试次数**字段提供一个整数，该整数设置作业可以执行的测试次数上限。请注意，每个端点配置均生成一个新的负载测试。

   1. 为**最大并行测试数**字段提供一个整数。此设置定义了可以并行运行的负载测试数量的上限。

1. 选择**提交**。

   负载测试最长可能需要 2 个小时。
**警告**  
不要关闭此选项卡。如果关闭此选项卡，则将取消 Inference Recommender 负载测试作业。

------
#### [ SageMaker AI console ]

通过执行以下操作，通过 SageMaker AI 控制台创建自定义负载测试：

1. 前往 SageMaker AI 控制台，网址为[https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/)。

1. 在左侧导航窗格中，选择**推理**，然后选择 **Inference Recommender**。

1. 在 **Inference Recommender 作业**页面上，选择**创建作业**。

1. 对于**步骤 1：模型配置**，执行以下操作：

   1. 对于**作业类型**，选择**高级 Recommender 作业**。

   1. 如果您使用的是在 SageMaker AI 模型注册表中注册的模型，请打开**从模型注册表中选择模型**开关并执行以下操作：

      1. 在**模型组**下拉列表中，在 SageMaker AI 模型注册表中选择您的模型所在的模型组。

      1. 对于**模型版本**下拉列表，选择所需的模型版本。

   1. 如果您使用的是在 SageMaker AI 中创建的模型，请关闭**从模型注册表中选择模型**开关并执行以下操作：

      1. 在**模型名称**字段中，输入您的 SageMaker AI 模型的名称。

   1. 对于 **IAM 角色**，您可以选择具有创建实例推荐任务所需权限的现有 AWS IAM 角色。或者，如果您没有现有角色，则可以选择**创建新角色以打开角色**创建弹出窗口，然后 SageMaker AI 会为您创建的新角色添加必要的权限。

   1. 对于**用于对负载进行基准测试的 S3 存储桶**，输入示例负载存档的 Amazon S3 路径，其中应包含示例负载文件，Inference Recommender 使用这些文件在不同的实例类型上对模型进行基准测试。

   1. 对于**负载内容类型**，输入示例负载数据的 MIME 类型。

   1. 对于**流量模式**，请执行以下操作来配置负载测试的阶段：

      1. 对于**初始用户数**，指定开始时的并发用户数（最小值为 1，最大值为 3）。

      1. 对于**生成速率**，为该阶段指定 1 分钟内要生成的用户数（最小值为 0，最大值为 3）。

      1. 对于**持续时间（秒）**，指定流量阶段的持续时间（以秒为单位，最小值为 120，最大值为 3600）。

   1. （可选）如果您关闭了**从模型注册表中选择模型开**关并指定了 A SageMaker I 模型，那么对于**容器配置**，请执行以下操作：

      1. 对于**域**下拉列表，选择模型的机器学习域，例如计算机视觉、自然语言处理或机器学习。

      1. 在 “**框架**” 下拉列表中，选择容器的框架，例如 TensorFlow 或 XGBoost。

      1. 对于**框架版本**，输入容器映像的框架版本。

      1. 对于**最近的模型名称**下拉列表，选择与您自己的模型最匹配的预训练的模型。

      1. 对于**任务**下拉列表，选择模型完成的机器学习任务，例如图像分类或回归。

   1. （可选）对于**使用 SageMaker Neo 进行模型编译**，您可以为使用 N SageMaker eo 编译的模型配置推荐作业。对于**数据输入配置**，使用类似于 `{'input':[1,1024,1024,3]}` 的格式为模型输入正确的输入数据形状。

   1. 选择**下一步**。

1. 对于**步骤 2：实例和环境参数**，请执行以下操作：

   1. 对于**选择用于基准测试的实例**，最多可以选择 8 种实例类型来进行基准测试。

   1. （可选）对于**环境参数范围**，可以指定有助于优化模型的环境参数。将参数指定为**键**和**值**对。

   1. 选择**下一步**。

1. 对于**步骤 3：作业参数**，请执行以下操作：

   1. （可选）对于**作业名称**字段，输入您的实例推荐作业的名称。创建任务时， SageMaker AI 会在该名称的末尾附加一个时间戳。

   1. （可选）对于**作业描述**字段，输入作业的描述。

   1. （可选）在**加密密钥**下拉列表中，按名称选择 AWS KMS 密钥或输入其 ARN 来加密您的数据。

   1. （可选）对于**最大测试次数**，输入要在推荐作业期间运行的测试次数。

   1. （可选）对于**最大并行测试次数**，输入要在推荐作业期间运行的并行测试的最大次数。

   1. 对于**最长测试持续时间**，输入您希望每项测试运行的最长时间（以秒为单位）。

   1. 对于**每分钟最大调用次数**，输入端点在停止推荐作业之前可达到的每分钟最大请求数。达到此限制后， SageMaker AI 将结束任务。

   1. 对于 **P99 模型延迟阈值 (ms)**，输入模型延迟百分位数（以毫秒为单位）。

   1. 选择**下一步**。

1. 对于**步骤 4：查看作业**，请查看您的配置，然后选择**提交**。

------

## 获取您的负载测试结果
<a name="load-test-describe"></a>

使用 Studio Classic 或 SageMaker AI 控制台完成负载测试后 适用于 Python (Boto3) 的 AWS SDK，您可以通过编程方式收集所有负载测试的指标。 AWS CLI

------
#### [ 适用于 Python (Boto3) 的 AWS SDK ]

使用 `DescribeInferenceRecommendationsJob` API 收集指标。为 `JobName` 字段指定负载测试的作业名称：

```
load_test_response = sagemaker_client.describe_inference_recommendations_job(
                                                        JobName=load_test_job_name
                                                        )
```

打印响应对象。

```
load_test_response['Status']
```

这将返回与以下示例类似的 JSON 响应。请注意，此示例显示了实时推理的推荐实例类型（有关显示无服务器推理推荐的示例，请参阅此示例后面的示例）。

```
{
    'JobName': 'job-name', 
    'JobDescription': 'job-description', 
    'JobType': 'Advanced', 
    'JobArn': 'arn:aws:sagemaker:region:account-id:inference-recommendations-job/resource-id', 
    'Status': 'COMPLETED', 
    'CreationTime': datetime.datetime(2021, 10, 26, 19, 38, 30, 957000, tzinfo=tzlocal()), 
    'LastModifiedTime': datetime.datetime(2021, 10, 26, 19, 46, 31, 399000, tzinfo=tzlocal()), 
    'InputConfig': {
        'ModelPackageVersionArn': 'arn:aws:sagemaker:region:account-id:model-package/resource-id', 
        'JobDurationInSeconds': 7200, 
        'TrafficPattern': {
            'TrafficType': 'PHASES'
            }, 
        'ResourceLimit': {
            'MaxNumberOfTests': 100, 
            'MaxParallelOfTests': 100
            }, 
        'EndpointConfigurations': [{
            'InstanceType': 'ml.c5d.xlarge'
            }]
        }, 
    'StoppingConditions': {
        'MaxInvocations': 1000, 
        'ModelLatencyThresholds': [{
            'Percentile': 'P95', 
            'ValueInMilliseconds': 100}
            ]}, 
    'InferenceRecommendations': [{
        'Metrics': {
            'CostPerHour': 0.6899999976158142, 
            'CostPerInference': 1.0332434612791985e-05, 
            'MaximumInvocations': 1113, 
            'ModelLatency': 100000
            }, 
    'EndpointConfiguration': {
        'EndpointName': 'endpoint-name', 
        'VariantName': 'variant-name', 
        'InstanceType': 'ml.c5d.xlarge', 
        'InitialInstanceCount': 3
        }, 
    'ModelConfiguration': {
        'Compiled': False, 
        'EnvironmentParameters': []
        }
    }], 
    'ResponseMetadata': {
        'RequestId': 'request-id', 
        'HTTPStatusCode': 200, 
        'HTTPHeaders': {
            'x-amzn-requestid': 'x-amzn-requestid', 
            'content-type': 'content-type', 
            'content-length': '1199', 
            'date': 'Tue, 26 Oct 2021 19:57:42 GMT'
            }, 
        'RetryAttempts': 0}
    }
```

前几行提供了有关负载测试作业本身的信息。这包括作业名称、角色 ARN、创建时间和删除时间。

`InferenceRecommendations` 字典包含 Inference Recommender 推理推荐的列表。

`EndpointConfiguration`嵌套字典包含推荐作业期间使用的实例类型 (`InstanceType`) 建议以及端点和变体名称（已部署的 AWS 机器学习模型）。您可以使用终端节点和变体名称在 Amazon Ev CloudWatch ents 中进行监控。请参阅[亚马逊中的亚马逊 A SageMaker I 指标 CloudWatch](monitoring-cloudwatch.md)了解更多信息。

`EndpointConfiguration` 嵌套字典还包含实例计数 (`InitialInstanceCount`) 推荐。这是您应在端点中预置的实例数量，以满足 `StoppingConditions` 中指定的 `MaxInvocations`。例如，如果 `InstanceType` 为 `ml.m5.large` 且 `InitialInstanceCount` 为 `2`，则应为端点配置 2 个 `ml.m5.large` 实例，以便端点能够处理 `MaxInvocations` 停止条件中指定的 TPS。

`Metrics`嵌套字典包含有关实时终端节点每小时的估计成本 (`CostPerHour`)、实时终端节点的每次推理的估计成本 (`CostPerInference`)、发送到该终端节点的最大`InvokeEndpoint`请求数以及模型延迟 (`ModelLatency`)（即模型响应 AI 所用的时间间隔（以微秒为单位）的信息。 SageMaker 模型延迟包括发送请求以及从模型容器提取响应所花费的本地通信时间，以及在容器中完成推理所用的时间。

以下示例显示了配置为返回无服务器推理推荐的负载测试作业的响应的 `InferenceRecommendations` 部分：

```
"InferenceRecommendations": [ 
      { 
         "EndpointConfiguration": { 
            "EndpointName": "value",
            "InitialInstanceCount": value,
            "InstanceType": "value",
            "VariantName": "value",
            "ServerlessConfig": {
                "MaxConcurrency": value,
                "MemorySizeInMb": value
            }
         },
         "InvocationEndTime": value,
         "InvocationStartTime": value,
         "Metrics": { 
            "CostPerHour": value,
            "CostPerInference": value,
            "CpuUtilization": value,
            "MaxInvocations": value,
            "MemoryUtilization": value,
            "ModelLatency": value,
            "ModelSetupTime": value
         },
         "ModelConfiguration": { 
            "Compiled": "False",
            "EnvironmentParameters": [],
            "InferenceSpecificationName": "value"
         },
         "RecommendationId": "value"
      }
   ]
```

您可以像解释实时推理的结果一样解释无服务器推理的推荐，但 `ServerlessConfig` 是一个例外，它告知您在设置负载测试时为 `MaxConcurrency` 和 `MemorySizeInMB` 指定的值。无服务器推荐还会衡量指标 `ModelSetupTime`，后者衡量在无服务器端点上启动计算资源所花费的时间（以微秒为单位）。有关设置无服务器端点的更多信息，请参阅[无服务器推理文档](https://docs.aws.amazon.com/sagemaker/latest/dg/serverless-endpoints.html)。

------
#### [ AWS CLI ]

使用 `describe-inference-recommendations-job` API 收集指标。为 `job-name` 标志指定负载测试的作业名称：

```
aws sagemaker describe-inference-recommendations-job --job-name <job-name>
```

这将返回与以下示例类似的响应。请注意，此示例显示了实时推理的推荐实例类型（有关显示无服务器推理推荐的示例，请参阅此示例后面的示例）。

```
{
    'JobName': 'job-name', 
    'JobDescription': 'job-description', 
    'JobType': 'Advanced', 
    'JobArn': 'arn:aws:sagemaker:region:account-id:inference-recommendations-job/resource-id', 
    'Status': 'COMPLETED', 
    'CreationTime': datetime.datetime(2021, 10, 26, 19, 38, 30, 957000, tzinfo=tzlocal()), 
    'LastModifiedTime': datetime.datetime(2021, 10, 26, 19, 46, 31, 399000, tzinfo=tzlocal()), 
    'InputConfig': {
        'ModelPackageVersionArn': 'arn:aws:sagemaker:region:account-id:model-package/resource-id', 
        'JobDurationInSeconds': 7200, 
        'TrafficPattern': {
            'TrafficType': 'PHASES'
            }, 
        'ResourceLimit': {
            'MaxNumberOfTests': 100, 
            'MaxParallelOfTests': 100
            }, 
        'EndpointConfigurations': [{
            'InstanceType': 'ml.c5d.xlarge'
            }]
        }, 
    'StoppingConditions': {
        'MaxInvocations': 1000, 
        'ModelLatencyThresholds': [{
            'Percentile': 'P95', 
            'ValueInMilliseconds': 100
            }]
        }, 
    'InferenceRecommendations': [{
        'Metrics': {
        'CostPerHour': 0.6899999976158142, 
        'CostPerInference': 1.0332434612791985e-05, 
        'MaximumInvocations': 1113, 
        'ModelLatency': 100000
        }, 
        'EndpointConfiguration': {
            'EndpointName': 'endpoint-name', 
            'VariantName': 'variant-name', 
            'InstanceType': 'ml.c5d.xlarge', 
            'InitialInstanceCount': 3
            }, 
        'ModelConfiguration': {
            'Compiled': False, 
            'EnvironmentParameters': []
            }
        }], 
    'ResponseMetadata': {
        'RequestId': 'request-id', 
        'HTTPStatusCode': 200, 
        'HTTPHeaders': {
            'x-amzn-requestid': 'x-amzn-requestid', 
            'content-type': 'content-type', 
            'content-length': '1199', 
            'date': 'Tue, 26 Oct 2021 19:57:42 GMT'
            }, 
        'RetryAttempts': 0
        }
    }
```

前几行提供了有关负载测试作业本身的信息。这包括作业名称、角色 ARN、创建时间和删除时间。

`InferenceRecommendations` 字典包含 Inference Recommender 推理推荐的列表。

`EndpointConfiguration`嵌套字典包含推荐作业期间使用的实例类型 (`InstanceType`) 建议以及端点和变体名称（已部署的 AWS 机器学习模型）。您可以使用终端节点和变体名称在 Amazon Ev CloudWatch ents 中进行监控。请参阅[亚马逊中的亚马逊 A SageMaker I 指标 CloudWatch](monitoring-cloudwatch.md)了解更多信息。

`Metrics`嵌套字典包含有关实时终端节点每小时的估计成本 (`CostPerHour`)、实时终端节点的每次推理的估计成本 (`CostPerInference`)、发送到该终端节点的最大`InvokeEndpoint`请求数以及模型延迟 (`ModelLatency`)（即模型响应 AI 所用的时间间隔（以微秒为单位）的信息。 SageMaker 模型延迟包括发送请求以及从模型容器提取响应所花费的本地通信时间，以及在容器中完成推理所用的时间。

以下示例显示了配置为返回无服务器推理推荐的负载测试作业的响应的 `InferenceRecommendations` 部分：

```
"InferenceRecommendations": [ 
      { 
         "EndpointConfiguration": { 
            "EndpointName": "value",
            "InitialInstanceCount": value,
            "InstanceType": "value",
            "VariantName": "value",
            "ServerlessConfig": {
                "MaxConcurrency": value,
                "MemorySizeInMb": value
            }
         },
         "InvocationEndTime": value,
         "InvocationStartTime": value,
         "Metrics": { 
            "CostPerHour": value,
            "CostPerInference": value,
            "CpuUtilization": value,
            "MaxInvocations": value,
            "MemoryUtilization": value,
            "ModelLatency": value,
            "ModelSetupTime": value
         },
         "ModelConfiguration": { 
            "Compiled": "False",
            "EnvironmentParameters": [],
            "InferenceSpecificationName": "value"
         },
         "RecommendationId": "value"
      }
   ]
```

您可以像解释实时推理的结果一样解释无服务器推理的推荐，但 `ServerlessConfig` 是一个例外，它告知您在设置负载测试时为 `MaxConcurrency` 和 `MemorySizeInMB` 指定的值。无服务器推荐还会衡量指标 `ModelSetupTime`，后者衡量在无服务器端点上启动计算机资源所花费的时间（以微秒为单位）。有关设置无服务器端点的更多信息，请参阅[无服务器推理文档](https://docs.aws.amazon.com/sagemaker/latest/dg/serverless-endpoints.html)。

------
#### [ Amazon SageMaker Studio Classic ]

这些推荐会填充到 Studio Classic 中名为**推理推荐**的新选项卡中。显示结果最多可能需要 2 小时。此选项卡包含**结果**和**详情**列。

**详情**列提供有关负载测试作业的信息，例如为负载测试作业指定的名称、作业创建时间（**创建时间**) 等。它还包含**设置**信息，例如每分钟发生的最大调用次数以及有关使用的 Amazon 资源名称的信息。

“**结果**” 列提供**部署目标**和 **SageMaker AI 建议**窗口，您可以在其中根据部署重要性调整结果的显示顺序。您可以在三个下拉菜单中为使用案例提供**成本**、**延迟**和**吞吐量**的重要性级别。对于每个目标（成本、延迟和吞吐量），您可以设置重要性级别：**最低重要性**、**低重要性**、**中等重要性**、**高度重要**或**最重要**。

根据您为每个目标选择的重要性，Inference Recommerder 会在面板右侧的推荐字段中显示其最重要的**SageMaker建议**，以及每小时的估计成本和推理请求。它还提供了有关预期模型延迟、最大调用次数和实例数的信息。

除了显示的顶级推荐之外，您还可以在**所有运行**部分中查看为 Inference Recommender 测试的所有实例显示的相同信息。

------
#### [ SageMaker AI console ]

您可以通过执行以下操作在 SageMaker AI 控制台中查看您的自定义负载测试任务结果：

1. 前往 SageMaker AI 控制台，网址为[https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/)。

1. 在左侧导航窗格中，选择**推理**，然后选择 **Inference Recommender**。

1. 在 **Inference Recommender 作业**页面上，选择推理推荐作业的名称。

在任务的详细信息页面上，您可以查看**推理建议**，这是 SageMaker AI 为您的模型推荐的实例类型，如以下屏幕截图所示。

![\[SageMaker AI 控制台作业详情页面上推理建议列表的屏幕截图。\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/inf-rec-instant-recs.png)


在此部分中，您可以按**模型延迟**、**每小时成本**、**每次推理成本**和**每分钟调用次数**等各种因素比较实例类型。

在此页面上，您还可以查看为作业指定的配置。在 “**监控**” 部分，您可以查看为每种实例类型记录的 Amazon CloudWatch 指标。要详细了解如何解释这些指标，请参阅[解释结果](https://docs.aws.amazon.com/sagemaker/latest/dg/inference-recommender-interpret-results.html)。

------