

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

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

開始建立您的第一個 SageMaker HyperPod 叢集，並了解 SageMaker HyperPod 的叢集操作功能。您可以透過 SageMaker AI 主控台 UI 或 AWS CLI 命令建立 SageMaker HyperPod 叢集。本教學課程說明如何使用 Slurm 建立新的 SageMaker HyperPod 叢集，而 Slurm 是熱門的工作負載排程器軟體。完成本教學課程後，您將了解如何使用 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 進行設定。遵循教學課程，您將建立一個 HyperPod 叢集，其中具有三個 Slurm 節點，即 `my-controller-group`、`my-login-group` 和 `worker-group-1`。

**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 叢集建立頁面上，您會看到兩個選項。選擇最符合您需求的選項。

   1. **快速設定** - 若要立即開始使用預設設定，請選擇**快速設定**。使用此選項，SageMaker AI 將在建立叢集的過程中建立新的資源，例如 VPC、子網路、安全群組、Amazon S3 儲存貯體、IAM 角色和 FSx for Lustre。

   1. **自訂設定** - 若要與現有 AWS 資源整合，或具有特定的聯網、安全性或儲存需求，請選擇**自訂設定**。使用此選項，您可以選擇使用現有資源或建立新的資源，也可以自訂最符合您需求的組態。

## 快速設定
<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. 針對**執行個體群組類型**，選擇執行個體群組的類型。針對本教學課程，為 `my-controller-group` 選擇**控制器 (主)**、為 `my-login-group` 選擇**登入**，以及為 `worker-group-1` 選擇**運算 (工作者)**。

1. 針對**名稱**，指定執行個體群組的名稱。針對本教學課程，請建立三個名為 `my-controller-group`、`my-login-group` 和 `worker-group-1` 的執行個體群組。

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. 針對**執行個體數量**，指定不超過叢集用量之執行個體配額的整數。針對本教學課程，輸入 **1** 表示所有三個群組。

1. 針對**目標可用區域**，選擇將佈建執行個體的可用區域。可用區域應對應至加速運算容量的位置。

1. 針對**每個執行個體的額外儲存磁碟區 (GB) - 選用**，請指定介於 1 與 16384 之間的整數，以 GB 為單位設定額外彈性區塊存放區 (EBS) 磁碟區的大小。EBS 磁碟區會連接至執行個體群組的每個執行個體。額外 EBS 磁碟區的預設掛載路徑為 `/opt/sagemaker`。在成功建立叢集之後，您可以對叢集執行個體 (節點) 執行 SSH，並透過執行 `df -h` 命令來驗證 EBS 磁碟區是否正確掛載。如《Amazon Elastic Block Store 使用者指南》**中的 [Amazon EBS 磁碟區](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-volumes.html)一節所述，連接額外的 EBS 磁碟區可提供穩定、與執行個體分離且獨立保留的儲存體。

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 內的資源間通訊。

### 執行個體群組
<a name="smcluster-getting-started-slurm-console-create-cluster-custom-instance-groups"></a>

若要新增執行個體群組，請選擇**新增群組**。每個執行個體群組的設定方式可以不同，而且您可以建立異質叢集，其中包含多個具有各種執行個體類型的執行個體群組。若要部署叢集，您必須至少新增一個執行個體群組。

**重要**  
您可以一次新增一個執行個體群組。若要建立多個執行個體群組，請為每個執行個體群組重複此程序。

請遵循下列步驟來新增執行個體群組。

1. 針對**執行個體群組類型**，選擇執行個體群組的類型。針對本教學課程，為 `my-controller-group` 選擇**控制器 (主)**、為 `my-login-group` 選擇**登入**，以及為 `worker-group-1` 選擇**運算 (工作者)**。

1. 針對**名稱**，指定執行個體群組的名稱。針對本教學課程，請建立三個名為 `my-controller-group`、`my-login-group` 和 `worker-group-1` 的執行個體群組。

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. 針對**執行個體數量**，指定不超過叢集用量之執行個體配額的整數。針對本教學課程，輸入 **1** 表示所有三個群組。

1. 針對**目標可用區域**，選擇將佈建執行個體的可用區域。可用區域應對應至加速運算容量的位置。

