View a markdown version of this page

使用 開始使用 SageMaker HyperPod AWS CLI - Amazon SageMaker AI

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

使用 開始使用 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 協調叢集時,您有兩個獨立的組態選擇:

  1. Slurm 拓撲組態 – 如何定義 Slurm 叢集拓撲 (節點角色、分割區)?

  2. 節點生命週期組態 – 如何佈建和自訂節點?

對於 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 角色。有效值:ControllerLoginCompute。確切一個執行個體群組必須是 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 中指定 ,LifeCycleConfigSourceS3Uri指向 Amazon S3 中的擴充功能指令碼。HyperPod 會先執行完整的 AMI 型組態,然後執行您的指令碼。這可讓您新增自訂,例如監控代理程式、LDAP 整合或其他儲存掛載,而無需管理基準佈建。

使用自訂選項,您可以在 OnCreate 中指定 ,LifeCycleConfigSourceS3Uri指向 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和 。

注意

OnCreateOnInitComplete 是互斥的。在相同的執行個體群組上指定兩者會導致驗證錯誤。

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 需要):

VpcConfigCreateCluster請求中的叢集層級新增 :

"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 使用者主目錄
  1. 將下列項目儲存為 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-1Compute節點。在叢集層級, SlurmConfigStrategy: "Managed"可確保 HyperPod 是分割區組態的單一事實來源。工作者群組包含掛載在 的 FSx for Lustre 檔案系統,/fsx用於共用儲存,並根據需要在叢集層級VpcConfig指定 FSx。

    提示

    如果您是在沒有 FSx 的情況下進行測試,則可以省略FsxLustreConfig請求中的 InstanceStorageConfigsVpcConfig 。建立叢集不需要 FSx,但建議用於生產 ML 工作負載。

  2. 建立叢集:

    aws sagemaker create-cluster \ --cli-input-json file://create_cluster.json
  3. 檢查狀態:

    aws sagemaker describe-cluster --cluster-name my-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 型組態,然後執行您的延伸指令碼。

  1. 撰寫您的延伸指令碼。例如,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。

  2. 上傳至 Amazon S3 (儲存貯體路徑必須以 開頭s3://sagemaker-):

    aws s3 cp extend-defaults.sh \ s3://sagemaker-amzn-s3-demo-bucket/scripts/
  3. 將下列項目儲存為 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 為必要項目。 OnCreateOnInitComplete無法同時用於相同的執行個體群組。

    提示

    您可以在叢集中混合選項。例如,僅在控制器和工作者OnInitComplete上使用 AMI 型組態。

    Slurm 拓撲與選項 A 中的相同。每個執行個體群組都有SlurmConfig定義其節點角色和分割區指派,並在叢集層級SlurmConfigStrategy: "Managed"設定。唯一的區別是新增 LifeCycleConfigOnInitComplete,這會指示 HyperPod 在 AMI 型組態在每個節點上完成之後執行延伸指令碼。若要新增 FSx,請在相關執行個體群組InstanceStorageConfigs上包含 FsxLustreConfigFsxOpenZfsConfig ,並在VpcConfig叢集層級新增 ,如中所述FSx 和 VPC 組態

  4. 建立叢集:

    aws sagemaker create-cluster \ --cli-input-json file://create_cluster.json
  5. 檢查狀態:

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

    使用 時OnInitComplete,回應會顯示在 OnInitCompleteLifeCycleConfig。以下是顯示控制器執行個體群組的截斷範例:

    { "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 開始。您稍後可以隨時遷移至自訂模式。

  1. 準備生命週期指令碼並將其上傳至 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 叢集

  2. 將下列項目儲存為 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模式。關鍵差異在於 LifeCycleConfig OnCreate。這可讓 HyperPod 完全略過 AMI 型組態,並改為執行您的on_create.sh指令碼。您的指令碼負責完整的佈建序列,包括安裝軟體、設定 Slurm 和啟動 Slurm 協助程式。若要新增 FSx,請在相關執行個體群組InstanceStorageConfigs上包含 FsxLustreConfigFsxOpenZfsConfig ,並在VpcConfig叢集層級新增 ,如中所述FSx 和 VPC 組態

  3. 建立叢集:

    aws sagemaker create-cluster \ --cli-input-json file://create_cluster.json
  4. 檢查狀態:

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

    使用 時OnCreate,回應會顯示在 OnCreateLifeCycleConfig。以下是顯示控制器執行個體群組的截斷範例:

    { "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"
「分割區只能指派給運算節點類型」 PartitionNamesControllerLogin 執行個體群組移除
「FSx 組態僅支援自訂 VPC」 使用 FSx 時VpcConfig新增至您的請求
「執行個體群組需要 LifeCycleConfig...」 EKS 叢集或 Slurm Continuous NodeProvisioningMode。不支援選用的節點生命週期組態。
「OnCreate 和 OnInitComplete in LifeCycleConfig 是互斥的...」 移除 OnCreateOnInitComplete。您不能同時指定兩者。
「執行個體群組的 LifeCycleConfig 不完整...」 指定 OnInitComplete OnCreate或 時,SourceS3Uri也必須提供 。
「LifeCycleConfig 是選用項目,但需要相容的 AMI...」 執行 UpdateClusterSoftware 以更新至支援選用節點生命週期組態的 AMI。
「已提供執行個體群組的 LifeCycleConfig,但不包含組態...」 SourceS3Uri 使用 OnCreate或 指定 OnInitComplete,或LifeCycleConfig完全省略 。

連線至您的叢集

在叢集狀態變為 InService(通常為 10 到 15 分鐘) 之後,請連線並驗證。

  1. 列出叢集節點以取得執行個體 IDs:

    aws sagemaker list-cluster-nodes --cluster-name my-hyperpod-cluster
  2. 使用 AWS Systems Manager Session Manager 連線:

    aws ssm start-session \ --target sagemaker-cluster:my-hyperpod-cluster_my-login-group-i-0abc123def456789b \ --region us-west-2
  3. 確認 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-name my-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 中的資料或成品,並將其刪除以避免產生費用。