Memecahkan masalah VM GPU

Halaman ini menunjukkan cara menyelesaikan masalah untuk VM yang berjalan di Compute Engine yang memiliki GPU terlampir.

Jika Anda mencoba membuat VM dengan GPU terpasang dan mendapatkan error, tinjau Memecahkan masalah error ketersediaan resource dan Memecahkan masalah pembuatan dan update VM.

Memecahkan masalah VM GPU menggunakan NVIDIA DCGM

NVIDIA Data Center GPU Manager (DCGM) adalah rangkaian alat untuk mengelola dan memantau GPU pusat data NVIDIA di lingkungan cluster.

Jika Anda ingin menggunakan DCGM untuk memecahkan masalah di lingkungan GPU, selesaikan langkah-langkah berikut:

  • Pastikan Anda menggunakan driver NVIDIA terbaru yang direkomendasikan untuk model GPU yang terpasang ke VM Anda. Untuk meninjau versi driver, lihat Versi driver NVIDIA yang direkomendasikan.
  • Pastikan Anda telah menginstal DCGM versi terbaru. Untuk menginstal versi terbaru, lihat Penginstalan DCGM.

Mendiagnosis masalah

Saat Anda menjalankan perintah diagnostik dcgmi, masalah yang dilaporkan oleh alat diagnostik mencakup langkah-langkah berikutnya untuk mengambil tindakan terkait masalah tersebut. Contoh berikut menunjukkan output yang dapat ditindaklanjuti dari perintah dcgmi diag -r memory -j.

