

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

# を使用した SageMaker HyperPod EKS クラスターの管理 AWS CLI
<a name="sagemaker-hyperpod-eks-operate-cli-command"></a>

以下のトピックでは、SageMaker HyperPod API リクエストファイルを JSON 形式で記述し、 AWS CLI コマンドを使用して実行するためのガイダンスを提供します。

**Topics**
+ [SageMaker HyperPod クラスターの作成](sagemaker-hyperpod-eks-operate-cli-command-create-cluster.md)
+ [SageMaker HyperPod クラスターの詳細を取得する](sagemaker-hyperpod-eks-operate-cli-command-cluster-details.md)
+ [SageMaker HyperPod クラスターの設定を更新する](sagemaker-hyperpod-eks-operate-cli-command-update-cluster.md)
+ [SageMaker HyperPod プラットフォームソフトウェアを更新する](sagemaker-hyperpod-eks-operate-cli-command-update-cluster-software.md)
+ [SageMaker HyperPod クラスターノードへのアクセス](sagemaker-hyperpod-eks-operate-access-through-terminal.md)
+ [SageMaker HyperPod クラスターのスケールダウン](smcluster-scale-down.md)
+ [SageMaker HyperPod クラスターの削除](sagemaker-hyperpod-eks-operate-cli-command-delete-cluster.md)

# SageMaker HyperPod クラスターの作成
<a name="sagemaker-hyperpod-eks-operate-cli-command-create-cluster"></a>

 AWS CLIを使用して Amazon EKS によってオーケストレーションされた SageMaker HyperPod クラスターを作成する方法を説明します。

