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, danxid. - 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 tindakanreportFaultyNodes 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
RUNNINGsebelum Anda memanggil API. Status akan bertransisi keREPAIRINGsetelah panggilan berhasil dan kembali keRUNNINGsetelah 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.