Soluciona problemas de VMs con GPU

En esta página, se muestra cómo resolver problemas de las VMs que se ejecutan en Compute Engine y que tienen GPU conectadas.

Si intentas crear una VM con GPU conectadas y recibes errores, revisa Soluciona errores de disponibilidad de recursos y Soluciona problemas de creación y actualización de VMs.

Soluciona problemas de VMs de GPU con NVIDIA DCGM

El administrador de GPU del centro de datos de NVIDIA (DCGM) es un conjunto de herramientas para administrar y supervisar las GPU del centro de datos de NVIDIA en entornos de clústeres.

Si deseas usar DCGM para solucionar problemas en tu entorno de GPU, completa los siguientes pasos:

  • Asegúrate de usar el controlador NVIDIA más reciente recomendado para el modelo de GPU conectado a tu VM. Para revisar las versiones de controlador, consulta Versiones recomendadas de controladores NVIDIA.
  • Asegúrate de haber instalado la versión más reciente de DCGM. Para instalar la última versión, consulta Instalación de DCGM.

Diagnosticar problemas

Cuando ejecutas un comando de diagnóstico dcgmi, los problemas que informa la herramienta de diagnóstico incluyen los siguientes pasos para tomar medidas. En el siguiente ejemplo, se muestra el resultado práctico 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
                  }
               ]
            }
  .........

En el fragmento de resultado anterior, puedes ver que GPU 0 tiene retiradas de páginas pendientes que se deben a un error no recuperable. El resultado proporcionó el error_id único y consejos para depurar el problema. Para este resultado de ejemplo, se recomienda desviar la GPU y reiniciar la VM. En la mayoría de los casos, seguir las instrucciones de esta sección del resultado puede ayudar a resolver el problema.

Soluciona problemas de rendimiento de la GPU en VMs A3

La serie de máquinas A3 está disponible con GPU NVIDIA H200 o H100 conectadas. Esta serie incluye los tipos de máquinas A3 Ultra (H200), A3 Mega (H100), A3 High (H100) y A3 Edge (H100).

Cómo identificar un nodo defectuoso

Los trabajos de entrenamiento o de comparativas a gran escala en un clúster de GPU de varios nodos pueden dejar de responder o tener un rendimiento deficiente. Esto suele ocurrir porque uno o más nodos tienen un rendimiento inferior y ralentizan toda la operación. En esta sección, se describe cómo identificar un nodo o una máquina anfitrión defectuosos ejecutando una prueba de comparativa de NCCL o analizando los registros de NCCL.

Ejecuta la prueba de comparativa de NCCL

Para identificar el grupo de nodos que causa la falla, prueba sistemáticamente subconjuntos de tu clúster con comparativas de NCCL, como all_reduce_perf.

  1. Para identificar tus conjuntos de nodos, agrupa los nodos en conjuntos lógicos, por ejemplo, particiones en Slurm.
  2. Para crear archivos host, crea un archivo host independiente para cada conjunto de nodos, en el que se indiquen los nombres de host y la cantidad de GPUs por nodo. La cantidad de ranuras que especifiques dependerá de la cantidad de GPU de tu tipo de VM A3. Por ejemplo, las VMs a3-highgpu-8g tienen 8 GPUs, por lo que debes especificar slots=8.
  3. Para ejecutar comparativas, ejecuta la comparativa all_reduce_perf en cada conjunto de nodos de forma individual.
    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
              

    Reemplaza lo siguiente:

    • HOSTFILE_NAME: Es el nombre del archivo host que contiene la lista de nodos y la cantidad de GPU por nodo para el conjunto de nodos.
    • TOTAL_PROCESSES: Es la cantidad total de procesos de MPI que se iniciarán en todos los hosts del conjunto de nodos.
    • NUM_GPUS_PER_NODE: es la cantidad de GPU por nodo. Para todos los tipos de máquinas A3, este valor es 8.
  4. Para analizar los resultados, si un trabajo se cuelga o muestra un ancho de banda del bus (busbw) significativamente menor en un conjunto de nodos en particular, es probable que ese conjunto esté defectuoso.
  5. Para subdividir, si un conjunto de nodos es defectuoso, divide su archivo host por la mitad y vuelve a realizar la prueba para reducir la búsqueda binaria hasta que identifiques el nodo individual que no funciona correctamente.

