

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

# 定义扩展策略
<a name="endpoint-auto-scaling-add-code-define"></a>

将扩展策略添加到模型之前，请将策略配置保存为文本文件中的 JSON 块。在调用 Amazon Command Line Interface (Amazon CLI) 或 Application Auto Scaling API 时，您可以使用该文本文件。您可以通过选择适当的 CloudWatch 指标来优化扩展。不过，在生产中使用自定义指标之前，您必须用自定义指标测试自动扩缩功能。

**Topics**
+ [指定预定义的指标（CloudWatch 指标: InvocationsPerInstance）](#endpoint-auto-scaling-add-code-predefined)
+ [指定高分辨率的预定义指标（CloudWatch 指标： ConcurrentRequestsPerModel 和 ConcurrentRequestsPerCopy）](#endpoint-auto-scaling-add-code-high-res)
+ [定义自定义指标（CloudWatch 指标: CPUUtilization）](#endpoint-auto-scaling-add-code-custom)
+ [定义自定义指标（CloudWatch 指标: ExplanationsPerInstance）](#endpoint-auto-scaling-online-explainability)
+ [指定冷却时间](#endpoint-auto-scaling-add-code-cooldown)

本节将介绍目标跟踪扩展策略配置的示例。

## 指定预定义的指标（CloudWatch 指标: InvocationsPerInstance）
<a name="endpoint-auto-scaling-add-code-predefined"></a>

**Example**  
下面是一个变体的目标跟踪策略配置示例，该变体将每个实例的平均调用次数保持在 70 次。将此配置保存在名为 `config.json` 的文件中。  

```
{
    "TargetValue": 70.0,
    "PredefinedMetricSpecification":
    {
        "PredefinedMetricType": "SageMakerVariantInvocationsPerInstance"
    }
}
```
有关更多信息，请参阅《App *licati [TargetTrackingScalingPolicyConfiguration](https://docs.amazonaws.cn/autoscaling/application/APIReference/API_TargetTrackingScalingPolicyConfiguration.html)on Auto Scaling API 参考*》中的。

## 指定高分辨率的预定义指标（CloudWatch 指标： ConcurrentRequestsPerModel 和 ConcurrentRequestsPerCopy）
<a name="endpoint-auto-scaling-add-code-high-res"></a>

使用以下高分辨率 CloudWatch 指标，您可以为模型收到的并发请求量设置扩展策略：

**ConcurrentRequestsPerModel**  
模型容器收到的并发请求数。

**ConcurrentRequestsPerCopy**  
推理组件收到的并发请求数。

这些指标跟踪模型容器同时处理的请求数量，包括容器内排队的请求。对于以令牌流形式发送推理响应的模型，这些指标会跟踪每个请求，直到模型发送请求的最后一个令牌。

作为高分辨率指标，它们比标准 CloudWatch指标更频繁地发布数据。`InvocationsPerInstance` 指标等标准指标，每分钟发布一次数据。然而，这些高分辨率指标每 10 秒钟就会发出一次数据。因此，当您的模型并发流量增加时，您的策略会做出反应，比标准指标更快地横向扩展。但是，随着您模型流量的减少，您的策略将以与标准指标相同的速度横向缩减。

下面是一个目标跟踪策略配置示例，如果每个模型的并发请求数超过 5，就会添加实例。将此配置保存在名为 `config.json` 的文件中。

```
{
    "TargetValue": 5.0,
    "PredefinedMetricSpecification":
    {
        "PredefinedMetricType": "SageMakerVariantConcurrentRequestsPerModelHighResolution"
    }
}
```

如果您使用推理组件将多个模型部署到同一个端点，可以创建一个等效的策略。在这种情况下，将 `PredefinedMetricType` 设为 `SageMakerInferenceComponentConcurrentRequestsPerCopyHighResolution`。

有关更多信息，请参阅《App *licati [TargetTrackingScalingPolicyConfiguration](https://docs.amazonaws.cn/autoscaling/application/APIReference/API_TargetTrackingScalingPolicyConfiguration.html)on Auto Scaling API 参考*》中的。

## 定义自定义指标（CloudWatch 指标: CPUUtilization）
<a name="endpoint-auto-scaling-add-code-custom"></a>

要使用自定义指标创建目标跟踪扩展策略，请指定指标名称、命名空间、单位、统计量和零个或多个维度。维度由维度名称和维度值组成。您可以使用任何与产能成比例变化的生产变量指标。

**Example**  
下面的配置示例显示了使用自定义指标的目标跟踪扩展策略。该策略根据所有实例的平均 CPU 利用率（50%）对变体进行扩展。将此配置保存在名为 `config.json` 的文件中。  

```
{
    "TargetValue": 50.0,
    "CustomizedMetricSpecification":
    {
        "MetricName": "CPUUtilization",
        "Namespace": "/aws/sagemaker/Endpoints",
        "Dimensions": [
            {"Name": "EndpointName", "Value": "my-endpoint" },
            {"Name": "VariantName","Value": "my-variant"}
        ],
        "Statistic": "Average",
        "Unit": "Percent"
    }
}
```
有关更多信息，请参阅《App *licati [CustomizedMetricSpecification](https://docs.amazonaws.cn/autoscaling/application/APIReference/API_CustomizedMetricSpecification.html)on Auto Scaling API 参考*》中的。

## 定义自定义指标（CloudWatch 指标: ExplanationsPerInstance）
<a name="endpoint-auto-scaling-online-explainability"></a>

当端点激活了在线可解释性时，它会发出一个 `ExplanationsPerInstance` 指标，输出变量每分钟、每个实例的平均解释记录数。解释记录的资源利用率与预测记录的资源利用率会大不相同。我们强烈建议使用这一指标对激活了在线可解释性的端点进行目标跟踪扩展。

您可以为一个可扩展目标创建多个目标跟踪策略。考虑从 [指定预定义的指标（CloudWatch 指标: InvocationsPerInstance）](#endpoint-auto-scaling-add-code-predefined) 部分添加 `InvocationsPerInstance` 策略（除 `ExplanationsPerInstance` 策略外）。如果由于 `EnableExplanations` 参数中设置的阈值，大多数调用都不返回解释，那么端点可以选择 `InvocationsPerInstance` 策略。如果有大量解释，则端点可以使用 `ExplanationsPerInstance` 策略。

**Example**  
下面的配置示例显示了使用自定义指标的目标跟踪扩展策略。策略比例调整变体实例的数量，使每个实例的 `ExplanationsPerInstance` 指标值为 20。将此配置保存在名为 `config.json` 的文件中。  

```
{
    "TargetValue": 20.0,
    "CustomizedMetricSpecification":
    {
        "MetricName": "ExplanationsPerInstance",
        "Namespace": "AWS/SageMaker",
        "Dimensions": [
            {"Name": "EndpointName", "Value": "my-endpoint" },
            {"Name": "VariantName","Value": "my-variant"}
        ],
        "Statistic": "Sum"
    }
}
```

有关更多信息，请参阅《App *licati [CustomizedMetricSpecification](https://docs.amazonaws.cn/autoscaling/application/APIReference/API_CustomizedMetricSpecification.html)on Auto Scaling API 参考*》中的。

## 指定冷却时间
<a name="endpoint-auto-scaling-add-code-cooldown"></a>

您可以通过指定 `ScaleOutCooldown` 和 `ScaleInCooldown` 参数，在目标跟踪扩展策略中选择性地定义冷却时间。

**Example**  
下面是一个变体的目标跟踪策略配置示例，该变体将每个实例的平均调用次数保持在 70 次。策略配置提供了 10 分钟（600 秒）的横向缩减冷却时间和 5 分钟（300 秒）的横向扩展冷却时间。将此配置保存在名为 `config.json` 的文件中。  

```
{
    "TargetValue": 70.0,
    "PredefinedMetricSpecification":
    {
        "PredefinedMetricType": "SageMakerVariantInvocationsPerInstance"
    },
    "ScaleInCooldown": 600,
    "ScaleOutCooldown": 300
}
```
有关更多信息，请参阅《App *licati [TargetTrackingScalingPolicyConfiguration](https://docs.amazonaws.cn/autoscaling/application/APIReference/API_TargetTrackingScalingPolicyConfiguration.html)on Auto Scaling API 参考*》中的。