

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

# SageMaker HyperPod の使用開始
<a name="smcluster-getting-started-slurm"></a>

最初の SageMaker HyperPod クラスターの作成を開始し、SageMaker HyperPod のクラスターオペレーション機能について説明します。SageMaker HyperPod クラスターは、SageMaker AI コンソール UI または AWS CLI コマンドを使用して作成できます。このチュートリアルでは、一般的なワークロードスケジューラソフトウェアである Slurm を使用して新しい SageMaker HyperPod クラスターを作成する方法を示します。このチュートリアルを完了すると、 AWS Systems Manager コマンド () を使用してクラスターノードにログインする方法がわかります`aws ssm`。このチュートリアルを完了したら、「[SageMaker HyperPod Slurm クラスターオペレーション](sagemaker-hyperpod-operate-slurm.md)」で SageMaker HyperPod の基本オペレーションの詳細と、「[SageMaker HyperPod クラスター上のジョブ](sagemaker-hyperpod-run-jobs-slurm.md)」でプロビジョニングされたクラスターでジョブをスケジュールする方法も確認してください。

**ヒント**  
実用的な例と解決策については、[SageMaker HyperPod ワークショップ](https://catalog.workshops.aws/sagemaker-hyperpod)も参照してください。

**Topics**
+ [SageMaker AI コンソールを使用した SageMaker HyperPod の開始方法](smcluster-getting-started-slurm-console.md)
+ [CloudFormation テンプレートを使用した SageMaker HyperPod クラスターの作成](smcluster-getting-started-slurm-console-create-cluster-cfn.md)
+ [を使用した SageMaker HyperPod の開始方法 AWS CLI](smcluster-getting-started-slurm-cli.md)

# SageMaker AI コンソールを使用した SageMaker HyperPod の開始方法
<a name="smcluster-getting-started-slurm-console"></a>

次のチュートリアルでは、新しい SageMaker HyperPod クラスターを作成し、SageMaker AI コンソール UI を使用して Slurm でセットアップする方法を説明します。このチュートリアルに従うことで、3 つの Slurm ノード (`my-controller-group`、`my-login-group`、`worker-group-1`) を持つ HyperPod クラスターを作成できます。

**Topics**
+ [クラスターを作成する](#smcluster-getting-started-slurm-console-create-cluster-page)
+ [リソースのデプロイ](#smcluster-getting-started-slurm-console-create-cluster-deploy)
+ [クラスターを削除してリソースをクリーンアップする](#smcluster-getting-started-slurm-console-delete-cluster-and-clean)

## クラスターを作成する
<a name="smcluster-getting-started-slurm-console-create-cluster-page"></a>

**SageMaker HyperPod クラスター**ページに移動し、**Slurm** オーケストレーションを選択するには、次の手順に従います。

1. Amazon SageMaker AI コンソール ([https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/)) を開きます。

1. 左側のナビゲーションペインで、**[HyperPod クラスター]** を選択し、**[クラスターの管理]** をクリックします。

1. **[SageMaker HyperPod クラスター]** ページで、**[HyperPod クラスターを作成]** をクリックします。

1. **[HyperPod クラスターを作成]** ドロップダウンメニューから、**[Slurm によるオーケストレーション]** を選択します。

1. Slurm クラスターの作成ページには、2 つのオプションが表示されます。ニーズに最適なオプションを選択します。

   1. **高速セットアップ** - デフォルト設定をすぐに開始するには、**[高速セットアップ]** をクリックします。このオプションを使用すると、SageMaker AI はクラスターの作成中に VPC、サブネット、セキュリティグループ、Amazon S3 バケット、IAM ロール、FSx for Lustre などの新しいリソースを作成します。

   1. **カスタムセットアップ** - 既存の AWS リソースと統合したり、特定のネットワーク、セキュリティ、ストレージ要件を設定したりするには、**[カスタムセットアップ]** を選択します。このオプションでは、既存のリソースを使用するか、新しいリソースを作成するかを選択できます。また、ニーズに最適な設定をカスタマイズできます。

## Quick Setup
<a name="smcluster-getting-started-slurm-console-create-cluster-default"></a>

**[高速セットアップ]** セクションで、以下の手順に従って Slurm オーケストレーションを使用して HyperPod クラスターを作成します。

### 全般設定
<a name="smcluster-getting-started-slurm-console-create-cluster-default-general"></a>

新しいクラスターの名前を指定します。クラスター名は、クラスターの作成後には変更できません。

### インスタンスグループ
<a name="smcluster-getting-started-slurm-console-create-cluster-default-instance-groups"></a>

インスタンスグループを追加するには、**[グループを追加]** をクリックします。インスタンスグループごとに異なる方法で設定でき、さまざまなインスタンスタイプを持つ複数のインスタンスグループで構成される異種クラスターを作成できます。クラスターをデプロイするには、コントローラおよびコンピューティンググループタイプに少なくとも 1 つのインスタンスグループを追加する必要があります。

**重要**  
一度に追加できるインスタンスグループは 1 つです。複数のインスタンスグループを作成するには、インスタンスグループごとにこのプロセスを繰り返します。

インスタンスグループを追加するには、次の手順を実行します。

1. **[インスタンスグループのタイプ]** では、インスタンスグループのタイプを選択します。このチュートリアルでは、[`my-controller-group`] で **[コントローラ (head)]**、[`my-login-group`] で **[ログイン]**、[`worker-group-1`] で **[コンピューティング (ワーカー)]** を選択します。

1. **[名前]** には、インスタンスグループ名を入力します。このチュートリアルでは、`my-controller-group`、`my-login-group`、`worker-group-1` という名前の 3 つのインスタンスグループを作成します。

1.  **[インスタンスキャパシティ]** については、オンデマンドキャパシティまたはトレーニングプランを選択してコンピューティングリソースを予約します。

1. **[インスタンスタイプ]** では、インスタンスグループのインスタンスを選択します。このチュートリアルでは、`my-controller-group` に `ml.c5.xlarge`、`my-login-group` に `ml.m5.4xlarge`、`worker-group-1` に `ml.trn1.32xlarge` を選択します。
**重要**  
アカウントに十分なクォータと十分な未割り当ての IP アドレスを持つインスタンスタイプを選択します。追加のクォータを表示またはリクエストするには、「[SageMaker HyperPod クォータ](sagemaker-hyperpod-prerequisites.md#sagemaker-hyperpod-prerequisites-quotas)」を参照してください。

1. **[インスタンスの数量]** で、クラスターの使用についてインスタンスクォータを超えない整数を指定します。このチュートリアルでは、3 つのグループすべてに「**1**」と入力します。

1. **[ターゲットアベイラビリティーゾーン]** では、インスタンスをプロビジョンするアベイラビリティーゾーンを選択します。アベイラビリティーゾーンは、高速コンピューティングキャパシティの場所に対応している必要があります。

1. **[インスタンスあたりの追加のストレージボリューム (GB)]** (オプション) で、1～16384 の整数を指定し、追加の Elastic Block Store (EBS) ボリュームのサイズをギガバイト (GB) 単位で設定します。EBS ボリュームは、インスタンスグループの各インスタンスにアタッチされます。追加の EBS ボリュームのデフォルトのマウントパスは `/opt/sagemaker` です。クラスターが正常に作成されたら、クラスターインスタンス (ノード) に SSH 接続し、`df -h` コマンドを実行して EBS ボリュームが正しくマウントされているかどうかを確認できます。追加の EBS ボリュームをアタッチすると、「*Amazon Elastic Block Store ユーザーガイド*」の「[Amazon EBS ボリューム](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-volumes.html)」セクションで説明されているように、インスタンスから独立した永続性を持つ安定したストレージが実現します。

1. **[インスタンスグループを追加]** をクリックします。

### 高速セットアップのデフォルト
<a name="smcluster-getting-started-slurm-console-create-cluster-default-settings"></a>

このセクションでは、クラスター作成プロセス中に作成されるすべての新しい AWS リソースを含む、クラスター作成のすべてのデフォルト設定を一覧表示します。デフォルト設定を確認します。

## カスタムセットアップ
<a name="smcluster-getting-started-slurm-console-create-cluster-custom"></a>

**[カスタムセットアップ]** セクションで、以下の手順に従って Slurm オーケストレーションを使用して HyperPod クラスターを作成します。

### 全般設定
<a name="smcluster-getting-started-slurm-console-create-cluster-custom-general"></a>

新しいクラスターの名前を指定します。クラスター名は、クラスターの作成後には変更できません。

**[インスタンスリカバリ]** では、**[自動 - *推奨]*** または **[なし]** を選択します。

### ネットワーク
<a name="smcluster-getting-started-slurm-console-create-cluster-custom-network"></a>

クラスター作成のネットワーク設定を構成します。これらの設定は、クラスターの作成後に変更することはできません。

1. **VPC** では、SageMaker AI に VPC へのアクセスを許可する VPC が既にある場合、独自の VPC を選択します。新しい VPC を作成するには、「*Amazon Virtual Private Cloud ユーザーガイド*」の「[VPC を作成する](https://docs.aws.amazon.com/vpc/latest/userguide/create-vpc.html)」の手順に従います。デフォルトの SageMaker AI VPC を使用するには、**[なし]** のままにします。

1. **[VPC IPv4 CIDR ブロック]** には、VPC の開始 IP を入力します。

1. **[アベイラビリティーゾーン]** では、HyperPod がクラスターのサブネットを作成するアベイラビリティーゾーン (AZ) を選択します。高速コンピューティングキャパシティの場所に一致する AZ を選択します。

1. **[セキュリティグループ]** では、セキュリティグループを作成するか、VPC 内のリソース間通信を許可するルールで設定された最大 5 つのセキュリティグループを選択します。

### インスタンスグループ
<a name="smcluster-getting-started-slurm-console-create-cluster-custom-instance-groups"></a>

インスタンスグループを追加するには、**[グループを追加]** をクリックします。インスタンスグループごとに異なる方法で設定でき、さまざまなインスタンスタイプを持つ複数のインスタンスグループで構成される異種クラスターを作成できます。クラスターをデプロイするには、少なくとも 1 つのインスタンスグループを追加する必要があります。

**重要**  
一度に追加できるインスタンスグループは 1 つです。複数のインスタンスグループを作成するには、インスタンスグループごとにこのプロセスを繰り返します。

インスタンスグループを追加するには、次の手順を実行します。

1. **[インスタンスグループのタイプ]** では、インスタンスグループのタイプを選択します。このチュートリアルでは、[`my-controller-group`] で **[コントローラ (head)]**、[`my-login-group`] で **[ログイン]**、[`worker-group-1`] で **[コンピューティング (ワーカー)]** を選択します。

1. **[名前]** には、インスタンスグループ名を入力します。このチュートリアルでは、`my-controller-group`、`my-login-group`、`worker-group-1` という名前の 3 つのインスタンスグループを作成します。

1.  **[インスタンスキャパシティ]** については、オンデマンドキャパシティまたはトレーニングプランを選択してコンピューティングリソースを予約します。

1. **[インスタンスタイプ]** では、インスタンスグループのインスタンスを選択します。このチュートリアルでは、`my-controller-group` に `ml.c5.xlarge`、`my-login-group` に `ml.m5.4xlarge`、`worker-group-1` に `ml.trn1.32xlarge` を選択します。
**重要**  
アカウントに十分なクォータと十分な未割り当ての IP アドレスを持つインスタンスタイプを選択します。追加のクォータを表示またはリクエストするには、「[SageMaker HyperPod クォータ](sagemaker-hyperpod-prerequisites.md#sagemaker-hyperpod-prerequisites-quotas)」を参照してください。

1. **[インスタンスの数量]** で、クラスターの使用についてインスタンスクォータを超えない整数を指定します。このチュートリアルでは、3 つのグループすべてに「**1**」と入力します。

1. **[ターゲットアベイラビリティーゾーン]** では、インスタンスをプロビジョンするアベイラビリティーゾーンを選択します。アベイラビリティーゾーンは、高速コンピューティングキャパシティの場所に対応している必要があります。

1. **[インスタンスあたりの追加のストレージボリューム (GB)]** (オプション) で、1～16384 の整数を指定し、追加の Elastic Block Store (EBS) ボリュームのサイズをギガバイト (GB) 単位で設定します。EBS ボリュームは、インスタンスグループの各インスタンスにアタッチされます。追加の EBS ボリュームのデフォルトのマウントパスは `/opt/sagemaker` です。クラスターが正常に作成されたら、クラスターインスタンス (ノード) に SSH 接続し、`df -h` コマンドを実行して EBS ボリュームが正しくマウントされているかどうかを確認できます。追加の EBS ボリュームをアタッチすると、「*Amazon Elastic Block Store ユーザーガイド*」の「[Amazon EBS ボリューム](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-volumes.html)」セクションで説明されているように、インスタンスから独立した永続性を持つ安定したストレージが実現します。

1. **[インスタンスグループを追加]** をクリックします。

### ライフサイクルスクリプト
<a name="smcluster-getting-started-slurm-console-create-cluster-custom-lifecycle"></a>

デフォルトのライフサイクルスクリプトを使用するか、Amazon S3 バケットに保存されるカスタムライフサイクルスクリプトを使用するかを選択できます。[Awsome Distributed Training GitHub リポジトリ](https://github.com/aws-samples/awsome-distributed-training/tree/main/1.architectures/7.sagemaker-hyperpod-eks/LifecycleScripts)で提供されているサンプルライフサイクルスクリプトを確認できます。ライフサイクルスクリプトの詳細については、「[ライフサイクルスクリプトを使用して SageMaker HyperPod クラスターをカスタマイズする](sagemaker-hyperpod-lifecycle-best-practices-slurm.md)」を参照してください。

1. **[ライフサイクルスクリプト]** では、デフォルトまたはカスタムのライフサイクルスクリプトの使用を選択します。

1. **[ライフサイクルスクリプトの S3 バケット]** では、新しいバケットを作成するか、既存のバケットを使用してライフサイクルスクリプトを保存するかを選択します。

### アクセス許可
<a name="smcluster-getting-started-slurm-console-create-cluster-custom-permissions"></a>

HyperPod がユーザーに代わって必要な AWS リソースを実行およびアクセスできるようにする IAM ロールを選択または作成します。

### Storage
<a name="smcluster-getting-started-slurm-console-create-cluster-custom-storage"></a>

HyperPod クラスターでプロビジョンする Lustre ファイルシステム用 FSx を設定します。

1. **[ファイルシステム]** では、Lustre ファイルシステム用の既存の FSx を選択するか、新しい Lustre ファイルシステム用 FSx を作成するか、新しい Lustre ファイルシステム用 FSx をプロビジョンしないことを選択できます。

1. **[ストレージユニットあたりのスループット]** では、プロビジョンするストレージの TiB ごとに利用できるスループットを選択します。

1. **[ストレージキャパシティ]** には、キャパシティの値を TB 単位で入力します。

1. **[データ圧縮タイプ]** では、**[LZ4]** を選択してデータ圧縮を有効にします。

1. **[Lustre バージョン]** では、新しいファイルシステムに推奨される値を確認します。

### タグ - オプション
<a name="smcluster-getting-started-slurm-console-create-cluster-tags"></a>

**タグ - *オプション*で**、新しいクラスターにキーと値のペアを追加し、クラスターを AWS リソースとして管理します。詳細については、「[AWS リソースのタグ付け](https://docs.aws.amazon.com/tag-editor/latest/userguide/tagging.html)」を参照してください。

## リソースのデプロイ
<a name="smcluster-getting-started-slurm-console-create-cluster-deploy"></a>

**[高速セットアップ]** または **[カスタムセットアップ]** を使用してクラスター設定を完了したら、次のオプションを選択してリソースのプロビジョンとクラスターの作成を開始します。
+  **送信** - SageMaker AI はデフォルトの設定リソースのプロビジョンとクラスターの作成を開始します。
+ **CloudFormation テンプレートパラメータのダウンロード** - 設定パラメータ JSON ファイルをダウンロードし、 AWS CLI コマンドを実行して CloudFormation スタックをデプロイし、設定リソースをプロビジョニングしてクラスターを作成します。必要に応じて、ダウンロードしたパラメータ JSON ファイルを編集できます。このオプションを選択した場合は、「[CloudFormation テンプレートを使用した SageMaker HyperPod クラスターの作成](smcluster-getting-started-slurm-console-create-cluster-cfn.md)」の詳細な手順を参照してください。

## クラスターを削除してリソースをクリーンアップする
<a name="smcluster-getting-started-slurm-console-delete-cluster-and-clean"></a>

SageMaker HyperPod クラスターは、作成のテストに成功した後、クラスターを削除するまで `InService` 状態で実行され続けます。オンデマンド料金に基づいてサービス料金が継続的に発生しないよう、オンデマンド SageMaker AI インスタンスを使用して作成されたクラスターは、使用しない際に削除することをお勧めします。このチュートリアルでは、2 つのインスタンスグループで構成されるクラスターを作成しました。そのうちの 1 つは C5 インスタンスを使用しているため、「[SageMaker HyperPod クラスターを削除する](sagemaker-hyperpod-operate-slurm-console-ui.md#sagemaker-hyperpod-operate-slurm-console-ui-delete-cluster)」の手順に従ってクラスターを削除してください。

ただし、リザーブドコンピューティングキャパシティでクラスターを作成した場合、クラスターのステータスはサービス請求には影響を与えません。

このチュートリアルで使用した S3 バケットからライフサイクルスクリプトをクリーンアップするには、クラスターの作成時に使用した S3 バケットに移動し、ファイルを完全に削除します。

クラスターでワークロードの実行をテストした場合、データをアップロードしたかどうか、またはジョブで Amazon FSx for Lustre や Amazon Elastic File System などの異なる S3 バケットやファイルシステムサービスにアーティファクトが保存されたかどうかを確認してください。料金の発生を防ぐには、ストレージまたはファイルシステムからすべてのアーティファクトとデータを削除します。

# CloudFormation テンプレートを使用した SageMaker HyperPod クラスターの作成
<a name="smcluster-getting-started-slurm-console-create-cluster-cfn"></a>

HyperPod の CloudFormation テンプレートを使用して SageMaker HyperPod クラスターを作成できます。続行する AWS CLI には、 をインストールする必要があります。

**Topics**
+ [コンソールでリソースを設定し、CloudFormation を使用してデプロイする](#smcluster-getting-started-slurm-console-create-cluster-deploy-console)
+ [CloudFormation を使用してリソースを設定し、デプロイする](#smcluster-getting-started-slurm-console-create-cluster-deploy-cfn)

## コンソールでリソースを設定し、CloudFormation を使用してデプロイする
<a name="smcluster-getting-started-slurm-console-create-cluster-deploy-console"></a>

を使用してリソースを設定し AWS マネジメントコンソール 、CloudFormation テンプレートを使用してデプロイできます。

以下の手順に従ってください。

1. ***[送信]**をクリックする代わりに*、[SageMaker AI コンソールを使用した SageMaker HyperPod の開始方法](smcluster-getting-started-slurm-console.md) のチュートリアルの最後に **[CloudFormation テンプレートパラメータをダウンロード]** をクリックします。このチュートリアルには、クラスターを正常に作成するために必要な重要な設定情報が含まれています。
**重要**  
**[送信]** をクリックすると、クラスターを削除するまで、同じ名前のクラスターをデプロイできなくなります。

   **[CloudFormation テンプレートパラメータをダウンロード]** をクリックすると、ページの右側に **[ AWS CLIを使用して構成ファイルでクラスターを作成]** ウィンドウが表示されます。

1. **[ AWS CLIを使用して構成ファイルでクラスターを作成]** ウィンドウで、**[設定パラメータファイルをダウンロード]** をクリックします。ファイルはローカルマシンにダウンロードされます。必要に応じて設定 JSON ファイルを編集するか、変更が必要ない場合はそのままにしておいてかまいません。

1. ターミナルで、`file://params.json` ファイルの場所に移動します。

1. [create-stack](https://docs.aws.amazon.com//cli/latest/reference/cloudformation/create-stack.html) AWS CLI コマンドを実行して、設定されたリソースをプロビジョニングし、HyperPod クラスターを作成する CloudFormation スタックをデプロイします。

   ```
   aws cloudformation create-stack 
       --stack-name my-stack
       --template-url https://aws-sagemaker-hyperpod-cluster-setup.amazonaws.com/templates-slurm/main-stack-slurm-based-template.yaml
       --parameters file://params.json
       --capabilities CAPABILITY_IAM CAPABILITY_NAMED_IAM
   ```

1. リソースプロビジョニングのステータスを表示するには、[CloudFormation コンソール](https://console.aws.amazon.com/cloudformation)に移動します。

   クラスターの作成が完了したら、SageMaker HyperPod コンソールのメインペインのクラスターの下に新しい **[クラスター]** が表示されます。ステータスは、**[ステータス]** 列で確認できます。

1. クラスターのステータスが `InService` になったら、クラスターノードへのログインを開始できます。クラスターノードにアクセスして ML ワークロードの実行を開始するには、「[SageMaker HyperPod クラスター上のジョブ](sagemaker-hyperpod-run-jobs-slurm.md)」を参照してください。

## CloudFormation を使用してリソースを設定し、デプロイする
<a name="smcluster-getting-started-slurm-console-create-cluster-deploy-cfn"></a>

SageMaker HyperPod の CloudFormation テンプレートを使用して、リソースを設定し、デプロイできます。

以下の手順に従ってください。

1. SageMaker HyperPod 用の CloudFormation テンプレートを [sagemaker-hyperpod-cluster-setup](https://github.com/aws/sagemaker-hyperpod-cluster-setup) GitHub リポジトリからダウンロードします。

1. [create-stack](https://docs.aws.amazon.com//cli/latest/reference/cloudformation/create-stack.html) AWS CLI コマンドを実行して、設定されたリソースをプロビジョニングして HyperPod クラスターを作成する CloudFormation スタックをデプロイします。

   ```
   aws cloudformation create-stack 
       --stack-name my-stack
       --template-url URL_of_the_file_that_contains_the_template_body
       --parameters file://params.json
       --capabilities CAPABILITY_IAM CAPABILITY_NAMED_IAM
   ```

1. リソースプロビジョニングのステータスを表示するには、CloudFormation コンソールに移動します。

   クラスターの作成が完了したら、SageMaker HyperPod コンソールのメインペインのクラスターの下に新しい **[クラスター]** が表示されます。ステータスは、**[ステータス]** 列で確認できます。

1. クラスターのステータスが `InService` になったら、クラスターノードへのログインを開始できます。クラスターノードにアクセスして ML ワークロードの実行を開始するには、「[SageMaker HyperPod クラスター上のジョブ](sagemaker-hyperpod-run-jobs-slurm.md)」を参照してください。

# を使用した SageMaker HyperPod の開始方法 AWS CLI
<a name="smcluster-getting-started-slurm-cli"></a>

HyperPod の AWS CLI コマンドを使用して、最初の SageMaker HyperPod クラスターを作成します。

## Slurm で最初の SageMaker HyperPod クラスターを作成する
<a name="smcluster-getting-started-slurm-cli-create-cluster"></a>

次のチュートリアルでは、新しい SageMaker HyperPod クラスターを作成し、[SageMaker HyperPod のAWS CLI コマンド](sagemaker-hyperpod-ref.md#sagemaker-hyperpod-ref-cli)を使用して Slurm で設定する方法を示します。このチュートリアルでは、、`my-controller-group`、 `my-login-group`の 3 つの Slurm ノードを持つ HyperPod クラスターを作成します`worker-group-1`。

API 駆動型設定アプローチでは、 を使用して CreateCluster API リクエストで Slurm ノードタイプとパーティション割り当てを直接定義します`SlurmConfig`。これにより、個別の`provisioning_parameters.json`ファイルが不要になり、組み込みの検証、ドリフト検出、per-instance-group FSx 設定が可能になります。

1. まず、ライフサイクルスクリプトを準備して Amazon S3 バケットにアップロードします。クラスターの作成中、HyperPod は各インスタンスグループでそれらを実行します。次のコマンドを使用して、ライフサイクルスクリプトを Amazon S3 にアップロードします。

   ```
   aws s3 sync \
       ~/local-dir-to-lifecycle-scripts/* \
       s3://sagemaker-<unique-s3-bucket-name>/<lifecycle-script-directory>/src
   ```
**注記**  
SageMaker[SageMaker HyperPod の IAM ロール](sagemaker-hyperpod-prerequisites-iam.md#sagemaker-hyperpod-prerequisites-iam-role-for-hyperpod)は特定のプレフィックスで始まる Amazon S3 バケットへのアクセス`AmazonSageMakerClusterInstanceRolePolicy`のみを許可するため`sagemaker-`、S3 バケットパスはプレフィックス で始まる必要があります。 Amazon S3 

   ゼロから開始する場合、[Awsome Distributed Training GitHub リポジトリ](https://github.com/aws-samples/awsome-distributed-training/)で提供されているサンプルライフサイクルスクリプトを使用します。以下のサブステップは、サンプルライフサイクルスクリプトをダウンロードして Amazon S3 バケットにアップロードする方法を示しています。

   1. ライフサイクルスクリプトのサンプルのコピーをローカルコンピュータのディレクトリにダウンロードします。

      ```
      git clone https://github.com/aws-samples/awsome-distributed-training/
      ```

   1. ディレクトリ [https://github.com/aws-samples/awsome-distributed-training/tree/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts/base-config](https://github.com/aws-samples/awsome-distributed-training/tree/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts/base-config) に移動し、一連のライフサイクルスクリプトを見つけます。

      ```
      cd awsome-distributed-training/1.architectures/5.sagemaker_hyperpods/LifecycleScripts/base-config
      ```

      ライフサイクルスクリプトのサンプルの詳細については、「[ライフサイクルスクリプトを使用して SageMaker HyperPod クラスターをカスタマイズする](sagemaker-hyperpod-lifecycle-best-practices-slurm.md)」を参照してください。

   1. スクリプトを `s3://sagemaker-<unique-s3-bucket-name>/<lifecycle-script-directory>/src` にアップロードします。これを行うには、Amazon S3 コンソールを使用するか、次の AWS CLI Amazon S3 コマンドを実行します。

      ```
      aws s3 sync \
          ~/local-dir-to-lifecycle-scripts/* \
          s3://sagemaker-<unique-s3-bucket-name>/<lifecycle-script-directory>/src
      ```
**注記**  
API 駆動型設定では、`provisioning_parameters.json`ファイルを作成またはアップロードする必要はありません。Slurm 設定は、次のステップの CreateCluster API リクエストで直接定義されます。

1. [CreateCluster](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateCluster.html) リクエストファイルを JSON 形式で準備し、`create_cluster.json` という名前で保存します。

   API 駆動型設定では、 `SlurmConfig`フィールドを使用して、各インスタンスグループの Slurm ノードタイプとパーティション割り当てを指定します。また、 を使用してクラスターレベルの Slurm 設定を構成します`Orchestrator.Slurm`。

   `ExecutionRole` には、「[SageMaker HyperPod を使用するための前提条件](sagemaker-hyperpod-prerequisites.md)」でマネージド `AmazonSageMakerClusterInstanceRolePolicy` を使用して作成した IAM ロールの ARN を指定します。

   ```
   {
       "ClusterName": "my-hyperpod-cluster",
       "InstanceGroups": [
           {
               "InstanceGroupName": "my-controller-group",
               "InstanceType": "ml.c5.xlarge",
               "InstanceCount": 1,
               "SlurmConfig": {
                   "NodeType": "Controller"
               },
               "LifeCycleConfig": {
                   "SourceS3Uri": "s3://sagemaker-<unique-s3-bucket-name>/<lifecycle-script-directory>/src",
                   "OnCreate": "on_create.sh"
               },
               "ExecutionRole": "arn:aws:iam::<account-id>:role/HyperPodExecutionRole",
               "InstanceStorageConfigs": [
                   {
                       "EbsVolumeConfig": {
                           "VolumeSizeInGB": 500
                       }
                   }
               ]
           },
           {
               "InstanceGroupName": "my-login-group",
               "InstanceType": "ml.m5.4xlarge",
               "InstanceCount": 1,
               "SlurmConfig": {
                   "NodeType": "Login"
               },
               "LifeCycleConfig": {
                   "SourceS3Uri": "s3://sagemaker-<unique-s3-bucket-name>/<lifecycle-script-directory>/src",
                   "OnCreate": "on_create.sh"
               },
               "ExecutionRole": "arn:aws:iam::<account-id>:role/HyperPodExecutionRole"
           },
           {
               "InstanceGroupName": "worker-group-1",
               "InstanceType": "ml.trn1.32xlarge",
               "InstanceCount": 1,
               "SlurmConfig": {
                   "NodeType": "Compute",
                   "PartitionNames": ["partition-1"]
               },
               "LifeCycleConfig": {
                   "SourceS3Uri": "s3://sagemaker-<unique-s3-bucket-name>/<lifecycle-script-directory>/src",
                   "OnCreate": "on_create.sh"
               },
               "ExecutionRole": "arn:aws:iam::<account-id>:role/HyperPodExecutionRole"
           }
       ],
       "Orchestrator": {
           "Slurm": {
               "SlurmConfigStrategy": "Managed"
           }
       }
   }
   ```

   **SlurmConfig フィールド:**    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/smcluster-getting-started-slurm-cli.html)

   **Orchestrator.Slurm フィールド:**    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/smcluster-getting-started-slurm-cli.html)

   **SlurmConfigStrategy オプション:**
   + `Managed` (推奨): HyperPod は、不正な変更 (ドリフト検出) を完全に管理`slurm.conf`および検出します。ドリフトが検出されると、更新は失敗します。
   + `Overwrite`: HyperPod は、手動での変更を無視して、更新`slurm.conf`時に上書きします。
   + `Merge`: HyperPod は手動の変更を保持し、API 設定とマージします。

   **FSx for Lustre の追加 (オプション):**

   FSx for Lustre ファイルシステムをコンピューティングノードにマウントするには、インスタンスグループの `InstanceStorageConfigs` `FsxLustreConfig`に を追加します。これにはカスタム VPC 設定が必要です。

   ```
   {
       "InstanceGroupName": "worker-group-1",
       "InstanceType": "ml.trn1.32xlarge",
       "InstanceCount": 1,
       "SlurmConfig": {
           "NodeType": "Compute",
           "PartitionNames": ["partition-1"]
       },
       "InstanceStorageConfigs": [
           {
               "FsxLustreConfig": {
                   "DnsName": "fs-0abc123def456789.fsx.us-west-2.amazonaws.com",
                   "MountPath": "/fsx",
                   "MountName": "abcdefgh"
               }
           }
       ],
       "LifeCycleConfig": {
           "SourceS3Uri": "s3://sagemaker-<unique-s3-bucket-name>/<lifecycle-script-directory>/src",
           "OnCreate": "on_create.sh"
       },
       "ExecutionRole": "arn:aws:iam::<account-id>:role/HyperPodExecutionRole"
   }
   ```

   **FSx for OpenZFS の追加 (オプション):**

   FSx for OpenZFS ファイルシステムをマウントすることもできます。

   ```
   "InstanceStorageConfigs": [
       {
           "FsxOpenZfsConfig": {
               "DnsName": "fs-0xyz789abc123456.fsx.us-west-2.amazonaws.com",
               "MountPath": "/shared"
           }
       }
   ]
   ```
**注記**  
各インスタンスグループは、FSx for Lustre と FSx for OpenZFS の設定を最大 1 つ持つことができます。異なるインスタンスグループは、異なるファイルシステムをマウントできます。

   **VPC 設定の追加 (FSx に必要):**

   FSx を使用する場合は、カスタム VPC 設定を指定する必要があります。

   ```
   {
       "ClusterName": "my-hyperpod-cluster",
       "InstanceGroups": [
           {
               "InstanceGroupName": "my-controller-group",
               "InstanceType": "ml.c5.xlarge",
               "InstanceCount": 1,
               "SlurmConfig": {
                   "NodeType": "Controller"
               },
               "LifeCycleConfig": {
                   "SourceS3Uri": "s3://sagemaker-<unique-s3-bucket-name>/<lifecycle-script-directory>/src",
                   "OnCreate": "on_create.sh"
               },
               "ExecutionRole": "arn:aws:iam::<account-id>:role/HyperPodExecutionRole"
           },
       ],
       "Orchestrator": {
           "Slurm": {
               "SlurmConfigStrategy": "Managed"
           }
       },
       "VpcConfig": {
           "SecurityGroupIds": ["sg-0abc123def456789a"],
           "Subnets": ["subnet-0abc123def456789a"]
       }
   }
   ```

1. 次のコマンドを実行してクラスターを作成します。

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

   これにより、作成されたクラスターの ARN が返されます。

   ```
   {
       "ClusterArn": "arn:aws:sagemaker:us-west-2:111122223333:cluster/my-hyperpod-cluster"
   }
   ```

   リソースの制限が原因でエラーが発生した場合、アカウントに十分なクォータを持つインスタンスタイプに変更するか、「[SageMaker HyperPod クォータ](sagemaker-hyperpod-prerequisites.md#sagemaker-hyperpod-prerequisites-quotas)」に従って追加のクォータをリクエストしてください。

   **一般的な検証エラー:**    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/smcluster-getting-started-slurm-cli.html)

1. `describe-cluster` を実行して、クラスターのステータスを確認します。

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

   レスポンスの例:

   ```
   {
       "ClusterArn": "arn:aws:sagemaker:us-west-2:111122223333:cluster/my-hyperpod-cluster",
       "ClusterName": "my-hyperpod-cluster",
       "ClusterStatus": "Creating",
       "InstanceGroups": [
           {
               "InstanceGroupName": "my-controller-group",
               "InstanceType": "ml.c5.xlarge",
               "InstanceCount": 1,
               "CurrentCount": 0,
               "TargetCount": 1,
               "SlurmConfig": {
                   "NodeType": "Controller"
               },
               "LifeCycleConfig": {
                   "SourceS3Uri": "s3://sagemaker-<bucket>/src",
                   "OnCreate": "on_create.sh"
               },
               "ExecutionRole": "arn:aws:iam::111122223333:role/HyperPodExecutionRole"
           },
           {
               "InstanceGroupName": "my-login-group",
               "InstanceType": "ml.m5.4xlarge",
               "InstanceCount": 1,
               "CurrentCount": 0,
               "TargetCount": 1,
               "SlurmConfig": {
                   "NodeType": "Login"
               },
               "LifeCycleConfig": {
                   "SourceS3Uri": "s3://sagemaker-<bucket>/src",
                   "OnCreate": "on_create.sh"
               },
               "ExecutionRole": "arn:aws:iam::111122223333:role/HyperPodExecutionRole"
           },
           {
               "InstanceGroupName": "worker-group-1",
               "InstanceType": "ml.trn1.32xlarge",
               "InstanceCount": 1,
               "CurrentCount": 0,
               "TargetCount": 1,
               "SlurmConfig": {
                   "NodeType": "Compute",
                   "PartitionNames": ["partition-1"]
               },
               "LifeCycleConfig": {
                   "SourceS3Uri": "s3://sagemaker-<bucket>/src",
                   "OnCreate": "on_create.sh"
               },
               "ExecutionRole": "arn:aws:iam::111122223333:role/HyperPodExecutionRole"
           }
       ],
       "Orchestrator": {
           "Slurm": {
               "SlurmConfigStrategy": "Managed"
           }
       },
       "CreationTime": "2024-01-15T10:30:00Z"
   }
   ```

   クラスターのステータスが **InService** になったら、次のステップに進みます。クラスターの作成には通常 10～15 分かかります。

1. `list-cluster-nodes` を実行して、クラスターノードの詳細を確認します。

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

   レスポンスの例:

   ```
   {
       "ClusterNodeSummaries": [
           {
               "InstanceGroupName": "my-controller-group",
               "InstanceId": "i-0abc123def456789a",
               "InstanceType": "ml.c5.xlarge",
               "InstanceStatus": {
                   "Status": "Running",
                   "Message": ""
               },
               "LaunchTime": "2024-01-15T10:35:00Z"
           },
           {
               "InstanceGroupName": "my-login-group",
               "InstanceId": "i-0abc123def456789b",
               "InstanceType": "ml.m5.4xlarge",
               "InstanceStatus": {
                   "Status": "Running",
                   "Message": ""
               },
               "LaunchTime": "2024-01-15T10:35:00Z"
           },
           {
               "InstanceGroupName": "worker-group-1",
               "InstanceId": "i-0abc123def456789c",
               "InstanceType": "ml.trn1.32xlarge",
               "InstanceStatus": {
                   "Status": "Running",
                   "Message": ""
               },
               "LaunchTime": "2024-01-15T10:36:00Z"
           }
       ]
   }
   ```

   `InstanceId` は、クラスターユーザーが (`aws ssm`) にログインするために必要なものです。クラスターノードへのログインと ML ワークロードの実行の詳細については、「[SageMaker HyperPod クラスター上のジョブ](sagemaker-hyperpod-run-jobs-slurm.md)」を参照してください。

1.  AWS Systems Manager Session Manager を使用してクラスターに接続します。

   ```
   aws ssm start-session \
       --target sagemaker-cluster:my-hyperpod-cluster_my-login-group-i-0abc123def456789b \
       --region us-west-2
   ```

   接続したら、Slurm が正しく設定されていることを確認します。

   ```
   # Check Slurm nodes
   sinfo
   
   # Check Slurm partitions
   sinfo -p partition-1
   
   # Submit a test job
   srun -p partition-1 --nodes=1 hostname
   ```

## クラスターを削除してリソースをクリーンアップする
<a name="smcluster-getting-started-slurm-cli-delete-cluster-and-clean"></a>

SageMaker HyperPod クラスターは、作成のテストに成功した後、クラスターを削除するまで `InService` 状態で実行され続けます。オンデマンド料金に基づいてサービス料金が継続的に発生しないよう、オンデマンド SageMaker AI キャパシティを使用して作成されたクラスターは、使用しない際に削除することをお勧めします。このチュートリアルでは、3 つのインスタンスグループで構成されるクラスターを作成しました。次のコマンドを実行して、クラスターを削除してください。

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

このチュートリアルで使用した Amazon S3 バケットからライフサイクルスクリプトをクリーンアップするには、クラスターの作成時に使用した Amazon S3 バケットに移動し、ファイルを完全に削除します。

```
aws s3 rm s3://sagemaker-<unique-s3-bucket-name>/<lifecycle-script-directory>/src --recursive
```

クラスターでモデルトレーニングワークロードの実行をテストした場合、データをアップロードしたかどうか、ジョブで Amazon FSx for Lustre や Amazon Elastic File System などのさまざまな Amazon S3 バケットやファイルシステムサービスにアーティファクトが保存されたかどうかも確認してください。料金の発生を防ぐには、ストレージまたはファイルシステムからすべてのアーティファクトとデータを削除します。

## 関連トピック
<a name="smcluster-getting-started-slurm-cli-related-topics"></a>
+ [SageMaker HyperPod Slurm の設定](sagemaker-hyperpod-ref.md#sagemaker-hyperpod-ref-slurm-configuration)
+ [ライフサイクルスクリプトを使用して SageMaker HyperPod クラスターをカスタマイズする](sagemaker-hyperpod-lifecycle-best-practices-slurm.md)
+ [InstanceStorageConfigs を介した FSx 設定](sagemaker-hyperpod-ref.md#sagemaker-hyperpod-ref-slurm-fsx-config)
+ [SageMaker HyperPod Slurm クラスターオペレーション](sagemaker-hyperpod-operate-slurm.md)