Ketahanan cluster

Jika Anda tertarik dengan cluster pelatihan Vertex AI, hubungi perwakilan penjualan Anda untuk mendapatkan akses.

Cluster pelatihan Vertex AI mengintegrasikan sistem pemeriksaan kondisi yang 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 rusak tertentu secara manual atau melaporkan dugaan kegagalan hardware pada host yang mendasarinya.

Menjalankan beban kerja pengujian untuk memverifikasi fungsi GPU

Langkah 1: Hubungkan ke node cluster menggunakan SSH

Dari Cloud Shell atau konsol Google Cloud , 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: Jalankan 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: Jalankan 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)

Verifikasi kesehatan cluster

Bagian ini menunjukkan cara menguji cluster pelatihan menggunakan alat Cluster Health Scanner (CHS), yang telah diinstal sebelumnya pada image cluster pelatihan. Alat CHS memeriksa kondisi cluster, menjalankan pengujian seperti diagnostik DCGM dan pengujian NCCL untuk memverifikasi bahwa cluster siap menjalankan beban kerja Anda.

Dari node login cluster, Anda dapat menjalankan skrip berikut untuk menjalankan pengujian menggunakan alat CHS.

export CLUSTER_ID=<your_cluster_id>
export PARTITION=a3u
export MACHINE_TYPE=a3-ultragpu-8g
cd ~
/opt/cluster-health-scanner/deploy/slurm/cluster-validation.sh \
--nodelist=${CLUSTER_ID}-${PARTITION}-[0-1] \
--nodes=2 \
--partition=${PARTITION} \
--machine-type=${MACHINE_TYPE} \
--relative-exec-path=../../opt/cluster-health-scanner/deploy/slurm \
--results-dir=results

Operasi pengujian yang berhasil akan memberikan dua set hasil:

  • Output Ringkasan: Ringkasan singkat dicetak ke konsol, yang akan mirip dengan contoh berikut.
  • Log Mendetail: Untuk laporan lengkap, lihat log mendetail yang disimpan di direktori ~/results.
Starting DCGM Diagnostics...
DCGM diagnostics passing on all nodes!
Starting NCCL all_reduce_perf...
CURR_NODES:  cluster-id-0
cluster-id-1
NCCL test passing on all nodes!

Pemeriksaan dan pemulihan kondisi sistem otomatis

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

Rangkaian health check

  • Kesehatan 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 kegagalan tugas karena kurangnya ruang.
  • Kesehatan Jaringan: Memverifikasi bahwa antarmuka jaringan utama memiliki alamat IPv4. Jika masalah ditemukan, sistem akan mencoba memperbaiki 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 Vertex AI akan otomatis memulai proses pemulihan kegagalan. Proses standar melibatkan pengurasan node yang rusak, mengantrekan ulang tugas Slurm yang terpengaruh, lalu menghapus dan membuat ulang node yang dikuras untuk memulihkannya ke kondisi normal.

Pemulihan otomatis ini tunduk pada kondisi berikut:

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

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

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 pemeriksaan kondisi otomatis tidak menyelesaikan masalah. Anda hanya dapat menjalankan operasi ini di satu node dalam satu waktu.

Tindakan Deskripsi Terbaik Untuk
Hapus Node Menghapus node rusak tertentu dari cluster. Ini adalah tindakan default. Error umum atau saat node tidak merespons dan perlu didaur ulang.
Laporkan Host sebagai Rusak Melaporkan host fisik yang mendasarinya sebagai rusak, sehingga memicu proses perbaikan atau migrasi. Diduga terjadi kegagalan hardware pada mesin fisik yang menghosting node GPU.

Tindakan 1: Hapus 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 minimum node di 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 dibuat ulang jika ada workload tertunda yang dijadwalkan untuknya. Jika tidak, data akan dihapus.

Contoh ini menggunakan alias gcurl, yang merupakan pintasan yang diautentikasi dan praktis untuk berinteraksi dengan endpoint API. Perintah berikut akan 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 bermasalah, 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 Anda mencurigai adanya kegagalan hardware.

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

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

Prasyarat: Berikan peran IAM

Untuk menggunakan fitur ini, Anda harus memberikan peran Compute Instance Admin (v1) (roles/compute.instanceAdmin.v1) kepada Agen Layanan Vertex AI.

  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 dalam cluster, Anda tidak melihat error XID dalam log, dan Compute Engine tidak mendeteksi pola kegagalan biasa lainnya seperti kerusakan data tanpa pemberitahuan.
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 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 kesehatan cluster secara proaktif dengan menghapus node yang rusak atau melaporkan masalah hardware memastikan waktu aktif maksimum dan keberhasilan penyelesaian tugas pelatihan Anda. Untuk masalah yang persisten atau kompleks, selalu pertimbangkan untuk berkonsultasi dengan tim dukungan untuk mendapatkan diagnostik dan bantuan mendalam. Google Cloud

Langkah berikutnya

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

  • Memantau dan men-debug tugas pelatihan: Lacak progres, pemanfaatan resource, dan kondisi tugas pelatihan, termasuk cara mengidentifikasi kapan node telah dipulihkan atau tugas telah dimulai ulang karena kegagalan.
  • Mengorkestrasi tugas yang tangguh dengan Vertex AI Pipelines: Untuk lingkungan produksi, gunakan Vertex AI Pipelines untuk membuat alur kerja otomatis yang dapat diulang yang mengirimkan tugas pelatihan yang tangguh ke cluster Anda.
  • Mengelola dan men-deploy model Anda: Setelah tugas pelatihan yang tangguh selesai, gunakan Vertex AI Model Registry untuk membuat versi artefak model Anda sebelum men-deploy model ke endpoint untuk melayani permintaan inferensi online.