1. SageMaker HyperPod クラスターを作成する前に:

   1. 既存の Amazon EKS クラスターが実行されていることを確認します。新しい Amazon EKS クラスターを作成する手順については、「*Amazon EKS ユーザーガイド*」の「[Amazon EKS クラスターを作成します](https://docs.aws.amazon.com/eks/latest/userguide/create-cluster.html)」を参照してください。

   1. 「[Helm を使用して Amazon EKS クラスターにパッケージをインストールする](sagemaker-hyperpod-eks-install-packages-using-helm-chart.md)」の手順に従って、Helm チャートをインストールします。[Amazon Nova SageMaker HyperPod クラスター](https://docs.aws.amazon.com//nova/latest/nova2-userguide/nova-hp-cluster.html)を作成する場合は、別の Helm チャートが必要です。

1. ライフサイクル設定スクリプトを準備し、`s3://amzn-s3-demo-bucket/Lifecycle-scripts/base-config/` などの Amazon S3 バケットにアップロードします。

   クイックスタートでは、ome Distributed Training GitHub AWSリポジトリ[https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/7.sagemaker-hyperpod-eks/LifecycleScripts/base-config/on_create.sh](https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/7.sagemaker-hyperpod-eks/LifecycleScripts/base-config/on_create.sh)からサンプルスクリプトをダウンロードし、S3 バケットにアップロードします。HyperPod クラスターのプロビジョニングステージ中に実行する追加のセットアップ手順、一連のセットアップスクリプト、またはコマンドを含めることもできます。
**重要**  
マネージド [https://docs.aws.amazon.com/sagemaker/latest/dg/security-iam-awsmanpol-cluster.html](https://docs.aws.amazon.com/sagemaker/latest/dg/security-iam-awsmanpol-cluster.html) のみアタッチして [SageMaker HyperPod の IAM ロール](sagemaker-hyperpod-prerequisites-iam.md#sagemaker-hyperpod-prerequisites-iam-role-for-hyperpod) を作成すると、クラスターは特定のプレフィックス `sagemaker-` を持つ Amazon S3 バケットにアクセスできます。

   制限付きインスタンスグループを作成する場合、ライフサイクルスクリプトをダウンロードして実行する必要はありません。代わりに、`install_rig_dependencies.sh` を実行する必要があります。

   `install_rig_dependencies.sh` スクリプトを実行するための前提条件は次のとおりです。
   + AWS ノード (CNI) と CoreDNS の両方を有効にする必要があります。これらは標準の EKS アドオンであり、標準の SageMaker HyperPod Helm によって管理されませんが、アドオンの EKS コンソールで簡単に有効にできます。
   +  このスクリプトを実行する前に、標準の SageMaker HyperPod Helm チャートをインストールする必要があります。

   `install_rig_dependencies.sh` スクリプトは、以下のアクションを実行します。
   + `aws-node` (CNI): 新しい `rig-aws-node` デーモンセットが作成されました。RIG ノードを避けるために既存の `aws-node` パッチが適用されました。
   + `coredns`: 複数の RIG の使用をサポートし、過負荷を防止するため、RIG 用の Daemonset に変換されました。
   + training-operators: RIG ワーカーの taint 許容と、RIG 以外のインスタンスを優先する nodeAffinity を更新しました。
   + Elastic Fabric Adapter (EFA): RIG ワーカーの taint を許容し、各リージョンで適切なコンテナイメージを使用するように更新しました。

1. [CreateCluster](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateCluster.html) API リクエストファイルを JSON 形式で準備します。`ExecutionRole` には、セクション [SageMaker HyperPod の IAM ロール](sagemaker-hyperpod-prerequisites-iam.md#sagemaker-hyperpod-prerequisites-iam-role-for-hyperpod) から マネージド `AmazonSageMakerClusterInstanceRolePolicy` で作成した IAM ロールの ARN を指定します。
**注記**  
SageMaker HyperPod クラスターが Amazon EKS クラスターと同じ仮想プライベートクラウド (VPC) 内にデプロイされていることを確認します。SageMaker HyperPod クラスター設定で指定されたサブネットとセキュリティグループは、Amazon EKS クラスターの API サーバーエンドポイントとのネットワーク接続と通信を許可する必要があります。

   ```
   // create_cluster.json
   {
       "ClusterName": "string",
       "InstanceGroups": [{
           "InstanceGroupName": "string",
           "InstanceType": "string",
           "InstanceCount": number,
           "LifeCycleConfig": {
               "SourceS3Uri": "s3://amzn-s3-demo-bucket-sagemaker/lifecycle-script-directory/src/",
               "OnCreate": "on_create.sh"
           },
           "ExecutionRole": "string",
           "ThreadsPerCore": number,
           "OnStartDeepHealthChecks": [
               "InstanceStress", "InstanceConnectivity"
           ]
       }],
       "RestrictedInstanceGroups": [ 
         { 
            "EnvironmentConfig": { 
               "FSxLustreConfig": { 
                  "PerUnitStorageThroughput": number,
                  "SizeInGiB": number
               }
            },
            "ExecutionRole": "string",
            "InstanceCount": number,
            "InstanceGroupName": "string",
            "InstanceStorageConfigs": [ 
               { ... }
            ],
            "InstanceType": "string",
            "OnStartDeepHealthChecks": [ "string" ],
            "OverrideVpcConfig": { 
               "SecurityGroupIds": [ "string" ],
               "Subnets": [ "string" ]
            },
            "ScheduledUpdateConfig": { 
               "DeploymentConfig": { 
                  "AutoRollbackConfiguration": [ 
                     { 
                        "AlarmName": "string"
                     }
                  ],
                  "RollingUpdatePolicy": { 
                     "MaximumBatchSize": { 
                        "Type": "string",
                        "Value": number
                     },
                     "RollbackMaximumBatchSize": { 
                        "Type": "string",
                        "Value": number
                     }
                  },
                  "WaitIntervalInSeconds": number
               },
               "ScheduleExpression": "string"
            },
            "ThreadsPerCore": number,
            "TrainingPlanArn": "string"
         }
      ],
       "VpcConfig": {
           "SecurityGroupIds": ["string"],
           "Subnets": ["string"]
       },
       "Tags": [{
           "Key": "string",
           "Value": "string"
       }],
       "Orchestrator": {
           "Eks": {
               "ClusterArn": "string",
               "KubernetesConfig": {
                   "Labels": {
                       "nvidia.com/mig.config": "all-3g.40gb"
                   }
               }
           }
       },
       "NodeRecovery": "Automatic"
   }
   ```

   EKS クラスターに関連付ける新しい SageMaker HyperPod クラスターを作成するよう設定するときは、次の点に注意してください。
   + `InstanceGroups` パラメータでは、最大 20 個のインスタンスグループを設定できます。
   + `Orchestator.Eks.ClusterArn` では、オーケストレーターとして使用する EKS クラスターの ARN を指定します。
   + `OnStartDeepHealthChecks` では、`InstanceStress` と `InstanceConnectivity` を追加して [ディープヘルスチェック](sagemaker-hyperpod-eks-resiliency-deep-health-checks.md) を有効にします。
   + `NodeRecovery` では、`Automatic` を指定して自動ノード復旧を有効にします。SageMaker HyperPod は、ヘルスモニタリングエージェントが問題を見つけたときにインスタンス (ノード) を置き換えるか再起動します。
   + `Tags` パラメータには、SageMaker HyperPod クラスターを AWS リソースとして管理するためのカスタムタグを追加できます。タグは、タグ付けをサポートする他の AWS サービスに追加するのと同じ方法でクラスターに追加できます。 AWS リソースのタグ付け全般の詳細については、「[AWS リソースのタグ付けのユーザーガイド](https://docs.aws.amazon.com/tag-editor/latest/userguide/tagging.html)」を参照してください。
   + `VpcConfig` パラメータでは、EKS クラスターで使用される VPC の情報を指定します。サブネットはプライベートでなければなりません。
   + では`Orchestrator.Eks.KubernetesConfig.Labels`、オプションでノードに適用する Kubernetes ラベルを指定できます。マルチインスタンス GPU (MIG) で GPU パーティショニングを有効にするには、目的の MIG プロファイルを持つ `nvidia.com/mig.config` ラベルを追加します。たとえば、 は 3g.40gb パーティションプロファイルですべての GPUs `"nvidia.com/mig.config": "all-3g.40gb"`を設定します。GPU パーティショニングと使用可能なプロファイルの詳細については、「」を参照してください[Amazon SageMaker HyperPod での GPU パーティションの使用 HyperPod](sagemaker-hyperpod-eks-gpu-partitioning.md)。

1. 次のように [create-cluster](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/create-cluster.html) コマンドを実行します。
**重要**  
`--cli-input-json` パラメータを指定して `create-cluster` コマンドを実行する場合、JSON ファイルへの完全なパスの前に `file://` プレフィックスを付ける必要があります。このプレフィックスは、 が入力をファイルパスとして AWS CLI 認識するために必要です。`file://` プレフィックスを省略すると、解析パラメータエラーが発生します。

   ```
   aws sagemaker create-cluster \
       --cli-input-json file://complete/path/to/create_cluster.json
   ```

   これにより、新しいクラスターの ARN が返されます。
**重要**  
[update-cluster](https://docs.aws.amazon.com//cli/latest/reference/ecs/update-cluster.html) オペレーションを使用すると、制限付きインスタンスグループ (RIG) を削除できます。RIG を 0 にスケールダウンしても、Lustre ファイルシステム用 FSx は削除されません。Lustre ファイルシステム用 FSx を完全に削除するには、RIG を完全に削除する必要があります。  
RIG を削除しても、サービスマネージド Amazon S3 バケットに保存されているアーティファクトは削除されません。ただし、削除する前に、Lustre ファイルシステム用 FSx 内のすべてのアーティファクトが Amazon S3 と完全に同期されていることを確認する必要があります。Lustre ファイルシステム用 FSx からサービスマネージド Amazon S3 バケットへのすべてのアーティファクトの完全な同期を確保するために、ジョブ完了後少なくとも 30 分待つことをお勧めします。
**重要**  
オンボードオンデマンドキャパシティ予約 (ODCR) を使用する場合は、一致する AZ ID にサブネット`OverrideVpcConfig`を使用して を設定することで、インスタンスグループを ODCR と同じアベイラビリティーゾーン ID (AZ ID) にマッピングする必要があります。  
CRITICAL: ODCR とオンデマンドキャパシティの両方で重複料金が発生しないように、デプロイ前に`OverrideVpcConfig`設定を確認します。

# SageMaker HyperPod クラスターの詳細を取得する
<a name="sagemaker-hyperpod-eks-operate-cli-command-cluster-details"></a>

 AWS CLIを使用して SageMaker HyperPod クラスターの詳細を取得する方法を説明します。

## クラスターを記述する
<a name="sagemaker-hyperpod-eks-operate-cli-command-describe-cluster"></a>

[describe-cluster](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/describe-cluster.html) を実行して、クラスターのステータスを確認します。クラスターの名前または ARN を指定できます。

```
aws sagemaker describe-cluster --cluster-name your-hyperpod-cluster
```

クラスターのステータスが **InService** になったら、次のステップに進みます。この API を使用すると、他の HyperPod API オペレーションの実行から失敗メッセージを取得することもできます。

## クラスターノードの詳細を一覧表示する
<a name="sagemaker-hyperpod-eks-operate-cli-command-list-cluster-nodes"></a>

[list-cluster-nodes](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/list-cluster-nodes.html) を実行して、クラスターノードのキー情報を確認します。

```
aws sagemaker list-cluster-nodes --cluster-name your-hyperpod-cluster
```

これによりレスポンスが返されます。ログ記録 (`aws ssm` を使用) するには、`InstanceId` を使用する必要があります。

## クラスターノードの詳細を記述する
<a name="sagemaker-hyperpod-eks-operate-cli-command-describe-cluster-node"></a>

[describe-cluster-node](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/describe-cluster-node.html) を実行して、クラスターノードの詳細を取得します。list-cluster-nodes 出力からクラスターノード ID を取得できます。クラスターの名前または ARN を指定できます。

```
aws sagemaker describe-cluster-node \
    --cluster-name your-hyperpod-cluster \
    --node-id i-111222333444555aa
```

## クラスターを一覧表示する
<a name="sagemaker-hyperpod-eks-operate-cli-command-list-clusters"></a>

[list-clusters](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/list-clusters.html) を実行して、アカウント内のすべてのクラスターを一覧表示します。

```
aws sagemaker list-clusters
```

クラスターのリストをフィルタリングするためのフラグを追加することもできます。このコマンドが低レベルで実行される方法とフィルタリング用の追加のフラグの詳細については、[ListClusters](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ListClusters.html) API リファレンスを参照してください。

# SageMaker HyperPod クラスターの設定を更新する
<a name="sagemaker-hyperpod-eks-operate-cli-command-update-cluster"></a>

[update-cluster](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/update-cluster.html) を実行して、クラスターの設定を更新します。

**注記**  
重要な考慮事項:  
クラスターの作成後、HyperPod クラスターが関連付けられている EKS クラスター情報を変更することはできません。
クラスターでディープヘルスチェックが実行されている場合、この API は正常に機能しません。ディープヘルスチェックが進行中であることを示すエラーメッセージが表示される場合があります。クラスターを更新するには、ディープヘルスチェックが完了するまで待つ必要があります。

1. JSON 形式で [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateCluster.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateCluster.html) API リクエストファイルを作成します。更新する適切なクラスター名とインスタンスグループ名を指定していることを確認してください。インスタンスタイプ、インスタンス数、ライフサイクル設定エントリポイントスクリプト、スクリプトへのパスを変更できます。
**注記**  
`UpdateCluster` を使用して、SageMaker HyperPod クラスターからインスタンスグループ全体をスケールダウンしたり削除したりできます。インスタンスグループをスケールダウンまたは削除する方法の詳細については、「[SageMaker HyperPod クラスターのスケールダウン](smcluster-scale-down.md)」を参照してください。

   1. `ClusterName` で、更新するクラスターの名前を選択します。

   1. `InstanceGroupName` 用

      1. 既存のインスタンスグループを更新するには、更新するインスタンスグループの名前を指定します。

      1. 新しいインスタンスグループを追加するには、クラスターに存在しない新しい名前を指定します。

   1. `InstanceType` 用

      1. 既存のインスタンスグループを更新するには、最初に指定したインスタンスタイプをグループに一致させる必要があります。

      1. 新しいインスタンスグループを追加するには、グループを設定するインスタンスタイプを指定します。

   1. `InstanceCount` 用

      1. 既存のインスタンスグループを更新するには、必要なインスタンス数に対応する整数を指定します。インスタンスグループをスケールアップまたはスケールダウンするには、高い値または低い値 (最低は 0) を指定できます。

      1. 新しいインスタンスグループを追加するには、1 以上の整数を指定します。

   1. `LifeCycleConfig` では、インスタンスグループを更新するときに、`SourceS3Uri` と `OnCreate` の両方の値を変更することができます。

   1. `ExecutionRole` 用

      1. 既存のインスタンスグループを更新するには、クラスターの作成時にアタッチしたのと同じ IAM ロールを引き続き使用します。

      1. 新しいインスタンスグループを追加するには、アタッチする IAM ロールを指定します。

   1. `ThreadsPerCore` 用

      1. 既存のインスタンスグループを更新するには、クラスターの作成時に指定した値と同じ値を使用し続けます。

      1. 新しいインスタンスグループを追加するには、インスタンスタイプごとに許可されるオプションから任意の値を選択できます。詳細については、インスタンスタイプを検索し、「*Amazon EC2 ユーザーガイド*」にある[インスタンスタイプごとの CPU コア数と CPU コアあたりのスレッド数](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/cpu-options-supported-instances-values.html)のリファレンステーブルの「**コアあたりの有効なスレッド**」列を参照してください。

   1. `OnStartDeepHealthChecks` では、`InstanceStress` と `InstanceConnectivity` を追加して [ディープヘルスチェック](sagemaker-hyperpod-eks-resiliency-deep-health-checks.md) を有効にします。

   1. `NodeRecovery` では、`Automatic` を指定して自動ノード復旧を有効にします。SageMaker HyperPod は、ヘルスモニタリングエージェントが問題を見つけたときにインスタンス (ノード) を置き換えるか再起動します。

   次のコードスニペットは、使用できる JSON リクエストファイルテンプレートです。この API のリクエスト構文とパラメータの詳細については、[UpdateCluster](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateCluster.html) API リファレンスを参照してください。

   ```
   // update_cluster.json
   {
       // Required
       "ClusterName": "name-of-cluster-to-update",
       // Required
       "InstanceGroups": [{
           "InstanceGroupName": "string",
           "InstanceType": "string",
           "InstanceCount": number,
           "LifeCycleConfig": {
               "SourceS3Uri": "string",
               "OnCreate": "string"
           },
           "ExecutionRole": "string",
           "ThreadsPerCore": number,
           "OnStartDeepHealthChecks": [
               "InstanceStress", "InstanceConnectivity"
           ]
       }],
       "NodeRecovery": "Automatic"
   }
   ```

1. 次の `update-cluster` コマンドを実行して、リクエストを送信します。

   ```
   aws sagemaker update-cluster \
       --cli-input-json file://complete/path/to/update_cluster.json
   ```

# SageMaker HyperPod プラットフォームソフトウェアを更新する
<a name="sagemaker-hyperpod-eks-operate-cli-command-update-cluster-software"></a>

SageMaker HyperPod クラスターを作成すると、SageMaker HyperPod は Amazon EKS クラスターの Kubernetes バージョンに対応する Amazon マシンイメージ (AMI) を選択します。

[update-cluster-software](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/update-cluster-software.html) を実行して、SageMaker HyperPod サービスが提供するソフトウェアとセキュリティパッチを使用して既存のクラスターを更新します。`--cluster-name` では、更新するクラスターの名前または ARN を指定します。

**重要**  
この API が呼び出されると、SageMaker HyperPod はノードで実行されているジョブ (ポッド) をドレインまたは再配布しません。この API を呼び出す前に、ノードで実行されているジョブがあるかどうかを確認してください。
パッチ適用プロセスでは、ルートボリュームが更新された AMI に置き換えられます。つまり、インスタンスのルートボリュームに保存されていた以前のデータは失われます。必ず、インスタンスルートボリュームから Amazon S3 または Amazon FSx for Lustre にデータをバックアップしてください。
パッチ適用の進行中、すべてのクラスターノードでダウンタイムが発生します (ノードは `<NotReady>` の出力に `kubectl get node` として表示されます)。パッチ適用の前にすべてのワークロードを終了し、パッチ完了後に再開することをお勧めします。  
セキュリティパッチが失敗した場合、「[クラスターを記述する](sagemaker-hyperpod-eks-operate-cli-command-cluster-details.md#sagemaker-hyperpod-eks-operate-cli-command-describe-cluster)」の指示に従って [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeCluster.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeCluster.html) API を実行することにより失敗メッセージを取得できます。

```
aws sagemaker update-cluster-software --cluster-name your-hyperpod-cluster
```

 `UpdateClusterSoftware` API を呼び出すと、SageMaker HyperPod は Amazon EKS クラスターの Kubernetes バージョンに基づいて最新の [SageMaker HyperPod DLAMI](sagemaker-hyperpod-ref.md#sagemaker-hyperpod-ref-hyperpod-ami) を選択することにより、ノードの Kubernetes バージョンを更新します。次に、クラスターの作成または更新時に指定した Amazon S3 バケットでライフサイクルスクリプトを実行します。

`kubectl describe node` コマンドを実行して、ノードの kubelet バージョンを確認できます。

SageMaker HyperPod クラスターノードの Kubernetes バージョンは、Amazon EKS クラスターバージョンを更新しても自動更新されません。Amazon EKS クラスターの Kubernetes バージョンを更新したら、`UpdateClusterSoftware` API を使用して SageMaker HyperPod クラスターノードを同じ Kubernetes バージョンに更新する必要があります。

 Amazon EKS ノードを更新した後に SageMaker HyperPod クラスターを更新し、Amazon EKS クラスターバージョンと SageMaker HyperPod クラスターノードバージョンの間に複数のバージョン差が生じないようにすることをお勧めします。

SageMaker HyperPod サービスチームは、セキュリティを強化し、ユーザーエクスペリエンスを向上させるため、新しい [SageMaker HyperPod DLAMI](sagemaker-hyperpod-ref.md#sagemaker-hyperpod-ref-hyperpod-ami) を定期的にロールアウトします。常に最新の SageMaker HyperPod DLAMI に更新することをお勧めします。セキュリティパッチ適用に関する今後の SageMaker HyperPod DLAMI の更新については、「[Amazon SageMaker HyperPod リリースノート](sagemaker-hyperpod-release-notes.md)」の情報を今後も確認してください。

**注記**  
この API はプログラムでのみ実行できます。パッチ適用機能は、SageMaker HyperPod コンソール UI には実装されません。

# SageMaker HyperPod クラスターノードへのアクセス
<a name="sagemaker-hyperpod-eks-operate-access-through-terminal"></a>

 AWS Systems Manager (SSM) のコマンドを使用して、稼働中の SageMaker HyperPod クラスターのノードに直接アクセスできます。 AWS CLI `sagemaker-cluster:[cluster-id]_[instance-group-name]-[instance-id]` 形式のノードのホスト名を使用して `aws ssm start-session` を実行します。クラスター ID、インスタンス ID、インスタンスグループ名は、[SageMaker HyperPod コンソール](sagemaker-hyperpod-operate-slurm-console-ui.md#sagemaker-hyperpod-operate-slurm-console-ui-view-details-of-clusters)から、または `describe-cluster` と `list-cluster-nodes` を実行して [SageMaker HyperPod のAWS CLI コマンド](sagemaker-hyperpod-operate-slurm-cli-command.md#sagemaker-hyperpod-operate-slurm-cli-command-list-cluster-nodes)から取得できます。例えば、クラスター ID が `aa11bbbbb222`、クラスターノード名が `controller-group`、クラスターノード ID が `i-111222333444555aa` の場合、SSM `start-session` コマンドは次のようになります。

**注記**  
をセットアップしていない場合は AWS Systems Manager、「」に記載されている手順に従ってください[クラスターユーザーアクセスコントロールの設定 AWS Systems Manager と Run As](sagemaker-hyperpod-prerequisites.md#sagemaker-hyperpod-prerequisites-ssm)。

```
$ aws ssm start-session \
    --target sagemaker-cluster:aa11bbbbb222_controller-group-i-111222333444555aa \
    --region us-west-2
Starting session with SessionId: s0011223344aabbccdd
root@ip-111-22-333-444:/usr/bin#
```

# 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"]'
```

# SageMaker HyperPod クラスターの削除
<a name="sagemaker-hyperpod-eks-operate-cli-command-delete-cluster"></a>

[delete-cluster](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/delete-cluster.html) を実行してクラスターを削除します。クラスターの名前または ARN を指定できます。

```
aws sagemaker delete-cluster --cluster-name your-hyperpod-cluster
```

この API は SageMaker HyperPod リソースのみをクリーンアップし、関連付けられた EKS クラスターのリソースは削除しません。これには、Amazon EKS クラスター、EKS Pod Identity、Amazon FSx ボリューム、および EKS アドオンが含まれます。これには、EKS クラスターに追加した初期設定も含まれます。すべてのリソースをクリーンアップする場合、EKS リソースも別個にクリーンアップしてください。

必ず、最初に SageMaker HyperPod リソースを削除してから、EKS リソースを削除してください。削除を逆の順序で実行すると、リソースが残る可能性があります。

**重要**  
この API が呼び出されると、SageMaker HyperPod はノードで実行されているジョブ (ポッド) をドレインまたは再配布しません。この API を呼び出す前に、ノードで実行されているジョブがあるかどうかを確認してください。