本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 開始使用 SageMaker HyperPod AWS CLI
下列教學課程示範如何透過 SageMaker HyperPod AWS CLI 的命令,使用 Slurm 建立新的 SageMaker HyperPod 叢集。在本教學課程結束時,您將有一個工作中的 Slurm 叢集,其中包含控制器節點、登入節點和運算工作者群組,準備好排程和執行 ML 工作負載。本教學課程涵蓋 Slurm 拓撲設定、節點生命週期組態選項、選用的 FSx 共用儲存,以及如何連線至叢集。
開始之前,請確定您已完成 使用 SageMaker HyperPod 的先決條件(VPC、配額、FSx) 和 AWS Identity and Access Management for SageMaker HyperPod(IAM 角色、具有 的執行角色AmazonSageMakerClusterInstanceRolePolicy)。
重要概念
本節涵蓋建立 SageMaker HyperPod Slurm 叢集的核心組態概念。了解這些概念可協助您在設定叢集時做出明智的選擇,但如果您想要立即開始,您可以直接跳到 建立 叢集 ,並視需要參考這裡。
建立 Slurm 協調叢集時,您有兩個獨立的組態選擇:
-
Slurm 拓撲組態 – 如何定義 Slurm 叢集拓撲 (節點角色、分割區)?
-
節點生命週期組態 – 如何佈建和自訂節點?
對於 Slurm 拓撲,本教學課程使用 API 驅動的組態方法,您可以在每個執行個體群組和Orchestrator.Slurm叢集層級SlurmConfig使用 直接在CreateCluster請求中定義節點角色和分割區。這是新叢集的建議方法。它提供單一來源的事實、內建驗證和分割區組態偏離偵測,無需管理其他檔案。或者,您可以使用存放在 Amazon S3 中的舊版provisioning_parameters.json檔案,與現有叢集回溯相容。如需舊版方法的詳細資訊,請參閱 SageMaker HyperPod Slurm 組態。
對於節點生命週期組態,SageMaker HyperPod 支援三個選項。在最簡單的情況下,您LifeCycleConfig完全省略 ,HyperPod 會使用 AMI 型組態自動設定節點,設定 Slurm 和基本套件,例如 Docker、Enroot 和 Pyxis,以執行 ML 工作負載,而不需要指令碼或 Amazon S3 儲存貯體。如果您需要在 AMI 型組態上進行自訂,您可以透過 OnInitComplete 在組態完成後執行的 提供延伸指令碼。為了完全控制整個佈建序列, OnCreate 路徑可讓您的指令碼擁有一切,包括 Slurm 啟動的時間。
對於 ML 工作負載,您通常還需要共用的高效能檔案系統來訓練資料、檢查點和共用程式庫。SageMaker HyperPod 支援 Amazon FSx for Lustre 和 FSx for OpenZFS,透過 為每個執行個體群組設定InstanceStorageConfigs。FSx 組態是建立叢集的選用組態,但建議用於生產工作負載。
透過 API 設定 Slurm 拓撲
本教學課程中的所有範例都使用 API 驅動的 Slurm 拓撲組態,您可以在 API CreateCluster請求中直接定義 Slurm 叢集結構,而不是透過單獨的組態檔案。
Slurm 叢集至少需要一個控制器節點 slurmctld (執行協助程式並協調任務排程) 和一或多個運算節點 (執行任務)。或者,您可以新增登入節點,為使用者提供提交和管理任務的專用存取點,而無需直接登入控制器。在 API 請求中,您可以使用 為每個執行個體群組指派其 Slurm 角色SlurmConfig,指定群組是做為控制器、登入或運算節點。運算群組也會對應至一或多個 Slurm 分割區,做為邏輯佇列來組織任務在不同節點集之間的排程方式。
在叢集層級, 會Orchestrator.Slurm控制 HyperPod 在 中管理分割區組態的方式slurm.conf。您可以選擇策略,以判斷 HyperPod 是否為分割區拓撲的單一事實來源、是否覆寫手動變更,或是否將 API 定義的組態與您所做的任何手動編輯合併。以下是所使用欄位的參考。
SlurmConfig (每個執行個體群組):
"SlurmConfig": { "NodeType": "Controller | Login | Compute", "PartitionNames": ["partition-name"] }
| 欄位 | 說明 |
|---|---|
NodeType |
必要. 此執行個體群組的 Slurm 角色。有效值:Controller、Login、Compute。確切一個執行個體群組必須是 Controller。 |
PartitionNames |
條件式。Slurm 分割區名稱。Compute 節點類型為必要; Controller或 不允許Login。 |
Orchestrator.Slurm (叢集層級):
"Orchestrator": { "Slurm": { "SlurmConfigStrategy": "Managed | Overwrite | Merge" } }
SlurmConfigStrategy 決定 HyperPod 如何在控制器節點slurm.conf上管理 中的partition-to-node映射。當您建立或更新叢集時,HyperPod slurm.conf會根據SlurmConfig您在每個執行個體群組上定義的 將分割區組態寫入 ,將運算執行個體群組映射至其指派的分割區,並使用適當的 Slurm 角色註冊控制器和登入節點。
您選擇的策略會控制slurm.conf在 API 外部修改 中的分割區組態時會發生的情況,例如,管理員直接在控制器節點上編輯檔案。使用 Managed時,HyperPod 會將 API 視為單一事實來源,並在磁碟slurm.conf上發生漂移時偵測和封鎖更新。使用 Overwrite時,HyperPod 會在控制器上強制 API 定義的組態,捨棄對 的任何手動編輯slurm.conf。這對於從意外變更中復原很有用。透過 Merge,HyperPod 會保留對 的手動編輯slurm.conf,並將其與 API 組態合併,讓進階使用者能夠彈性地與 API 受管分割區一起維護自訂slurm.conf設定。
| 策略 | 分割區偏離偵測 | 手動變更 | 使用案例 |
|---|---|---|---|
Managed (default) |
已啟用;如果找到偏離,則封鎖更新 | 不支援 | 單一事實來源 |
Overwrite |
Disabled | 更新時覆寫 | 從偏離中復原 |
Merge |
Disabled | 保留和合併 | 自訂slurm.conf需求 |
重要
偏離偵測僅適用於 中的 Slurm 分割區組態 slurm.conf(partition-to-node映射)。HyperPod 不會監控其他slurm.conf設定的變更,例如排程參數、資源限制或會計組態,也不會偵測到或報告。
注意
如果您偏好使用provisioning_parameters.json檔案而非 API 來定義 Slurm 拓撲,SlurmConfig請省略執行個體群組和叢集請求Orchestrator.Slurm中的 ,然後將檔案與您的節點生命週期指令碼一起上傳至 Amazon S3。如需詳細資訊,請參閱SageMaker HyperPod Slurm 組態。
節點生命週期組態選項
建立 SageMaker HyperPod Slurm 叢集時,您可以透過在CreateCluster請求中設定 LifeCycleConfig區塊,選擇如何佈建每個執行個體群組的節點。SageMaker HyperPod 支援三個節點生命週期組態選項,每個選項都提供不同層級的佈建程序控制。
僅使用 AMI 型組態,您可以LifeCycleConfig完全省略 。HyperPod 會使用 AMI 型組態自動設定節點、設定 Slurm、安裝基本套件,以及啟動所有必要的服務。這是最簡單的路徑,不需要 Amazon S3 儲存貯體或指令碼。
使用擴充功能選項,您可以在 OnInitComplete 中指定 ,LifeCycleConfig並SourceS3Uri指向 Amazon S3 中的擴充功能指令碼。HyperPod 會先執行完整的 AMI 型組態,然後執行您的指令碼。這可讓您新增自訂,例如監控代理程式、LDAP 整合或其他儲存掛載,而無需管理基準佈建。
使用自訂選項,您可以在 OnCreate 中指定 ,LifeCycleConfig並SourceS3Uri指向 Amazon S3 中設定的完整生命週期指令碼。HyperPod 不會執行 AMI 型組態,也不會啟動 Slurm。您的指令碼擁有整個佈建序列。這可讓您完全控制已安裝的軟體、設定方式,以及 Slurm 何時啟動。
| 節點生命週期選項 | 需要 Amazon S3 儲存貯體? | 要上傳的指令碼? | API 中的 LifeCycleConfig? |
|---|---|---|---|
| 僅限 AMI 型組態 (簡單) | 否 | 否 | 完全省略 |
延伸模組 (OnInitComplete) |
是 | 只有您的延伸指令碼 | OnInitComplete + SourceS3Uri |
自訂 (OnCreate) |
是 | 完整生命週期指令碼集 | OnCreate + SourceS3Uri |
注意
只有 Slurm 協調叢集才支援選用的節點生命週期組態。使用 Continuous 的 EKS 協調叢集和 Slurm 叢集會NodeProvisioningMode繼續要求在每個執行個體群組SourceS3Uri上使用 LifeCycleConfig OnCreate和 。
注意
OnCreate 和 OnInitComplete 是互斥的。在相同的執行個體群組上指定兩者會導致驗證錯誤。
FSx 和 VPC 組態
對於 ML 工作負載,共用的高效能檔案系統對於跨叢集節點存放訓練資料、模型檢查點和共用程式庫至關重要。SageMaker HyperPod 支援 Amazon FSx for Lustre 和 FSx for OpenZFS,透過 為每個執行個體群組設定InstanceStorageConfigs。FSx 檔案系統位於您的 VPC 中,因此使用 FSx 時需要自訂 VPC 組態 (VpcConfig)。
FSx 組態適用於所有三個節點生命週期組態選項。使用 AMI 型組態或 時OnInitComplete,HyperPod 會自動處理 FSx 掛載。使用 時OnCreate,您的生命週期指令碼負責掛載。
FSx for Lustre:
"InstanceStorageConfigs": [ { "FsxLustreConfig": { "DnsName": "fs-0abc123def456789.fsx.us-west-2.amazonaws.com", "MountPath": "/fsx", "MountName": "abcdefgh" } } ]
| 欄位 | 說明 |
|---|---|
DnsName |
必要. FSx for Lustre 檔案系統的 DNS 名稱。 |
MountPath |
選用。執行個體上的本機掛載路徑。預設:/fsx |
MountName |
必要. FSx for Lustre 檔案系統的掛載名稱。在 FSx for Lustre 主控台或透過 找到。 aws fsx describe-file-systems |
FSx for OpenZFS:
"InstanceStorageConfigs": [ { "FsxOpenZfsConfig": { "DnsName": "fs-0xyz789abc123456.fsx.us-west-2.amazonaws.com", "MountPath": "/shared" } } ]
| 欄位 | 說明 |
|---|---|
DnsName |
必要. FSx for OpenZFS 檔案系統的 DNS 名稱。 |
MountPath |
選用。執行個體上的本機掛載路徑。預設:/home |
注意
每個執行個體群組最多可以有一個 FSx for Lustre 和一個 FSx for OpenZFS 組態。不同的執行個體群組可以掛載不同的檔案系統。
VPC 組態 (FSx 需要):
VpcConfig 在CreateCluster請求中的叢集層級新增 :
"VpcConfig": { "SecurityGroupIds": ["sg-0abc123def456789a"], "Subnets": ["subnet-0abc123def456789a"] }
如需設定 VPC 的詳細資訊,請參閱 使用 SageMaker HyperPod 的先決條件。如需 FSx 設定的詳細資訊,請參閱 使用 SageMaker HyperPod 的先決條件。
建立 叢集
本節將逐步引導您使用 中所述的三個節點生命週期組態選項中的每一個來建立叢集節點生命週期組態選項。對於大多數使用者,我們建議從選項 A 開始,僅限以 AMI 為基礎的組態。它不需要指令碼或 Amazon S3 儲存貯體,並立即交付功能完整的叢集。如果您需要在 AMI 型組態上新增自訂,請選擇選項 B;如果您需要完全控制佈建程序,請選擇選項 C。
對於所有範例中ExecutionRole的 ,請提供您使用 AmazonSageMakerClusterInstanceRolePolicy中受管 所建立之 IAM 角色的 ARN使用 SageMaker HyperPod 的先決條件。
選項 A:僅限 AMI 型組態 (不含生命週期組態)
這是最簡單的路徑。不需要 Amazon S3 儲存貯體、指令碼或組態檔案。SageMaker HyperPod 會使用 AMI 型組態自動設定節點、安裝基本軟體和套用組態,讓叢集準備好立即執行 ML 工作負載。所有軟體套件都內嵌在 AMI 中,因此在佈建期間不需要網際網路存取。
下表列出 AMI 型組態中包含的功能:
| 功能 | 說明 |
|---|---|
| Slurm 協助程式 | 控制器和運算協助程式會自動啟動 |
| Docker | 用於建置和執行 ML 容器的容器執行時間 |
| 根目錄 | Slurm 工作負載的無根容器執行 |
| Pyxis | 容器整合的 Slurm 外掛程式 |
| Slurm 會計 | 設定 Slurm 任務會計以追蹤任務歷史記錄和資源消耗 |
| MariaDB | 在控制器節點上部署 MariaDB 做為 Slurm 會計的備份資料庫 |
| SSH 金鑰產生 | 預設 ubuntu 使用者產生的金鑰對 |
| SSH 傳播 | 多節點任務在運算節點之間傳播的使用者登入資料 |
| Slurm 日誌輪換 | 防止日誌膨脹和磁碟完整問題 |
| 主目錄設定 | 掛載至共用檔案系統的 Ubuntu 使用者主目錄 |
-
將下列項目儲存為
create_cluster.json:{ "ClusterName": "my-hyperpod-cluster", "InstanceGroups": [ { "InstanceGroupName": "my-controller-group", "InstanceType": "ml.c5.xlarge", "InstanceCount": 1, "SlurmConfig": { "NodeType": "Controller" }, "ExecutionRole": "arn:aws:iam::111122223333:role/HyperPodExecutionRole", "InstanceStorageConfigs": [ { "EbsVolumeConfig": { "VolumeSizeInGB": 500 } } ] }, { "InstanceGroupName": "my-login-group", "InstanceType": "ml.m5.4xlarge", "InstanceCount": 1, "SlurmConfig": { "NodeType": "Login" }, "ExecutionRole": "arn:aws:iam::111122223333:role/HyperPodExecutionRole" }, { "InstanceGroupName": "worker-group-1", "InstanceType": "ml.trn1.32xlarge", "InstanceCount": 1, "SlurmConfig": { "NodeType": "Compute", "PartitionNames": ["partition-1"] }, "ExecutionRole": "arn:aws:iam::111122223333:role/HyperPodExecutionRole", "InstanceStorageConfigs": [ { "FsxLustreConfig": { "DnsName": "fs-0abc123def456789.fsx.us-west-2.amazonaws.com", "MountPath": "/fsx", "MountName": "abcdefgh" } } ] } ], "Orchestrator": { "Slurm": { "SlurmConfigStrategy": "Managed" } }, "VpcConfig": { "SecurityGroupIds": ["sg-0abc123def456789a"], "Subnets": ["subnet-0abc123def456789a"] } }請注意,任何執行個體群組上
LifeCycleConfig都不會指定 。每個執行個體群組
SlurmConfig上的 Slurm 拓撲是透過 定義:my-controller-group獲指派Controller角色 (執行slurmctld)、my-login-group做為使用者存取的Login節點,以及worker-group-1獲指派任務排程partition-1的Compute節點。在叢集層級,SlurmConfigStrategy: "Managed"可確保 HyperPod 是分割區組態的單一事實來源。工作者群組包含掛載在 的 FSx for Lustre 檔案系統,/fsx用於共用儲存,並根據需要在叢集層級VpcConfig指定 FSx。提示
如果您是在沒有 FSx 的情況下進行測試,則可以省略
FsxLustreConfig請求中的InstanceStorageConfigs和VpcConfig。建立叢集不需要 FSx,但建議用於生產 ML 工作負載。 -
建立叢集:
aws sagemaker create-cluster \ --cli-input-jsonfile://create_cluster.json -
檢查狀態:
aws sagemaker describe-cluster --cluster-namemy-hyperpod-cluster僅使用 AMI 型組態,回應中的執行個體群組不會包含
LifeCycleConfig區塊。以下是顯示控制器執行個體群組的截斷範例:{ "ClusterName": "my-hyperpod-cluster", "ClusterStatus": "InService", "InstanceGroups": [ { "InstanceGroupName": "my-controller-group", "SlurmConfig": { "NodeType": "Controller" } } ] }狀態變為 之後
InService,請繼續執行 連線至您的叢集。
選項 B:使用 OnInitComplete 擴展 AMI 型組態
當您需要自訂 AMI 型組態,例如監控代理程式、LDAP/SSSD 整合或其他儲存體掛載時,請使用此選項。SageMaker HyperPod 會先執行 AMI 型組態,然後執行您的延伸指令碼。
-
撰寫您的延伸指令碼。例如,
extend-defaults.sh:#!/bin/bash set -e echo "Running post-initialization customizations..." # Example: Install a monitoring agent # apt-get install -y my-monitoring-agent # Example: Configure LDAP integration # /opt/custom/setup-ldap.sh # Example: Mount an additional S3 bucket # mount-s3 my-data-bucket /mnt/s3-data echo "Custom extensions complete."從 Awsome 分散式訓練儲存庫使用延伸指令碼
Awsome 分散式訓練儲存庫中的延伸項目資料夾
為常見任務提供ready-to-use延伸項目指令碼,例如新增使用者和啟用可觀測性。每個功能都在自己的目錄中獨立,具有自己的進入點指令碼,可以直接作為 OnInitComplete指令碼提供。對於需要多個功能的叢集,我們建議您使用延伸資料夾最上層可用的
run_extensions.sh指令碼。此指令碼會協調所有可用的延伸指令碼,並提供簡單的布林切換來啟用或停用每個功能。若要使用它,請將整個 Extensions 資料夾上傳到您的 Amazon S3 儲存貯體,並指定run_extensions.sh做為OnInitComplete指令碼:s3://<bucket>/<prefix>/ |-- run_extensions.sh (OnInitComplete target) |-- detect-node/ (node type detection utility) |-- add-users/ (user management scripts + config) |-- observability/ (observability scripts + config)在 中
run_extensions.sh,透過設定對應的旗標來啟用或停用每個功能:ENABLE_ADD_USERS="true" ENABLE_OBSERVABILITY="true"必須先填入每個已啟用功能的組態檔案,才能上傳至 Amazon S3。如需組態詳細資訊,請參閱每個功能目錄中的 README。
-
上傳至 Amazon S3 (儲存貯體路徑必須以 開頭
s3://sagemaker-):aws s3 cp extend-defaults.sh \ s3://sagemaker-amzn-s3-demo-bucket/scripts/ -
將下列項目儲存為
create_cluster.json:{ "ClusterName": "my-hyperpod-cluster", "InstanceGroups": [ { "InstanceGroupName": "my-controller-group", "InstanceType": "ml.c5.xlarge", "InstanceCount": 1, "SlurmConfig": { "NodeType": "Controller" }, "LifeCycleConfig": { "OnInitComplete": "extend-defaults.sh", "SourceS3Uri": "s3://sagemaker-amzn-s3-demo-bucket/scripts/" }, "ExecutionRole": "arn:aws:iam::111122223333:role/HyperPodExecutionRole", "InstanceStorageConfigs": [ { "EbsVolumeConfig": { "VolumeSizeInGB": 500 } } ] }, { "InstanceGroupName": "my-login-group", "InstanceType": "ml.m5.4xlarge", "InstanceCount": 1, "SlurmConfig": { "NodeType": "Login" }, "LifeCycleConfig": { "OnInitComplete": "extend-defaults.sh", "SourceS3Uri": "s3://sagemaker-amzn-s3-demo-bucket/scripts/" }, "ExecutionRole": "arn:aws:iam::111122223333:role/HyperPodExecutionRole" }, { "InstanceGroupName": "worker-group-1", "InstanceType": "ml.trn1.32xlarge", "InstanceCount": 1, "SlurmConfig": { "NodeType": "Compute", "PartitionNames": ["partition-1"] }, "LifeCycleConfig": { "OnInitComplete": "extend-defaults.sh", "SourceS3Uri": "s3://sagemaker-amzn-s3-demo-bucket/scripts/" }, "ExecutionRole": "arn:aws:iam::111122223333:role/HyperPodExecutionRole" } ], "Orchestrator": { "Slurm": { "SlurmConfigStrategy": "Managed" } } }重要
指定
OnInitComplete時,SourceS3Uri為必要項目。OnCreate和OnInitComplete無法同時用於相同的執行個體群組。提示
您可以在叢集中混合選項。例如,僅在控制器和工作者
OnInitComplete上使用 AMI 型組態。Slurm 拓撲與選項 A 中的相同。每個執行個體群組都有
SlurmConfig定義其節點角色和分割區指派,並在叢集層級SlurmConfigStrategy: "Managed"設定。唯一的區別是新增LifeCycleConfig與OnInitComplete,這會指示 HyperPod 在 AMI 型組態在每個節點上完成之後執行延伸指令碼。若要新增 FSx,請在相關執行個體群組InstanceStorageConfigs上包含FsxLustreConfig或FsxOpenZfsConfig,並在VpcConfig叢集層級新增 ,如中所述FSx 和 VPC 組態。 -
建立叢集:
aws sagemaker create-cluster \ --cli-input-jsonfile://create_cluster.json -
檢查狀態:
aws sagemaker describe-cluster --cluster-namemy-hyperpod-cluster使用 時
OnInitComplete,回應會顯示在OnInitComplete中LifeCycleConfig。以下是顯示控制器執行個體群組的截斷範例:{ "ClusterName": "my-hyperpod-cluster", "ClusterStatus": "InService", "InstanceGroups": [ { "InstanceGroupName": "my-controller-group", "SlurmConfig": { "NodeType": "Controller" }, "LifeCycleConfig": { "SourceS3Uri": "s3://sagemaker-amzn-s3-demo-bucket/scripts/", "OnInitComplete": "extend-defaults.sh" } } ] }狀態變為 之後
InService,請繼續執行 連線至您的叢集。
選項 C:使用 OnCreate 進行完全自訂控制 (進階)
當您需要完全控制佈建時,請使用此選項,包括安裝軟體、進行基礎設施變更,以及決定何時啟動 Slurm。使用 OnCreate時,SageMaker HyperPod 不會執行 AMI 型組態,也不會自動啟動 Slurm。
注意
如果您是初次使用 SageMaker HyperPod,而且沒有特定的自訂需求,建議您從選項 A 或選項 B 開始。您稍後可以隨時遷移至自訂模式。
-
準備生命週期指令碼並將其上傳至 Amazon S3。如果從頭開始,請使用 Awsome 分散式訓練 GitHub 儲存庫
中的範例指令碼: git clone https://github.com/aws-samples/awsome-distributed-training/ cd awsome-distributed-training/1.architectures/5.sagemaker_hyperpods/LifecycleScripts/base-config上傳至 Amazon S3 (儲存貯體路徑必須以 開頭
s3://sagemaker-):aws s3 sync . \ s3://sagemaker-amzn-s3-demo-bucket/lifecycle/src若要進一步了解生命週期指令碼,請參閱 使用生命週期指令碼自訂 SageMaker HyperPod 叢集。
-
將下列項目儲存為
create_cluster.json:{ "ClusterName": "my-hyperpod-cluster", "InstanceGroups": [ { "InstanceGroupName": "my-controller-group", "InstanceType": "ml.c5.xlarge", "InstanceCount": 1, "SlurmConfig": { "NodeType": "Controller" }, "LifeCycleConfig": { "SourceS3Uri": "s3://sagemaker-amzn-s3-demo-bucket/lifecycle/src", "OnCreate": "on_create.sh" }, "ExecutionRole": "arn:aws:iam::111122223333:role/HyperPodExecutionRole", "InstanceStorageConfigs": [ { "EbsVolumeConfig": { "VolumeSizeInGB": 500 } } ] }, { "InstanceGroupName": "my-login-group", "InstanceType": "ml.m5.4xlarge", "InstanceCount": 1, "SlurmConfig": { "NodeType": "Login" }, "LifeCycleConfig": { "SourceS3Uri": "s3://sagemaker-amzn-s3-demo-bucket/lifecycle/src", "OnCreate": "on_create.sh" }, "ExecutionRole": "arn:aws:iam::111122223333:role/HyperPodExecutionRole" }, { "InstanceGroupName": "worker-group-1", "InstanceType": "ml.trn1.32xlarge", "InstanceCount": 1, "SlurmConfig": { "NodeType": "Compute", "PartitionNames": ["partition-1"] }, "LifeCycleConfig": { "SourceS3Uri": "s3://sagemaker-amzn-s3-demo-bucket/lifecycle/src", "OnCreate": "on_create.sh" }, "ExecutionRole": "arn:aws:iam::111122223333:role/HyperPodExecutionRole" } ], "Orchestrator": { "Slurm": { "SlurmConfigStrategy": "Managed" } } }Slurm 拓撲遵循與其他選項相同的
SlurmConfig模式。關鍵差異在於LifeCycleConfigOnCreate。這可讓 HyperPod 完全略過 AMI 型組態,並改為執行您的on_create.sh指令碼。您的指令碼負責完整的佈建序列,包括安裝軟體、設定 Slurm 和啟動 Slurm 協助程式。若要新增 FSx,請在相關執行個體群組InstanceStorageConfigs上包含FsxLustreConfig或FsxOpenZfsConfig,並在VpcConfig叢集層級新增 ,如中所述FSx 和 VPC 組態。 -
建立叢集:
aws sagemaker create-cluster \ --cli-input-jsonfile://create_cluster.json -
檢查狀態:
aws sagemaker describe-cluster --cluster-namemy-hyperpod-cluster使用 時
OnCreate,回應會顯示在OnCreate中LifeCycleConfig。以下是顯示控制器執行個體群組的截斷範例:{ "ClusterName": "my-hyperpod-cluster", "ClusterStatus": "InService", "InstanceGroups": [ { "InstanceGroupName": "my-controller-group", "SlurmConfig": { "NodeType": "Controller" }, "LifeCycleConfig": { "SourceS3Uri": "s3://sagemaker-amzn-s3-demo-bucket/lifecycle/src", "OnCreate": "on_create.sh" } } ] }狀態變為 之後
InService,請繼續執行 連線至您的叢集。
常見的驗證錯誤
| 錯誤 | Resolution |
|---|---|
| 「叢集必須只有一個具有控制器節點類型的 InstanceGroup」 | 確保只有一個執行個體群組具有 SlurmConfig.NodeType: "Controller" |
| 「分割區只能指派給運算節點類型」 | PartitionNames 從 Controller或 Login 執行個體群組移除 |
| 「FSx 組態僅支援自訂 VPC」 | 使用 FSx 時VpcConfig新增至您的請求 |
| 「執行個體群組需要 LifeCycleConfig...」 | EKS 叢集或 Slurm Continuous NodeProvisioningMode。不支援選用的節點生命週期組態。 |
| 「OnCreate 和 OnInitComplete in LifeCycleConfig 是互斥的...」 | 移除 OnCreate或 OnInitComplete。您不能同時指定兩者。 |
| 「執行個體群組的 LifeCycleConfig 不完整...」 | 指定 OnInitComplete OnCreate或 時,SourceS3Uri也必須提供 。 |
| 「LifeCycleConfig 是選用項目,但需要相容的 AMI...」 | 執行 UpdateClusterSoftware 以更新至支援選用節點生命週期組態的 AMI。 |
| 「已提供執行個體群組的 LifeCycleConfig,但不包含組態...」 | SourceS3Uri 使用 OnCreate或 指定 OnInitComplete,或LifeCycleConfig完全省略 。 |
連線至您的叢集
在叢集狀態變為 InService(通常為 10 到 15 分鐘) 之後,請連線並驗證。
-
列出叢集節點以取得執行個體 IDs:
aws sagemaker list-cluster-nodes --cluster-namemy-hyperpod-cluster -
使用 AWS Systems Manager Session Manager 連線:
aws ssm start-session \ --target sagemaker-cluster:my-hyperpod-cluster_my-login-group-i-0abc123def456789b\ --regionus-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
如需執行 ML 工作負載的詳細資訊,請參閱 SageMaker HyperPod 叢集上的任務。
刪除叢集並清理資源
測試之後,請刪除叢集以避免繼續收費:
aws sagemaker delete-cluster --cluster-namemy-hyperpod-cluster
如果您使用節點生命週期指令碼 (選項 B 或選項 C),請清除 Amazon S3 儲存貯體:
aws s3 rm s3://sagemaker-amzn-s3-demo-bucket/lifecycle/src--recursive
如果您僅使用 AMI 型組態 (選項 A),則節點生命週期指令碼不需要 Amazon S3 清除。
如果您執行訓練工作負載,也請檢查 Amazon S3、Amazon FSx for Lustre 或 Amazon Elastic File System 中的資料或成品,並將其刪除以避免產生費用。