本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
SageMaker HyperPod 參考
在下列主題中,尋找有關使用 SageMaker HyperPod 的詳細資訊和參考。
主題
SageMaker HyperPod 定價
下列主題提供 SageMaker HyperPod 定價的相關資訊。若要尋找使用 SageMaker HyperPod 執行個體的每小時價格詳細資訊,另請參閱 Amazon SageMaker 定價
容量請求
您可以使用 SageMaker AI 配置隨需或預留的運算容量,以便在 SageMaker HyperPod 上使用。隨需叢集建立會從 SageMaker AI 隨需容量集區配置可用容量。或者,您可以請求預留容量,透過提交票證以增加配額來確保存取。SageMaker AI 會優先處理傳入容量請求,而且您會收到容量配置的預估時間。
服務計費
當您在 SageMaker HyperPod 上佈建運算容量時,您需要針對容量配置的持續時間計費。SageMaker HyperPod 計費會出現在您的周年帳單中,其中包含容量配置類型 (隨需、預留)、執行個體類型,以及使用執行個體所花費時間的明細項目。
若要提交票證以增加配額,請參閱 SageMaker HyperPod 配額。
SageMaker HyperPod API
下列清單是一組完整的 SageMaker HyperPod APIs用於透過 AWS CLI 或 向 SageMaker AI 提交 JSON 格式的動作請求 適用於 Python (Boto3) 的 AWS SDK。
SageMaker HyperPod Slurm 組態
HyperPod 支援兩種在叢集上設定 Slurm 的方法。選擇最適合您需求的方法。
| 方法 | Description | 建議用於 |
| API 驅動的組態 | 直接在 CreateCluster 和 UpdateCluster API 請求中定義 Slurm 組態 | 新的叢集;簡化的管理 |
| 舊版組態 | 使用存放在 Amazon S3 中的個別provisioning_parameters.json檔案 |
現有叢集;回溯相容性 |
API 驅動的 Slurm 組態 (建議)
使用 API 驅動的組態,您可以直接在 CreateCluster 和 UpdateCluster API 請求中定義 Slurm 節點類型、分割區指派和檔案系統掛載。此方法提供:
-
單一事實來源 – API 請求中的所有組態
-
無 S3 檔案管理 – 不需要建立或維護
provisioning_parameters.json -
內建驗證 – API 在建立叢集之前驗證 Slurm 拓撲
-
偏離偵測 – 偵測 的未經授權變更
slurm.conf -
Per-instance-group儲存 – 為不同的執行個體群組設定不同的 FSx 檔案系統
-
FSx for OpenZFS 支援 – 除了 FSx for Lustre 之外,還掛載 OpenZFS 檔案系統
SlurmConfig (每個執行個體群組)
將 SlurmConfig新增至每個執行個體群組,以定義 Slurm 節點類型和分割區指派。
"SlurmConfig": { "NodeType": "Controller | Login | Compute", "PartitionNames": ["string"] }
參數:
-
NodeType- 必要。此執行個體群組的 Slurm 節點類型。有效值:-
Controller– Slurm 控制器 (前端) 節點。執行slurmctld協助程式。實際上,一個執行個體群組必須具有此節點類型。 -
Login– 用於使用者存取的登入節點。選用。最多可以有一個執行個體群組具有此節點類型。 -
Compute– 執行任務的工作者節點。可以具有此節點類型的多個執行個體群組。
重要
NodeType是不可變的。一旦在叢集建立期間設定,就無法變更。若要使用不同的節點類型,請建立新的執行個體群組。 -
-
PartitionNames– 有條件。Slurm 分割區名稱的陣列。Compute節點類型為必要;Controller或Login節點類型不允許。目前支援每個執行個體群組的單一分割區名稱。注意
除了其指定的
dev分割區之外,所有節點都會自動新增至通用分割區。
範例:
{ "InstanceGroupName": "gpu-compute", "InstanceType": "ml.p4d.24xlarge", "InstanceCount": 8, "SlurmConfig": { "NodeType": "Compute", "PartitionNames": ["gpu-training"] }, "LifeCycleConfig": { "SourceS3Uri": "s3://sagemaker-bucket/lifecycle/src/", "OnCreate": "on_create.sh" }, "ExecutionRole": "arn:aws:iam::111122223333:role/HyperPodRole" }
Orchestrator.Slurm (叢集層級)
將 Orchestrator.Slurm新增至叢集組態,以指定 HyperPod 如何管理 slurm.conf 檔案。
"Orchestrator": { "Slurm": { "SlurmConfigStrategy": "Managed | Overwrite | Merge" } }
參數:
-
SlurmConfigStrategy– 提供 時Orchestrator.Slurm為必要。控制 HyperPod 如何管理控制器節點上的slurm.conf檔案。有效值:-
Managed(預設) – HyperPod 完全控制 中的分割區節點映射slurm.conf。啟用偏離偵測:如果目前與預期的組態slurm.conf不同,UpdateCluster 會失敗並顯示錯誤。如果您希望 HyperPod 成為 Slurm 組態的單一事實來源,請使用此策略。 -
Overwrite– HyperPod 強制套用 API 組態,覆寫對 的任何手動變更slurm.conf。偏離偵測已停用。使用此策略從偏離中復原或將叢集重設為已知狀態。 -
Merge– HyperPod 會保留手動slurm.conf變更,並將其與 API 組態合併。偏離偵測已停用。如果您需要手動變更 Slurm 組態,並在更新期間保留,請使用此策略。
-
注意
如果從請求中省略 Orchestrator.Slurm ,則預設行為是Managed策略。
提示
SlurmConfigStrategy 您可以隨時使用 UpdateCluster 進行變更。特定策略沒有鎖定。
範例:
{ "ClusterName": "my-hyperpod-cluster", "InstanceGroups": [...], "Orchestrator": { "Slurm": { "SlurmConfigStrategy": "Managed" } } }
SlurmConfigStrategy 比較
| 策略 | 偏離偵測 | 手動變更 | 使用案例 |
Managed |
已啟用 – 偵測到偏離時封鎖更新 | 封鎖 | HyperPod 受管 |
Overwrite |
Disabled | 覆寫 | 從偏離中復原;重設為已知狀態 |
Merge |
Disabled | 保留 | 具有自訂slurm.conf需求的進階使用者 |
透過 InstanceStorageConfigs 的 FSx 組態
使用 API 驅動組態,您可以使用 為每個執行個體群組設定 FSx 檔案系統InstanceStorageConfigs。這可讓不同的執行個體群組掛載不同的檔案系統。
先決條件:
-
您的叢集必須使用自訂 VPC (透過
VpcConfig)。FSx 檔案系統位於您的 VPC 中,平台受管 VPC 無法連接它們。 -
至少一個執行個體群組必須有
SlurmConfig具有 的NodeType: Controller。
FsxLustreConfig
設定執行個體群組的 FSx for Lustre 檔案系統掛載。
"InstanceStorageConfigs": [ { "FsxLustreConfig": { "DnsName": "string", "MountPath": "string", "MountName": "string" } } ]
參數:
-
DnsName- 必要。FSx for Lustre 檔案系統的 DNS 名稱。範例:fs-0abc123def456789.fsx.us-west-2.amazonaws.com -
MountPath- 選用。執行個體上的本機掛載路徑。預設:/fsx -
MountName- 必要。FSx for Lustre 檔案系統的掛載名稱。您可以在 Amazon FSx 主控台或執行 找到此項目aws fsx describe-file-systems。
FsxOpenZfsConfig
為執行個體群組設定 FSx for OpenZFS 檔案系統掛載。
"InstanceStorageConfigs": [ { "FsxOpenZfsConfig": { "DnsName": "string", "MountPath": "string" } } ]
參數:
-
DnsName- 必要。FSx for OpenZFS 檔案系統的 DNS 名稱。範例:fs-0xyz987654321.fsx.us-west-2.amazonaws.com -
MountPath- 選用。執行個體上的本機掛載路徑。預設:/home
注意
每個執行個體群組最多可以有一個 FsxLustreConfig和一個 FsxOpenZfsConfig。
具有多個檔案系統的範例:
{ "InstanceGroupName": "gpu-compute", "InstanceType": "ml.p4d.24xlarge", "InstanceCount": 4, "SlurmConfig": { "NodeType": "Compute", "PartitionNames": ["gpu-training"] }, "InstanceStorageConfigs": [ { "FsxLustreConfig": { "DnsName": "fs-0abc123def456789.fsx.us-west-2.amazonaws.com", "MountPath": "/fsx", "MountName": "abcdefgh" } }, { "FsxOpenZfsConfig": { "DnsName": "fs-0xyz987654321.fsx.us-west-2.amazonaws.com", "MountPath": "/shared" } }, { "EbsVolumeConfig": { "VolumeSizeInGB": 500 } } ], "LifeCycleConfig": { "SourceS3Uri": "s3://sagemaker-bucket/lifecycle/src/", "OnCreate": "on_create.sh" }, "ExecutionRole": "arn:aws:iam::111122223333:role/HyperPodRole" }
重要
FSx 組態變更僅適用於節點佈建期間。現有節點會保留其原始 FSx 組態。若要將新的 FSx 組態套用至所有節點,請將執行個體群組縮減至 0,然後向上擴展。
完成 API 驅動的組態範例
下列範例顯示使用 API 驅動的 Slurm 組態的完整 CreateCluster 請求:
{ "ClusterName": "ml-training-cluster", "InstanceGroups": [ { "InstanceGroupName": "controller", "InstanceType": "ml.c5.xlarge", "InstanceCount": 1, "SlurmConfig": { "NodeType": "Controller" }, "LifeCycleConfig": { "SourceS3Uri": "s3://sagemaker-us-west-2-111122223333/lifecycle/src/", "OnCreate": "on_create.sh" }, "ExecutionRole": "arn:aws:iam::111122223333:role/HyperPodRole", "ThreadsPerCore": 2 }, { "InstanceGroupName": "login", "InstanceType": "ml.m5.xlarge", "InstanceCount": 1, "SlurmConfig": { "NodeType": "Login" }, "LifeCycleConfig": { "SourceS3Uri": "s3://sagemaker-us-west-2-111122223333/lifecycle/src/", "OnCreate": "on_create.sh" }, "ExecutionRole": "arn:aws:iam::111122223333:role/HyperPodRole", "ThreadsPerCore": 2 }, { "InstanceGroupName": "gpu-compute", "InstanceType": "ml.p4d.24xlarge", "InstanceCount": 8, "SlurmConfig": { "NodeType": "Compute", "PartitionNames": ["gpu-training"] }, "InstanceStorageConfigs": [ { "FsxLustreConfig": { "DnsName": "fs-0abc123def456789.fsx.us-west-2.amazonaws.com", "MountPath": "/fsx", "MountName": "abcdefgh" } } ], "LifeCycleConfig": { "SourceS3Uri": "s3://sagemaker-us-west-2-111122223333/lifecycle/src/", "OnCreate": "on_create.sh" }, "ExecutionRole": "arn:aws:iam::111122223333:role/HyperPodRole", "ThreadsPerCore": 2, "OnStartDeepHealthChecks": ["InstanceStress", "InstanceConnectivity"] }, { "InstanceGroupName": "cpu-compute", "InstanceType": "ml.c5.18xlarge", "InstanceCount": 4, "SlurmConfig": { "NodeType": "Compute", "PartitionNames": ["cpu-preprocessing"] }, "InstanceStorageConfigs": [ { "FsxLustreConfig": { "DnsName": "fs-0abc123def456789.fsx.us-west-2.amazonaws.com", "MountPath": "/fsx", "MountName": "abcdefgh" } } ], "LifeCycleConfig": { "SourceS3Uri": "s3://sagemaker-us-west-2-111122223333/lifecycle/src/", "OnCreate": "on_create.sh" }, "ExecutionRole": "arn:aws:iam::111122223333:role/HyperPodRole", "ThreadsPerCore": 2 } ], "Orchestrator": { "Slurm": { "SlurmConfigStrategy": "Managed" } }, "VpcConfig": { "SecurityGroupIds": ["sg-0abc123def456789a"], "Subnets": ["subnet-0abc123def456789a", "subnet-0abc123def456789b"] }, "Tags": [ { "Key": "Project", "Value": "ML-Training" } ] }
若要進一步了解如何使用 API 驅動的組態,請參閱 使用生命週期指令碼自訂 SageMaker HyperPod 叢集。
舊版組態:visioning_parameters.json
注意
provisioning_parameters.json 方法為在 HyperPod 上設定 Slurm 的舊版方法。對於新的叢集,我們建議您使用上述 API 驅動的組態方法。舊版方法仍然完全支援回溯相容性。
使用舊版方法,您可以建立名為 的 Slurm 組態檔案,並將其作為生命週期指令碼的一部分provisioning_parameters.json上傳至 Amazon S3。HyperPod 會在叢集建立期間讀取此檔案,以設定 Slurm 節點。
provisioning_parameters.json 的組態表單
下列程式碼是您應該準備在 HyperPod 叢集上適當設定 Slurm 節點的 Slurm 組態表單。您應該完成此表單,並在叢集建立期間將其上傳為一組生命週期指令碼的一部分。若要了解如何在整個 HyperPod 叢集建立程序中準備此表單,請參閱使用生命週期指令碼自訂 SageMaker HyperPod 叢集。
// Save as provisioning_parameters.json. { "version": "1.0.0", "workload_manager": "slurm", "controller_group": "string", "login_group": "string", "worker_groups": [ { "instance_group_name": "string", "partition_name": "string" } ], "fsx_dns_name": "string", "fsx_mountname": "string" }
參數:
-
version- 必要。這是 HyperPod 佈建參數表單的版本。將其保留為1.0.0。 -
workload_manager- 必要。這是用於指定要在 HyperPod 叢集上設定的工作負載管理員。將其保留為slurm。 -
controller_group- 必要。這是用於指定您要指派給 Slurm 控制器 (主) 節點的 HyperPod 叢集執行個體群組名稱。 -
login_group- 選用。這是用於指定您要指派給 Slurm 登入節點的 HyperPod 叢集執行個體群組名稱。 -
worker_groups- 必要。這是用於在 HyperPod 叢集上設定 Slurm 工作者 (運算) 節點。-
instance_group_name- 必要。這是用於指定您要指派給 Slurm 工作者 (運算) 節點的 HyperPod 執行個體群組名稱。 -
partition_name- 必要。這是用於將分割區名稱指定給節點。
-
-
fsx_dns_name- 選用。如果您想要在 HyperPod 叢集上設定 Slurm 節點以與 Amazon FSx 通訊,請指定 FSx DNS 名稱。 -
fsx_mountname- 選用。如果您想要在 HyperPod 叢集上設定 Slurm 節點以與 Amazon FSx 通訊,請指定 FSx 掛載名稱。
比較:API 驅動型與舊版組態
| 功能 | API 驅動 (建議) | 舊版 (provisioning_parameters.json) |
| 組態位置 | CreateCluster API 請求 | S3 檔案 |
| FSx for Lustre | 是 – 每個執行個體群組 | 是 – 僅限整個叢集 |
| FSx for OpenZFS | 是 – 每個執行個體群組 | 否 – 不支援 |
| 內建驗證 | 是 | 否 |
| 漂移偵測 | 是 – (受管策略) | 否 |
| S3 檔案管理 | 非必要 | 必要 |
| 生命週期指令碼複雜性 | 簡化 | 需要完整 SLURM 設定 |
SageMaker HyperPod DLAMI
SageMaker HyperPod 會根據下列項目執行 DLAMI:
-
適用於與 Slurm 協同運作的AWS 深度學習基礎 GPU AMI (Ubuntu 20.04)
。 -
與 Amazon EKS 協同運作的 Amazon Linux 2 型 AMI。
SageMaker HyperPod DLAMI 與支援開放原始碼工具的其他套件 (例如 Slurm、Kubernetes、相依性和 SageMaker HyperPod 叢集軟體套件) 綁定,以支援叢集運作狀態檢查和自動繼續等彈性功能。若要追蹤 HyperPod 服務團隊透過 DLAMI 分發的 HyperPod 軟體更新,請參閱 Amazon SageMaker HyperPod 版本備註。
SageMaker HyperPod API 許可參考
重要
允許 Amazon SageMaker Studio 或 Amazon SageMaker Studio Classic 建立 Amazon SageMaker 資源的自訂 IAM 政策也必須授與許可,才能將標籤新增至這些資源。需要將標籤新增至資源的許可,因為 Studio 和 Studio Classic 會自動標記它們建立的任何資源。如果 IAM 政策允許 Studio 和 Studio Classic 建立資源,但不允許標記,則在嘗試建立資源時可能會發生 "AccessDenied" 錯誤。如需詳細資訊,請參閱提供標記 SageMaker AI 資源的許可。
提供許可來建立 SageMaker 資源的 AWS Amazon SageMaker AI 的 受管政策 已包含建立這些資源時新增標籤的許可。
當您設定存取控制以允許執行 SageMaker HyperPod API 操作,並為雲端管理員撰寫您可以將其連接至 IAM 使用者的許可政策時,請使用下表做為參考。
| Amazon SageMaker API 操作 | 必要許可 (API 動作) | 資源 |
| CreateCluster | sagemaker:CreateCluster |
arn:aws:sagemaker: |
| DeleteCluster | sagemaker:DeleteCluster |
arn:aws:sagemaker: |
| DescribeCluster | sagemaker:DescribeCluster |
arn:aws:sagemaker: |
| DescribeClusterNode | sagemaker:DescribeClusterNode |
arn:aws:sagemaker: |
| ListClusterNodes | sagemaker:ListClusterNodes |
arn:aws:sagemaker: |
| ListClusters | sagemaker:ListClusters |
arn:aws:sagemaker: |
| UpdateCluster | sagemaker:UpdateCluster |
arn:aws:sagemaker: |
| UpdateClusterSoftware | sagemaker:UpdateClusterSoftware |
arn:aws:sagemaker: |
如需 SageMaker API 的許可和資源類型完整清單,請參閱《AWS 服務授權參考》中的 Amazon SageMaker AI 的動作、資源和條件金鑰。
中的 SageMaker HyperPod 命令 AWS CLI
以下是 SageMaker HyperPod 執行核心 HyperPod API 操作的 AWS CLI 命令。
中的 SageMaker HyperPod Python 模組 適用於 Python (Boto3) 的 AWS SDK
以下是 SageMaker AI 適用於 Python (Boto3) 的 AWS SDK 用戶端執行核心 HyperPod API 操作的方法。