

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 針對無伺服器端點自動擴展佈建並行
<a name="serverless-endpoints-autoscale"></a>

 Amazon SageMaker AI 會自動擴展或橫向擴展隨需無伺服器端點。對於具有佈建並行的無伺服器端點，您可以使用應用程式自動擴展根據流量設定檔上下擴展佈建並行，進而最佳化成本。

 以下是在無伺服器端點上自動擴展佈建並行的先決條件：
+ [註冊模型](#serverless-endpoints-autoscale-register)
+ [定義擴展政策](#serverless-endpoints-autoscale-define)
+ [套用擴展政策](#serverless-endpoints-autoscale-apply)

 您必須先將模型部署到具有佈建並行的無伺服器端點，才能使用自動擴展。部署的模型稱為[生產變體](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ProductionVariant.html)。如需使用佈建並行將模型部署到無伺服器端點的詳細資訊，請參閱[建立端點組態](serverless-endpoints-create-config.md)和[建立端點](serverless-endpoints-create-endpoint.md)。若要指定擴展政策的指標和目標值，您必須設定擴展政策。有關如何定義擴展政策的詳情，請參閱[定義擴展政策](#serverless-endpoints-autoscale-define)。在登錄您的模型和制定擴展政策之後，請將此擴展政策套用到已登錄的模型。有關如何套用擴展政策的詳情，請參閱[套用擴展政策](#serverless-endpoints-autoscale-apply)。

 有關與自動擴展搭配使用的其他先決條件和元件等詳情，請參閱 [SageMaker AI 自動擴展文件](endpoint-auto-scaling.md)中的 [自動擴展先決條件](endpoint-auto-scaling-prerequisites.md) 區段。

## 註冊模型
<a name="serverless-endpoints-autoscale-register"></a>

 若要使用佈建並行將自動擴展新增至無伺服器端點，您必須先使用 AWS CLI 或 Application Auto Scaling API 註冊模型 （生產變體）。

### 註冊模型 (AWS CLI)
<a name="serverless-endpoints-autoscale-register-cli"></a>

 若要註冊您的模型，請使用 `register-scalable-target` AWS CLI 命令搭配下列參數：
+  `--service-namespace` – 將此值設定為 `sagemaker`。
+  `--resource-id` — 模型的資源識別符 (特別是生產變體)。針對這項參數，資源的類型為 `endpoint`，而唯一識別符是生產變體的名稱。例如 `endpoint/MyEndpoint/variant/MyVariant`。
+  `--scalable-dimension` – 將此值設定為 `sagemaker:variant:DesiredProvisionedConcurrency`。
+  `--min-capacity` — 模型的佈建並行數量下限。將 `--min-capacity` 至少設定為 1。此值必須小於或等於 `--max-capacity` 所指定的值。
+  `--max-capacity` — 應用程式自動擴展要啟用的佈建並行數量上限。將 `--max-capacity` 設為最小值 1。該值必須大於或等於您為 `--min-capacity` 指定的值。

 下列範例顯示如何註冊名為 `MyVariant` 的模型，該模型可動態調整規模，以包含 1 到 10 個佈建並行值：

```
aws application-autoscaling register-scalable-target \
    --service-namespace sagemaker \
    --scalable-dimension sagemaker:variant:DesiredProvisionedConcurrency \
    --resource-id endpoint/MyEndpoint/variant/MyVariant \
    --min-capacity 1 \
    --max-capacity 10
```

### 註冊模型 (應用程式自動擴展 API)
<a name="serverless-endpoints-autoscale-register-api"></a>

 若要註冊您的模型，請使用 `RegisterScalableTarget` 應用程式自動擴展 API 動作搭配下列參數：
+  `ServiceNamespace` – 將此值設定為 `sagemaker`。
+  `ResourceId` — 模型的資源識別符 (特別是生產變體)。針對這項參數，資源的類型為 `endpoint`，而唯一識別符是生產變體的名稱。例如 `endpoint/MyEndpoint/variant/MyVariant`。
+  `ScalableDimension` – 將此值設定為 `sagemaker:variant:DesiredProvisionedConcurrency`。
+  `MinCapacity` — 模型的佈建並行數量下限。將 `MinCapacity` 至少設定為 1。此值必須小於或等於 `MaxCapacity` 所指定的值。
+  `MaxCapacity` — 應用程式自動擴展要啟用的佈建並行數量上限。將 `MaxCapacity` 設為最小值 1。該值必須大於或等於您為 `MinCapacity` 指定的值。

 下列範例顯示如何註冊名為 `MyVariant` 的模型，該模型可動態調整規模，以包含 1 到 10 個佈建並行值：

```
POST / HTTP/1.1
Host: autoscaling.us-east-2.amazonaws.com
Accept-Encoding: identity
X-Amz-Target: AnyScaleFrontendService.RegisterScalableTarget
X-Amz-Date: 20160506T182145Z
User-Agent: aws-cli/1.10.23 Python/2.7.11 Darwin/15.4.0 botocore/1.4.8
Content-Type: application/x-amz-json-1.1
Authorization: AUTHPARAMS

{
    "ServiceNamespace": "sagemaker",
    "ResourceId": "endpoint/MyEndPoint/variant/MyVariant",
    "ScalableDimension": "sagemaker:variant:DesiredProvisionedConcurrency",
    "MinCapacity": 1,
    "MaxCapacity": 10
}
```

## 定義擴展政策
<a name="serverless-endpoints-autoscale-define"></a>

 若要指定自動擴展政策的指標和目標值，您可以設定目標追蹤擴展政策。將擴展政策定義為文字檔案中的 JSON 區塊。然後，您可以在叫用 AWS CLI 或 Application Auto Scaling API 時使用該文字檔案。若要快速定義無伺服器端點的目標追蹤擴展政策，請使用 `SageMakerVariantProvisionedConcurrencyUtilization` 預先定義的指標。

```
{
    "TargetValue": 0.5,
    "PredefinedMetricSpecification": 
    {
        "PredefinedMetricType": "SageMakerVariantProvisionedConcurrencyUtilization"
    },
    "ScaleOutCooldown": 1,
    "ScaleInCooldown": 1
}
```

## 套用擴展政策
<a name="serverless-endpoints-autoscale-apply"></a>

 註冊模型後，您可以使用佈建並行將擴展政策套用至無伺服器端點。請參閱[套用目標追蹤擴展政策](#serverless-endpoints-autoscale-apply-target)，了解如何套用您定義的目標追蹤擴展政策。如果流向無伺服器端點的流量具有可預測的例行模式，則您可能需要在特定時間安排擴展動作，而非套用目標追蹤擴展政策。如需安排擴展動作的詳情，請參閱[排程擴展](#serverless-endpoints-autoscale-apply-scheduled)。

### 套用目標追蹤擴展政策
<a name="serverless-endpoints-autoscale-apply-target"></a>

 您可以使用 AWS 管理主控台 AWS CLI 或 Application Auto Scaling API，透過佈建並行將目標追蹤擴展政策套用至無伺服器端點。

#### 套用目標追蹤擴展政策 (AWS CLI)
<a name="serverless-endpoints-autoscale-apply-target-cli"></a>

 若要將擴展政策套用到您的模型，請使用 `put-scaling-policy` AWS CLI命令搭配下列參數：
+  `--policy-name` – 擴展政策的名稱。
+  `--policy-type` – 將此值設定為 `TargetTrackingScaling`。
+  `--resource-id` — 變體的資源識別符。針對這項參數，資源的類型為 `endpoint`，而唯一識別符是變體的名稱。例如 `endpoint/MyEndpoint/variant/MyVariant`。
+  `--service-namespace` – 將此值設定為 `sagemaker`。
+  `--scalable-dimension` – 將此值設定為 `sagemaker:variant:DesiredProvisionedConcurrency`。
+  `--target-tracking-scaling-policy-configuration` — 要用於模型的目標追蹤擴展政策組態。

 下列範例示範如何將名為 `MyScalingPolicy` 的目標追蹤擴展政策，套用至名為 `MyVariant` 的模型。政策的組態是儲存於名為 `scaling-policy.json` 的檔案中。

```
aws application-autoscaling put-scaling-policy \
    --policy-name MyScalingPolicy \
    --policy-type TargetTrackingScaling \
    --service-namespace sagemaker \
    --scalable-dimension sagemaker:variant:DesiredProvisionedConcurrency \
    --resource-id endpoint/MyEndpoint/variant/MyVariant \
    --target-tracking-scaling-policy-configuration file://[file-localtion]/scaling-policy.json
```

#### 套用目標追蹤擴展政策 (應用程式自動擴展 API)
<a name="serverless-endpoints-autoscale-apply-target-api"></a>

 若要將擴展政策套用到您的模型，請使用 `PutScalingPolicy` 應用程式自動擴展 API 動作並搭配下列參數：
+  `PolicyName` – 擴展政策的名稱。
+  `PolicyType` – 將此值設定為 `TargetTrackingScaling`。
+  `ResourceId` — 變體的資源識別符。針對這項參數，資源的類型為 `endpoint`，而唯一識別符是變體的名稱。例如 `endpoint/MyEndpoint/variant/MyVariant`。
+  `ServiceNamespace` – 將此值設定為 `sagemaker`。
+  `ScalableDimension` – 將此值設定為 `sagemaker:variant:DesiredProvisionedConcurrency`。
+  `TargetTrackingScalingPolicyConfiguration` — 要用於模型的目標追蹤擴展政策組態。

 下列範例示範如何將名為 `MyScalingPolicy` 的目標追蹤擴展政策，套用至名為 `MyVariant` 的模型。政策的組態是儲存於名為 `scaling-policy.json` 的檔案中。

```
POST / HTTP/1.1
Host: autoscaling.us-east-2.amazonaws.com
Accept-Encoding: identity
X-Amz-Target: AnyScaleFrontendService.PutScalingPolicy
X-Amz-Date: 20160506T182145Z
User-Agent: aws-cli/1.10.23 Python/2.7.11 Darwin/15.4.0 botocore/1.4.8
Content-Type: application/x-amz-json-1.1
Authorization: AUTHPARAMS

{
    "PolicyName": "MyScalingPolicy",
    "ServiceNamespace": "sagemaker",
    "ResourceId": "endpoint/MyEndpoint/variant/MyVariant",
    "ScalableDimension": "sagemaker:variant:DesiredProvisionedConcurrency",
    "PolicyType": "TargetTrackingScaling",
    "TargetTrackingScalingPolicyConfiguration": 
    {
        "TargetValue": 0.5,
        "PredefinedMetricSpecification": 
        {
            "PredefinedMetricType": "SageMakerVariantProvisionedConcurrencyUtilization"
        }
    }
}
```

#### 套用目標追蹤擴展政策 (AWS 管理主控台)
<a name="serverless-endpoints-autoscale-apply-target-console"></a>

 若要使用 套用目標追蹤擴展政策 AWS 管理主控台：

1.  登入 [Amazon SageMaker AI 主控台](https://console.aws.amazon.com/sagemaker/)。

1.  在導覽面板中，選擇 **Inference** (推論)。

1.  選擇 **Endpoints** (端點)，檢視所有端點的清單。

1.  選擇您要套用擴展政策的端點。系統將顯示一個包含端點設定的頁面，其中模型 (生產變體) 會列在 **Endpoint runtime settings** (端點執行期設定) 區段下。

1.  選取您要套用擴展政策的生產變體，然後選擇 **Configure auto scaling** (設定自動擴展)。畫面會顯示 **Configure variant automatic scaling** (設定變體自動擴展) 對話框。  
![主控台中設定變體自動擴展對話框的螢幕擷取畫面。](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/serverless-endpoints-variant-autoscaling.png)

1.  在 **Variant automatic scaling** (變體自動擴展) 區段 **Minimum provisioned concurrency** (最小佈建並行) 和 **Maximum provisioned concurrency** (最大佈建並行) 欄位中，分別輸入最小和最大的佈建並行值。佈建並行下限必須小於或等於佈建並行的上限。

1.  在目標指標結果 (`SageMakerVariantProvisionedConcurrencyUtilization`) 的 **Target value** (目標值) 欄位中輸入目標值。

1.  (選用) 在**縮減冷卻**和**向外擴展冷卻**欄位中，分別輸入縮減冷卻與向外擴展冷卻值 (以秒為單位)。

1.  (選用) 若不想在流量減少時讓自動擴展刪除執行個體，請選取 **Disable scale in** (停用縮減)。

1.  選取**儲存**。

### 排程擴展
<a name="serverless-endpoints-autoscale-apply-scheduled"></a>

 如果使用佈建並行傳送至無伺服器端點的流量遵循例行模式，您可能需在特定時間安排擴展動作，以縮減或向外擴展佈建並行。您可以使用 AWS CLI 或 Application Auto Scaling 來排程擴展動作。

#### 排程擴展功能 (AWS CLI)
<a name="serverless-endpoints-autoscale-apply-scheduled-cli"></a>

 若要將擴展政策套用至模型，請使用 `put-scheduled-action` AWS CLI； 命令搭配下列參數：
+  `--schedule-action-name` — 擴展動作的名稱。
+  `--schedule` — Cron 表達式，透過週期性排程指定擴展動作的開始和結束時間。
+  `--resource-id` — 變體的資源識別符。針對這項參數，資源的類型為 `endpoint`，而唯一識別符是變體的名稱。例如 `endpoint/MyEndpoint/variant/MyVariant`。
+  `--service-namespace` – 將此值設定為 `sagemaker`。
+  `--scalable-dimension` – 將此值設定為 `sagemaker:variant:DesiredProvisionedConcurrency`。
+  `--scalable-target-action` — 擴展動作的目標。

 以下範例說明如何將名為 `MyScalingAction` 的擴展動作新增至週期性排程上名為 `MyVariant` 的模型。按照指定的排程時間 (每天 UTC 時間下午 12:15)，若目前的佈建並行低於 `MinCapacity` 指定的值。應用程式自動擴展會將佈建並行向外擴展至 `MinCapacity` 指定的值。

```
aws application-autoscaling put-scheduled-action \
    --scheduled-action-name 'MyScalingAction' \
    --schedule 'cron(15 12 * * ? *)' \
    --service-namespace sagemaker \
    --resource-id endpoint/MyEndpoint/variant/MyVariant \
    --scalable-dimension sagemaker:variant:DesiredProvisionedConcurrency \
    --scalable-target-action 'MinCapacity=10'
```

#### 排程擴展功能 (應用程式自動擴展 API)
<a name="serverless-endpoints-autoscale-apply-scheduled-api"></a>

 若要將擴展政策套用到您的模型，請使用 `PutScheduledAction` 應用程式自動擴展 API 動作並搭配下列參數：
+  `ScheduleActionName` — 擴展動作的名稱。
+  `Schedule` — Cron 表達式，透過週期性排程指定擴展動作的開始和結束時間。
+  `ResourceId` — 變體的資源識別符。針對這項參數，資源的類型為 `endpoint`，而唯一識別符是變體的名稱。例如 `endpoint/MyEndpoint/variant/MyVariant`。
+  `ServiceNamespace` – 將此值設定為 `sagemaker`。
+  `ScalableDimension` – 將此值設定為 `sagemaker:variant:DesiredProvisionedConcurrency`。
+  `ScalableTargetAction` — 擴展動作的目標。

 以下範例說明如何將名為 `MyScalingAction` 的擴展動作新增至週期性排程上名為 `MyVariant` 的模型。按照指定的排程時間 (每天 UTC 時間下午 12:15)，若目前的佈建並行低於 `MinCapacity` 指定的值。應用程式自動擴展會將佈建並行向外擴展至 `MinCapacity` 指定的值。

```
POST / HTTP/1.1
Host: autoscaling.us-east-2.amazonaws.com
Accept-Encoding: identity
X-Amz-Target: AnyScaleFrontendService.PutScheduledAction
X-Amz-Date: 20160506T182145Z
User-Agent: aws-cli/1.10.23 Python/2.7.11 Darwin/15.4.0 botocore/1.4.8
Content-Type: application/x-amz-json-1.1
Authorization: AUTHPARAMS

{
    "ScheduledActionName": "MyScalingAction",
    "Schedule": "cron(15 12 * * ? *)",
    "ServiceNamespace": "sagemaker",
    "ResourceId": "endpoint/MyEndpoint/variant/MyVariant",
    "ScalableDimension": "sagemaker:variant:DesiredProvisionedConcurrency",
    "ScalableTargetAction": "MinCapacity=10"
        }
    }
}
```