Ketahanan cluster

Jika Anda tertarik dengan cluster pelatihan Gemini Enterprise Agent Platform, hubungi perwakilan penjualan Anda untuk mendapatkan akses.

Cluster pelatihan Gemini Enterprise Agent Platform mengintegrasikan sistem health check komprehensif untuk memastikan keandalan node komputasi dan stabilitas tugas Slurm Anda. Sistem ini memiliki opsi pemulihan otomatis dan manual. Proses otomatis berjalan selama eksekusi tugas untuk memantau komponen penting seperti kondisi GPU dan penggunaan disk, serta mengganti node yang gagal secara otomatis. Untuk situasi yang memerlukan intervensi pengguna, cluster pelatihan Anda menyediakan reportFaultyNodes API, yang memungkinkan Anda menghapus node yang rusak tertentu secara manual atau melaporkan dugaan kegagalan hardware pada host yang mendasarinya.

Menjalankan workload pengujian untuk memverifikasi fungsi GPU

Langkah 1: Menghubungkan ke node cluster menggunakan SSH

Dari Cloud Shell atau Google Cloud konsol, hubungkan ke Node Login menggunakan IAP. Contoh berikut menunjukkan perintah untuk Cloud Shell:

gcloud compute ssh --zone $ZONE "Login Node Name" --tunnel-through-iap --project $PROJECT_ID

Langkah 2: Menjalankan perintah Slurm standar

Setelah terhubung ke node login, jalankan beberapa perintah Slurm standar untuk memverifikasi bahwa cluster berfungsi dengan benar.

~$ sinfo
PARTITION   AVAIL  TIMELIMIT  NODES  STATE NODELIST
partition1*    up   infinite      2   idle hcsa3m1236-a3mnodeset-[0-1]

Selanjutnya, kirimkan tugas batch.

~$ sbatch --qos normal --wrap "echo start! && sleep 10s && echo done!"

Anda akan melihat bahwa file slurm-job-id.out dibuat di direktori beranda Anda.

Langkah 3: Menjalankan workload GPU

Simpan konten berikut sebagai file skrip bernama test.sh di direktori beranda Anda.

#!/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

Tetapkan izin skrip ke 755 agar dapat dieksekusi, lalu kirimkan tugas Slurm:

~$ sbatch ./test.sh

Slurm menyimpan output skrip ke file bernama slurm-job-id.out.

Output yang diharapkan:

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)

Health check dan pemulihan otomatis

Untuk memastikan keandalan node, cluster pelatihan terus memantau kondisi node menggunakan rangkaian pemeriksaan otomatis berikut. Cluster pelatihan menjalankan health check selama prolog Slurm (sebelum tugas dimulai) dan epilog (setelah tugas selesai).

Rangkaian health check

  • Kondisi GPU: Melakukan diagnostik GPU individual yang mendetail, termasuk pemantauan kode nvidia-smi, dcgmi, dan xid.
  • Penggunaan Disk: Memeriksa penggunaan disk yang tinggi pada partisi penting (/, /mnt/localssd, /mnt/localdisk) untuk mencegah tugas gagal karena kurangnya ruang.
  • Kondisi Jaringan: Memverifikasi bahwa antarmuka jaringan utama memiliki alamat IPv4. Jika masalah ditemukan, sistem akan mencoba melakukan pemulihan sendiri dengan mereset antarmuka.
  • Beban CPU: Memantau rata-rata beban sistem dan mencatat peringatan jika melebihi nilai minimum yang telah ditentukan.

Proses pemulihan kegagalan

Jika pemeriksaan mendeteksi error parah yang tidak dapat dipulihkan, cluster pelatihan Gemini Enterprise Agent Platform akan otomatis memulai proses pemulihan kegagalan. Proses standar mencakup menguras node yang rusak, mengantrekan ulang tugas Slurm yang terpengaruh, lalu menghapus dan membuat ulang node yang dikuras untuk memulihkannya ke kondisi yang baik.

Pemulihan otomatis ini tunduk pada kondisi berikut:

  • Batas Mulai Ulang: Proses pemulihan akan dilewati jika tugas Slurm yang terpengaruh telah dimulai ulang beberapa kali.

  • Penggunaan GPU: Penghapusan dan pembuatan ulang node juga akan dilewati jika tugas yang berjalan di node tidak menggunakan semua GPU yang tersedia. Dalam hal ini, node hanya dikuras untuk mencegah tugas baru dijadwalkan di node tersebut.

Setiap tindakan pemulihan dicatat dalam log project Anda sebagai peristiwa ketahanan. Untuk membuat grafik peristiwa ini terhadap status Slurm node Anda, lihat Memantau peristiwa ketahanan dengan dasbor.

Mengelola node komputasi yang rusak secara manual

