自動化調度管理

如要使用 Gemini Enterprise Agent Platform 訓練叢集,請洽詢業務代表。

Gemini Enterprise Agent Platform 訓練叢集使用 Simple Linux Utility for Resource Management (Slurm) 做為自動調度管理工具,用於管理及排定叢集上的工作。

Slurm 是廣受採用的開放原始碼叢集管理和工作排程系統,以擴充性和容錯能力著稱。

Slurm 的主要功能

  • Slurm 會分配一組運算節點,供特定工作在指定期間內專用。這可確保工作能專屬存取所需資源,不受干擾地執行。
  • Slurm 提供一個架構,可管理工作的完整生命週期,包括提交、執行、監控和完成。這個系統專為處理在一組分配節點上執行的平行工作而設計。
  • Slurm 會維護待處理工作的佇列,並使用精密的優先順序引擎,仲裁運算資源的存取權。這套系統會考量工作大小、使用者優先順序和等待時間等因素,確保叢集中的資源能公平有效率地運用。

基本叢集設定

您必須先定義 Slurm 叢集的基本結構,才能執行工作。本節將詳細說明基本設定,包括如何將運算節點分組、指定專屬登入節點集區,以及為使用者設定共用主目錄。

分區

分區會將節點分組為邏輯組合,可用於管理不同的機器類型或存取層級。這些定義為 slurm_spec 的 partitions 欄位中的清單。

每個分區物件都有下列必要欄位:

  • id:分區的專屬 ID。
  • node_pool_ids:這份清單包含一或多個屬於這個分區的節點集區 ID。

例如:

"partitions": [
  {
    "id": "a4",
    "node_pool_ids": [ "a4" ]
  }
]

提交工作時如未指定 --partition,則會在預設分區執行。如要指定預設分區,請將 slurm_spec 中的 default_partition_id 設為其中一個分區的 id。如未設定,清單中的第一個分區即為預設分區。

登入節點

登入節點集區提供專用節點,做為使用者與叢集互動的主要進入點。login_node_pool_id 欄位會指定這個集區的專屬 ID。

例如:

"login_node_pool_id": "login"

主目錄儲存空間

home_directory_storage 欄位會指定要掛接為叢集中所有節點上 /home 目錄的 Filestore 執行個體。為所有使用者提供共用的永久主目錄。

您必須提供 Filestore 執行個體的完整資源名稱,才能使用這個值。

例如:

"home_directory_storage": "projects/PROJECT_ID/locations/REGION-ZONE/instances/FILESTORE_INSTANCE_NAME"

進階 Slurm 設定

Gemini Enterprise Agent Platform 訓練叢集可讓您設定 slurm.conf 參數,並在執行中的叢集上變更這些參數。請參閱「Slurm 設定對應」。

計費、先占和優先順序

每個叢集都會啟用 Slurm 帳務功能,方便您追蹤每項工作的資源用量,例如 CPU 作業時間和記憶體。您也可以透過 config 強制執行帳戶相關限制、設定工作優先順序權重,以及啟用先占功能,如叢集規格範例所示。如要瞭解這些功能的運作方式,請參閱 Slurm 說明文件中的帳務、多因素優先順序外掛程式和優先分配。

Prolog 和 epilog 指令碼

您可以使用下列欄位,設定自訂 Bash 指令碼,在每項工作的開頭 (prolog) 和結尾 (epilog) 自動執行:

  • prolog_bash_scripts:字串清單,其中每個字串都包含要在工作開始前執行的 Bash 指令碼完整內容。
  • epilog_bash_scripts:字串清單,其中每個字串都包含 Bash 指令碼的完整內容,會在工作完成後執行。

這項功能適合用於設定專屬工作環境,或執行自動清理工作。

叢集規格範例

以下範例顯示用於建立訓練叢集的 JSON 設定。您可以根據自己的需求調整這項規格。

{
  // ... other cluster configurations ...
  "orchestratorSpec": {
    "slurmSpec": {
      "partitions": [
        {
          "id": "a4",
          "node_pool_ids": ["a4"]
        }
      ],
      "login_node_pool_id": "login",
      "home_directory_storage": "projects/PROJECT_ID/locations/REGION-ZONE/instances/FILESTORE_INSTANCE_ID",
      "config": {
        "AccountingStorageEnforce": "associations,limits,qos",
        "PriorityType": "priority/multifactor",
        "PriorityWeightAge": "1000",
        "PriorityWeightFairshare": "10000",
        "PreemptType": "preempt/partition_prio",
        "PreemptMode": "REQUEUE",
        "PreemptExemptTime": "00:10:00"
      },
      "prolog_bash_scripts": [
        "#!/bin/bash\necho 'First prolog script running'",
        "#!/bin/bash\necho 'Second prolog script running'"
      ],
      "epilog_bash_scripts": [
        "#!/bin/bash\necho 'Epilog script running'"
      ]
      // ... other Slurm settings ...
    }
  }
}

叢集管理和作業

管理執行中的叢集

使用所選的帳戶和先占設定建立叢集後,您可以使用 Slurm 的指令列工具管理使用者帳戶及監控工作排程。

使用 sacctmgr 管理帳戶

sacctmgr 指令是管理 Slurm 資料庫中使用者和帳戶資訊的主要工具。舉例來說,如要將新使用者新增至帳戶,並授予分區存取權,請執行下列指令:

sudo sacctmgr add User Accounts=<account> Partition=<partition> <user>

如需所有 sacctmgr 選項的完整清單,請參閱官方 Slurm 帳務說明文件。

檢查工作優先順序

如要檢查佇列中每項工作的優先順序元件,請使用 sprio 公用程式。這有助於瞭解為何某些工作會排定在其他工作之前執行。

如需詳細用法,請參閱 sprio 公用程式說明文件。

先占範例

Slurm 官方說明文件提供多個不同先占策略的實際範例。您可以在「Slurm Preemption」頁面找到這些資訊。

後續步驟

以下著重介紹機器學習生命週期的最後步驟:管理、部署及監控訓練完成的模型。

  • 部署模型進行推論:將訓練好的模型部署至 Gemini Enterprise Agent Platform 端點,大規模處理線上推論要求。
  • 管理模型生命週期:使用 Gemini Enterprise Agent Platform Model Registry,建立版本、比較及管理模型。您可以設定管道,在訓練成功後自動註冊新模型。
  • 監控管道執行作業和模型效能:
  • 最佳化成本並管理叢集生命週期:使用自動化管道時,請考量執行頻率,管理叢集的生命週期。
    • 如果執行頻率不高,請新增最終管道步驟來刪除叢集,以節省費用。這通常涉及建立呼叫刪除函式的自訂管道元件。
    • 如果經常執行,請讓叢集保持啟用狀態,縮短工作啟動時間。