Memecahkan masalah GPU di GKE


Halaman ini menunjukkan cara menyelesaikan masalah yang terkait dengan GPU dalam Google Kubernetes Engine (GKE).

Jika Anda memerlukan bantuan tambahan, hubungi Cloud Customer Care.

Penginstalan driver GPU

Bagian ini memberikan informasi pemecahan masalah untuk perangkat NVIDIA otomatis penginstalan {i>driver<i} di GKE.

Penginstalan driver gagal di node Ubuntu

Jika Anda menggunakan node Ubuntu yang telah memasang GPU L4 atau GPU H100, GPU default yang diinstal otomatis agar GKE tidak berada pada atau lebih lambat dari versi yang diperlukan untuk GPU tersebut. Akibatnya, Pod plugin perangkat GPU tetap terjebak dalam status Tertunda dan beban kerja GPU Anda di node tersebut mungkin mengalami masalah.

Untuk mengatasi masalah ini, sebaiknya Anda mengupgrade ke GKE berikut versi yang menginstal driver GPU versi 535 sebagai driver default:

  • 1.26.15-gke.1483000 dan yang lebih baru
  • 1.27.15-gke.1039000 dan yang lebih baru
  • 1.28.11-gke.1044000 dan yang lebih baru
  • 1.29.6-gke.1073000 dan yang lebih baru
  • 1.30.2-gke.1124000 dan yang lebih baru

Atau, Anda dapat menginstal driver versi 535 atau yang lebih baru secara manual dengan menjalankan perintah berikut:

kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/container-engine-accelerators/master/nvidia-driver-installer/ubuntu/daemonset-preloaded-R535.yaml

Plugin perangkat GPU gagal dengan error CrashLoopBackOff

Masalah berikut terjadi jika Anda menggunakan metode penginstalan driver manual di node pool sebelum 25 Januari 2023, lalu mengupgrade node pool ke versi GKE yang mendukung penginstalan driver otomatis. Kedua beban kerja instalasi ada pada saat yang sama dan mencoba menginstal versi {i>driver<i} yang konflik pada {i>node<i} Anda.

Container init plugin perangkat GPU gagal dengan Init:CrashLoopBackOff . Log untuk penampung mirip dengan yang berikut ini:

failed to verify installation: failed to verify GPU driver installation: exit status 18

Untuk mengatasi masalah ini, coba metode berikut:

  • Hapus DaemonSet penginstalan driver manual dari cluster Anda. Ini menghapus beban kerja penginstalan yang bertentangan dan memungkinkan GKE secara otomatis menginstal {i> driver<i} ke {i>node<i} Anda.

    kubectl delete -f https://raw.githubusercontent.com/GoogleCloudPlatform/container-engine-accelerators/master/nvidia-driver-installer/cos/daemonset-preloaded.yaml
    
  • Terapkan ulang manifes DaemonSet penginstalan driver manual ke cluster Anda. Pada 25 Januari 2023, kami memperbarui manifes untuk mengabaikan node yang menggunakan penginstalan {i>driver<i} secara otomatis.

    kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/container-engine-accelerators/master/nvidia-driver-installer/cos/daemonset-preloaded.yaml
    
  • Nonaktifkan penginstalan driver otomatis untuk node pool. Driver yang ada DaemonSet penginstalan akan berfungsi seperti yang diharapkan setelah operasi update selesai.

    gcloud container node-pools update POOL_NAME \
        --accelerator=type=GPU_TYPE,count=GPU_COUNT,gpu-driver-version=disabled \
        --cluster=CLUSTER_NAME \
        --location=LOCATION
    

    Ganti kode berikut:

    • POOL_NAME: nama node pool.
    • GPU_TYPE: jenis GPU yang sudah dimiliki kumpulan node pengguna.
    • GPU_COUNT: jumlah GPU yang sudah yang melekat pada node pool.
    • CLUSTER_NAME: nama GKE yang berisi kumpulan node.
    • LOCATION: lokasi Compute Engine .

Error: Image container OS-nvidia-installer:fixed tidak ada dengan kebijakan pull Tidak pernah.

Masalah ini terjadi jika Pod nvidia-driver-installer berada di status PodInitializing dan perangkat plugin GPU atau Pod penginstal driver GPU melaporkan error berikut. Pesan error spesifik bergantung pada yang berjalan di node Anda:

COS

Container image "cos-nvidia-installer:fixed" is not present with pull policy of Never.

Ubuntu

Container image "gke-nvidia-installer:fixed" is not present with pull policy of Never.

