Risoluzione dei problemi relativi alle VM GPU

Questa pagina mostra come risolvere i problemi relativi alle VM che sono in esecuzione su Compute Engine e che hanno GPU collegate.

Se stai tentando di creare una VM con GPU collegate e visualizzi errori, allora consulta Risoluzione dei problemi relativi alla disponibilità delle risorse e Risoluzione dei problemi relativi alla creazione e all'aggiornamento delle VM.

Risoluzione dei problemi delle VM GPU tramite NVIDIA DCGM

NVIDIA Data Center GPU Manager (DCGM) è una suite di strumenti per la gestione e il monitoraggio delle GPU per data center NVIDIA in ambienti cluster.

Se vuoi utilizzare DCGM per risolvere i problemi nel tuo ambiente GPU, completa i seguenti passaggi:

  • Assicurati di utilizzare il driver NVIDIA consigliato più recente per il modello di GPU collegato alla tua VM. Per rivedere le versioni dei driver, consulta Versioni consigliate dei driver NVIDIA.
  • Verifica di aver installato l'ultima versione di DCGM. Per installare l'ultima versione, consulta Installazione di DCGM.

Diagnostica dei problemi

Quando esegui un comando di diagnostica per dcgmi, i problemi segnalati dallo strumento di diagnostica includono i passaggi successivi per agire e risolvere il problema. L'esempio riportato di seguito mostra l'output su cui agire del comando 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
                  }
               ]
            }
  .........

Dallo snippet di output precedente, puoi vedere che GPU 0 ha ritiri di pagina in sospeso causati da un errore che non può essere corretto. L'output ha fornito il error_id univoco e consigli per eseguire il debug del problema. Per questo output di esempio, ti consigliamo di scaricare la GPU e riavviare la VM. Nella maggior parte dei casi, seguire le istruzioni riportate in questa sezione dell'output può contribuire a risolvere il problema.

Risoluzione dei problemi di prestazioni della GPU per le VM A3

La serie di macchine A3 è disponibile con GPU NVIDIA H200 o H100 collegate. Questa serie include A3 Ultra (H200), A3 Mega (H100), A3 High (H100), e A3 Edge (H100) tipi di macchine.

Identificare un nodo difettoso

I job di addestramento o benchmark su larga scala in un cluster GPU multi-nodo possono smettere di rispondere o avere prestazioni scadenti. Questo si verifica spesso perché uno o più nodi hanno prestazioni inferiori e rallentano l'intera operazione. Questa sezione descrive come identificare un nodo o una macchina host difettosi eseguendo un test di benchmark NCCL o analizzando i log NCCL.

Eseguire il test di benchmark NCCL

Per identificare il gruppo di nodi che causa l'errore, testa sistematicamente i sottoinsiemi del cluster utilizzando i benchmark NCCL come all_reduce_perf.

  1. Per identificare i nodi, raggruppali in insiemi logici, ad esempio, partizioni in Slurm.
  2. Per creare i file host, crea un file host separato per ogni nodo, elencando i nomi host e il numero di GPU per nodo. Il numero di slot che specifichi dipende dal numero di GPU del tipo di VM A3. Ad esempio, a3-highgpu-8g VM hanno 8 GPU, quindi devi specificare slots=8.
  3. Per eseguire i benchmark, esegui il all_reduce_perf benchmark su ogni nodo singolarmente.
    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
              

    Sostituisci quanto segue:

    • HOSTFILE_NAME: il nome del file host che contiene l'elenco dei nodi e il numero di GPU per nodo per il nodo.
    • TOTAL_PROCESSES: il numero totale di processi MPI da avviare su tutti gli host del nodo.
    • NUM_GPUS_PER_NODE: il numero di GPU per nodo. Per tutti i tipi di macchine A3, questo valore è 8.
  4. Per analizzare i risultati, se un job si blocca o mostra una larghezza di banda del bus significativamente inferiore (busbw) su un determinato nodo, è probabile che il nodo sia difettoso.
  5. Per suddividere, se un nodo è difettoso, dividi il file host a metà e ripeti il test per restringere la ricerca binaria finché non individui il singolo nodo che non funziona correttamente.

Analizzare i log NCCL

