

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

# SageMaker HyperPod Slurm 叢集操作
<a name="sagemaker-hyperpod-operate-slurm"></a>

本節提供透過 SageMaker AI 主控台 UI 或 AWS Command Line Interface (CLI) 管理 SageMaker HyperPod 的指引。無論您偏好視覺化介面還是使用命令，您都會了解如何執行與 SageMaker HyperPod 相關的各種任務。

**Topics**
+ [使用 SageMaker 主控台管理 SageMaker HyperPod Slurm 叢集](sagemaker-hyperpod-operate-slurm-console-ui.md)
+ [使用 管理 SageMaker HyperPod Slurm 叢集 AWS CLI](sagemaker-hyperpod-operate-slurm-cli-command.md)

# 使用 SageMaker 主控台管理 SageMaker HyperPod Slurm 叢集
<a name="sagemaker-hyperpod-operate-slurm-console-ui"></a>

下列主題提供如何透過主控台 UI 管理 SageMaker HyperPod 的指引。

**Topics**
+ [建立 SageMaker HyperPod 叢集](#sagemaker-hyperpod-operate-slurm-console-ui-create-cluster)
+ [瀏覽您的 SageMaker HyperPod 叢集](#sagemaker-hyperpod-operate-slurm-console-ui-browse-clusters)
+ [檢視每個 SageMaker HyperPod 叢集的詳細資訊](#sagemaker-hyperpod-operate-slurm-console-ui-view-details-of-clusters)
+ [編輯 SageMaker HyperPod 叢集](#sagemaker-hyperpod-operate-slurm-console-ui-edit-clusters)
+ [刪除 SageMaker HyperPod 叢集](#sagemaker-hyperpod-operate-slurm-console-ui-delete-cluster)

## 建立 SageMaker HyperPod 叢集
<a name="sagemaker-hyperpod-operate-slurm-console-ui-create-cluster"></a>

請參閱[使用 SageMaker AI 主控台開始使用 SageMaker HyperPod](smcluster-getting-started-slurm-console.md)中的指示，透過 SageMaker HyperPod 主控台 UI 建立新的 SageMaker HyperPod 叢集。

## 瀏覽您的 SageMaker HyperPod 叢集
<a name="sagemaker-hyperpod-operate-slurm-console-ui-browse-clusters"></a>

在 SageMaker HyperPod 主控台主頁面上 SageMaker HyperPod 主控台主窗格的**叢集**下，所有建立的叢集都應該列示在**叢集**區段下，該區段提供叢集、其 ARN、狀態和建立時間的摘要檢視。

## 檢視每個 SageMaker HyperPod 叢集的詳細資訊
<a name="sagemaker-hyperpod-operate-slurm-console-ui-view-details-of-clusters"></a>

在主控台主頁面上的**叢集**下，叢集**名稱**會啟用為連結。選擇叢集名稱連結以查看每個叢集的詳細資訊。

## 編輯 SageMaker HyperPod 叢集
<a name="sagemaker-hyperpod-operate-slurm-console-ui-edit-clusters"></a>

1. 在 SageMaker HyperPod 主控台主窗格的**叢集**下，選擇您要更新的叢集。

1. 選取您的叢集，然後選擇**編輯**。

1. 在**編輯 <your-cluster>** 頁面中，您可以編輯現有執行個體群組的組態、新增更多執行個體群組、刪除執行個體群組，以及變更叢集的標籤。進行變更後，請選擇**提交**。

   1. 在**設定執行個體群組**區段中，您可以選擇**建立執行個體群組**來新增更多執行個體群組。

   1. 在**設定執行個體群組**區段中，您可以選擇**編輯**來變更其組態，或選擇**刪除**來永久移除執行個體群組。
**重要**  
刪除執行個體群組時，請考慮下列幾點：  
您的 SageMaker HyperPod 叢集必須一律維持至少一個執行個體群組。
在移除之前，請確保已備份所有關鍵資料
移除程序無法復原。
**注意**  
刪除執行個體群組將終止與該群組相關聯的所有運算資源。

   1. 在**標籤**區段中，您可以更新叢集的標籤。

## 刪除 SageMaker HyperPod 叢集
<a name="sagemaker-hyperpod-operate-slurm-console-ui-delete-cluster"></a>

1. 在 SageMaker HyperPod 主控台主窗格的**叢集**下，選擇您要刪除的叢集。

1. 選取您的叢集，然後選擇**刪除**。

1. 在進行叢集刪除的快顯視窗中，仔細檢閱叢集資訊，以確認您選擇正確的叢集來刪除。

1. 檢閱叢集資訊後，請選擇**是，刪除叢集**。

1. 在確認此刪除的文字欄位中，輸入 **delete**。

1. 選擇快顯視窗右下角的**刪除**，以完成傳送叢集刪除請求。

# 使用 管理 SageMaker HyperPod Slurm 叢集 AWS CLI
<a name="sagemaker-hyperpod-operate-slurm-cli-command"></a>

下列主題提供以 JSON 格式撰寫 SageMaker HyperPod API 請求檔案，並使用 AWS CLI 命令執行這些檔案的指引。

**Topics**
+ [建立新叢集](#sagemaker-hyperpod-operate-slurm-cli-command-create-cluster)
+ [描述叢集](#sagemaker-hyperpod-operate-slurm-cli-command-describe-cluster)
+ [列出叢集節點的詳細資訊](#sagemaker-hyperpod-operate-slurm-cli-command-list-cluster-nodes)
+ [描述叢集節點的詳細資訊](#sagemaker-hyperpod-operate-slurm-cli-command-describe-cluster-node)
+ [列出叢集](#sagemaker-hyperpod-operate-slurm-cli-command-list-clusters)
+ [更新叢集組態](#sagemaker-hyperpod-operate-slurm-cli-command-update-cluster)
+ [更新叢集的 SageMaker HyperPod 平台軟體](#sagemaker-hyperpod-operate-slurm-cli-command-update-cluster-software)
+ [縮減叢集](#sagemaker-hyperpod-operate-slurm-cli-command-scale-down)
+ [刪除叢集](#sagemaker-hyperpod-operate-slurm-cli-command-delete-cluster)

## 建立新叢集
<a name="sagemaker-hyperpod-operate-slurm-cli-command-create-cluster"></a>

1. 準備生命週期組態指令碼，並將其上傳至 S3 儲存貯體，例如 `s3://sagemaker-amzn-s3-demo-bucket/lifecycle-script-directory/src/`。下列步驟 2 假設在指定的 S3 儲存貯體中有名為 `on_create.sh` 的進入點指令碼。
**重要**  
確定您將 S3 路徑設定為以 `s3://sagemaker-` 開頭。[SageMaker HyperPod 的 IAM 角色](sagemaker-hyperpod-prerequisites-iam.md#sagemaker-hyperpod-prerequisites-iam-role-for-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-` 的 S3 儲存貯體。

1. 準備 JSON 格式的 [CreateCluster](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateCluster.html) API 請求檔案。您應該將執行個體群組設定為與您在 `provisioning_parameters.json` 檔案中設計的 Slurm 叢集相符，此檔案會在叢集建立期間用作執行一組生命週期指令碼的一部分。如需詳細資訊，請參閱 [使用生命週期指令碼自訂 SageMaker HyperPod 叢集](sagemaker-hyperpod-lifecycle-best-practices-slurm.md)。下列範本有兩個執行個體群組，以符合 Slurm 叢集的最低要求：一個控制器 (主) 節點和一個運算 (工作) 節點。針對 `ExecutionRole`，請從 [SageMaker HyperPod 的 IAM 角色](sagemaker-hyperpod-prerequisites-iam.md#sagemaker-hyperpod-prerequisites-iam-role-for-hyperpod) 區段提供您使用受管 `AmazonSageMakerClusterInstanceRolePolicy` 建立的 IAM 角色 ARN。

   ```
   // create_cluster.json
   {
       "ClusterName": "your-hyperpod-cluster",
       "InstanceGroups": [
           {
               "InstanceGroupName": "controller-group",
               "InstanceType": "ml.m5.xlarge",
               "InstanceCount": 1,
               "LifeCycleConfig": {
                   "SourceS3Uri": "s3://amzn-s3-demo-bucket-sagemaker/lifecycle-script-directory/src/",
                   "OnCreate": "on_create.sh"
               },
               "ExecutionRole": "arn:aws:iam::111122223333:role/iam-role-for-cluster",
               // Optional: Configure an additional storage per instance group.
               "InstanceStorageConfigs": [
                   {
                      // Attach an additional EBS volume to each instance within the instance group.
                      // The default mount path for the additional EBS volume is /opt/sagemaker.
                      "EbsVolumeConfig":{
                         // Specify an integer between 1 and 16384 in gigabytes (GB).
                         "VolumeSizeInGB": integer,
                      }
                   }
               ]
           }, 
           {
               "InstanceGroupName": "worker-group-1",
               "InstanceType": "ml.p4d.xlarge",
               "InstanceCount": 1,
               "LifeCycleConfig": {
                   "SourceS3Uri": "s3://amzn-s3-demo-bucket-sagemaker/lifecycle-script-directory/src/",
                   "OnCreate": "on_create.sh"
               },
               "ExecutionRole": "arn:aws:iam::111122223333:role/iam-role-for-cluster"
           }
       ],
       // Optional
       "Tags": [ 
           { 
              "Key": "string",
              "Value": "string"
           }
       ],
       // Optional
       "VpcConfig": { 
           "SecurityGroupIds": [ "string" ],
           "Subnets": [ "string" ]
       }
   }
   ```

   根據您透過生命週期指令碼設計叢集結構的方式，您可以在 `InstanceGroups` 參數下設定最多 20 個執行個體群組。

   對於`Tags`請求參數，您可以新增自訂標籤，以將 SageMaker HyperPod 叢集管理為 AWS 資源。您可以像在支援標記的其他 AWS 服務中新增標籤一樣，將標籤新增至叢集。若要進一步了解一般標記 AWS 資源，請參閱[標記 AWS 資源使用者指南](https://docs.aws.amazon.com/tag-editor/latest/userguide/tagging.html)。

   針對 `VpcConfig` 請求參數，指定您要使用的 VPC 資訊。如需詳細資訊，請參閱[使用自訂 Amazon VPC 設定 SageMaker HyperPod](sagemaker-hyperpod-prerequisites.md#sagemaker-hyperpod-prerequisites-optional-vpc)。

1. 執行 [create-cluster](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/create-cluster.html) 命令，如下所示。

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

   這應該會傳回新叢集的 ARN。

## 描述叢集
<a name="sagemaker-hyperpod-operate-slurm-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-operate-slurm-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
```

這會傳回一個回應，而 `InstanceId` 是您需要使用以記錄 (使用 `aws ssm`) 至其中的內容。

## 描述叢集節點的詳細資訊
<a name="sagemaker-hyperpod-operate-slurm-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-operate-slurm-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 參考。

## 更新叢集組態
<a name="sagemaker-hyperpod-operate-slurm-cli-command-update-cluster"></a>

執行 [update-cluster](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/update-cluster.html) 以更新叢集的組態。

**注意**  
您可以使用 `UpdateCluster` API 從 SageMaker HyperPod 叢集縮減規模或移除整個執行個體群組。如需如何縮減或刪除執行個體群組的其他指示，請參閱 [縮減叢集](#sagemaker-hyperpod-operate-slurm-cli-command-scale-down)。

1. 建立 JSON 格式的 `UpdateCluster` 請求檔案。確保您指定要更新的正確叢集名稱和執行個體群組名稱。您可以變更執行個體類型、執行個體數量、生命週期組態進入點指令碼，以及指令碼的路徑。

   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)中。

   下列程式碼片段是您可以使用的 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": "name-of-instance-group-to-update",
               "InstanceType": "ml.m5.xlarge",
               "InstanceCount": 1,
               "LifeCycleConfig": {
                   "SourceS3Uri": "s3://amzn-s3-demo-bucket-sagemaker/lifecycle-script-directory/src/",
                   "OnCreate": "on_create.sh"
               },
               "ExecutionRole": "arn:aws:iam::111122223333:role/iam-role-for-cluster",
               // Optional: Configure an additional storage per instance group.
               "InstanceStorageConfigs": [
                   {
                      // Attach an additional EBS volume to each instance within the instance group.
                      // The default mount path for the additional EBS volume is /opt/sagemaker.
                      "EbsVolumeConfig":{
                         // Specify an integer between 1 and 16384 in gigabytes (GB).
                         "VolumeSizeInGB": integer,
                      }
                   }
               ]
           },
           // add more blocks of instance groups as needed
           { ... }
       ]
   }
   ```

1. 執行下列 `update-cluster` 命令以提交請求。

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

## 更新叢集的 SageMaker HyperPod 平台軟體
<a name="sagemaker-hyperpod-operate-slurm-cli-command-update-cluster-software"></a>

執行 [update-cluster-software](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/update-cluster-software.html)，以使用 SageMaker HyperPod 服務提供的軟體和安全性修補程式更新現有叢集。針對 `--cluster-name`，指定要更新的叢集名稱或 ARN。

**重要**  
請注意，您必須先備份工作，再執行此 API。修補程序會將根磁碟區取代為更新的 AMI，這表示先前存放在執行個體根磁碟區中的資料將會遺失。請確定您將資料從執行個體根磁碟區備份至 Amazon S3 或 Amazon FSx for Lustre。如需詳細資訊，請參閱[使用 SageMaker HyperPod 提供的備份指令碼](#sagemaker-hyperpod-operate-slurm-cli-command-update-cluster-software-backup)。

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

此命令會呼叫 [UpdateClusterSoftware](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateClusterSoftware.html) API。在 API 呼叫之後，SageMaker HyperPod 會檢查是否有較新的 DLAMI 可供叢集執行個體使用。如果需要 DLAMI 更新，SageMaker HyperPod 會更新叢集執行個體，以使用最新的 [SageMaker HyperPod DLAMI](sagemaker-hyperpod-ref.md#sagemaker-hyperpod-ref-hyperpod-ami)，並在您在叢集建立或更新期間指定的 Amazon S3 儲存貯體中執行生命週期指令碼。如果叢集已在使用最新的 DLAMI，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)。

**提示**  
如果安全性修補程式失敗，您可以依照 [描述叢集](#sagemaker-hyperpod-operate-slurm-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 來擷取失敗訊息。

**注意**  
您只能以程式設計方式執行此 API。修補功能未在 SageMaker HyperPod 主控台 UI 中實作。

### 使用 SageMaker HyperPod 提供的備份指令碼
<a name="sagemaker-hyperpod-operate-slurm-cli-command-update-cluster-software-backup"></a>

SageMaker HyperPod 提供一個指令碼，在 *Awsome 分散式訓練 GitHub 儲存庫*的 [https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/patching-backup.sh](https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/patching-backup.sh) 中備份和還原您的資料。此指令碼提供下列兩個函數。

**在修補之前將資料備份至 S3 儲存貯體**

```
sudo bash patching-backup.sh --create <s3-buckup-bucket-path>
```

在您執行命令之後，指令碼會檢查 `squeue` 是否有排入佇列的任務、如果佇列中沒有任務則會停止 Slurm、備份 `mariadb`，然後在 `LOCAL_ITEMS` 下定義的磁碟上複製本機項目。您可以將更多檔案和目錄新增至 `LOCAL_ITEMS`。

```
# Define files and directories to back up.
LOCAL_ITEMS=(
    "/var/spool/slurmd"
    "/var/spool/slurmctld"
    "/etc/systemd/system/slurmctld.service"
    "/home/ubuntu/backup_slurm_acct_db.sql"
    # ... Add more items as needed
)
```

此外，您可以將自訂程式碼新增至提供的指令碼，以針對您的使用案例備份任何應用程式。

**修補後從 S3 儲存貯體還原資料**

```
sudo bash patching-backup.sh --restore <s3-buckup-bucket-path>
```

## 縮減叢集
<a name="sagemaker-hyperpod-operate-slurm-cli-command-scale-down"></a>

您可以縮減執行個體數量，或刪除 SageMaker HyperPod 叢集中的執行個體群組，以最佳化資源配置或降低成本。

縮減方式為使用 `UpdateCluster` API 操作，隨機終止執行個體群組中的執行個體以減至指定的數量，或使用 `BatchDeleteClusterNodes` API 操作終止特定執行個體。您也可以使用 `UpdateCluster` API 完全移除整個執行個體群組。如需如何使用這些方法縮減規模的詳細資訊，請參閱[縮減 SageMaker HyperPod 叢集](smcluster-scale-down.md)。

**注意**  
您無法移除設定為 Slurm 控制器節點的執行個體。嘗試刪除 Slurm 控制器節點會導致錯誤代碼為 `NODE_ID_IN_USE` 的驗證錯誤。

## 刪除叢集
<a name="sagemaker-hyperpod-operate-slurm-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
```