Préparer les événements de maintenance

Les VM TPU sont des instances de VM Compute Engine associées à du matériel TPU. Les VM Compute Engine sont soumises aux événements de maintenance de VM Compute Engine. Chaque TPU est connecté à une VM Compute Engine. Par conséquent, l'utilisation de plusieurs TPU (par exemple, dans un pod TPU) augmente la probabilité que l'une de vos VM rencontre un événement de maintenance.

Ce document présente des approches permettant de gérer les événements de maintenance pour les tâches d'entraînement de longue durée sur Cloud TPU. Pour en savoir plus sur la gestion des événements de maintenance pour les TPU dans Google Kubernetes Engine (GKE), consultez la section Gérer les interruptions des nœuds GKE pour les GPU et les TPU.

Afficher les notifications de maintenance à venir

Vous pouvez afficher les notifications concernant les événements de maintenance de l'hôte à venir. En surveillant les intervalles de maintenance à venir de votre instance, vous pouvez préparer vos charges de travail de manière proactive pour gérer les opérations de maintenance à venir avec un minimum d'interruption. Pour en savoir plus, consultez Afficher les notifications de maintenance.

Utiliser des points de contrôle pour une récupération rapide après des événements de maintenance

Les points de contrôle sont essentiels pour récupérer rapidement les données après un événement de maintenance et doivent être enregistrés fréquemment. Il est recommandé de les enregistrer environ toutes les heures. L'absence de points de contrôle fréquents risque de causer la perte d'une grande partie de la progression de l'entraînement en raison d'événements de maintenance ou d'autres interruptions.

.

Les points de contrôle font généralement référence à tous les paramètres enregistrés utilisés lors de l'entraînement, tels que les pondérations du modèle. Le temps nécessaire à l'enregistrement d'un point de contrôle est de quelques secondes à quelques minutes.

Bien que les TPU puissent récupérer automatiquement la plupart des événements de maintenance et que les tâches d'entraînement se poursuivent sans intervention manuelle, il peut arriver que la tâche ne redémarre pas et continue automatiquement. Dans ce cas, vous devez supprimer et recréer les ressources TPU, puis redémarrer la tâche d'entraînement à partir d'un point de contrôle enregistré. Pour en savoir plus sur la détection et la récupération des défaillances de récupération automatique, consultez la section Détecter et récupérer les défaillances de TPU.

Il existe différents mécanismes d'enregistrement et de chargement des points de contrôle pour chaque framework de ML. Les modèles Cloud TPU compatibles intègrent généralement des points de contrôle. Pour en savoir plus sur les points de contrôle, consultez les pages TensorFlow 2.x, PyTorch ou JAX/flax.

Utiliser le point de contrôle automatique

Vous pouvez utiliser la fonctionnalité de point de contrôle automatique pour préserver la progression de l'entraînement en configurant votre code pour enregistrer un point de contrôle non planifié lorsqu'un événement de maintenance se produit. Pour en savoir plus sur les points de contrôle automatiques, consultez la section Points de contrôle automatiques Cloud TPU.

Réessayer d'exécuter votre script d'entraînement

Le script d'entraînement peut s'arrêter en raison d'un événement d'interruption. Vous pouvez utiliser un script bash pour relancer le script d'entraînement en continu jusqu'à la fin de l'entraînement. Exemple :

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

Chaque nouvelle tentative doit poursuivre à partir du dernier point de contrôle. Par conséquent, vous devez toujours utiliser des scripts de nouvelle tentative conjointement avec les points de contrôle.

Les pipelines d'entraînement prêts pour la production doivent utiliser un système de gestion des ressources tel que Google Kubernetes Engine (GKE). Pour en savoir plus sur l'utilisation de Google Kubernetes Engine avec des VM TPU, consultez Déployer des charges de travail TPU.

Détecter et résoudre les défaillances de TPU

Lorsqu'un TPU ne récupère pas d'un événement de maintenance, vous pouvez utiliser un script de récupération pour détecter son état, puis supprimer et recréer le TPU. Pour obtenir un exemple de script de récupération, consultez retry.sh. Si le processus qui exécute le script d'entraînement plante, vous pouvez modifier le script de récupération pour réessayer d'exécuter le script d'entraînement.

Pour savoir comment supprimer et recréer manuellement un TPU, consultez la section Gérer les ressources TPU.

Utiliser la planification des collections

Cloud TPU propose le concept de planification de la collecte, qui offre deux types de collections que les clients peuvent utiliser pour prendre en charge les charges de travail d'entraînement ou de diffusion et d'inférence. Lorsque vous utilisez cette fonctionnalité pour déployer vos instances Cloud TPU, Google Cloud applique des calendriers de maintenance uniques qui correspondent le mieux à l'application. Vous pouvez vous attendre aux comportements suivants de chaque type de collection:

  • Entraînement (par défaut): ce type de collection est bénéfique pour les charges de travail d'entraînement typiques, où vous avez besoin d'un temps d'arrêt minimal sur toutes les instances et de limiter les interruptions inattendues afin de restaurer rapidement votre service lors d'événements de maintenance. Le type de collection d'entraînement fournit la planification et l'exécution parallèles des événements de maintenance pour un groupe d'instances.

  • Diffusion (disponible avec --workload-type=AVAILABILITY_OPTIMIZED): ce type de collection est bénéfique pour la plupart des charges de travail de diffusion ou d'inférence, où vous avez besoin d'un temps d'arrêt minimal sur un sous-ensemble d'instances (répliques) pour assurer la continuité du service, même lors d'événements de maintenance. Le type de collection de diffusion fournit une planification et une exécution échelonnées des événements de maintenance pour un groupe d'instances. La spécification d'une collection de diffusion n'est compatible qu'avec la version v6e de TPU.

Pour en savoir plus sur la planification de la collecte, consultez la section Planification de la collecte.

Détecter les événements de maintenance

Vous pouvez détecter si et quand un événement de maintenance s'est produit sur votre TPU à l'aide de la commande gcloud compute tpus tpu-vm describe suivante:

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

La sortie de cette commande affiche l'état actuel du TPU et une description de l'événement de maintenance le plus récent. La sortie doit ressembler à ceci:

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

Afficher les journaux des événements de maintenance

Vous pouvez consulter l'historique des journaux des événements de maintenance sur votre TPU dans les journaux d'audit des événements système.

  1. Dans le menu de navigation de la console Google Cloud, accédez à la page Explorateur de journaux:

    Accéder à l'explorateur de journaux

  2. Utilisez la requête de recherche suivante pour afficher tous les TPU qui ont été arrêtés ou redémarrés:

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

    Les résultats affichent les journaux de toutes les interruptions et réparations de vos nœuds de calcul TPU au cours de la période de recherche. Les journaux incluent les éléments suivants:

    • Date et heure de l'événement
    • Type d'événement
    • Pour les événements "terminate", le motif de l'arrêt dans le champ protoPayload.metadata.terminateReason

Étape suivante