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 una porción de TPU, aumenta la probabilidad de que una de tus VMs se encuentre con un evento de mantenimiento.

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

Consulta las notificaciones del próximo mantenimiento

Puedes ver las notificaciones de los próximos eventos de mantenimiento del host. Puedes supervisar los próximos períodos de mantenimiento de tu instancia para preparar de forma proactiva tus cargas de trabajo y, así, se genere la menor cantidad de interrupciones posible. Obtén más información en Consulta 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 lo haces con suficiente frecuencia, corres el riesgo de perder mucho progreso del entrenamiento debido a eventos de mantenimiento o alguna otra interrupción.

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

Si bien las TPU pueden recuperarse de forma automática 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 ni siga de forma automática. Cuando esto sucede, debes borrar y volver a crear los recursos TPU, y reiniciar el trabajo de entrenamiento desde un punto de control guardado. Para obtener información sobre cómo detectar fallas de recuperación automática y reponerse de estas, consulta Detecta fallas de TPU y recupérate de estas.

Existen diferentes mecanismos a la hora de guardar y cargar puntos de control para cada framework de AA. En general, los modelos de Cloud TPU compatibles 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 conservar el progreso del entrenamiento. Para ello, configura tu código para que guarde un punto de control no programado cuando ocurra un evento de mantenimiento. Para obtener más información sobre Autocheckpoint, consulta Autocheckpoint de Cloud TPU.

Reintenta la secuencia de comandos de entrenamiento

La secuencia de comandos de entrenamiento podría detenerse como resultado de un evento de interrupción. Puedes usar una secuencia de comandos bash para reintentar completarla de forma continua hasta que finalice. 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 siempre debes usar secuencias de comandos de reintento junto con los puntos de control.

Las canalizaciones de entrenamiento listas para 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 Implementa cargas de trabajo de TPU.

Detecta y recupera fallas de 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 de recuperación para reintentar la secuencia de comandos de entrenamiento.

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

Usa la programación de colección

Cloud TPU tiene el concepto de programación de colección, que ofrece dos tipos de colecciones que los clientes pueden usar para admitir cargas de trabajo de entrenamiento o de inferencia y entrega. Cuando usas esta función para implementar tus instancias de Cloud TPU, Google Cloud aplica los programas de mantenimiento únicos que mejor se adaptan a 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 pocas interrupciones inesperadas para restablecer tu servicio con rapidez durante los eventos de mantenimiento. El tipo de colección de entrenamiento brinda la programación y ejecución paralelas de eventos de mantenimiento para un grupo de instancias.

  • Entrega (disponible con --workload-type=AVAILABILITY_OPTIMIZED): Este tipo de colección es beneficioso para la mayoría de las cargas de trabajo de entrega 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 los eventos de mantenimiento. El tipo de colección de entrega brinda la programación y ejecución escalonadas de eventos de mantenimiento para un grupo de instancias. Especificar una colección de entrega solo se admite en la TPU v6e.

Para obtener más información sobre la programación de colecciones, consulta Programación de colecciones de TPU para las cargas de trabajo de inferencia.

Detecta eventos de mantenimiento

Puedes detectar si se produjo un evento de mantenimiento en tu TPU y cuándo ocurrió 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

Consulta los 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 , dirígete a la página Explorador de registros:

    Ir a Explorador de registros

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

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

    En los resultados, se muestran los registros de cualquier interrupción y reparación de tus trabajadores TPU dentro del período de búsqueda. Los registros incluyen la siguiente información:

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

¿Qué sigue?