使用生命週期指令碼自訂 SageMaker HyperPod 叢集 - Amazon SageMaker AI

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

使用生命週期指令碼自訂 SageMaker HyperPod 叢集

SageMaker HyperPod 提供始終啟動並執行中的運算叢集,這些叢集可高度自訂,因為您可以撰寫生命週期指令碼,告知 SageMaker HyperPod 如何設定叢集資源。下列主題是準備生命週期指令碼,以使用開放原始碼工作負載管理員工具,設定 SageMaker HyperPod 叢集的最佳實務。

下列主題深入討論在 SageMaker HyperPod 上準備生命週期指令碼以設定 Slurm 組態的最佳實務。

高階概觀

下列程序是佈建 HyperPod 叢集並使用 Slurm 設定該叢集的主要流程。這些步驟是依由下而上的方式進行。

  1. 規劃您想要在 HyperPod 叢集上建立 Slurm 節點的方式。例如,如果您想要設定兩個 Slurm 節點,則需要在 HyperPod 叢集中設定兩個執行個體群組。

  2. 準備 provisioning_parameters.json 檔案,這是 在 HyperPod 上佈建 Slurm 節點的組態表單provisioning_parameters.json 應該包含要在 HyperPod 叢集上佈建的 Slurm 節點組態資訊。這應該反映步驟 1 中 Slurm 節點的設計。

  3. 準備一組生命週期指令碼以在 HyperPod 上設定 Slurm,來安裝軟體套件並在叢集中為您的使用案例設定環境。您應該建構生命週期指令碼,以在中央 Python 指令碼 (lifecycle_script.py) 中依順序集體執行,並撰寫進入點 Shell 指令碼 (on_create.sh) 來執行 Python 指令碼。進入點 Shell 指令碼是您稍後在步驟 5 需要提供給 HyperPod 叢集建立請求的內容。

    此外,請注意,您應該撰寫指令碼來預期在叢集建立期間將由 HyperPod 產生的 resource_config.jsonresource_config.json 包含 HyperPod 叢集資源資訊,例如 IP 位址、執行個體類型和 ARN,以及用於設定 Slurm 所需的內容。

  4. 將先前步驟中的所有檔案收集到資料夾。

    └── lifecycle_files // your local folder ├── provisioning_parameters.json ├── on_create.sh ├── lifecycle_script.py └── ... // more setup scrips to be fed into lifecycle_script.py
  5. 將所有檔案上傳至 S3 儲存貯體。複製並保留 S3 儲存貯體路徑。請注意,您應該建立以 sagemaker- 開頭的 S3 儲存貯體路徑,因為您需要選擇與 AmazonSageMakerClusterInstanceRolePolicy 連接的 SageMaker HyperPod 的 IAM 角色,這僅允許以字首 sagemaker- 開頭的 S3 儲存貯體路徑。下列命令是將所有檔案上傳至 S3 儲存貯體的範例命令。

    aws s3 cp --recursive ./lifecycle_files s3://sagemaker-hyperpod-lifecycle/src
  6. 準備 HyperPod 叢集建立請求。

    • 選項 1:如果您使用 AWS CLI,請依照 中的指示,以 JSON 格式 (create_cluster.json) 撰寫叢集建立請求建立新叢集

    • 選項 2:如果您使用 SageMaker AI 主控台 UI,請遵循建立 SageMaker HyperPod 叢集中的指示,在 HyperPod 主控台 UI 中填寫建立叢集請求表單。

    在此階段,請確定您以步驟 1 和 2 中規劃的相同結構建立執行個體群組。此外,請確定您在請求表單中指定來自步驟 5 的 S3 儲存貯體。

  7. 提交叢集建立請求。HyperPod 會根據請求佈建叢集,然後在 HyperPod 叢集執行個體中建立 resource_config.json 檔案,並在執行生命週期指令碼的叢集上設定 Slurm。

下列主題將引導您深入了解如何組織組態檔案和生命週期指令碼,以在 HyperPod 叢集建立期間正常運作。