Mengaktifkan prediksi kesehatan node di cluster GKE

Setelah membuat cluster Google Kubernetes Engine (GKE) yang dioptimalkan untuk AI, Anda dapat mengaktifkan prediksi kondisi node. Jika Anda berencana menjadwalkan workload menggunakan Topology Aware Scheduling (TAS) dan Kueue, mengaktifkan prediksi kesehatan node akan memungkinkan penjadwal cluster melakukan hal berikut:

  1. Identifikasi node yang kemungkinan akan mengalami penurunan performa dalam lima jam ke depan.

  2. Hindari penjadwalan workload baru di node tersebut.

Pendekatan ini membantu Anda meminimalkan gangguan pada beban kerja penting dan yang sensitif terhadap gangguan, seperti beban kerja pelatihan skala besar.

Dokumen ini menjelaskan cara mengaktifkan prediksi kondisi node di cluster GKE yang menggunakan node A4X Max, A4X, A4, atau A3 Ultra. Untuk mempelajari cara menggunakan metrik prediksi kondisi node di dasbor Cloud Monitoring saat, misalnya, Anda ingin memecahkan masalah performa pada cluster Slurm, lihat Memantau instance Compute Engine dan cluster Slurm.

Batasan

Sebelum mengaktifkan prediksi kondisi node di cluster GKE, pertimbangkan batasan berikut:

  • Node harus menggunakan jenis mesin A4X Max, A4X, A4, atau A3 Ultra.

  • Node harus menggunakan model penyediaan terikat reservasi.

Memahami prediksi kesehatan node

Saat Anda mengaktifkan prediksi kondisi node di cluster GKE, CronJob akan menerapkan label gke.google.com/recommended-to-run-large-training-workload ke setiap node di cluster Anda. CronJob menetapkan nilai label ke kemungkinan kondisi GPU node akan menurun, dan memperbarui nilai ini setiap 10 menit. Jika nilai label adalah true, berarti node dalam kondisi baik. Jika tidak, jika nilai label adalah false, node kemungkinan akan mengalami penurunan kualitas dalam lima jam berikutnya. Nilai label dapat berubah dari waktu ke waktu berdasarkan kondisi GPU node.

Jika Anda melihat bahwa node kemungkinan akan mengalami penurunan performa, Anda dapat melakukan salah satu atau kedua hal berikut:

  • Hindari penjadwalan workload di node. Anda dapat mengonfigurasi Kueue untuk menghindari penjadwalan beban kerja pada node yang menampilkan nilai false, seperti yang dijelaskan dalam dokumen ini.

  • Laporkan node sebagai rusak. Jika node mengalami masalah seperti suhu GPU yang tinggi atau performa yang lambat, Anda dapat melaporkan node tersebut sebagai rusak. Tindakan ini memulai peristiwa pemeliharaan host untuk node, sehingga node tersebut tersedia kembali untuk menjalankan workload setelah pemeliharaan selesai. Untuk mendapatkan petunjuk, lihat Melaporkan host yang bermasalah melalui GKE.

Sebelum memulai

Sebelum memulai, pastikan Anda telah melakukan tugas berikut:

  • Aktifkan Google Kubernetes Engine API.
  • Aktifkan Google Kubernetes Engine API
  • Jika ingin menggunakan Google Cloud CLI untuk tugas ini, instal lalu lakukan inisialisasi gcloud CLI. Jika sebelumnya Anda telah menginstal gcloud CLI, dapatkan versi terbaru dengan menjalankan perintah gcloud components update. gcloud CLI versi sebelumnya mungkin tidak mendukung menjalankan perintah dalam dokumen ini.
  • Untuk terhubung ke cluster Anda, jalankan perintah berikut:

    gcloud container clusters get-credentials CLUSTER_NAME
    

    Ganti CLUSTER_NAME dengan nama cluster Anda.

Mengaktifkan prediksi kesehatan node

Setelah bersiap untuk menjadwalkan workload di cluster GKE menggunakan TAS, Anda dapat mengaktifkan prediksi kesehatan node dengan menyelesaikan langkah-langkah berikut:

  1. Men-deploy pemberian label node otomatis

  2. Perbarui konfigurasi Job Anda

  3. Memverifikasi pelabelan node

Men-deploy pemberian label node otomatis

Untuk men-deploy pelabelan node otomatis untuk prediksi kondisi node di cluster GKE Anda, selesaikan langkah-langkah berikut:

  1. Buat clone repositori git akselerator hardware di GKE:

    git clone https://github.com/GoogleCloudPlatform/container-engine-accelerators.git
    
  2. Buka direktori topology-scheduler:

    cd container-engine-accelerators/gpudirect-tcpxo/topology-scheduler
    
  3. Buat ConfigMap Kubernetes yang berisi skrip Python, schedule-daemon.py dan label-nodes-daemon.py, yang mengkueri skor kesehatan:

    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
    
  4. Terapkan konfigurasi akun layanan untuk memberikan izin yang diperlukan (membaca metrik Monitoring dan melakukan patch pada objek Node) ke CronJob:

    kubectl apply -f service-account.yaml
    
  5. Deploy DaemonSet yang menjadwalkan tugas pelabelan node:

    kubectl apply -f label-nodes-daemon.yaml
    

Perbarui konfigurasi Tugas Anda

Untuk mengaktifkan prediksi kondisi node saat menggunakan Kueue, Anda harus memperbarui konfigurasi Job untuk memeriksa nilai prediksi kondisi dan, jika didukung, persyaratan topologi sebelum memulai workload.

Untuk memperbarui konfigurasi Job dan mengaktifkan prediksi kondisi node, di kolom spec, tambahkan kolom berikut:

spec:
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: gke.google.com/recommended-to-run-large-training-workload
            operator: NotIn
            values:
            - "False"
...

Memverifikasi pemberian label node

Setelah CronJob berjalan untuk pertama kalinya, yaitu sekitar 10 menit setelah deployment, verifikasi apakah CronJob telah menerapkan label gke.google.com/recommended-to-run-large-training-workload ke node Anda.

Melihat daftar node yang menerapkan label gke.google.com/recommended-to-run-large-training-workload:

kubectl get nodes -L gke.google.com/recommended-to-run-large-training-workload

Nilai label dapat berupa salah satu dari berikut:

  • true: node diprediksi akan berfungsi normal dalam lima jam ke depan.

  • false: node kemungkinan akan mengalami penurunan kualitas dalam lima jam ke depan. Jika Anda mengonfigurasi konfigurasi Tugas seperti yang dijelaskan dalam dokumen ini, maka Kueue akan menghindari penjadwalan beban kerja baru di node.

Langkah berikutnya