

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

# 針對無伺服器端點自動擴展佈建並行
<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 或應用程式自動擴展 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 或應用程式自動擴展 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 或應用程式自動擴展 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.  在導覽面板中，選擇**推論**。

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.  選取 **Save** (儲存)。

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

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

#### 排程擴展功能 (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"
        }
    }
}
```

# 清除
<a name="serverless-endpoints-autoscale-cleanup"></a>

 使用佈建並行為無伺服器端點使用自動擴展之後，您應清除您建立的資源。這包括刪除擴展政策和從應用程式自動擴展取消註冊模型。清除動作確保您不再使用的資源不會產生不必要的成本。

## 刪除擴展政策
<a name="serverless-endpoints-autoscale-delete"></a>

 您可以使用 AWS 管理主控台、AWS CLI 或應用程式自動擴展 API，來刪除擴展政策。如需有關使用 AWS 管理主控台 刪除擴展政策的詳細資訊，請參閱 [SageMaker AI 自動擴展文件](endpoint-auto-scaling.md)中的 [刪除擴展政策](endpoint-auto-scaling-delete.md)。

### 刪除擴展政策 (AWS CLI)
<a name="serverless-endpoints-autoscale-delete-cli"></a>

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

 下列的範例從名為 `MyVariant` 的模型中，刪除了名為 `MyScalingPolicy` 的擴展政策。

```
aws application-autoscaling delete-scaling-policy \
    --policy-name MyScalingPolicy \
    --service-namespace sagemaker \
    --scalable-dimension sagemaker:variant:DesiredProvisionedConcurrency \
    --resource-id endpoint/MyEndpoint/variant/MyVariant
```

### 刪除擴展政策 (應用程式自動擴展 API)
<a name="serverless-endpoints-autoscale-delete-api"></a>

 若要從模型刪除擴展政策，請使用 `DeleteScalingPolicy` 應用程式自動擴展 API 動作並搭配下列參數：
+  `PolicyName` – 擴展政策的名稱。
+  `ResourceId` — 變體的資源識別符。針對這項參數，資源的類型為 `endpoint`，而唯一識別符是變體的名稱。例如 `endpoint/MyEndpoint/variant/MyVariant`。
+  `ServiceNamespace` – 將此值設定為 `sagemaker`。
+  `ScalableDimension` – 將此值設定為 `sagemaker:variant:DesiredProvisionedConcurrency`。

 以下範例使用應用程式自動擴展 API，從名為 `MyVariant` 的模型刪除名為 `MyScalingPolicy` 的擴展政策。

```
POST / HTTP/1.1
Host: autoscaling.us-east-2.amazonaws.com
Accept-Encoding: identity
X-Amz-Target: AnyScaleFrontendService.DeleteScalingPolicy
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",
}
```

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

 您可以使 用AWS 管理主控台、AWS CLI 或應用程式自動擴展 API，來取消註冊模型。

### 取消註冊模型 (AWS CLI)
<a name="serverless-endpoints-deregister-model-cli"></a>

 若要取消註冊應用程式自動擴展模型，請使用 `deregister-scalable-target` AWS CLI; 命令並搭配下列參數：
+  `--resource-id` — 變體的資源識別符。針對這項參數，資源的類型為 `endpoint`，而唯一識別符是變體的名稱。例如 `endpoint/MyEndpoint/variant/MyVariant`。
+  `--service-namespace` – 將此值設定為 `sagemaker`。
+  `--scalable-dimension` – 將此值設定為 `sagemaker:variant:DesiredProvisionedConcurrency`。

 以下範例可看到如何從應用程式自動擴展取消註冊名為 `MyVariant` 的模型。

```
aws application-autoscaling deregister-scalable-target \
    --service-namespace sagemaker \
    --scalable-dimension sagemaker:variant:DesiredProvisionedConcurrency \
    --resource-id endpoint/MyEndpoint/variant/MyVariant
```

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

 若要從應用程式自動擴展取消註冊模型，請使用 `DeregisterScalableTarget` 應用程式自動擴展 API 動作並搭配下列參數：
+  `ResourceId` — 變體的資源識別符。針對這項參數，資源的類型為 `endpoint`，而唯一識別符是變體的名稱。例如 `endpoint/MyEndpoint/variant/MyVariant`。
+  `ServiceNamespace` – 將此值設定為 `sagemaker`。
+  `ScalableDimension` – 將此值設定為 `sagemaker:variant:DesiredProvisionedConcurrency`。

 下列範例使用應用程式自動擴展 API，以從應用程式自動擴展取消註冊名為 `MyVariant` 的模型。

```
POST / HTTP/1.1
Host: autoscaling.us-east-2.amazonaws.com
Accept-Encoding: identity
X-Amz-Target: AnyScaleFrontendService.DeregisterScalableTarget
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",
}
```

### 取消註冊模型 (AWS 管理主控台)
<a name="serverless-endpoints-autoscale-deregister-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** (設定 Auto Scaling)。畫面會顯示 **Configure variant automatic scaling** (設定變體自動擴展) 對話框。

1.  選擇**取消登錄自動擴展**。