Prepárate para los eventos de mantenimiento

Las VMs de TPU son instancias de VMs de Compute Engine con hardware de TPU adjunto. Las VMs de Compute Engine están sujetas a los eventos de mantenimiento de VM de Compute Engine. Cada TPU está conectada a una VM de Compute Engine, por lo que usar más TPU (por ejemplo, en un pod de TPU) aumenta la probabilidad de que una de tus VMs encuentre un evento de mantenimiento.

En este documento, se analizan enfoques para controlar eventos de mantenimiento de trabajos de entrenamiento de larga duración en Cloud TPU. Para obtener información sobre cómo controlar los eventos de mantenimiento de las TPU en Google Kubernetes Engine (GKE), consulta Administra la interrupción de nodos de GKE para GPUs y TPUs.

Cómo ver las notificaciones de los próximos mantenimientos

Puedes ver las notificaciones de los próximos eventos de mantenimiento del host. Si supervisas los próximos períodos de mantenimiento de tu instancia, puedes preparar de forma proactiva tus cargas de trabajo para que manejen el próximo mantenimiento con interrupciones mínimas. Para obtener más información, consulta Cómo ver las notificaciones de mantenimiento.

Usa puntos de control para una recuperación rápida de los eventos de mantenimiento

Los puntos de control son clave para las recuperaciones cortas de los eventos de mantenimiento y deben guardarse con frecuencia. Una buena regla general es guardar puntos de control aproximadamente cada hora. Si no guardas puntos de control con la frecuencia suficiente, corres el riesgo de perder mucho progreso del entrenamiento debido a eventos de mantenimiento o a otras interrupciones del entrenamiento.

.

En general, los puntos de control se refieren a todos los parámetros guardados que se usan en el entrenamiento, como los pesos de los modelos. El tiempo que lleva guardar un punto de control puede variar desde segundos hasta minutos.

Aunque las TPUs pueden recuperarse automáticamente de la mayoría de los eventos de mantenimiento y los trabajos de entrenamiento continúan sin intervención manual, puede haber casos extremos en los que el trabajo no se reinicie y continúe de forma automática. Cuando esto sucede, debes borrar y volver a crear los recursos de TPU y reiniciar el trabajo de entrenamiento desde un punto de control guardado. Para obtener información sobre cómo detectar y recuperarse ante fallas automáticas, consulta Detecta y recupera ante fallas de TPU.

Existen diferentes mecanismos para guardar y cargar puntos de control para cada framework de AA. En general, los modelos compatibles de Cloud TPU tienen puntos de control integrados. Para obtener más información sobre los puntos de control, consulta: TensorFlow 2.x, PyTorch o JAX/flax.

Usa Autocheckpoint

Puedes usar la función Autocheckpoint para preservar el progreso del entrenamiento. Para ello, configura tu código para que guarde un punto de control no programado cuando se produzca un evento de mantenimiento. Para obtener más información sobre el punto de control automático, consulta Punto de control automático de Cloud TPU.

Vuelve a intentar ejecutar la secuencia de comandos de entrenamiento

La secuencia de comandos de entrenamiento puede detenerse como resultado de un evento de interrupción. Puedes usar una secuencia de comandos bash para reintentar la secuencia de comandos de entrenamiento de forma continua hasta que se complete. Por ejemplo:

while ! gcloud compute tpus tpu-vm ssh ${TPU_NAME} --command "python3 TRAINING_COMMAND"; do sleep 1; done

Cada reintento debe continuar desde el último punto de control, por lo que las secuencias de comandos de reintento siempre deben usarse junto con los puntos de control.

Las canalizaciones de entrenamiento listas para la producción deben usar un sistema de administración de recursos, como Google Kubernetes Engine (GKE). Para obtener más información sobre el uso de Google Kubernetes Engine con VMs de TPU, consulta Cómo implementar cargas de trabajo de TPU.

Detecta y recupera fallas de la TPU

Cuando una TPU no se recupera de un evento de mantenimiento, puedes usar una secuencia de comandos de recuperación para detectar el estado de la TPU y volver a crearla. Para ver un ejemplo de una secuencia de comandos de recuperación, consulta retry.sh. Si falla el proceso que ejecuta la secuencia de comandos de entrenamiento, puedes modificar la secuencia de comandos de recuperación para volver a ejecutarla.

Para obtener información sobre cómo borrar y volver a crear una TPU de forma manual, consulta Administra recursos de TPU.

Usa la programación de colecciones

Cloud TPU tiene el concepto de programación de colecciones, que ofrece dos tipos de colecciones que los clientes pueden usar para admitir cargas de trabajo de entrenamiento o de entrega y de inferencia. Cuando usas esta función para implementar tus instancias de Cloud TPU, Google Cloud aplica programas de mantenimiento únicos que coinciden mejor con la aplicación. Puedes esperar los siguientes comportamientos de cada tipo de colección:

  • Entrenamiento (predeterminado): Este tipo de colección es beneficioso para las cargas de trabajo de entrenamiento típicas en las que necesitas un tiempo de inactividad mínimo en todas las instancias y interrupciones inesperadas limitadas para restablecer rápidamente tu servicio durante eventos de mantenimiento. El tipo de colección de entrenamiento proporciona programación y ejecución en paralelo de eventos de mantenimiento para un grupo de instancias.

  • Publicación (disponible con --workload-type=AVAILABILITY_OPTIMIZED): Este tipo de recopilación es beneficioso para la mayoría de las cargas de trabajo de publicación o inferencia en las que necesitas un tiempo de inactividad mínimo en un subconjunto de instancias (réplicas) para garantizar la continuidad del servicio, incluso durante eventos de mantenimiento. El tipo de recopilación de publicación proporciona una programación y una ejecución escalonadas de eventos de mantenimiento para un grupo de instancias. Especificar una colección de publicación solo se admite en TPU v6e.

Para obtener más información sobre la programación de colecciones, consulta Programación de colecciones.

Detecta eventos de mantenimiento

Puedes detectar si se produjo un evento de mantenimiento en tu TPU y cuándo con el siguiente comando gcloud compute tpus tpu-vm describe:

$ gcloud compute tpus tpu-vm describe tpu-name --zone=zone  | grep 'health'

El resultado de este comando muestra el estado actual de la TPU y una descripción del evento de mantenimiento más reciente. El resultado debería ser similar al siguiente:

health: HEALTHY
healthDescription: The TPU had a maintenance event at 2022-01-26T03:44:36.265703305Z

Cómo ver registros de eventos de mantenimiento

Puedes ver los registros históricos de los eventos de mantenimiento en tu TPU en los registros de auditoría de eventos del sistema.

  1. En el menú de navegación de la consola de Google Cloud, ve a la página Explorador de registros:

    Ir al Explorador de registros

  2. Usa la siguiente consulta de búsqueda para ver las TPU que se finalizaron o reiniciaron:

    "tpu.nodes.terminate" OR "tpu.nodes.restart"

    Los resultados muestran registros de las interrupciones y reparaciones de los trabajadores de TPU dentro del período de búsqueda. Los registros incluyen lo siguiente:

    • La fecha y hora del evento
    • Es el tipo de evento.
    • Para los eventos "terminate", el motivo de la finalización en el campo protoPayload.metadata.terminateReason

¿Qué sigue?