Questa guida descrive come diagnosticare e risolvere i problemi comuni relativi alle VM Compute Engine con GPU collegate, inclusi errori hardware e colli di bottiglia delle prestazioni.
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.
Per utilizzare DCGM per risolvere i problemi nel tuo ambiente GPU, completa quanto segue:
- 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.
Risolvi i 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 i tipi di macchine A3 Ultra (H200), A3 Mega (H100), A3 High (H100) e A3 Edge (H100).
Identificare un nodo difettoso
I job di addestramento o benchmark su larga scala in un cluster GPU multinodo possono smettere di rispondere o avere prestazioni scarse. Ciò si verifica spesso perché uno o più nodi non funzionano correttamente 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.
Esegui il test benchmark NCCL
Per identificare il gruppo di nodi che causa l'errore, testa sistematicamente
sottoinsiemi del cluster utilizzando benchmark NCCL come
all_reduce_perf.
- Per identificare i nodi, raggruppali in set logici, ad esempio partizioni in Slurm.
- Per creare i file host, crea un file host separato per ogni insieme di nodi, 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,
le VM
a3-highgpu-8ghanno 8 GPU, quindi devi specificareslots=8. - Per eseguire i benchmark, esegui il benchmark
all_reduce_perfsu ogni nodeset 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_NODESostituisci quanto segue:
HOSTFILE_NAME: il nome del file host che contiene l'elenco dei nodi e il numero di GPU per nodo per il set di nodi.TOTAL_PROCESSES: il numero totale di processi MPI da avviare su tutti gli host nel set di nodi.NUM_GPUS_PER_NODE: il numero di GPU per nodo. Per tutti i tipi di macchine A3, questo valore è8.
- Per analizzare i risultati, se un job si blocca o mostra una larghezza di banda
del bus (
busbw) notevolmente inferiore su un particolare set di nodi, è probabile che il set sia difettoso. - Per eseguire una suddivisione, se un insieme di nodi è difettoso, dividi a metà il relativo file host 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 benchmarking non individua un nodo, analizza i log NCCL dettagliati.
- Per attivare il logging 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
L'impostazione diLOG_DIRECTORYcon la directory in cui vuoi archiviare i log.NCCL_DEBUG_FILEcon%he%pcrea file di log univoci e non interleaved per ogni processo.Se esegui un workload multi-nodo utilizzando
mpirun, propaga queste variabili a tutti i nodi utilizzando il flag-x. Ad esempio:mpirun -x NCCL_DEBUG -x NCCL_DEBUG_SUBSYS -x NCCL_DEBUG_FILE ... - Per trovare il primo errore, utilizza il seguente comando per trovare gli eventi di timeout o errore meno recenti in tutti i file di log:
grep "NCCL WARN.*NET/FasTrak" LOG_DIRECTORY/* | sed 's/.*NET\/FasTrak\(.*\)/\1/g' \ | sort | head -n 20Sostituisci
LOG_DIRECTORYcon la directory in cui sono archiviati i log. - Per conteggiare le operazioni collettive, un nodo ritardatario completa meno operazioni collettive. Conteggio di
"opCount"voci per i ranghi sospetti:grep "opCount" LOG_DIRECTORY/nccl_log.HOSTNAME.PID | wc -lSostituisci quanto segue:
LOG_DIRECTORY: la directory in cui sono archiviati i logHOSTNAME: il nome host del nodoPID: l'ID processo del processo NCCL
- Per raccogliere più dati di logging prima dell'interruzione di un job,
aumenta temporaneamente il timeout del trasferimento dei dati:
export NCCL_FASTRAK_DATA_TRANSFER_TIMEOUT_MS=3600000
Monitora la limitazione termica della GPU
Le VM della serie A3 possono subire un calo 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 e lo stato di throttling attuali di tutte le GPU su un nodo, esegui questo comando:
nvidia-smi --query-gpu=timestamp,name,pci.bus_id,temperature.gpu,clocks_throttle_reasons.hw_slowdown --format=csv
Nell'output, un valore di 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 violazioni termiche. Per eseguire una diagnostica di livello 1, esegui questo 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
dalla limitazione della frequenza di clock, è probabile che la GPU si stia surriscaldando e richieda ulteriori
accertamenti.
Errori 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.
In che modo Google gestisce gli errori Xid
Google utilizza controlli di integrità passivi per valutare i sistemi GPU. Se è indicato un intervento di sostituzione dell'hardware, Google avvia automaticamente la manutenzione di emergenza. Google rileva gli errori Xid e invia in modo proattivo le macchine alla riparazione quando i codici di errore indicano un'alta probabilità di guasto hardware, ad esempio Xid 74, 79 e 140. Per alcuni codici Xid, poiché possono essere causati da problemi software o hardware, Google utilizza la corrispondenza di pattern per attivare le riparazioni, quindi non ogni occorrenza comporta una riparazione automatica.
Tipi di errori Xid
L'elenco seguente descrive le tre categorie principali di errori Xid e le azioni di recupero consigliate:
Errori dell'applicazione:indicano problemi all'interno del codice dell'applicazione. Gli errori dell'applicazione includono Xid come 13, 31, 94, 95 e 137, che indicano vari tipi di violazione dell'accesso alla memoria, simili a un errore di segmentazione. Questi non indicano un errore ECC. Per risolvere questi errori, NVIDIA consiglia di utilizzare uno dei seguenti approcci di debug:
- Debug diretto:esegui l'applicazione direttamente in cuda-gdb o esegui lo strumento Compute Sanitizer memcheck.
- Debug post-eccezione:esegui l'applicazione con
CUDA_DEVICE_WAITS_ON_EXCEPTION=1. Quando si verifica un'eccezione, il driver della GPU blocca lo stato dell'applicazione senza uscire, in modo da poter collegare un debugger in un secondo momento (cuda-gdb -p <PID>) per esaminare l'analisi dello stack live.
Errori del driver:indicano problemi causati dal driver della GPU NVIDIA. Per risolvere questi errori, assicurati di utilizzare l'ultima versione del driver NVIDIA. Google monitora questi errori e collabora con NVIDIA per le correzioni dei driver.
Errori recuperabili del firmware o dell'hardware: questi errori indicano errori del firmware o dell'hardware che consentono il ripristino senza sostituzione dell'hardware. Per risolvere questi errori, applica misure di ripristino manuale come il ripristino della GPU o il riavvio dell'istanza. Gli errori recuperabili del firmware o dell'hardware includono gli errori del codice di correzione degli errori (ECC) (applicabili agli XID come XID 48, 63 e 64) che indicano varie fasi di rilevamento e mitigazione degli errori ECC. Per saperne di più sul ritiro delle pagine e sulla mitigazione degli errori ECC, consulta le domande frequenti sul ritiro dinamico delle pagine di NVIDIA.
Esaminare i messaggi Xid
Per diagnosticare rapidamente il motivo per cui un workload GPU non è riuscito, ha smesso di rispondere o
ha subito un calo delle prestazioni, controlla i log del kernel dell'istanza (dmesg
o /var/log/kern.log) per i codici di errore numerici Xid di NVIDIA.
L'esame delle tabelle degli errori Xid nelle seguenti sottosezioni ti aiuta immediatamente:
- Individua la causa principale: determina se l'errore è causato da un bug dell'applicazione (ad esempio accesso illegale alla memoria), da un conflitto di driver o da un guasto hardware fisico (ad esempio errori di memoria ECC a doppio bit).
- Determina la proprietà operativa:controlla quali misure di ripristino manuale immediate devi applicare, ad esempio il ripristino delle GPU, il riavvio delle VM o l'esecuzione di debugger, rispetto a quali azioni di riparazione automatica e sostituzione dell'hardware Google gestisce attivamente sull'host.
- Esegui i passaggi di ripristino corretti: evita procedure di risoluzione dei problemi non necessarie e sappi con precisione quando il ripristino manuale è sufficiente rispetto a quando devi segnalare l'host come difettoso. A volte, il recupero manuale non è
sufficiente, ad esempio se l'origine dell'errore si trova nella cache della GPU (SRAM),
che non può essere rimappata, indicata da
Xid 48conSRAM Threshold Exceeded=Yes, o se la GPU ha esaurito la banca di rimappatura, indicata daXid 64: All reserved rows for bank are remapped. In questi casi, Google rileva che la GPU è idonea alla sostituzione hardware e invia proattivamente la macchina in riparazione. Se i tuoi workload riscontrano errori ricorrenti o se osservi guasti alla memoria ripetuti, puoi segnalare l'host difettoso per avviare la riparazione o la sostituzione automatica. Per GKE, consulta Come segnalare host difettosi in GKE.
Gestione Xid
Le sezioni seguenti raggruppano i messaggi di errore Xid comuni per categoria tecnica insieme alle relative soluzioni e responsabilità autorevoli:
- Errori di memoria della GPU (Xid
48,63,64,92,94,95) - Errori del processore di sistema della GPU (GSP) (Xid
119,120) - Errori di accesso illegale alla memoria (Xid
13,31,137) - Altri messaggi di errore Xid comuni (Xid
74,79,109,149)
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 non correggibili (DBE).
Questi errori di memoria si verificano nel corso della vita di una GPU. 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 per gli errori HBM (DRAM). ECC è attivo per impostazione predefinita e Google consiglia vivamente di mantenerlo attivo.
La seguente tabella elenca gli errori comuni relativi alla memoria della GPU e le relative soluzioni suggerite:
| Messaggio di errore Xid | Azione del cliente | Azione Google |
|---|---|---|
Xid 48: Double Bit ECC
È stato rilevato un errore di memoria a doppio bit (non correggibile) da ECC. Questo errore interrompe sempre il workload in esecuzione e genera Xid 48. |
|
Google monitora quando la GPU è idonea alla sostituzione hardware, ad esempio se la banca di rimappatura HBM è esaurita o se la GPU supera la soglia di errore SRAM durante il ciclo di vita e invia in modo proattivo la macchina in riparazione per sostituire la GPU. |
Xid 63: ECC page retirement or row remapping recording
event
Indica che è stato registrato un evento di ritiro di pagina dinamica o di rimappatura di riga a causa di un errore di memoria. |
|
Google monitora le soglie di errore e invia la macchina in riparazione quando la GPU richiede riparazione o sostituzione fisica. |
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
|
|
Quando il banco di rimappatura è esaurito
( |
Se ricevi almeno due dei seguenti messaggi Xid contemporaneamente:
Il messaggio contiene le seguenti informazioni: Xid XX: row remap pending
|
|
Google invia la macchina in riparazione se la banca di rimappatura è esaurita o quando la GPU richiede riparazione o sostituzione fisica. |
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. |
Nessuno |
Xid 94: Contained error
Indica se si è verificato un errore della GPU e se l'errore è contenuto in una singola applicazione. Da solo, Xid 94 non indica la causa principale dell'errore; deve essere interpretato insieme ad altri errori Xid concomitanti per determinare la causa fondamentale. |
|
Nessuno |
Xid 95: Uncontained error
Indica che si è verificato un errore della GPU e che non è stato contenuto in una singola applicazione. Da solo, Xid 95 non indica la causa principale dell'errore; deve essere interpretato insieme ad altri errori Xid concomitanti per determinare la causa fondamentale. |
|
Nessuno |
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 | Azione del cliente | Azione Google |
|---|---|---|
Xid 119: GSP RPC timeout |
|
Nessuno. Se l'errore persiste e invii una richiesta di assistenza, Google esamina lo stato dell'hardware o del driver tramite il flusso di lavoro dell'assistenza. |
Xid 120: GSP error |
Errori di accesso alla memoria illegale
I seguenti Xid vengono restituiti quando le applicazioni presentano errori di accesso alla memoria illegale:
| Messaggio di errore Xid | Azione del cliente | Azione Google |
|---|---|---|
|
È stata rilevata una violazione dell'accesso alla memoria, analoga a un errore di segmentazione. Questi errori in genere indicano un bug dell'applicazione in cui si accede alla memoria della GPU fuori dai limiti o su buffer liberati come il dereferenziamento di un puntatore non valido o di un array fuori intervallo. Questi non rappresentano errori ECC, a meno che non sia presente anche Xid 48. |
Per risolvere il problema, esegui il debug degli errori di accesso alla memoria nella tua applicazione. Puoi utilizzare cuda-gdb, Compute Sanitizer o cuda-memcheck. Per ulteriori dettagli, consulta la documentazione NVIDIA Xid. |
Nessuno. In rari casi in cui il degrado dell'hardware potrebbe causare errori di accesso alla memoria segnalati erroneamente, puoi utilizzare NVIDIA Data Center GPU Manager (DCGM) per eseguire |
Altri messaggi di errore Xid comuni
| Messaggio di errore Xid | Azione del cliente | Azione Google |
|---|---|---|
Xid 74: NVLINK error |
|
Nessuno |
Xid 79: GPU has fallen off the bus
Ciò significa che il driver non è in grado di comunicare con la GPU perché un problema hardware ha causato la scomparsa della GPU dal bus PCI. |
Per recuperare i workload, utilizza uno dei seguenti approcci, a seconda che la manutenzione di emergenza sia abilitata per il tuo progetto:
|
Google rileva che la GPU non è più connessa al bus PCI e invia la macchina in riparazione. |
Xid 109: Context switch timeout
Xid 109 è un errore generico segnalato dal driver della GPU NVIDIA, generato quando un'istanza GPU non riesce a eseguire l'interruzione o il cambio di attività entro il periodo di timeout previsto. Google ha una lunga storia di indagini sul problema Xid 109 con NVIDIA e le cause note dovute a bug dei driver sono state corrette negli ultimi driver. L'ID transazione 109 non è causato da un problema hardware. |
|
Nessuno |
Xid 149 che menziona 0x02a, ad esempio
il seguente:
Ciò indica un problema noto che interessa il firmware delle GPU NVIDIA B200. |
|
Nessuno |
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, A2 e G4 con una o più GPU collegate, riavvia la VM.
- Per le VM G4 con GPU frazionarie (meno di una GPU collegata), completa i seguenti passaggi:
- Per le istanze A3, A4, A4X e A4X Max, esegui
sudo nvidia-smi --gpu-reset.- Per la maggior parte delle VM Linux, l'eseguibile
nvidia-smisi trova nella directory/var/lib/nvidia/bin. - Per i nodi GKE, l'eseguibile
nvidia-smisi trova nella directory/home/kubernetes/bin/nvidia.
- Per la maggior parte delle VM Linux, l'eseguibile
- Per le istanze A3, A4, A4X e A4X Max sui nodi GKE, puoi anche utilizzare 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 reimpostate anche ogni volta che reimposti una VM o arresti e riavvii una VM. Per ulteriori informazioni sugli stati del ciclo di vita delle VM e sulle differenze tra le azioni di ripristino delle VM, consulta Ciclo di vita delle istanze Compute Engine e Sospendi, arresta o reimposta le istanze Compute Engine.
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 del progetto in cui si trovano le istanze interessate.
- Elenco di tutti i nomi o ID delle istanze nel cluster.
- Elenco dei nodi sospetti identificati durante la risoluzione dei problemi.
- Log NCCL completi e non interleaved con le impostazioni di debug attive.
- Output dei controlli di integrità hardware (
dcgmi,nvidia-smi). - Benchmark esatto o comando del workload che non funziona.
- 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/scriptsnelle installazioni predefinite. - Segnalazione di bug NVIDIA. Esegui
nvidia-bug-report.sh. Per le GPU Blackwell, segui le istruzioni riportate in Generare un report di bug NVIDIA per le GPU Blackwell. - Dettagli su eventuali modifiche recenti apportate al tuo ambiente precedenti all'errore.
Passaggi successivi
Esamina i tipi di macchina GPU.