

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# SageMaker HyperPod クラスターのスケールダウン
<a name="smcluster-scale-down"></a>

Amazon SageMaker HyperPod クラスターで実行中のインスタンス数をスケールダウンできます。リソース使用率の削減やコストの最適化など、さまざまな理由でクラスターをスケールダウンする必要がある場合があります。

次のページでは、スケールダウンを行うための 2 つの主な方法について説明します。
+ **インスタンスグループレベルでのスケールダウン:** この方法では `UpdateCluster` API を使用して、以下を実行できます。
  + 特定のインスタンスグループのインスタンス数を個別にスケールダウンします。SageMaker AI は、各グループに設定した新しいターゲットインスタンス数に達するという方法でノードの終了を処理します。「[インスタンスグループをスケールダウンする](#smcluster-scale-down-updatecluster)」を参照してください。
  + クラスターからインスタンスグループを完全に削除します。「[インスタンスグループを削除する](#smcluster-remove-instancegroup)」を参照してください。
+ **インスタンスレベルでスケールダウンする:** このアプローチでは `BatchDeleteClusterNodes` API を使用して、終了する個々のノードを指定できます。「[インスタンスレベルでスケールダウンする](#smcluster-scale-down-batchdelete)」を参照してください。

**注記**  
`BatchDeleteCusterNodes` を使用してインスタンスレベルでスケールダウンする場合、一度に終了できるインスタンスは最大 99 個のみです。`UpdateCluster` では、任意の数のインスタンスの終了がサポートされています。

## 重要な考慮事項
<a name="smcluster-scale-down-considerations"></a>
+ クラスターをスケールダウンす際は、残りのリソースがワークロードを処理するのに十分であり、中断を避けるために必要なデータ移行または再調整が適切に処理されていることを確認する必要があります。
+ ワーカーノードグループで API を呼び出す前に、必ずデータを Amazon S3 または Lustre ファイルシステム用 FSx にバックアップします。これにより、インスタンスルートボリュームからの潜在的なデータ損失を防ぐことができます。バックアップの詳細については、「[SageMaker HyperPod が提供するバックアップスクリプトを使用する](sagemaker-hyperpod-operate-slurm-cli-command.md#sagemaker-hyperpod-operate-slurm-cli-command-update-cluster-software-backup)」を参照してください。
+ 既存のクラスターでこの API を呼び出すには、まず [ UpdateClusterSoftware](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateClusterSoftware.html) API を実行してクラスターにパッチを適用する必要があります。クラスターへのパッチ適用の詳細については、「[クラスターの SageMaker HyperPod プラットフォームソフトウェアを更新する](sagemaker-hyperpod-operate-slurm-cli-command.md#sagemaker-hyperpod-operate-slurm-cli-command-update-cluster-software)」を参照してください。
+ オンデマンドインスタンスの課金/請求は、スケールダウン後に自動的に停止します。スケールダウンされたリザーブドインスタンスの計測を停止するには、 AWS アカウントチームに連絡してサポートを依頼する必要があります。
+ スケールダウンされたリザーブドインスタンスから解放されたキャパシティを使用して、別の SageMaker HyperPod クラスターをスケールアップできます。

## インスタンスグループレベルでスケールダウンする
<a name="smcluster-scale-down-or-delete"></a>

[https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateCluster.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateCluster.html) オペレーションを使用すると、インスタンスグループのインスタンス数をスケールダウンしたり、インスタンスグループ全体を削除したりするなど、SageMaker HyperPod クラスターの設定を変更できます。これは、ワークロードの変更に基づいてクラスターに割り当てられたリソースを調整したり、コストを最適化したり、インスタンスグループのインスタンスタイプを変更したりする場合に役に立ちます。

### インスタンスグループをスケールダウンする
<a name="smcluster-scale-down-updatecluster"></a>

このアプローチは、アイドル状態のインスタンスグループがあり、スケールダウンのために任意のインスタンスを終了しても安全である場合に使用します。スケールダウンする `UpdateCluster` リクエストを送信すると、HyperPod はインスタンスを終了対象としてランダムに選択し、インスタンスグループの指定された数のノードにスケールダウンします。

**注記**  
インスタンスグループのインスタンス数を 0 にスケールダウンすると、そのグループ内のすべてのインスタンスが終了します。ただし、インスタンスグループ自体は SageMaker HyperPod クラスターの一部として引き続き存在します。同じインスタンスグループ設定を使用して、後でインスタンスグループをスケールアップできます。  
または、インスタンスグループを完全に削除することもできます。詳細については、「[インスタンスグループを削除する](#smcluster-remove-instancegroup)」を参照してください。

**`UpdateCluster` を使用してスケールダウンするには**

1. 「[SageMaker HyperPod クラスターの設定を更新する](sagemaker-hyperpod-eks-operate-cli-command-update-cluster.md)」に記載の手順に従います。ステップ **1.d** で **InstanceCount** フィールドを指定する際に、クラスターをスケールダウンする現在のインスタンス数よりも小さい数値を入力します。

1. [update-cluster](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/update-cluster.html) AWS CLI コマンドを実行して、リクエストを送信します。

`UpdateCluster` JSON オブジェクトの例は、次のとおりです。現在 2 つのインスタンスが実行されている状況を想定します。例に示されるとおり、**InstanceCount** フィールドを 1 に設定すると、HyperPod はインスタンスの 1 つをランダムに選択して終了します。

```
{
  "ClusterName": "name-of-cluster-to-update",
  "InstanceGroups": [
    {
      "InstanceGroupName": "training-instances",
      "InstanceType": "instance-type",
      "InstanceCount": 1,
      "LifeCycleConfig": {
        "SourceS3Uri": "s3://amzn-s3-demo-bucket/training-script.py",
        "OnCreate": "s3://amzn-s3-demo-bucket/setup-script.sh"
      },
      "ExecutionRole": "arn:aws:iam::123456789012:role/SageMakerRole",
      "ThreadsPerCore": number-of-threads,
      "OnStartDeepHealthChecks": [
        "InstanceStress",
        "InstanceConnectivity"
      ]
    }
  ],
  "NodeRecovery": "Automatic"
}
```

### インスタンスグループを削除する
<a name="smcluster-remove-instancegroup"></a>

[https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateCluster.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateCluster.html) オペレーションを使用すると、不要になったインスタンスグループ全体を SageMaker HyperPod クラスターから完全に削除できます。これはシンプルなスケールダウンのみでなく、クラスターの設定から特定のインスタンスグループを完全に排除できます。

**注記**  
インスタンスグループを削除する場合:  
ターゲットグループ内のすべてのインスタンスが終了します。
グループの設定全体がクラスターから削除されます。
そのインスタンスグループで実行されているワークロードはすべて停止されます。

**`UpdateCluster` を使用してインスタンスグループを削除するには**

1. 「[SageMaker HyperPod クラスターの設定を更新する](sagemaker-hyperpod-eks-operate-cli-command-update-cluster.md)」に記載の手順に従う場合:

   1. `UpdateCluster` JSON でオプションの `InstanceGroupsToDelete` パラメータを設定し、削除するインスタンスグループ名のカンマ区切りリストを渡します。

   1.  `InstanceGroups` リストを指定する際は、削除するインスタンスグループの仕様が `InstanceGroups` リストに表示されていないことを確認します。

1. [update-cluster](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/update-cluster.html) AWS CLI コマンドを実行して、リクエストを送信します。

**重要**  
SageMaker HyperPod クラスターは、常に少なくとも 1 つのインスタンスグループを維持する必要があります。
削除する前に、すべての重要なデータがバックアップ済みであることを確認します。
削除プロセスは元に戻せません。

`UpdateCluster` JSON オブジェクトの例は、次のとおりです。クラスターに現在 3 つのインスタンスグループ、*トレーニング*グループ、*プロトタイプトレーニング*グループ、*推論サービス*グループがある場合を想定します。*プロトタイプトレーニング*グループを削除します。

```
{
  "ClusterName": "name-of-cluster-to-update",
  "InstanceGroups": [
    {
      "InstanceGroupName": "training",
      "InstanceType": "instance-type",
      "InstanceCount": ,
      "LifeCycleConfig": {
        "SourceS3Uri": "s3://amzn-s3-demo-bucket/training-script.py",
        "OnCreate": "s3://amzn-s3-demo-bucket/setup-script.sh"
      },
      "ExecutionRole": "arn:aws:iam::123456789012:role/SageMakerRole",
      "ThreadsPerCore": number-of-threads,
      "OnStartDeepHealthChecks": [
        "InstanceStress",
        "InstanceConnectivity"
      ]
    },
    {
      "InstanceGroupName": "inference-serving",
      "InstanceType": "instance-type",
      "InstanceCount": 2,
      [...]
    },
  ],
  "InstanceGroupsToDelete": [ "prototype-training" ],
  "NodeRecovery": "Automatic"
}
```

## インスタンスレベルでスケールダウンする
<a name="smcluster-scale-down-batchdelete"></a>

`BatchDeleteClusterNodes` オペレーションを使用すると、終了する個々のノードを指定して SageMaker HyperPod クラスターをスケールダウンできます。`BatchDeleteClusterNodes` は、ターゲットノードの削除とクラスターの最適化をさらにきめ細かく制御できます。例えば、`BatchDeleteClusterNodes` を使用すると、メンテナンス、ローリングアップグレード、またはリソースの地理的な再調整のターゲットノードを削除できます。

**API リクエストと応答**

`BatchDeleteClusterNodes` リクエストを送信すると、SageMaker HyperPod はインスタンス ID に基づいてノードを削除します。API は、クラスター名と削除するノード ID のリストを含むリクエストを受け入れます。

応答には 2 つのセクションがあります。
+  `Failed`: `[ BatchDeleteClusterNodesError ](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_BatchDeleteClusterNodesError.html)` タイプのエラーのリスト - インスタンス ID ごとに 1 つ。
+  `Successful`: 正常に終了したインスタンス ID のリスト。

**検証とエラー処理**

API は、次のとおり、さまざまな検証を実行します。
+ ノード ID 形式 (`i-` のプレフィックスと Amazon EC2 インスタンス ID 構造) の検証。
+ ノードリストの長さを確認ます。1 回の `BatchDeleteClusterNodes` リクエストではノード ID が 99 個以下に制限されます。
+ 入力されたクラスター名を持つ有効な SageMaker HyperPod クラスターが存在し、クラスターレベルのオペレーション (更新、システム更新、パッチ適用、削除) が進行中でないことを確認します。
+ インスタンスが見つからない場合、無効なステータスの場合、または使用中の場合の処理。

**API レスポンスコード**
+  API は、成功 (すべての入力ノードが検証に成功した場合など) または部分的に成功したリクエスト (一部の入力ノードが検証に失敗した場合など)、`200` のステータスコードを返します。
+  これらの検証がすべて失敗した場合 (すべての入力ノードが検証で失敗した場合など）、API は適切なエラーメッセージとエラーコードを含む `400` Bad Request レスポンスを返します。

**例**

以下は、 AWS CLIを使用して**インスタンスレベルでクラスターをスケールダウン**する例です。

```
aws sagemaker batch-delete-cluster-nodes --cluster-name "cluster-name" --node-ids '["i-111112222233333", "i-111112222233333"]'
```