Analiza los registros de NCCL

Si el método de comparativa no identifica un nodo, analiza los registros detallados de NCCL.

  1. Para habilitar el registro de depuración, establece las siguientes variables de entorno en la sesión de shell en la que planeas ejecutar tu carga de trabajo:
    export NCCL_DEBUG=INFO
            export NCCL_DEBUG_SUBSYS=INIT,NET,COLL
            export NCCL_DEBUG_FILE="LOG_DIRECTORY/nccl_log.%h.%p"
            

    Reemplaza LOG_DIRECTORY por el directorio en el que deseas almacenar tus registros.

    Configurar NCCL_DEBUG_FILE con %h y %p crea archivos de registro únicos y no intercalados para cada proceso.

    Si ejecutas una carga de trabajo de varios nodos con mpirun, debes propagar estas variables a todos los nodos con la marca -x. Por ejemplo:

    mpirun -x NCCL_DEBUG -x NCCL_DEBUG_SUBSYS -x NCCL_DEBUG_FILE ...
              
  2. Para encontrar el primer error, usa el siguiente comando para encontrar los primeros eventos de tiempo de espera agotado o de falla en todos los archivos de registro:
    grep "NCCL WARN.*NET/FasTrak" LOG_DIRECTORY/* | sed 's/.*NET\/FasTrak\(.*\)/\1/g' \
      | sort | head -n 20
              

    Reemplaza LOG_DIRECTORY por el directorio en el que se almacenan tus registros.

  3. Para contar las operaciones colectivas, un nodo rezagado completa menos operaciones colectivas. Recuento de entradas "opCount" para los rangos sospechosos:
    grep "opCount" LOG_DIRECTORY/nccl_log.HOSTNAME.PID | wc -l
              

    Reemplaza lo siguiente:

    • LOG_DIRECTORY: Es el directorio en el que se almacenan tus registros.
    • HOSTNAME: Es el nombre de host del nodo.
    • PID: Es el ID del proceso de NCCL.
  4. Para recopilar más datos de registro antes de que se anule un trabajo, aumenta temporalmente el tiempo de espera de transferencia de datos:
    export NCCL_FASTRAK_DATA_TRANSFER_TIMEOUT_MS=3600000
            

Supervisa la regulación térmica de la GPU

Las VMs de la serie A3 pueden experimentar una degradación del rendimiento si alcanzan temperaturas superiores a 87 °C de forma constante bajo carga. Para verificar si hay estrangulamiento térmico de la GPU en los nodos de un clúster, usa nvidia-smi o dcgmi.

Cómo usar nvidia-smi

Para verificar la temperatura actual y el estado de limitación de todas las GPUs en un nodo, ejecuta el siguiente comando:

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

En el resultado, un valor de Active en la columna clocks_throttle_reasons.hw_slowdown indica que la GPU está limitada debido a temperaturas altas.

Uso de dcgmi

El paquete de diagnóstico del administrador de GPU del centro de datos de NVIDIA (DCGM) incluye verificaciones de incumplimientos térmicos. Para ejecutar un diagnóstico de nivel 1, ejecuta el siguiente comando:

dcgmi diag -r 1

Un resultado de Warn o Fail en la sección Thermal indica que se produjo un incumplimiento térmico durante la prueba. Si un incumplimiento térmico se acompaña de una reducción de la velocidad de reloj, es probable que la GPU se esté sobrecalentando y requiera una investigación más detallada.

Abre un caso de asistencia

Si no puedes resolver los problemas con la guía de esta página, recopila la siguiente información y abre un caso de asistencia:

  • ID del proyecto y una lista de todos los nombres o IDs de instancias en el clúster
  • Lista de nodos sospechosos identificados a través de la solución de problemas.
  • Registros de NCCL completos y no intercalados con la configuración de depuración habilitada
  • Resultados de las verificaciones de estado del hardware (dcgmi, nvidia-smi)
  • Comando exacto de comparativa o carga de trabajo que falla.
  • Archivos de registro pertinentes, como los registros de diagnóstico y del motor del host Para recopilarlos, ejecuta gather-dcgm-logs.sh, que se encuentra en /usr/local/dcgm/scripts en las instalaciones predeterminadas.
  • Informe de errores de NVIDIA. Ejecuta nvidia-bug-report.sh. En el caso de las GPU Blackwell, sigue los pasos que se indican en Cómo generar un informe de errores de NVIDIA para las GPU Blackwell.
  • Detalles sobre los cambios recientes que se realizaron en el entorno antes de la falla.

Revisa los mensajes de Xid

Después de crear una VM que tenga GPU conectadas, debes instalar los controladores del dispositivo NVIDIA en tus VMs con GPU para que tus aplicaciones puedan acceder a las GPU. Sin embargo, a veces estos controladores muestran mensajes de error.

Un mensaje Xid es un informe de error del controlador de NVIDIA que se imprime en el registro del kernel del sistema operativo o en el registro de acontecimientos de la VM de Linux. Estos mensajes se colocan en el archivo /var/log/messages.

Para obtener más información sobre los mensajes Xid, incluidas las posibles causas, consulta la documentación de NVIDIA.

En la siguiente sección, se proporciona orientación sobre cómo manejar algunos mensajes Xid agrupados según los tipos más comunes: errores de memoria de GPU, errores de procesador del sistema de GPU (GSP) y errores de acceso no permitido a la memoria.

Errores de memoria de GPU

La memoria de GPU es la memoria disponible en una GPU que se puede usar para el almacenamiento temporal de datos. La memoria de GPU está protegida con el código de corrección de errores, ECC, que detecta y corrige errores de un solo bit (SBE) y detecta y también informa errores de doble bit (DBE).

Antes del lanzamiento de las GPU NVIDIA A100, se admitía la retiro dinámica de páginas. Para las versiones de GPU NVIDIA A100 y posteriores (como NVIDIA H100), se presenta la recuperación de error de reasignación de fila. ECC está habilitado de forma predeterminada. Google recomienda mantener habilitado el ECC.

Los siguientes son errores comunes de memoria de GPU y sus soluciones sugeridas.

Mensaje de error de Xid Solución
Xid 48: Double Bit ECC
  1. Detén tus cargas de trabajo.
  2. Borra y vuelve a crear la VM. Si el error persiste, presenta un caso a Atención al cliente de Cloud.
Xid 63: ECC page retirement or row remapping recording event
  1. Detén tus cargas de trabajo.
  2. Restablece las GPU.
Xid 64: ECC page retirement or row remapper recording failure

Y el mensaje contiene la siguiente información:

Xid 64: All reserved rows for bank are remapped
  1. Detén tus cargas de trabajo.
  2. Borra y vuelve a crear la VM. Si el error persiste, presenta un caso a Atención al cliente de Cloud.

Si obtienes al menos dos de los siguientes mensajes Xid juntos:

  • Xid 48
  • Xid 63
  • Xid 64

Y el mensaje contiene la siguiente información:

Xid XX: row remap pending
  1. Detén tus cargas de trabajo.
  2. Restablece las GPU. Restablecer la GPU permite que la reasignación de filas y el proceso de retiro de página completen y corrijan la GPU.
Xid 92: High single-bit ECC error rate Este mensaje Xid se muestra después de que el controlador de GPU corrige un error corregible y no debería afectar tus cargas de trabajo. Este mensaje Xid solo es informativo. No se requiere ninguna acción.
Xid 94: Contained ECC error
  1. Detén tus cargas de trabajo.
  2. Restablece las GPU.
Xid 95: Uncontained ECC error
  1. Detén tus cargas de trabajo.
  2. Restablece las GPU.

Errores del GSP

Un procesador del sistema de GPU (GSP) es un microcontrolador que se ejecuta en GPU y controla algunas de las funciones de administración de hardware de bajo nivel.

Mensaje de error de Xid Solución
Xid 119: GSP RPC timeout
  1. Detén tus cargas de trabajo.
  2. Borra y vuelve a crear la VM. Si el error persiste, recopila el informe de errores de NVIDIA y presenta un caso a Atención al cliente de Cloud.
Xid 120: GSP error

Errores de acceso no permitido a la memoria

Los siguientes Xids se muestran cuando las aplicaciones tienen problemas de acceso no permitido a la memoria:

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

Los errores de acceso no permitido a la memoria suelen deberse a las cargas de trabajo que intentan acceder a la memoria que ya está liberada o está fuera de los límites. Esto puede deberse a problemas como la desreferencia de un puntero no válido o un arreglo de límites salientes.

Para resolver este problema, debes depurar tu aplicación. Para depurar tu aplicación, puedes usar cuda-memcheck y CUDA-GDB.

En algunos casos muy raros, la degradación de hardware puede provocar errores de acceso no permitido a la memoria. Para identificar si el problema es con tu hardware, usa el administrador de GPU del centro de datos de NVIDIA (DCGM). Puedes ejecutar dcgmi diag -r 3 o dcgmi diag -r 4 para ejecutar diferentes niveles de cobertura y duración de la prueba. Si identificas que el problema está relacionado con el hardware, presenta un caso a Atención al cliente de Cloud.

Otros mensajes de error comunes de Xid

Mensaje de error de Xid Solución
Xid 74: NVLINK error
  1. Detén tus cargas de trabajo.
  2. Restablece las GPU.
Xid 79: GPU has fallen off the bus

Esto significa que el controlador no puede comunicarse con la GPU.

Reinicia la VM.
Xid 149 que menciona 0x02a, como en el siguiente ejemplo:
Xid (PCI:0000:c0:00): 149,NETIR_LINK_EVT Fatal XC0 i0 Link 04 (0x02a485c6 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000)

Esto indica un problema conocido que afecta el firmware de las GPU NVIDIA B200.

  1. Detén tus cargas de trabajo.
  2. Restablece las GPU.

Restablece las GPU

Algunos problemas pueden requerir que restablezcas tus GPU. Para restablecer las GPU, completa los siguientes pasos:

  • Para las VMs N1, G2 y A2, reinicia la VM.
  • En el caso de las VMs G4 que tienen menos de una GPU conectada, borra y vuelve a crear la VM.
  • Para las VMs A3 y A4, ejecuta sudo nvidia-smi --gpu-reset.
    • En la mayoría de las VMs de Linux, el ejecutable nvidia-smi se encuentra en el directorio /var/lib/nvidia/bin.
    • Para los nodos de GKE, el ejecutable nvidia-smi se encuentra en el directorio /home/kubernetes/bin/nvidia.
    • Si usas nodos de GKE, puedes usar la herramienta gpu-reset-tool para automatizar el restablecimiento de todas las GPUs en un nodo. Esta herramienta solo requiere que especifiques el nombre del nodo de destino.

Como alternativa, las GPUs también se restablecen cada vez que restableces una VM o reinicias una VM.

Si los errores persisten después de restablecer la GPU, debes borrar y volver a crear la VM.

Si el error persiste después de una eliminación y una recreación, presenta un caso a Atención al cliente de Cloud para pasar la VM a la etapa de reparación.

¿Qué sigue?

Revisa los tipos de máquinas de GPU.