Gemini Enterprise Agent Platform 訓練叢集整合了完整的健康狀態檢查系統,可確保運算節點的可靠性,以及 Slurm 工作的穩定性。這個系統提供自動和手動救援選項。作業執行期間會執行自動化程序,監控 GPU 健康狀態和磁碟用量等重要元件,並自動更換故障的節點。如果需要使用者介入,訓練叢集會提供 reportFaultyNodes API,讓您手動刪除特定故障節點,或回報基礎主機上疑似發生的硬體故障。
執行測試工作負載,驗證 GPU 功能
步驟 1:使用 SSH 連線至叢集節點
從 Cloud Shell 或 Cloud de Confiance 控制台,使用 IAP 連線至登入節點。以下範例顯示 Cloud Shell 的指令:
gcloud compute ssh --zone $ZONE "Login Node Name" --tunnel-through-iap --project $PROJECT_ID
步驟 2:執行標準 Slurm 指令
連線至登入節點後,請執行幾個標準 Slurm 指令,確認叢集運作正常。
~$ sinfo
PARTITION AVAIL TIMELIMIT NODES STATE NODELIST
partition1* up infinite 2 idle hcsa3m1236-a3mnodeset-[0-1]
接著,提交批次工作。
~$ sbatch --qos normal --wrap "echo start! && sleep 10s && echo done!"
您應該會看到主目錄中建立了 slurm-job-id.out 檔案。
步驟 3:執行 GPU 工作負載
將下列內容儲存為名為 test.sh 的指令碼檔案,並放在主目錄中。
#!/bin/bash
#SBATCH --nodes=2
#SBATCH --ntasks-per-node=1
#SBATCH --cpus-per-task=4
#SBATCH --gres=gpu:8
#SBATCH --job-name=nvidia_smi
srun nvidia-smi -L
將指令碼的權限設為 755,使其可執行,然後提交 Slurm 工作:
~$ sbatch ./test.sh
Slurm 會將指令碼的輸出內容儲存至名為 slurm-job-id.out 的檔案。
預期輸出內容:
GPU 0: NVIDIA H100 80GB HBM3 (UUID: GPU-f75045e8-4d87-49d1-2eb9-39ec2baddf9b)
GPU 1: NVIDIA H100 80GB HBM3 (UUID: GPU-b91556d8-5215-d0ed-50b8-a88720e5b29c)
GPU 2: NVIDIA H100 80GB HBM3 (UUID: GPU-7600155a-0036-35f5-9489-a7b4ed0ce887)
GPU 3: NVIDIA H100 80GB HBM3 (UUID: GPU-a402e125-7841-033f-f08b-7921526c121f)
GPU 4: NVIDIA H100 80GB HBM3 (UUID: GPU-20eef8f8-b2c7-1716-5ce7-7f64475bd2c0)
GPU 5: NVIDIA H100 80GB HBM3 (UUID: GPU-65463286-e587-b52f-4d5b-8880eecbf0e7)
GPU 6: NVIDIA H100 80GB HBM3 (UUID: GPU-d5ff75e7-dd54-edf6-a684-33c26fc365e1)
GPU 7: NVIDIA H100 80GB HBM3 (UUID: GPU-26e81ae2-11fd-9d7e-95b6-c186e5173007)
GPU 0: NVIDIA H100 80GB HBM3 (UUID: GPU-e66a185a-b40c-81d9-d35d-19cab811df34)
GPU 1: NVIDIA H100 80GB HBM3 (UUID: GPU-d23e5cf7-afd8-bec2-1487-9e27eeb6aae0)
GPU 2: NVIDIA H100 80GB HBM3 (UUID: GPU-4dde1b05-ea5e-01e9-5c1e-e1c0d3b4b113)
GPU 3: NVIDIA H100 80GB HBM3 (UUID: GPU-3a0d734a-6fb8-d841-a97f-d6846553ea7f)
GPU 4: NVIDIA H100 80GB HBM3 (UUID: GPU-76fe0d37-08b2-a3a6-8ddf-55501426bc7c)
GPU 5: NVIDIA H100 80GB HBM3 (UUID: GPU-9e0a41e1-b399-8934-01af-6198b749c02a)
GPU 6: NVIDIA H100 80GB HBM3 (UUID: GPU-dddd09ee-c944-1098-9c4e-d96f8762ecb1)
GPU 7: NVIDIA H100 80GB HBM3 (UUID: GPU-df52c109-0ac1-30cc-226b-85b1a8a6bc16)
自動執行健康狀態檢查和復原
為確保節點可靠性,訓練叢集會使用下列自動檢查套件,持續監控節點健康狀態。訓練叢集會在 Slurm 前言 (工作開始前) 和後記 (工作完成後) 期間執行健康狀態檢查。
健康檢查套件
- GPU 健康狀態:執行詳細的個別 GPU 診斷,包括
nvidia-smi、dcgmi和xid程式碼監控。 - 磁碟用量:檢查重要分割區的磁碟用量是否過高 (
/、/mnt/localssd、/mnt/localdisk),避免作業因空間不足而失敗。 - 網路健康狀態:確認主要網路介面是否具有 IPv4 位址。 如果發現問題,系統會嘗試重設介面,藉此自我修復。
- CPU 負載:監控系統的平均負載,如果超過預先定義的門檻,就會記錄警告。
故障復原程序
如果檢查偵測到嚴重且無法復原的錯誤,Gemini Enterprise Agent Platform 訓練叢集會自動啟動失敗復原程序。標準程序包括排空故障節點、重新排隊受影響的 Slurm 工作,然後刪除並重新建立排空的節點,將其還原為正常狀態。
自動復原功能須符合下列條件:
重新啟動次數上限:如果受影響的 Slurm 工作已重新啟動設定次數,系統會略過復原程序。
GPU 使用率:如果節點上執行的工作未使用所有可用的 GPU,系統也會略過節點刪除和重新建立作業。在這種情況下,節點只會排空,避免在節點上安排新工作。
每個復原動作都會記錄在專案記錄中,做為復原事件。如要根據節點的 Slurm 狀態繪製這些事件的圖表,請參閱「使用資訊主頁監控復原事件」。
手動管理故障的運算節點
訓練叢集提供 API,可手動回報及管理有問題的運算節點,如果自動健康狀態檢查無法解決問題,這項功能就特別實用。一次只能對一個節點執行這些作業。
| 動作 | 說明 | 適用情境 |
|---|---|---|
| 刪除節點 | 從叢集中移除指定的故障節點。這是預設動作。 | 一般錯誤,或節點沒有回應且需要回收時。 |
| 回報主機故障 | 回報基礎實體主機故障,觸發修復或遷移程序。 | 託管 GPU 節點的實體機器疑似發生硬體故障。 |
動作 1:刪除有問題的節點
這項操作會刪除指定的節點。這項作業的結果取決於節點是否由 Slurm 分類為「靜態」或「動態」:
靜態節點:如果已刪除節點的索引小於節點集區的節點數量下限,系統會重新建立同名且規格相同的新運算節點。
動態節點:如果已刪除節點的索引大於節點數量下限,只有在有待處理的工作負載排定要使用該節點時,系統才會重新建立節點。不然的話,則會遭到移除。
這些範例使用 gcurl 別名,這是與 API 端點互動的便利驗證捷徑。下列指令會為 curl 建立別名,其中包含必要的授權標頭。
alias gcurl='curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json"'
刪除節點的 API 要求
如要刪除故障節點,請執行下列 POST 要求。NODE_ID 的格式應為 CLUSTER_ID-NODEPOOL_ID-INDEX。
gcurl -X POST https://REGION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/modelDevelopmentClusters/CLUSTER_ID:reportFaultyNodes -d '{"nodeActions": [{"nodeId": "NODE_ID"}]}'
檢查作業狀態
您可以查看作業狀態,監控reportFaultyNodes 動作的結果。
gcurl https://REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID
動作 2:回報主機錯誤
如果懷疑 GPU 節點的實體主機發生硬體故障,可以回報該主機有問題。
支援的 VM:A3 Ultra 和 A4 High-GPU
節點狀態:呼叫 API 前,目標節點必須處於
RUNNING狀態。呼叫成功後,系統會轉換為REPAIRING,並在主機修復或節點在新主機上重建後,返回RUNNING。這項作業會盡可能完成。
必要條件:授予 IAM 角色
如要使用這項功能,請將 Compute 執行個體管理員 (v1) (roles/compute.instanceAdmin.v1) 角色授予 Agent Platform 服務代理程式。
PROJECT_NUMBER=$(gcloud projects describe PROJECT_ID --format="value(projectNumber)") gcloud projects add-iam-policy-binding PROJECT_ID\ --member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-aiplatform.iam.s3ns-system.iam.gserviceaccount.com" \ --role="roles/compute.instanceAdmin.v1"
透過 API 要求檢舉主機
執行下列 POST 要求,將基礎主機回報為有錯誤。這麼做時,您必須提供一或多項觀察到的行為和說明 faultReasons。
請在 behavior 欄位中使用下列其中一個值:
| 行為 | 說明 |
|---|---|
PERFORMANCE |
與叢集中的其他 GPU 相比,附加至 VM 的 GPU 有效能問題,但您在記錄中看不到 XID 錯誤,且 Compute Engine 未偵測到其他常見的故障模式,例如無聲資料損毀。 |
SILENT_DATA_CORRUPTION |
您發現 VM 中的資料已損毀,但 VM 仍持續執行。這可能是因為 vCPU 缺陷、軟體錯誤或核心問題等所致。 |
UNRECOVERABLE_GPU_ERROR |
您已透過 XID 找出無法復原的 GPU 錯誤。 |
BEHAVIOR_UNSPECIFIED |
您不確定 VM 發生什麼問題。 |
以下是 API 要求的範例。
gcurl -X POST \
https://REGION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/modelDevelopmentClusters/CLUSTER_ID:reportFaultyNodes \
-d '{"nodeActions": [{"nodeId": "NODE_ID", "reportFaultyHost": {"faultReasons": [{"behavior": "BEHAVIOR_1", "description": "DESCRIPTION_1"}, {"behavior": "BEHAVIOR_2", "description": "DESCRIPTION_2"}]}}]}'
全面整合使用
善用自動健康狀態檢查和本頁詳述的手動控制項,即可維持高彈性的訓練環境。主動管理叢集的健康狀態,刪除有問題的節點或回報硬體問題,確保訓練作業順利完成,並盡可能延長正常運作時間。如遇持續發生或複雜的問題,請務必諮詢 Cloud de Confiance by S3NS 支援團隊,取得深入診斷和協助。
後續步驟
設定訓練叢集的容錯能力,是建構完整且適用於正式環境的 MLOps 工作流程時,不可或缺的步驟。
- 監控及偵錯訓練工作:追蹤訓練工作的進度、資源使用率和健康狀態,包括如何判斷節點是否已復原,或工作是否因失敗而重新啟動。
- 使用 Gemini Enterprise Agent Platform Pipelines 自動調度管理彈性工作:在生產環境中,使用 Gemini Enterprise Agent Platform Pipelines 建立可重複執行的自動化工作流程,將彈性訓練工作提交至叢集。
- 管理及部署模型:彈性訓練作業完成後,請使用 Gemini Enterprise Agent Platform Model Registry 為模型構件建立版本,然後將模型部署至端點,以處理線上推論要求。