建立 AI 最佳化 Google Kubernetes Engine (GKE) 叢集後,即可啟用節點健康狀態預測。如果您打算使用 Topology Aware Scheduling (TAS) 和 Kueue 安排工作負載時程,啟用節點健康狀態預測功能後,叢集的排程器就能執行下列操作:
找出可能在接下來五小時內效能降低的節點。
避免在這些節點上排定新的工作負載。
這項做法有助於盡量減少重要工作負載和容易中斷的工作負載 (例如大規模訓練工作負載) 的中斷情形。
本文說明如何在 GKE 叢集中啟用節點健康狀態預測功能,該叢集使用 A4X Max、A4X、A4 或 A3 Ultra 節點。如要瞭解如何在 Cloud Monitoring 資訊主頁中使用節點健康狀態預測指標,例如排解 Slurm 叢集的效能問題,請參閱「監控 Compute Engine 執行個體和 Slurm 叢集」。
限制
在 GKE 叢集中啟用節點健康狀態預測功能前,請先考量下列限制:
節點必須使用 A4X Max、A4X、A4 或 A3 Ultra 機型。
節點必須使用取決於預留項目佈建模式。
瞭解節點健康狀態預測
在 GKE 叢集中啟用節點健康狀態預測功能後,CronJob 會將 gke.google.com/recommended-to-run-large-training-workload 標籤套用至叢集中的每個節點。CronJob 會將標籤值設為節點 GPU 健康狀態惡化的可能性,並每 10 分鐘更新這些值。如果標籤值為 true,則節點健康狀態良好。否則,如果標籤值為 false,節點可能會在接下來五小時內降級。標籤值可能會根據節點的 GPU 健康狀態隨時間變更。
如果發現節點可能發生效能下降問題,可以採取下列任一做法或同時完成兩者:
避免在節點上排定工作負載。您可以設定 Kueue,避免在顯示
false值的節點上排定工作負載,詳情請參閱本文。回報節點故障。如果節點發生 GPU 溫度過高或效能緩慢等問題,可以回報節點故障。這項動作會啟動節點的主機維護事件,讓節點在維護完成後再次可用於執行工作負載。如需操作說明,請參閱「透過 GKE 檢舉故障主機」。
事前準備
開始之前,請確認您已完成下列工作:
- 啟用 Google Kubernetes Engine API。 啟用 Google Kubernetes Engine API
- 如要使用 Google Cloud CLI 執行這項工作,請安裝並初始化 gcloud CLI。如果您先前已安裝 gcloud CLI,請執行
gcloud components update指令,取得最新版本。較舊的 gcloud CLI 版本可能不支援執行本文件中的指令。
如要連線至叢集,請執行下列指令:
gcloud container clusters get-credentials CLUSTER_NAME將
CLUSTER_NAME替換為叢集名稱。
啟用節點健康狀態預測功能
準備好使用 TAS 在 GKE 叢集上排定工作負載後,即可完成下列步驟,啟用節點健康狀態預測功能:
部署自動節點標籤功能
如要在 GKE 叢集中部署節點健康狀態預測的節點自動標籤,請完成下列步驟:
複製 GKE Git 存放區中的硬體加速器:
git clone https://github.com/GoogleCloudPlatform/container-engine-accelerators.git前往
topology-scheduler目錄:cd container-engine-accelerators/gpudirect-tcpxo/topology-scheduler建立包含 Python 指令碼的 Kubernetes ConfigMap,
schedule-daemon.py和label-nodes-daemon.py會查詢健康分數:kubectl create configmap predictor-scheduler-scripts \ --namespace=kube-system \ --from-file=schedule-daemon.py=schedule-daemon.py \ --from-file=label-nodes-daemon.py=label-nodes-daemon.py套用服務帳戶設定,將必要權限 (讀取 Monitoring 指標和修補節點物件) 授予 CronJob:
kubectl apply -f service-account.yaml部署排定節點標籤工作時間表的 DaemonSet:
kubectl apply -f label-nodes-daemon.yaml
更新工作設定
如要在使用 Kueue 時啟用節點健康狀態預測功能,您必須更新 Job 設定,在啟動工作負載前檢查健康狀態預測值,以及拓撲需求 (如支援)。
如要更新 Job 設定並啟用節點健康狀態預測功能,請在 spec 欄位中新增下列欄位:
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: gke.google.com/recommended-to-run-large-training-workload
operator: NotIn
values:
- "False"
...
驗證節點標籤
CronJob 首次執行後 (部署後約 10 分鐘),請確認是否已將 gke.google.com/recommended-to-run-large-training-workload 標籤套用至節點。
查看已套用 gke.google.com/recommended-to-run-large-training-workload 標籤的節點清單:
kubectl get nodes -L gke.google.com/recommended-to-run-large-training-workload
標籤值可以是下列其中一個:
true:預計節點在接下來五小時內會保持健康狀態。false:節點可能在接下來五小時內效能降低。如果您按照本文說明設定工作設定,Kueue 就會避免在節點上排定新的工作負載。
後續步驟
如要瞭解如何管理與 GKE 叢集和 AI 工作負載相關的常見事件,請參閱「管理 AI 適用 GKE 叢集」。
如要進一步瞭解如何使用 Kueue 在 GKE 上排定工作,請參閱「使用 Kueue 部署批次系統」。