Se préparer aux é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 sujettes à des é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 une tranche TPU) augmente la probabilité que l'une de vos VM soit soumise à un événement de maintenance.
Ce document présente des approches de gestion des événements de maintenance pour les jobs 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 Gérer les interruptions des nœuds GKE pour les GPU et les TPU.
Afficher les notifications pour les opérations 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 concernant votre instance, vous pouvez préparer vos charges de travail de manière proactive pour gérer les prochaines opérations de maintenance en subissant une durée d'interruption minimale. 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 après un événement de maintenance et doivent être enregistrés fréquemment. Il est recommandé d'enregistrer les points de contrôle environ toutes les heures. Le fait de ne pas effectuer de points de contrôle assez souvent peut faire perdre une grande partie de la progression de l'entraînement en cas de survenue d'événements de maintenance ou d'autres interruptions de l'entraînement.
.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 varie de quelques secondes à quelques minutes.
Bien que les TPU puissent récupérer automatiquement de la plupart des événements de maintenance pour que les jobs d'entraînement puissent se poursuivre sans intervention manuelle, il peut arriver qu'un job ne puisse pas se relancer et se poursuivre automatiquement. Dans ce cas, vous devez supprimer et recréer les ressources TPU, puis redémarrer le job d'entraînement à partir d'un point de contrôle enregistré. Pour savoir comment détecter les échecs de récupération automatique et résoudre ces problèmes, consultez Détecter et résoudre les défaillances de TPU.
Il existe différents mécanismes permettant d'enregistrer et de charger des points de contrôle pour chaque framework de ML. Les modèles Cloud TPU acceptés intègrent généralement des points de contrôle. Pour en savoir plus sur les points de contrôle, consultez TensorFlow 2.x, PyTorch ou JAX/flax.
Utiliser Autocheckpoint
Vous pouvez utiliser la fonctionnalité Autocheckpoint pour préserver la progression de l'entraînement en configurant votre code afin d'enregistrer un point de contrôle non planifié lorsqu'un événement de maintenance survient. Pour en savoir plus sur Autocheckpoint, consultez Autocheckpoint dans 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'à l'achèvement 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 les scripts de nouvelle tentative conjointement avec les points de contrôle.
Les pipelines d'entraînement destinés à 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 l'état du TPU, le supprimer et le recréer. Pour obtenir un exemple de script de récupération, consultez retry.sh. Si le processus exécutant 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 Gérer les ressources TPU.
Utiliser la planification de la collecte
Cloud TPU propose le concept de planification de la collecte, qui fournit aux clients deux types de collecte pour gérer les charges de travail d'entraînement, ou de mise en service et d'inférence. Lorsque vous utilisez cette fonctionnalité pour déployer vos instances Cloud TPU, Google Cloud applique les plannings de maintenance uniques qui correspondent le mieux à l'application. Voici les comportements auxquels vous pouvez vous attendre pour chaque type de collecte :
Entraînement (par défaut) : ce type de collecte est utile 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 d'interruptions inattendues limitées afin de restaurer rapidement votre service lors des opérations de maintenance. Le type de collecte "Entraînement" permet de planifier et d'exécuter en parallèle les événements de maintenance pour un groupe d'instances.
Mise en service (disponible avec
--workload-type=AVAILABILITY_OPTIMIZED
) : ce type de collecte est utile pour la plupart des charges de travail de mise en service ou d'inférence où vous avez besoin d'un temps d'arrêt minimal sur un sous-ensemble d'instances (instances répliquées) pour assurer la continuité du service, même lors d'événements de maintenance. Le type de collecte "Mise en service" permet de planifier et d'exécuter des événements de maintenance de manière échelonnée pour un groupe d'instances. La spécification d'une collecte "Mise en service" n'est disponible qu'avec les TPU v6e.
Pour en savoir plus sur la planification de la collecte, consultez Planification de la collecte TPU pour les charges de travail d'inférence.
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'
Le résultat de cette commande affiche l'état actuel du TPU et une description du dernier événement de maintenance. Le résultat doit ressembler à ce qui suit :
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 les journaux historiques des événements de maintenance sur votre TPU dans les journaux d'audit des événements système.
Dans le menu de navigation de la console Google Cloud , accédez à la page "Explorateur de journaux" :
Utilisez la requête de recherche suivante pour afficher 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 concernant vos nœuds de calcul TPU pour 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
Étapes suivantes
- Afficher les notifications de maintenance
- Démarrer manuellement un événement de maintenance de l'hôte