Masalah ini bisa terjadi saat pembersih sampah menghapus {i>image<i} {i>driver<i} NVIDIA yang sudah dimuat sebelumnya untuk mengosongkan ruang pada {i>node<i}. Ketika Pod driver dibuat ulang atau container-nya dimulai ulang, GKE tidak akan dapat menemukan gambar pramuat.

Untuk mengurangi masalah pembersihan sampah memori saat Anda menjalankan COS, upgrade node GKE Anda ke salah satu versi berikut yang berisi perbaikan:

  • 1.25.15-gke.1040000 dan yang lebih baru
  • 1.26.10-gke.1030000 dan yang lebih baru
  • 1.27.6-gke.1513000 dan yang lebih baru
  • 1.28.3-gke.1061000 dan yang lebih baru

Jika node Anda menjalankan Ubuntu, belum ada perbaikan yang tersedia untuk sampah ini pengumpulan data. Untuk memitigasi masalah ini di Ubuntu, Anda dapat menjalankan perintah yang berinteraksi dengan {i>host<i} untuk memastikan bahwa pengaturan Driver GPU NVIDIA. Untuk melakukannya, jalankan sudo /usr/local/bin/nvidia-container-first-boot dari node Anda atau terapkan manifes berikut:

apiVersion: v1
kind: Pod
metadata:
  name: gke-nvidia-installer-fixup
spec:
  nodeSelector:
    cloud.google.com/gke-os-distribution: ubuntu
  hostPID: true
  containers:
  - name: installer
    image: ubuntu
    securityContext:
      privileged: true
    command:
      - nsenter
      - -at
      - '1'
      - --
      - sh
      - -c
      - "/usr/local/bin/nvidia-container-first-boot"
  restartPolicy: Never

Penyebab potensial lain dari masalah ini adalah ketika gambar driver NVIDIA hilang setelah mulai ulang {i>node<i} atau pemeliharaan {i>host<i}. Hal ini dapat terjadi pada node rahasia, atau node dengan GPU, yang menggunakan penyimpanan SSD lokal sementara. Dalam situasi ini, GKE melakukan pramuat image container nvidia-installer-driver pada node dan memindahkannya dari boot disk ke SSD lokal saat booting pertama.

Untuk mengonfirmasi bahwa ada peristiwa pemeliharaan host, gunakan log berikut filter:

resource.type="gce_instance"
protoPayload.serviceName="compute.googleapis.com"
log_id("cloudaudit.googleapis.com/system_event")

Untuk mengurangi masalah pemeliharaan host, tingkatkan GKE ke salah satu versi berikut:

  • 1.27.13-gke.1166000 dan yang lebih baru
  • 1.29.3-gke.1227000 dan yang lebih baru
  • 1.28.8-gke.1171000 dan yang lebih baru

Error: gagal mengkonfigurasi dirs instalasi driver GPU: gagal membuat overlay lib64: gagal membuat dir /usr/local/nvidia/lib64: mkdir /usr/local/nvidia/lib64: bukan direktori.

Anda mengalami error ini dari container penginstal driver GPU di dalam GPU plugin perangkat saat fastsocket NCCL diaktifkan:

failed to configure GPU driver installation dirs: failed to create lib64 overlay: failed to create dir /usr/local/nvidia/lib64: mkdir /usr/local/nvidia/lib64: not a directory.

Masalah ini hanya terjadi pada cluster dan node yang menjalankan GKE 1.28 dan 1,29.

Masalah ini disebabkan oleh kondisi race fastsocket NCCL dengan driver GPU penginstal.

Untuk mengurangi masalah ini, upgrade versi GKE Anda ke salah satu versi berikut:

  • 1.28.8-gke.1206000 dan yang lebih baru
  • 1.29.3-gke.1344000 dan yang lebih baru

Error: Gagal mendapatkan perangkat untuk nvidia0: device nvidia0 tidak ditemukan.

Error berikut menunjukkan bahwa XID 62 dan RmInitAdapter gagal untuk GPU dengan minor 0:

Failed to get device for nvidia0: device nvidia0 not found.

Driver NVIDIA versi 525.105.17 memiliki {i>bug<i} yang dapat menyebabkan kesalahan komunikasi (XID) dan mencegah GPU melakukan inisialisasi dengan benar, yang menyebabkan kegagalan melakukan inisialisasi GPU.

Untuk memperbaiki masalah ini, upgrade driver NVIDIA ke versi driver 525.110.11 atau nanti.

Langkah selanjutnya

Jika Anda memerlukan bantuan tambahan, hubungi Cloud Customer Care.