{
  ........
   "category":"Hardware",
   "tests":[
      {
         "name":"GPU Memory",
         "results":[
            {
               "gpu_id":"0",
               "info":"GPU 0 Allocated 23376170169
bytes (98.3%)",
               "status":"Fail",
               ""warnings":[
                  {
                     "warning":"Pending page
retirements together with a DBE were detected on GPU 0. Drain the GPU and reset it or reboot the node to resolve this issue.",
                     "error_id":83,
                     "error_category":10,
                     "error_severity":6
                  }
               ]
            }
  .........

Dari cuplikan output sebelumnya, Anda dapat melihat bahwa GPU 0 memiliki penghentian halaman tertunda yang disebabkan oleh error yang tidak dapat dipulihkan. Output memberikan error_id unik dan saran tentang cara men-debug masalah. Untuk output contoh ini, sebaiknya Anda menguras GPU dan memulai ulang VM. Dalam sebagian besar kasus, mengikuti petunjuk di bagian output ini dapat membantu menyelesaikan masalah.

Memecahkan masalah performa GPU untuk VM A3

Seri mesin A3 tersedia dengan GPU NVIDIA H200 atau H100 yang terpasang. Seri ini mencakup jenis mesin A3 Ultra (H200), A3 Mega (H100), A3 High (H100), dan A3 Edge (H100).

Mengidentifikasi node yang rusak

Tugas pelatihan atau benchmark skala besar pada cluster GPU multi-node dapat berhenti merespons atau berperforma buruk. Hal ini sering terjadi karena satu atau beberapa node berperforma buruk dan memperlambat seluruh operasi. Bagian ini menjelaskan cara mengidentifikasi node atau mesin host yang rusak dengan menjalankan uji tolok ukur NCCL atau menganalisis log NCCL.

Menjalankan uji benchmark NCCL

Untuk mengidentifikasi grup node yang menyebabkan kegagalan, uji subset cluster Anda secara sistematis dengan menggunakan tolok ukur NCCL seperti all_reduce_perf.

  1. Untuk mengidentifikasi set node, kelompokkan node ke dalam set logis, misalnya, partisi di Slurm.
  2. Untuk membuat hostfile, buat hostfile terpisah untuk setiap set node, yang mencantumkan nama host dan jumlah GPU per node. Jumlah slot yang Anda tentukan bergantung pada jumlah GPU jenis VM A3 Anda. Misalnya, VM a3-highgpu-8g memiliki 8 GPU, jadi Anda harus menentukan slots=8.
  3. Untuk menjalankan benchmark, jalankan benchmark all_reduce_perf terhadap setiap nodeset satu per satu.
    mpirun -x LD_LIBRARY_PATH --hostfile HOSTFILE_NAME -n TOTAL_PROCESSES \
        ./build/all_reduce_perf -b 1G -e 8G -f 2 -g NUM_GPUS_PER_NODE
              

    Ganti kode berikut:

    • HOSTFILE_NAME: nama hostfile yang berisi daftar node dan jumlah GPU per node untuk nodeset.
    • TOTAL_PROCESSES: jumlah total proses MPI yang akan diluncurkan di semua host dalam nodeset.
    • NUM_GPUS_PER_NODE: jumlah GPU per node. Untuk semua jenis mesin A3, nilai ini adalah 8.
  4. Untuk menganalisis hasil, jika tugas terhenti atau menunjukkan bandwidth bus yang jauh lebih rendah (busbw) pada set node tertentu, set tersebut kemungkinan rusak.
  5. Untuk membagi lebih lanjut, jika set node rusak, bagi file host-nya menjadi dua dan uji ulang untuk mempersempit penelusuran biner hingga Anda menemukan node yang berperilaku tidak semestinya.

Menganalisis log NCCL

Jika metode tolok ukur tidak menunjukkan node, analisis log NCCL mendetail.

  1. Untuk mengaktifkan logging debug, tetapkan variabel lingkungan berikut di sesi shell tempat Anda berencana menjalankan workload:
    export NCCL_DEBUG=INFO
            export NCCL_DEBUG_SUBSYS=INIT,NET,COLL
            export NCCL_DEBUG_FILE="LOG_DIRECTORY/nccl_log.%h.%p"
            

    Ganti LOG_DIRECTORY dengan direktori tempat Anda ingin menyimpan log.

    Menetapkan NCCL_DEBUG_FILE dengan %h dan %p akan membuat file log unik dan tidak berselang-seling untuk setiap proses.

    Jika Anda menjalankan workload multi-node menggunakan mpirun, Anda harus menyebarkan variabel ini ke semua node menggunakan flag -x. Contoh:

    mpirun -x NCCL_DEBUG -x NCCL_DEBUG_SUBSYS -x NCCL_DEBUG_FILE ...
              
  2. Untuk menemukan error pertama, gunakan perintah berikut untuk menemukan peristiwa waktu tunggu atau kegagalan paling awal di semua file log:
    grep "NCCL WARN.*NET/FasTrak" LOG_DIRECTORY/* | sed 's/.*NET\/FasTrak\(.*\)/\1/g' \
      | sort | head -n 20
              

    Ganti LOG_DIRECTORY dengan direktori tempat log Anda disimpan.

  3. Untuk menghitung operasi kolektif, node yang lambat menyelesaikan lebih sedikit operasi kolektif. Hitung "opCount" entri untuk peringkat kecurigaan:
    grep "opCount" LOG_DIRECTORY/nccl_log.HOSTNAME.PID | wc -l
              

    Ganti kode berikut:

    • LOG_DIRECTORY: direktori tempat log Anda disimpan
    • HOSTNAME: nama host node
    • PID: ID proses NCCL
  4. Untuk mengumpulkan lebih banyak data logging sebelum tugas dibatalkan, tingkatkan waktu tunggu transfer data untuk sementara:
    export NCCL_FASTRAK_DATA_TRANSFER_TIMEOUT_MS=3600000
            

Memantau throttling termal GPU

VM seri A3 dapat mengalami penurunan performa jika secara konsisten mencapai suhu lebih dari 87 °C saat dalam beban. Untuk memeriksa pembatasan termal GPU di seluruh node dalam cluster, gunakan nvidia-smi atau dcgmi.

Menggunakan nvidia-smi

Untuk memeriksa suhu saat ini dan status throttling semua GPU di node, jalankan perintah berikut:

nvidia-smi --query-gpu=timestamp,name,pci.bus_id,temperature.gpu,clocks_throttle_reasons.hw_slowdown --format=csv
    

Dalam output, nilai Active di kolom clocks_throttle_reasons.hw_slowdown menunjukkan bahwa GPU mengalami throttling karena suhu tinggi.

Menggunakan dcgmi

Rangkaian diagnostik NVIDIA Data Center GPU Manager (DCGM) mencakup pemeriksaan untuk pelanggaran termal. Untuk menjalankan diagnostik level 1, jalankan perintah berikut:

dcgmi diag -r 1

Hasil Warn atau Fail di bagian Thermal menunjukkan bahwa pelanggaran termal terjadi selama pengujian. Jika pelanggaran termal disertai dengan pembatasan clock, GPU kemungkinan mengalami panas berlebih dan memerlukan penyelidikan lebih lanjut.

Membuka kasus dukungan

Jika Anda tidak dapat menyelesaikan masalah dengan menggunakan panduan di halaman ini, kumpulkan informasi berikut dan buka kasus dukungan:

  • Project ID dan daftar semua nama atau ID instance dalam cluster.
  • Daftar node yang dicurigai yang diidentifikasi melalui pemecahan masalah.
  • Log NCCL yang lengkap dan tidak disisipkan dengan setelan debug diaktifkan.
  • Output dari health check hardware (dcgmi, nvidia-smi).
  • Perintah benchmark atau workload persis yang gagal.
  • File log yang relevan seperti log diagnostik dan mesin host. Untuk mengumpulkan data ini, jalankan gather-dcgm-logs.sh, yang ada di /usr/local/dcgm/scripts dalam penginstalan default.
  • Laporan bug NVIDIA. Jalankan nvidia-bug-report.sh. Untuk GPU Blackwell, ikuti Membuat Laporan Bug NVIDIA untuk GPU Blackwell.
  • Detail tentang perubahan terbaru yang dilakukan pada lingkungan Anda sebelum kegagalan terjadi.

Meninjau pesan Xid

Setelah membuat VM yang telah memasang GPU, Anda harus menginstal driver perangkat NVIDIA di VM GPU agar aplikasi Anda dapat mengakses GPU. Namun, terkadang driver ini menampilkan pesan error.

Pesan Xid adalah laporan error dari driver NVIDIA yang dicetak ke log kernel atau log peristiwa sistem operasi untuk VM Linux Anda. Pesan ini ditempatkan dalam file /var/log/messages.

Untuk mengetahui informasi selengkapnya tentang pesan Xid termasuk kemungkinan penyebabnya, lihat dokumentasi NVIDIA.

Bagian berikut memberikan panduan tentang cara menangani beberapa pesan Xid yang dikelompokkan berdasarkan jenis yang paling umum: error memori GPU, error Prosesor Sistem GPU (GSP), dan error akses memori ilegal.

Error memori GPU

Memori GPU adalah memori yang tersedia di GPU yang dapat digunakan untuk penyimpanan data sementara. Memori GPU dilindungi dengan Kode Koreksi Error (ECC), yang mendeteksi dan mengoreksi error bit tunggal (SBE) serta mendeteksi dan melaporkan Error Bit Ganda (DBE).

Sebelum rilis GPU NVIDIA A100, penghentian halaman dinamis didukung. Untuk rilis GPU NVIDIA A100 dan yang lebih baru (seperti NVIDIA H100), pemulihan error pemetaan ulang baris diperkenalkan. ECC diaktifkan secara default. Google sangat merekomendasikan agar ECC tetap diaktifkan.

Berikut adalah error memori GPU umum dan penyelesaian yang disarankan.

Pesan error Xid Resolusi
Xid 48: Double Bit ECC
  1. Hentikan workload Anda.
  2. Hapus dan buat ulang VM. Jika error berlanjut, ajukan kasus ke Cloud Customer Care.
Xid 63: ECC page retirement or row remapping recording event
  1. Hentikan workload Anda.
  2. Reset GPU.
Xid 64: ECC page retirement or row remapper recording failure

Pesan tersebut berisi informasi berikut:

Xid 64: All reserved rows for bank are remapped
  1. Hentikan workload Anda.
  2. Hapus dan buat ulang VM. Jika error berlanjut, ajukan kasus ke Cloud Customer Care.

Jika Anda mendapatkan setidaknya dua pesan Xid berikut secara bersamaan:

  • Xid 48
  • Xid 63
  • Xid 64

Pesan tersebut berisi informasi berikut:

Xid XX: row remap pending
  1. Hentikan workload Anda.
  2. Reset GPU. Dengan mereset GPU, proses pemetaan ulang baris dan penghentian penggunaan halaman dapat diselesaikan dan GPU dapat dipulihkan.
Xid 92: High single-bit ECC error rate Pesan Xid ini ditampilkan setelah driver GPU memperbaiki error yang dapat diperbaiki, dan tidak akan memengaruhi beban kerja Anda. Pesan Xid ini hanya sebagai informasi. Anda tidak perlu melakukan tindakan apa pun.
Xid 94: Contained ECC error
  1. Hentikan workload Anda.
  2. Reset GPU.
Xid 95: Uncontained ECC error
  1. Hentikan workload Anda.
  2. Reset GPU.

Error GSP

Prosesor Sistem GPU (GSP) adalah pengontrol mikro yang berjalan di GPU dan menangani beberapa fungsi pengelolaan hardware tingkat rendah.

Pesan error Xid Resolusi
Xid 119: GSP RPC timeout
  1. Hentikan workload Anda.
  2. Hapus dan buat ulang VM. Jika error berlanjut, kumpulkan laporan bug NVIDIA dan ajukan kasus ke Cloud Customer Care.
Xid 120: GSP error

Error akses memori ilegal

Xid berikut ditampilkan saat aplikasi mengalami masalah akses memori ilegal:

  • Xid 13: Graphics Engine Exception
  • Xid 31: GPU memory page fault

Error akses memori ilegal biasanya disebabkan oleh workload yang mencoba mengakses memori yang sudah dibebaskan atau berada di luar batas. Hal ini dapat disebabkan oleh masalah seperti dereferensi pointer yang tidak valid, atau array di luar batas.

Untuk mengatasi masalah ini, Anda perlu men-debug aplikasi. Untuk men-debug aplikasi, Anda dapat menggunakan cuda-memcheck dan CUDA-GDB.

Dalam beberapa kasus yang sangat jarang terjadi, penurunan kualitas hardware dapat menyebabkan error akses memori ilegal ditampilkan. Untuk mengidentifikasi apakah masalahnya ada pada hardware Anda, gunakan NVIDIA Data Center GPU Manager (DCGM). Anda dapat menjalankan dcgmi diag -r 3 atau dcgmi diag -r 4 untuk menjalankan berbagai tingkat cakupan dan durasi pengujian. Jika Anda mengidentifikasi bahwa masalahnya ada pada hardware, ajukan kasus ke Cloud Customer Care.

Pesan error Xid umum lainnya

Pesan error Xid Resolusi
Xid 74: NVLINK error
  1. Hentikan workload Anda.
  2. Reset GPU.
Xid 79: GPU has fallen off the bus

Artinya, driver tidak dapat berkomunikasi dengan GPU.

Mulai ulang VM.
Xid 149 yang menyebutkan 0x02a, seperti contoh berikut:
Xid (PCI:0000:c0:00): 149,NETIR_LINK_EVT Fatal XC0 i0 Link 04 (0x02a485c6 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000)

Hal ini menunjukkan masalah umum yang memengaruhi firmware untuk GPU NVIDIA B200.

  1. Hentikan workload Anda.
  2. Reset GPU.

Mereset GPU

Beberapa masalah mungkin mengharuskan Anda mereset GPU. Untuk mereset GPU, selesaikan langkah-langkah berikut:

  • Untuk VM N1, G2, dan A2, mulai ulang VM.
  • Untuk VM G4 yang memiliki kurang dari satu GPU yang terpasang, hapus dan buat ulang VM.
  • Untuk VM A3 dan A4, jalankan sudo nvidia-smi --gpu-reset.
    • Untuk sebagian besar VM Linux, file yang dapat dieksekusi nvidia-smi berada di direktori /var/lib/nvidia/bin.
    • Untuk node GKE, file yang dapat dieksekusi nvidia-smi terletak di direktori /home/kubernetes/bin/nvidia.
    • Jika menggunakan node GKE, Anda dapat menggunakan gpu-reset-tool untuk mengotomatiskan reset semua GPU pada node. Alat ini hanya mengharuskan Anda menentukan nama node target.

Sebagai alternatif, GPU juga direset setiap kali Anda mereset VM atau memulai ulang VM.

Jika error tetap terjadi setelah mereset GPU, Anda harus menghapus dan membuat ulang VM.

Jika error tetap terjadi setelah menghapus dan membuat ulang, ajukan kasus ke Cloud Customer Care untuk memindahkan VM ke tahap perbaikan.

Langkah berikutnya

Tinjau jenis mesin GPU.