本指南提供相關操作說明,說明如何在 Gemini Enterprise Agent Platform 上,透過 Slurm 設定及使用彈性啟動 VM。這項整合功能可讓您為訓練工作負載使用彈性 VM 佈建模型。
設定及建立叢集
定義叢集設定之前,您必須先完成下列一次性必要步驟,確保必要的服務帳戶已獲得授權,可管理 Flex Start 資源。
驗證 Google APIs 服務代理的權限
- 背景資訊:Gemini Enterprise Agent Platform 上的 Slurm 會使用代管執行個體群組,動態佈建彈性啟動 VM 執行個體,並管理這些執行個體的生命週期。Google APIs 服務代理程式會為代管執行個體群組建立及管理基礎 Compute Engine 資源。如代管執行個體群組和 IAM 文件所述,這個服務帳戶需要有建立、刪除及列出 VM 執行個體的權限,以及將服務帳戶身分附加至這些執行個體的權限。
- 做法:檢查 Google API 服務代理人 (
PROJECT_NUMBER@cloudservices.s3ns-system.iam.gserviceaccount.com) 是否已具備編輯者角色 (roles/editor)。- 如果「是」:您可能不需要採取進一步行動。編輯者角色通常包含所有必要權限。
- 如果「否」:如果未授予預設的「編輯者」角色,您必須明確授予下列角色,確保 MIG 可以正常運作:
- Compute 執行個體管理員 (v1) (
roles/compute.instanceAdmin.v1) - 建立、列出及刪除 VM 執行個體時必須具備此角色。 - 服務帳戶使用者 (
roles/iam.serviceAccountUser) - 將服務帳戶附加至新 VM 時,必須具備這項權限。
- Compute 執行個體管理員 (v1) (
建立佈建模式為「彈性啟動」的 Slurm 叢集
如要建立使用彈性啟動佈建模式的 Slurm 叢集,請使用 API 提交叢集建立要求時,在叢集規格的節點集區設定中指定 provisioning_model。
設定範例程式碼片段:將下列 JSON 設定儲存至名為 cluster_config.json 的檔案。這個範例會明確使用 slurm_spec。請將預留位置 (例如 <project-id>, <region>, <zone>) 替換為實際值。
{
"display_name": "flexvm",
"name": "projects/<project-id>/locations/<region>/modelDevelopmentClusters/",
"network": {
"network": "projects/<project-id>/global/networks/default",
"subnetwork": "projects/<project-id>/regions/<region>/subnetworks/default"
},
"node_pools": [
{
"id": "login",
"machine_spec": { "machine_type": "n2-standard-8" },
"scaling_spec": { "min_node_count": 1, "max_node_count": 1 },
"enable_public_ips": "true",
"zone": "<zone>",
"boot_disk": { "boot_disk_type": "pd-standard", "boot_disk_size_gb": 120 }
},
{
"id": "a3u",
"machine_spec": {
"machine_type": "a3-ultragpu-8g",
"accelerator_type": "NVIDIA_H200_141GB",
"accelerator_count": 8
},
"provisioning_model": "FLEX_START",
"flex_start_max_duration": "604800s",
"scaling_spec": { "min_node_count": 0, "max_node_count": 2 },
"zone": "<zone>",
"enable_public_ips": "true",
"boot_disk": { "boot_disk_type": "hyperdisk-balanced", "boot_disk_size_gb": 400 }
}
],
"orchestrator_spec": {
"slurm_spec": {
"home_directory_storage": "projects/<project-id>/locations/<zone>/instances/<filestore-id>",
"partitions": [ { "id": "a3u", "node_pool_ids": [ "a3u" ] } ],
"login_node_pool_id": "login"
}
}
}
請按照「建立 Slurm 叢集」一文中的步驟操作,驗證並提交要求。
彈性啟動時間長度上限:您可以選擇為彈性啟動執行個體設定最長執行時間。在節點集區設定中使用 flex_start_max_duration 欄位,以字串形式指定值 (以秒為單位),並附加「s」(例如 2 天為「172800s」)。如果省略,系統預設為 7 天。
作業生命週期和韌性
瞭解 Gemini Enterprise Agent Platform 環境中 Slurm 的彈性啟動節點生命週期,對規劃工作至關重要。
彈性啟動限制
所有彈性啟動 VM 的執行時間長度上限都是固定的,由 flex_start_max_duration 設定定義。
- 時間限制:根據預設,
flex_start_max_duration設為 7 天。如要覆寫這項限制,請在節點集區設定中指定自訂flex_start_max_duration,時間介於 30 秒到最多 7 天 (604,800 秒) 之間,以更符合預期的工作執行時間。 - 終止:達到這項限制時,Compute Engine 會嚴格終止執行個體。
節點資源調度行為
以下各節說明兩種可用的調度策略:靜態和動態。
靜態節點
靜態節點可讓您維護一組固定的資源,這些資源隨時可用 (例如 min_node_count > 0)。
- 佈建:叢集建立或調整大小時,系統會立即要求節點,以符合節點數量下限。
- 到期和復原:當靜態彈性啟動節點達到
flex_start_max_duration並由 Compute Engine 終止時,系統會自動嘗試重新建立節點,以還原定義的叢集容量。這個週期可確保靜態集區持續填入節點,無論 Slurm 工作是否正在等待節點。
動態節點
動態節點可讓叢集只在必要時擴充。
- 佈建:工作排入佇列 (進入
PENDING狀態) 時,Slurm 排程器會建立代管執行個體群組並發出大小調整要求,藉此要求資源。 - 到期和復原:到期後,只有在節點上待處理 Slurm 工作時,系統才會佈建新的彈性啟動節點。
叢集復原能力和自動修復
Gemini Enterprise Agent Platform 中的 Slurm 會在作業生命週期的重要階段監控節點健康狀態。作業開始前 (前言) 和完成後 (後記) 都會執行健康狀態檢查,有助於維持作業穩定性。
- 硬體錯誤處理:如果服務偵測到嚴重硬體問題 (例如 GPU 錯誤),系統會自動修復健康狀態不良的 VM。
- 自動更換:如果工作仍處於「待處理」狀態 (或因節點故障而重新排入「待處理」佇列),系統會自動佈建新的彈性啟動執行個體,取代狀況不佳的 VM。這樣一來,工作負載就能在狀況良好的硬體上繼續執行,不必手動介入。