Se il metodo di benchmark non individua un nodo, analizza i log NCCL dettagliati.

  1. Per attivare la registrazione di debug, imposta le seguenti variabili di ambiente nella sessione della shell in cui prevedi di eseguire il workload:
    export NCCL_DEBUG=INFO
            export NCCL_DEBUG_SUBSYS=INIT,NET,COLL
            export NCCL_DEBUG_FILE="LOG_DIRECTORY/nccl_log.%h.%p"
            

    Sostituisci LOG_DIRECTORY con la directory in cui vuoi archiviare i log.

    L'impostazione di NCCL_DEBUG_FILE con %h e %p crea file di log univoci, non interlacciati per ogni processo.

    Se esegui un workload multi-nodo utilizzando mpirun, devi propagare queste variabili a tutti i nodi utilizzando il flag -x. Ad esempio:

    mpirun -x NCCL_DEBUG -x NCCL_DEBUG_SUBSYS -x NCCL_DEBUG_FILE ...
              
  2. Per trovare il primo errore, utilizza il seguente comando per trovare gli eventi di timeout o di errore più recenti in tutti i file di log:
    grep "NCCL WARN.*NET/FasTrak" LOG_DIRECTORY/* | sed 's/.*NET\/FasTrak\(.*\)/\1/g' \
      | sort | head -n 20
              

    Sostituisci LOG_DIRECTORY con la directory in cui sono archiviati i log.

  3. Per contare le operazioni collettive, un nodo straggler completa meno operazioni collettive operazioni. Conta le voci "opCount" per i ranghi sospetti:
    grep "opCount" LOG_DIRECTORY/nccl_log.HOSTNAME.PID | wc -l
              

    Sostituisci quanto segue:

    • LOG_DIRECTORY: la directory in cui sono archiviati i log
    • HOSTNAME: il nome host del nodo
    • PID: l'ID processo del processo NCCL
  4. Per raccogliere più dati di logging prima che un job venga interrotto, aumenta temporaneamente il timeout di trasferimento dei dati:
    export NCCL_FASTRAK_DATA_TRANSFER_TIMEOUT_MS=3600000
            

Monitorare la limitazione termica della GPU

Le VM della serie A3 possono subire un degrado delle prestazioni se raggiungono costantemente temperature superiori a 87 °C sotto carico. Per verificare la limitazione termica della GPU nei nodi di un cluster, utilizza nvidia-smi o dcgmi.

Utilizzo di nvidia-smi

Per controllare la temperatura attuale e lo stato di limitazione di tutte le GPU su un nodo, esegui il seguente comando:

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

Nell'output, un valore Active nella colonna clocks_throttle_reasons.hw_slowdown indica che la GPU è limitata a causa delle temperature elevate.

Utilizzo di dcgmi

La suite di diagnostica NVIDIA Data Center GPU Manager (DCGM) include controlli per le violazioni termiche. Per eseguire una diagnostica di livello 1, esegui il seguente comando:

dcgmi diag -r 1

Un risultato Warn o Fail nella sezione Thermal indica che si è verificata una violazione termica durante il test. Se una violazione termica è accompagnata da limitazione della frequenza di clock, è probabile che la GPU si stia surriscaldando e richieda ulteriori indagini.

Aprire una richiesta di assistenza

Se non riesci a risolvere i problemi seguendo le indicazioni riportate in questa pagina, raccogli le seguenti informazioni e apri una richiesta di assistenza:

  • ID progetto e un elenco di tutti i nomi o ID delle istanze nel cluster.
  • Elenco dei nodi sospetti identificati tramite la risoluzione dei problemi.
  • Log NCCL completi e non interlacciati con le impostazioni di debug attivate.
  • Output dei controlli di integrità dell'hardware (dcgmi, nvidia-smi).
  • Comando di benchmark o workload esatto che non riesce.
  • File di log pertinenti , come il motore host e i log di diagnostica. Per raccoglierli, esegui gather-dcgm-logs.sh, che si trova in /usr/local/dcgm/scripts nelle installazioni predefinite.
  • Segnalazione di bug NVIDIA. Esegui nvidia-bug-report.sh. Per le GPU Blackwell, segui Generare la segnalazione di bug NVIDIA per le GPU Blackwell.
  • Dettagli su eventuali modifiche recenti apportate al tuo ambiente precedenti all'errore.

Esaminare i messaggi Xid

Dopo aver creato una VM con GPU collegate, devi installare i driver di dispositivo NVIDIA sulle VM GPU per consentire alle applicazioni di accedere alle GPU. Tuttavia, a volte questi driver restituiscono messaggi di errore.

Un messaggio Xid è una segnalazione di errore del driver NVIDIA stampato nel log del kernel o nel log eventi del sistema operativo della VM Linux. Questi messaggi vengono inseriti nel file /var/log/messages.

Per ulteriori informazioni sui messaggi Xid, incluse le potenziali cause, consulta la documentazione NVIDIA.

La sezione seguente fornisce indicazioni per la gestione di alcuni messaggi Xid raggruppati per i tipi più comuni: errori di memoria GPU, errori del processore di sistema GPU (GSP) ed errori di accesso alla memoria illegale.

Errori di memoria GPU

La memoria GPU è la memoria disponibile su una GPU che può essere utilizzata per l'archiviazione temporanea dei dati. La memoria della GPU è protetta con il codice di correzione degli errori (ECC), che rileva e corregge gli errori a singolo bit (SBE) e rileva e segnala gli errori a doppio bit (DBE).

Prima del rilascio delle GPU NVIDIA A100, era supportato il ritiro delle pagine dinamiche. Per le versioni delle GPU NVIDIA A100 e successive (ad esempio NVIDIA H100), viene introdotto il recupero degli errori di rimappatura delle righe. ECC è attivo per impostazione predefinita. Google consiglia vivamente di mantenere attiva l'opzione ECC.

Di seguito sono riportati gli errori comuni relativi alla memoria della GPU e le relative soluzioni suggerite.

Messaggio di errore Xid Risoluzione
Xid 48: Double Bit ECC
  1. Interrompi i workload.
  2. Elimina e ricrea la VM. Se l'errore persiste, invia una richiesta all'assistenza clienti Google Cloud .
Xid 63: ECC page retirement or row remapping recording event
  1. Interrompi i workload.
  2. Ripristina le GPU.
Xid 64: ECC page retirement or row remapper recording failure

Il messaggio contiene le seguenti informazioni:

Xid 64: All reserved rows for bank are remapped
  1. Interrompi i workload.
  2. Elimina e ricrea la VM. Se l'errore persiste, invia una richiesta all'assistenza clienti Google Cloud .

Se ricevi almeno due dei seguenti messaggi Xid contemporaneamente:

  • Xid 48
  • Xid 63
  • Xid 64

Il messaggio contiene le seguenti informazioni:

Xid XX: row remap pending
  1. Interrompi i workload.
  2. Ripristina le GPU. Il ripristino della GPU consente di completare la procedura di rimappatura delle righe e di ritiro delle pagine e permette inoltre di riparare la GPU.
Xid 92: High single-bit ECC error rate Questo messaggio Xid viene restituito dopo che il driver della GPU ha corretto un errore che poteva essere corretto e non dovrebbe influire sui tuoi workload. Questo messaggio Xid è solo a scopo informativo. Non è richiesto alcun intervento.
Xid 94: Contained ECC error
  1. Interrompi i workload.
  2. Ripristina le GPU.
Xid 95: Uncontained ECC error
  1. Interrompi i workload.
  2. Ripristina le GPU.

Errori GSP

Un processore di sistema GPU (GSP) è un microcontrollore che funziona sulle GPU e gestisce alcune delle funzioni di gestione dell'hardware a basso livello.

Messaggio di errore Xid Risoluzione
Xid 119: GSP RPC timeout
  1. Interrompi i workload.
  2. Elimina e ricrea la VM. Se l'errore persiste, raccogli la segnalazione di bug di NVIDIA e invia una richiesta all'assistenza clienti Cloud Customer Care.
Xid 120: GSP error

Errori di accesso alla memoria illegale

I seguenti Xid vengono restituiti quando le applicazioni presentano problemi di accesso alla memoria illegale:

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

Gli errori di accesso alla memoria illegale sono in genere causati dal tentativo dei workload di accedere alla memoria già liberata o fuori intervallo. Ciò può essere causato da problemi come il dereferenziamento di un puntatore non valido o da un array fuori intervallo.

Per risolvere il problema, devi eseguire il debug dell'applicazione. Per eseguire il debug dell'applicazione, puoi utilizzare cuda-memcheck e CUDA-GDB.

In alcuni casi molto rari, il degrado dell'hardware potrebbe causare la restituzione di errori di accesso alla memoria illegale. Per identificare se il problema riguarda l'hardware, utilizza NVIDIA Data Center GPU Manager (DCGM). Puoi eseguire dcgmi diag -r 3 o dcgmi diag -r 4 per eseguire diversi livelli di copertura e durata del test. Se identifichi che il problema riguarda l'hardware, invia una richiesta all'assistenza clienti Cloud Customer Care.

Altri messaggi di errore Xid comuni

Messaggio di errore Xid Risoluzione
Xid 74: NVLINK error
  1. Interrompi i workload.
  2. Ripristina le GPU.
Xid 79: GPU has fallen off the bus

Ciò significa che il driver non è in grado di comunicare con la GPU.

Riavvia la VM.
Xid 149 che menziona 0x02a, come il seguente esempio:
Xid (PCI:0000:c0:00): 149,NETIR_LINK_EVT Fatal XC0 i0 Link 04 (0x02a485c6 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000)

Indica un problema noto che interessa il firmware delle GPU NVIDIA B200.

  1. Interrompi i workload.
  2. Ripristina le GPU.

Ripristina le GPU

Per alcuni problemi potrebbe essere necessario ripristinare le GPU. Per ripristinare le GPU, completa i seguenti passaggi:

  • Per le VM N1, G2 e A2, riavvia la VM.
  • Per le VM G4 con meno di una GPU collegata, elimina e ricrea la VM.
  • Per le VM A3 e A4, esegui sudo nvidia-smi --gpu-reset.
    • Per la maggior parte delle VM Linux, l'eseguibile nvidia-smi si trova nella directory /var/lib/nvidia/bin.
    • Per i nodi GKE, l'eseguibile nvidia-smi si trova nella directory /home/kubernetes/bin/nvidia.
    • Se utilizzi i nodi GKE, puoi utilizzare lo strumento gpu-reset-tool per automatizzare il ripristino di tutte le GPU su un nodo. Questo strumento richiede solo di specificare il nome del nodo di destinazione.

In alternativa, le GPU vengono ripristinate anche quando ripristini una VM o riavvii una VM.

Se gli errori persistono dopo il ripristino della GPU, devi eliminare e ricreare la VM.

Se l'errore persiste dopo l'eliminazione e la successiva creazione, invia una richiesta all'assistenza clienti Google Cloud per spostare la VM nella fase di riparazione.

Passaggi successivi

Esamina i tipi di macchina GPU.