Surveiller les VM Cloud TPU
Ce guide explique comment utiliser Google Cloud Monitoring pour surveiller vos VM Cloud TPU. Google Cloud Monitoring collecte automatiquement les métriques et les journaux de votre Cloud TPU et de son hôte Compute Engine. Ces données peuvent être utilisées pour surveiller l'état de votre Cloud TPU et de Compute Engine.
Les métriques vous permettent de suivre une quantité numérique au fil du temps (par exemple, l'utilisation du processeur, l'utilisation du réseau ou la durée d'inactivité des TensorCores). Les journaux capturent les événements à un moment précis. Les entrées de journal sont écrites par votre propre code, par les services Google Cloud, par les applications tierces et par l'infrastructure Google Cloud . Vous pouvez également générer des métriques à partir des données présentes dans une entrée de journal en créant une métrique basée sur les journaux. Vous pouvez également définir des règles d'alerte en fonction des valeurs de métriques ou des entrées de journal.
Ce guide aborde la section Google Cloud Surveillance et vous explique comment :
- Afficher les métriques Cloud TPU
- Configurer des règles d'alerte pour les métriques Cloud TPU
- Interroger les journaux Cloud TPU
- Créer des métriques basées sur les journaux pour configurer des alertes et visualiser des tableaux de bord
Pour surveiller les TPU, vous pouvez également utiliser le planificateur de capacité (aperçu). Le planificateur de capacité vous permet d'afficher les données d'utilisation et de prévision des TPU pour votre projet, votre dossier ou votre organisation. Ces données sont mises à jour toutes les 24 heures. Vous pouvez les utiliser pour analyser les tendances d'utilisation et planifier vos futurs besoins en capacité. Pour en savoir plus, consultez Présentation du planificateur de capacité.
Dans ce document, nous partons du principe que vous disposez des connaissances de base sur Google Cloud Monitoring. Vous devez disposer d'une VM Compute Engine et de ressources Cloud TPU pour pouvoir commencer à générer des Google Cloud données de monitoring et à les utiliser. Pour en savoir plus, consultez le guide de démarrage rapide de Cloud TPU.
Métriques
Les métriquesGoogle Cloud sont générées automatiquement par les VM Compute Engine et le runtime Cloud TPU. Les métriques suivantes sont générées par les VM Cloud TPU :
memory/usage
network/received_bytes_count
network/sent_bytes_count
cpu/utilization
tpu/tensorcore/idle_duration
accelerator/tensorcore_utilization
accelerator/memory_bandwidth_utilization
accelerator/duty_cycle
accelerator/memory_total
accelerator/memory_used
Il peut s'écouler jusqu'à 180 secondes entre le moment où une valeur de métrique est générée et celui où elle s'affiche dans l'explorateur de métriques.
Pour obtenir la liste complète des métriques générées par Cloud TPU, consultez Google Cloud Métriques Cloud TPU.
Utilisation de la mémoire
La métrique memory/usage
est générée pour la ressource TPU Worker
et suit la mémoire utilisée par la VM TPU en octets. Cette métrique est échantillonnée toutes les 60 secondes.
Nombre d'octets reçus sur le réseau
La métrique network/received_bytes_count
est générée pour la ressource TPU Worker
et suit le nombre cumulé d'octets de données reçus par la VM TPU sur le réseau à un moment donné.
Nombre d'octets envoyés sur le réseau
La métrique network/sent_bytes_count
est générée pour la ressource TPU Worker
et suit le nombre d'octets cumulés que la VM TPU a envoyés sur le réseau à un moment donné.
Utilisation du processeur
La métrique cpu/utilization
est générée pour la ressource TPU Worker
. Elle suit l'utilisation actuelle du processeur sur le nœud de calcul TPU (en pourcentage), échantillonnée une fois par minute. Les valeurs sont généralement comprises entre 0,0 et 100,0, mais peuvent dépasser 100,0.
Durée d'inactivité de TensorCore
La métrique tpu/tensorcore/idle_duration
est générée pour la ressource TPU Worker
et suit le nombre de secondes pendant lesquelles le TensorCore de chaque puce TPU est resté inactif. Cette métrique est disponible pour chaque puce sur tous les TPU utilisés. Si un TensorCore est utilisé, la valeur de la durée d'inactivité est réinitialisée sur zéro. Lorsque le TensorCore n'est plus utilisé, la valeur de la durée d'inactivité commence à augmenter.
Le graphique suivant montre la métrique tpu/tensorcore/idle_duration
pour une VM TPU v2-8 qui comporte un seul nœud de calcul. Chaque nœud de calcul dispose de quatre puces. Dans cet exemple, les quatre chips ont les mêmes valeurs pour tpu/tensorcore/idle_duration
. Les graphiques sont donc superposés.
Utilisation de TensorCore
La métrique accelerator/tensorcore_utilization
est générée pour la ressource GCE TPU
Worker
et suit le pourcentage actuel du TensorCore utilisé. Cette métrique est calculée en divisant le nombre d'opérations TensorCore effectuées sur une période d'échantillonnage par le nombre maximal d'opérations pouvant être effectuées sur la même période d'échantillonnage. Plus la valeur est élevée, plus l'utilisation est optimale. La métrique d'utilisation de TensorCore est compatible avec les TPU de génération 4 et ultérieure.
Utilisation de la bande passante de mémoire
La métrique accelerator/memory_bandwidth_utilization
est générée pour la ressource GCE TPU Worker
et suit le pourcentage actuel de bande passante mémoire utilisée par l'accélérateur. Cette métrique est calculée en divisant la bande passante mémoire utilisée sur une période d'échantillonnage par la bande passante maximale acceptée sur la même période d'échantillonnage. Plus la valeur est élevée, plus l'utilisation est optimale. La métrique "Utilisation de la bande passante de mémoire" est compatible avec les générations de TPU v4 et ultérieures.
Cycle d'utilisation de l'accélérateur
La métrique accelerator/duty_cycle
est générée pour la ressource GCE TPU Worker
et suit le pourcentage de temps au cours de la période d'échantillonnage pendant laquelle le TensorCore de l'accélérateur effectuait activement un traitement. Les valeurs sont comprises entre 0 et 100. Plus la valeur est élevée, plus l'utilisation de TensorCore est optimale. Cette métrique est signalée lorsqu'une charge de travail de machine learning s'exécute sur la VM TPU. La métrique "Cycle de service de l'accélérateur" est compatible avec JAX 0.4.14 et versions ultérieures, PyTorch 2.1 et versions ultérieures, et
TensorFlow 2.14.0 et versions ultérieures.
Mémoire totale de l'accélérateur
La métrique accelerator/memory_total
est générée pour la ressource GCE TPU Worker
et suit la mémoire totale de l'accélérateur allouée en octets.
Cette métrique est signalée lorsqu'une charge de travail de machine learning est en cours d'exécution sur la VM TPU. La métrique "Mémoire totale de l'accélérateur" est compatible avec JAX 0.4.14 et versions ultérieures, PyTorch 2.1 et versions ultérieures, et
TensorFlow 2.14.0 et versions ultérieures.
Mémoire de l'accélérateur utilisée
La métrique accelerator/memory_used
est générée pour la ressource GCE TPU Worker
et suit la mémoire totale de l'accélérateur utilisée en octets. Cette métrique est signalée lorsqu'une charge de travail de machine learning s'exécute sur la VM TPU. La métrique "Mémoire de l'accélérateur utilisée" est compatible avec JAX 0.4.14 et versions ultérieures, PyTorch 2.1 et versions ultérieures, et
TensorFlow 2.14.0 et versions ultérieures.
Afficher les métriques
Vous pouvez afficher les métriques à l'aide de l'explorateur de métriques dans la console Google Cloud .
Dans l'explorateur de métriques, cliquez sur Sélectionner une métrique, puis recherchez TPU Worker
ou GCE TPU Worker
, selon la métrique qui vous intéresse.
Sélectionnez une ressource pour afficher toutes les métriques disponibles pour cette ressource.
Si l'option Actif est activée, seules les métriques ayant enregistré des séries temporelles au cours des dernières 25 heures sont listées. Désactivez Actif pour lister toutes les métriques.
Vous pouvez également accéder aux métriques à l'aide d'appels HTTP curl
.
Utilisez le bouton Essayer dans la documentation projects.timeSeries.query pour récupérer la valeur d'une métrique au cours de la période spécifiée.
- Saisissez le nom au format suivant :
projects/{project-name}
. Ajoutez une requête à la section Corps de la requête. Voici un exemple de requête permettant de récupérer la métrique de durée d'inactivité pour la zone spécifiée au cours des cinq dernières minutes.
fetch tpu_worker | filter zone = 'us-central2-b' | metric tpu.googleapis.com/tpu/tensorcore/idle_duration | within 5m
Cliquez sur Exécuter pour effectuer l'appel et afficher les résultats du message HTTP POST.
Pour en savoir plus sur la personnalisation de cette requête, consultez la documentation de référence sur le langage MQL (Monitoring Query Language).
Créer des alertes
Vous pouvez créer des règles d'alerte qui indiquent à Cloud Monitoring d'envoyer une alerte lorsqu'une condition est remplie.
Les étapes de cette section présentent un exemple d'ajout d'une règle d'alerte pour la métrique Durée d'inactivité des TensorCores. Chaque fois que cette métrique dépasse 24 heures, Cloud Monitoring envoie un e-mail à l'adresse e-mail enregistrée.
- Accédez à la console Monitoring.
- Dans le volet de navigation, cliquez sur Alertes.
- Cliquez sur Modifier les canaux de notification.
- Sous Adresse e-mail, cliquez sur Ajouter. Saisissez une adresse e-mail et un nom à afficher, puis cliquez sur Enregistrer.
- Sur la page Alertes, cliquez sur Créer une règle.
- Cliquez sur Sélectionner une métrique, puis sur Durée d'inactivité des TensorCores et sur Appliquer.
- Cliquez sur Suivant, puis sur Seuil.
- Pour Déclencheur d'alerte, sélectionnez À chaque infraction de série temporelle.
- Pour Position du seuil, sélectionnez Au-dessus du seuil.
- Dans le champ Valeur du seuil, saisissez
86400000
. - Cliquez sur Suivant.
- Sous Canaux de notification, sélectionnez votre canal de notification par e-mail, puis cliquez sur OK.
- Saisissez un nom pour la règle d'alerte.
- Cliquez sur Suivant, puis sur Créer une règle.
Lorsque la durée d'inactivité des TensorCores dépasse 24 heures, un e-mail est envoyé à l'adresse e-mail que vous avez spécifiée.
Journalisation
Les entrées de journal sont écrites par les services Google Cloud , les services tiers, les frameworks de ML ou votre code. Vous pouvez afficher les journaux à l'aide de l'explorateur de journaux ou de l'API Logs. Pour en savoir plus sur la journalisation Google Cloud , consultez la section JournalisationGoogle Cloud .
Les journaux des nœuds de calcul TPU contiennent des informations sur un nœud de calcul Cloud TPU spécifique dans une zone spécifique, par exemple la quantité de mémoire disponible sur le nœud de calcul Cloud TPU (system_available_memory_GiB
).
Les journaux de ressources auditées contiennent des informations sur la date et l'auteur d'un appel d'API Cloud TPU spécifique. Par exemple, vous pouvez trouver des informations sur les appels aux API CreateNode
, UpdateNode
et DeleteNode
.
Les frameworks de ML peuvent générer des journaux de sortie standard et d'erreur standard. Ces journaux sont contrôlés par des variables d'environnement et sont lus par votre script d'entraînement.
Votre code peut écrire des journaux dans Google Cloud Logging. Pour en savoir plus, consultez Écrire des journaux standards et Écrire des journaux structurés.
Journalisation du port série
Cloud TPU s'appuie sur la journalisation du port série pour le dépannage, la surveillance et le débogage. Par défaut, la journalisation du port série est activée. Si la journalisation du port série n'est pas activée, le processus de création de la VM TPU échoue et génère le message d'erreur suivant.
"Cloud TPU received a bad request. Constraint
`constraints/compute.disableSerialPortLogging` violated. Create TPUs with
serial port logging enabled or remove the Organization Policy Constraint."
Ce message indique que la contrainte constraints/compute.disableSerialPortLogging
a été enfreinte.
Pour éviter cette erreur, vous devez vous assurer que la journalisation du port série est autorisée pour vos projets TPU. La bonne pratique consiste à remplacer la règle de l'organisation au niveau du projet.
Pour en savoir plus sur l'activation de la journalisation du port série, consultez Activer et désactiver la journalisation des données en sortie du port série.
Journaux de requêtes Google Cloud
Lorsque vous affichez des journaux dans la console Google Cloud , la page exécute une requête par défaut.
Vous pouvez afficher la requête en sélectionnant le bouton bascule Show query
. Vous pouvez modifier la requête par défaut ou en créer une. Pour en savoir plus, consultez Créer des requêtes dans l'explorateur de journaux.
Journaux des ressources auditées
Pour afficher les journaux des ressources auditées :
- Accédez à l' Google Cloud explorateur de journaux.
- Cliquez sur le menu déroulant Toutes les ressources.
- Cliquez sur Ressource auditée, puis sur Cloud TPU.
- Choisissez l'API Cloud TPU qui vous intéresse.
- Cliquez sur Appliquer. Les journaux s'affichent dans les résultats de la requête.
Cliquez sur une entrée de journal pour la développer. Chaque entrée de journal comporte plusieurs champs, y compris les suivants :
- logName : nom du journal
- protoPayload > @type : type du journal
- protoPayload -> resourceName : nom de votre Cloud TPU
- protoPayload > methodName : nom de la méthode appelée (journaux d'audit uniquement)
- protoPayload > request > @type : type de requête
- protoPayload -> request -> node : détails sur le nœud Cloud TPU
- protoPayload > request > node_id : nom du TPU
- severity : gravité du journal
Journaux des nœuds de calcul TPU
Pour afficher les journaux des nœuds de calcul TPU :
- Accédez à l' Google Cloud explorateur de journaux.
- Cliquez sur le menu déroulant Toutes les ressources.
- Cliquez sur Nœud de calcul TPU.
- Sélectionnez une zone.
- Sélectionnez le Cloud TPU qui vous intéresse.
- Cliquez sur Appliquer. Les journaux s'affichent dans les résultats de la requête.
Cliquez sur une entrée de journal pour la développer. Chaque entrée de journal comporte un champ appelé jsonPayload
. Développez jsonPayload
pour afficher plusieurs champs, y compris :
- accelerator_type : type d'accélérateur
- consumer_project : projet dans lequel réside le Cloud TPU
- evententry_timestamp : heure à laquelle le journal a été généré
- system_available_memory_GiB : mémoire disponible sur le nœud de calcul Cloud TPU (0 à 350 Gio)
Créer des métriques basées sur des journaux
Cette section explique comment créer les métriques basées sur les journaux utilisées pour configurer les tableaux de bord et les alertes de surveillance. Pour savoir comment créer des métriques basées sur les journaux de manière programmatique, consultez Créer des métriques basées sur les journaux de manière programmatique à l'aide de l'API REST Cloud Logging.
Dans l'exemple suivant, le sous-champ system_available_memory_GiB illustre la procédure à suivre pour créer une métrique basée sur les journaux afin de surveiller la mémoire disponible des nœuds de calcul Cloud TPU.
- Accédez à l' Google Cloud explorateur de journaux.
Dans la zone de requête, saisissez la requête suivante pour extraire toutes les entrées de journal où le sous-champ system_available_memory_GiB est défini pour le nœud de calcul Cloud TPU principal :
resource.type=tpu_worker resource.labels.project_id=your-project resource.labels.zone=your-tpu-zone resource.labels.node_id=your-tpu-name resource.labels.worker_id=0 logName=projects/your-project/logs/tpu.googleapis.com%2Fruntime_monitor jsonPayload.system_available_memory_GiB:*
Cliquez sur Créer une métrique pour afficher l'éditeur de métriques.
Sous Type de métrique, sélectionnez Distribution.
Saisissez le nom, la description (facultative) et l'unité de mesure de votre métrique. Pour cet exemple, saisissez "matrix_unit_utilization_percent" et "Utilisation des unités matricielles" dans les champs Nom et Description, respectivement. Le filtre est prérempli avec le script que vous avez saisi dans l'explorateur de journaux.
Cliquez sur Créer une métrique.
Cliquez sur Afficher dans l'explorateur de métriques pour afficher votre nouvelle métrique. L'affichage de vos métriques peut prendre quelques minutes.
Créer des métriques basées sur les journaux avec l'API REST Cloud Logging
Vous pouvez également créer des métriques basées sur les journaux à l'aide de l'API Cloud Logging. Pour en savoir plus, consultez Créer une métrique de distribution.
Créer des tableaux de bord et des alertes à l'aide de métriques basées sur les journaux
Les tableaux de bord sont utiles pour visualiser les métriques (prévoir un délai d'environ deux minutes), et les alertes pour envoyer des notifications en cas d'erreur. Pour en savoir plus, consultez les pages suivantes :
- Tableaux de bord de surveillance et de journalisation
- Gérer les tableaux de bord personnalisés
- Créer des règles d'alerte basées sur des métriques
Créer des tableaux de bord
Pour créer un tableau de bord dans Cloud Monitoring pour la métrique Durée d'inactivité des TensorCores :
- Accédez à la console Monitoring.
- Dans le volet de navigation, cliquez sur Tableaux de bord.
- Cliquez sur Créer un tableau de bord, puis sur Ajouter un widget.
- Choisissez le type de graphique à ajouter. Pour cet exemple, sélectionnez Ligne.
- Saisissez un titre pour le widget.
- Cliquez sur le menu déroulant Sélectionner une métrique, puis saisissez "Durée d'inactivité des TensorCores" dans le champ de filtre.
- Dans la liste des métriques, sélectionnez Worker TPU > Tpu > Durée d'inactivité des TensorCores.
- Pour filtrer le contenu du tableau de bord, cliquez sur le menu déroulant Filtrer.
- Sous Libellés de ressources, sélectionnez project_id.
- Choisissez un comparateur et saisissez une valeur dans le champ Valeur.
- Cliquez sur Appliquer.