Cluster pelatihan menyediakan API untuk melaporkan dan mengelola node komputasi yang rusak secara manual, yang sangat berguna jika health check otomatis tidak menyelesaikan masalah. Anda hanya dapat menjalankan operasi ini pada satu node dalam satu waktu.

Tindakan Deskripsi Paling Cocok Untuk
Menghapus Node Menghapus node yang rusak tertentu dari cluster. Ini adalah tindakan default. Error umum atau saat node tidak responsif dan perlu didaur ulang.
Melaporkan Host sebagai Rusak Melaporkan host fisik yang mendasarinya sebagai rusak, yang memicu proses perbaikan atau migrasi. Dugaan kegagalan hardware pada mesin fisik yang menghosting node GPU.

Tindakan 1: Menghapus node yang rusak

Tindakan ini akan menghapus node yang ditentukan. Hasil operasi ini bergantung pada apakah node diklasifikasikan sebagai "statis" atau "dinamis" oleh Slurm:

  • Node Statis: Jika indeks node yang dihapus kurang dari jumlah node minimum node pool, node komputasi baru akan dibuat ulang dengan nama dan spesifikasi yang sama.

  • Node Dinamis: Jika indeks node yang dihapus lebih besar dari jumlah node minimum, node tersebut hanya akan dibuat ulang jika ada workload tertunda yang dijadwalkan untuk node tersebut. Jika tidak, node akan dihapus.

Contoh ini menggunakan alias gcurl, yang merupakan pintasan autentikasi yang praktis untuk berinteraksi dengan endpoint API. Perintah berikut membuat alias untuk curl yang menyertakan header otorisasi yang diperlukan.

alias gcurl='curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json"'

Permintaan API untuk menghapus node

Untuk menghapus node yang rusak, jalankan permintaan POST berikut. NODE_ID harus dalam format 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"}]}'
  

Memeriksa status operasi
Anda dapat memantau hasil tindakan reportFaultyNodes dengan memeriksa status operasi.

  gcurl https://REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID
  

Tindakan 2: Melaporkan host sebagai rusak

Anda dapat melaporkan host fisik node GPU sebagai rusak jika menduga adanya kegagalan hardware.

  • VM yang Didukung: A3 Ultra dan A4 High-GPU

  • Status Node: Node target harus dalam status RUNNING sebelum Anda memanggil API. Node akan bertransisi ke REPAIRING setelah panggilan berhasil dan kembali ke RUNNING setelah host diperbaiki atau node dibuat ulang di host baru. Ini adalah operasi terbaik.

Prasyarat: Memberikan peran IAM

Untuk menggunakan fitur ini, Anda harus memberikan peran Compute Instance Admin (v1) (roles/compute.instanceAdmin.v1) kepada Agen Layanan 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.iam.gserviceaccount.com" \
  --role="roles/compute.instanceAdmin.v1"
  

Permintaan API untuk melaporkan host

Jalankan permintaan POST berikut untuk melaporkan host yang mendasarinya sebagai rusak. Saat melakukannya, Anda harus memberikan satu atau beberapa perilaku dan deskripsi yang diamati untuk faultReasons.
Untuk kolom behavior, Anda harus menggunakan salah satu nilai berikut:

Perilaku Deskripsi
PERFORMANCE GPU yang terpasang ke VM memiliki masalah performa dibandingkan dengan GPU lain di cluster, Anda tidak melihat error XID di log, dan Compute Engine tidak mendeteksi pola kegagalan biasa lainnya seperti kerusakan data senyap.
SILENT_DATA_CORRUPTION Anda melihat kerusakan data di VM, tetapi VM tetap berjalan. Hal ini dapat disebabkan oleh masalah seperti kerusakan vCPU, bug software, atau masalah kernel.
UNRECOVERABLE_GPU_ERROR Anda telah mengidentifikasi error GPU yang tidak dapat dipulihkan dengan XID.
BEHAVIOR_UNSPECIFIED Anda tidak yakin apa masalah pada VM Anda.

Berikut adalah contoh permintaan 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"}]}}]}'
  

Menggabungkan semuanya

Dengan memanfaatkan health check otomatis dan kontrol manual yang dijelaskan di halaman ini, Anda dapat mempertahankan lingkungan pelatihan yang sangat tangguh. Mengelola kondisi cluster Anda secara proaktif dengan menghapus node yang rusak atau melaporkan masalah hardware akan memastikan waktu aktif maksimum dan keberhasilan penyelesaian tugas pelatihan Anda. Untuk masalah yang persisten atau kompleks, selalu pertimbangkan untuk berkonsultasi dengan tim dukungan Google Cloud untuk mendapatkan diagnostik dan bantuan mendalam.

Langkah berikutnya

Mengonfigurasi cluster pelatihan Anda untuk toleransi fault adalah langkah penting dalam membangun alur kerja MLOps yang lengkap dan siap produksi.