1. 針對**每個執行個體的額外儲存磁碟區 (GB) - 選用**，請指定介於 1 與 16384 之間的整數，以 GB 為單位設定額外彈性區塊存放區 (EBS) 磁碟區的大小。EBS 磁碟區會連接至執行個體群組的每個執行個體。額外 EBS 磁碟區的預設掛載路徑為 `/opt/sagemaker`。在成功建立叢集之後，您可以對叢集執行個體 (節點) 執行 SSH，並透過執行 `df -h` 命令來驗證 EBS 磁碟區是否正確掛載。如《Amazon Elastic Block Store 使用者指南》**中的 [Amazon EBS 磁碟區](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-volumes.html)一節所述，連接額外的 EBS 磁碟區可提供穩定、與執行個體分離且獨立保留的儲存體。

1. 選擇**新增執行個體群組**。

### 生命週期指令碼
<a name="smcluster-getting-started-slurm-console-create-cluster-custom-lifecycle"></a>

您可以選擇使用預設生命週期指令碼或自訂生命週期指令碼，這些指令碼將存放在您的 Amazon S3 儲存貯體中。您可以在 [Awesome 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 角色。

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

設定要在 HyperPod 叢集上佈建的 FSx for Lustre 檔案系統。

1. 針對**檔案系統**，選擇現有的 FSx for Lustre 檔案系統、建立新的 FSx for Lustre 檔案系統，或不佈建 FSx for Lustre 檔案系統。

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 執行個體建立的叢集，若未使用將其刪除，以避免根據隨需定價持續產生服務費用。在本教學課程中，您已建立由兩個執行個體群組構成的叢集。其中一個使用 C5 執行個體，因此請務必遵循[刪除 SageMaker HyperPod 叢集](sagemaker-hyperpod-operate-slurm-console-ui.md#sagemaker-hyperpod-operate-slurm-console-ui-delete-cluster)中的指示刪除叢集。

不過，如果您建立了具有預留運算容量的叢集，叢集的狀態不會影響服務計費。

若要從用於本教學課程的 S3 儲存貯體中清除生命週期指令碼，請前往您在叢集建立期間使用的 S3 儲存貯體，並完全移除檔案。

如果您已測試在叢集上執行任何工作負載，請確定您是否已上傳任何資料，或您的任務是否已將任何成品儲存至不同的 S3 儲存貯體或檔案系統服務，例如 Amazon FSx for Lustre 和 Amazon Elastic File System。若要避免產生任何費用，請從儲存體或檔案系統刪除所有成品和資料。

# 使用 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 命令來部署 CloudFormation 堆疊，以佈建設定的資源並建立 HyperPod 叢集。

   ```
   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-cluster-setup](https://github.com/aws/sagemaker-hyperpod-cluster-setup) GitHub 儲存庫下載 SageMaker HyperPod 的 CloudFormation 範本。

1. 執行 [create-stack](https://docs.aws.amazon.com//cli/latest/reference/cloudformation/create-stack.html) AWS CLI 命令來部署 CloudFormation 堆疊，以佈建設定的資源並建立 HyperPod 叢集。

   ```
   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 進行設定。遵循教學課程，您將建立具有三個 Slurm 節點的 HyperPod 叢集：`my-controller-group`、 `my-login-group`和 `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
   ```
**注意**  
S3 儲存貯體路徑應以字首 開頭`sagemaker-`，因為 [ SageMaker HyperPod 的 IAM 角色](sagemaker-hyperpod-prerequisites-iam.md#sagemaker-hyperpod-prerequisites-iam-role-for-hyperpod)`AmazonSageMakerClusterInstanceRolePolicy`只允許存取以特定字首開頭的 Amazon S3 儲存貯體。

   如果您是從頭開始，請使用 [Awsome 分散式訓練 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 主控台或執行下列 Amazon S3 AWS CLI 命令來執行此操作。

      ```
      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. 準備 JSON 格式的 [CreateCluster](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateCluster.html) 請求檔案，並儲存為 `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/zh_tw/sagemaker/latest/dg/smcluster-getting-started-slurm-cli.html)

   **Orchestrator.Slurm 欄位：**    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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 檔案系統掛載到您的運算節點，請將 `FsxLustreConfig`新增至執行個體群組`InstanceStorageConfigs`的 。這需要自訂 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 組態。不同的執行個體群組可以掛載不同的檔案系統。

   **新增 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/zh_tw/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 容量建立的叢集，若未使用將其刪除，以避免根據隨需定價持續產生服務費用。在本教學課程中，您已建立由三個執行個體群組組成的叢集。請務必執行下列命令來刪除叢集。

```
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 S3 儲存貯體或檔案系統服務，例如 Amazon FSx for Lustre 和 Amazon Elastic File System。若要避免產生費用，請從儲存體或檔案系統刪除所有成品和資料。

## 相關主題
<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)