Gemini Enterprise Agent Platform 訓練叢集使用簡單 Linux 資源管理公用程式 (Slurm) 做為自動調度管理工具,管理及排定叢集中的工作。
Slurm 是廣受採用的開放原始碼叢集管理和工作排程系統,以可擴充性和容錯能力著稱。
Slurm 的主要功能
- Slurm 會分配一組運算節點,供特定作業在一段時間內專屬使用。這可確保工作專用存取執行作業所需的資源,不會受到干擾。
- Slurm 提供架構,可管理工作的完整生命週期,包括提交、執行、監控和完成。這個系統專門用來處理在一組已分配節點上執行的平行作業。
- Slurm 會維護待處理工作的佇列,並使用精密的優先順序引擎仲裁運算資源的存取權。這個系統會考量工作大小、使用者優先順序和等待時間等因素,確保叢集資源得到公平且有效率的運用。
基本叢集設定
您必須先定義 Slurm 叢集的基本結構,才能執行工作。本節將詳細說明基本設定,包括如何將運算節點劃分為多個分割區、指定專屬登入節點集區,以及為使用者設定共用主目錄。
分區
分區會將節點分組為邏輯集合,方便管理不同機器類型或存取層級。這些定義會列在 slurm_spec 的分割區欄位中。
每個分割區物件都必須包含下列欄位:
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 欄位會指定要掛接的 Filestore 執行個體,做為叢集中所有節點的 /home 目錄。這會為所有使用者提供共用的持續性主目錄。
您必須提供 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_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」(Slurm 先占) 頁面找到這些資訊。
後續步驟
以下內容著重於機器學習生命週期的最後幾個步驟:管理、部署及監控訓練好的模型。
- 部署模型以進行推論:將訓練好的模型部署至 Gemini Enterprise Agent Platform 端點,大規模處理線上推論要求。
- 管理模型生命週期:使用 Gemini Enterprise Agent Platform Model Registry 建立模型版本、比較及管理模型。您可以設定管道,在訓練成功後自動註冊新模型。
- 監控管道執行和模型效能:
- 管道監控:追蹤管道執行的執行圖、構件和效能,以便偵錯問題及改善協調流程。
- 模型監控:部署後,請設定監控功能,偵測模型預測效能的偏移和異常狀況,有助於長期維持模型準確率。
- 降低成本及管理叢集生命週期:使用自動化管道時,請考量執行頻率,藉此管理叢集的生命週期。