搭配使用 Slurm 叢集與彈性啟動 VM

本指南提供相關操作說明,說明如何在 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 時,必須具備這項權限。

建立佈建模式為「彈性啟動」的 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。這樣一來,工作負載就能在狀況良好的硬體上繼續執行,不必手動介入。