Surveiller les nœuds Cloud TPU

Ce guide explique comment surveiller vos nœuds Cloud TPU à l'aide de Google Cloud Monitoring. Google Cloud Monitoring collecte automatiquement les metrics et les journaux de votre Cloud TPU et de son hôte Compute Engine. Ces données peuvent servir à surveiller l'état de vos ressources Cloud TPU et Compute Engine.

Les métriques vous permettent de suivre une quantité numérique au fil du temps, par exemple l'utilisation du processeur, du réseau ou des unités matricielles. Les journaux capturent les événements à un moment précis. Les entrées de journal sont écrites par votre propre code, les services Google Cloud, les applications tierces et 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 de valeurs de métriques ou d'entrées de journal.

Ce guide présente Google Cloud Monitoring 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

Prérequis

Ce document suppose que vous disposez de connaissances de base sur Google Cloud Monitoring. Vous devez disposer d'une VM Compute Engine et de ressources Cloud TPU avant de pouvoir commencer à générer et à utiliser Google Cloud Monitoring. Pour en savoir plus, consultez le Guide de démarrage rapide de Cloud TPU.

Métriques

Les métriques Google Cloud sont automatiquement générées par les VM Compute Engine et l'environnement d'exécution Cloud TPU. Les métriques suivantes sont générées par les nœuds Cloud TPU:

  • cpu/utilization
  • memory/usage
  • network/received_bytes_count
  • network/sent_bytes_count
  • tpu/mxu/utilization
  • tpu/tensorcore/idle_duration

Utilisation du processeur

La métrique cpu/utilization suit l'utilisation actuelle du processeur sur le nœud de calcul Cloud TPU, représentée en pourcentage. Les valeurs sont généralement comprises entre 0,0 et 100,0, mais peuvent dépasser 100,0. Échantillonné toutes les 60 secondes. Il peut s'écouler jusqu'à 180 secondes entre le moment où une valeur est générée et celui où elle est affichée.

Utilisation de la mémoire

La métrique memory/usage suit, en octets, la mémoire actuellement utilisée par la VM Cloud TPU. Cette métrique est échantillonnée toutes les 60 secondes. Il peut s'écouler jusqu'à 180 secondes entre le moment où une valeur est générée et celui où elle est affichée.

Nombre d'octets reçus par le réseau

La métrique network/received_bytes_count suit le nombre d'octets de données cumulés que la VM Cloud TPU a reçus sur le réseau à un moment donné. Il peut s'écouler jusqu'à 180 secondes entre le moment où une valeur est générée et celui où elle est affichée.

Nombre d'octets envoyés par le réseau

La métrique network/sent_bytes_count suit le nombre d'octets cumulés que la VM Cloud TPU a envoyés sur le réseau à un moment donné. Il peut s'écouler jusqu'à 180 secondes entre le moment où une valeur est générée et celui où elle est affichée.

Durée d'inactivité de TensorCore

La métrique tpu/tensorcore/idle_duration suit le nombre de secondes d'inactivité du TensorCore de chaque puce TPU. 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. Lorsque 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 Cloud TPU v2-8 qui comporte un nœud de calcul. Chaque nœud de calcul possè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 les uns aux autres.

Image

Utilisation des unités matricielles

La métrique tpu/mxu/utilization suit l'utilisation actuelle des unités matricielles sur le nœud de calcul TPU, représentée sous forme de pourcentage. Les valeurs sont généralement des nombres compris entre 0,0 et 100,0. Échantillonné toutes les 60 secondes. Après échantillonnage, les données ne sont pas visibles pendant un délai pouvant atteindre 180 secondes.

Pour obtenir la liste complète des métriques générées par Cloud TPU, consultez la page Métriques Cloud TPU.

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 et recherchez Cloud TPU Worker. Si l'option Afficher uniquement les ressources et les métriques actives est activée, seules les métriques en cours de génération seront affichées. Cliquez sur Cloud TPU Worker pour afficher les métriques disponibles.

Vous pouvez également accéder aux métriques à l'aide d'appels HTTP curl:

Utilisez le bouton Essayer dans la documentation de projects.timeSeries.query pour récupérer la valeur d'une métrique sur la période spécifiée.

  1. Indiquez le nom au format suivant: projects/{nom-projet}
  2. 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 5 dernières minutes : fetch tpu_worker | filter zone = 'us-central2-b' | metric tpu.googleapis.com/tpu/tensorcore/idle_duration | within 5m"
  3. Cliquez sur Execute (Exécuter) pour récupérer les résultats du message HTTP POST.

La documentation de référence sur le langage de requête Monitoring contient plus d'informations sur la personnalisation de cette requête.

Vous pouvez créer des règles d'alerte qui indiquent à Google Cloud Monitoring d'envoyer une alerte lorsqu'une condition est remplie.

Créer des alertes

Les étapes de cette section montrent comment ajouter une règle d'alerte pour la métrique Durée d'inactivité de TensorCore. Chaque fois que cette métrique dépasse 24 heures, Cloud Monitoring envoie un e-mail à l'adresse e-mail enregistrée.

  1. Accéder à la console Monitoring
  2. Dans le volet de navigation, cliquez sur Alertes.
  3. Cliquez sur MODIFIER LES CHAÎNES DE NOTIFICATION.
  4. Sous Adresse e-mail, cliquez sur AJOUTER.
  5. Saisissez une adresse e-mail et un nom à afficher, puis cliquez sur ENREGISTRER.
  6. Cliquez sur CRÉER UNE RÈGLE.
  7. Cliquez sur SÉLECTIONNER UNE MÉTRIQUE, sélectionnez Durée d'inactivité de Tensorcore, puis cliquez sur APPLIQUER.
  8. Cliquez sur SUIVANT, puis sur Seuil.
  9. Pour Déclencheur d'alerte, sélectionnez À chaque infraction de série.
  10. Dans Position du seuil, sélectionnez Au-dessus du seuil.
  11. Dans le champ Valeur du seuil, saisissez 86400000.
  12. Cliquez sur SUIVANT.
  13. Sous Canaux de notification, sélectionnez votre canal de notification par e-mail, puis cliquez sur OK.
  14. Saisissez un nom pour la règle d'alerte
  15. Cliquez sur SUIVANT, puis sur CRÉER UNE RÈGLE.

Lorsque la durée d'inactivité de TensorCore 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 des services Google Cloud, des services tiers, des frameworks de ML ou votre code. Vous pouvez afficher les journaux à l'aide de la visionneuse de journaux ou de l'API Logs. Pour en savoir plus sur la journalisation Google Cloud, consultez la page Google Cloud Logging.

Dans l'explorateur de journaux, vous pouvez sélectionner un type de ressource:

  • Nœud de calcul Cloud TPU -> Zone -> ID de nœud
  • Ressource auditée -> Cloud TPU -> API (google.cloud.tpu.v1.Tpu.CreateNode, google.cloud.tpu.v1.Tpu.DeleteNode, google.cloud.tpu.v1.Tpu.UpdateNode)

Les journaux d'un nœud de calcul Cloud 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 d'appel d'une API Cloud TPU spécifique et sur l'auteur de l'appel. Exemples : CreateNode, UpdateNode et DeleteNode.

Les frameworks de ML peuvent générer des journaux dans stdout et stderr. Ces journaux sont contrôlés par des variables d'environnement et lus par votre script d'entraînement.

Votre code peut écrire des journaux dans Google Cloud Logging. Pour en savoir plus, consultez les sections Écrire des journaux standards et Écrire des journaux structurés.

Afficher les journaux Cloud TPU

  1. Accéder à la visionneuse de journaux Google Cloud
  2. Cliquez sur le menu déroulant Ressource.
  3. Cliquez sur Cloud TPU Worker (Nœud de calcul Cloud TPU).
  4. Sélectionner une zone
  5. Sélectionnez le Cloud TPU qui vous intéresse
  6. Cliquez sur Appliquer. Les journaux sont affichés dans les résultats de la requête

Pour afficher les journaux des ressources auditées:

  1. Accéder à la visionneuse de journaux Google Cloud
  2. Cliquez sur le menu déroulant Ressource.
  3. Cliquez sur Ressource auditée, puis sur Cloud TPU.
  4. Choisissez l'API Cloud TPU qui vous intéresse
  5. Cliquez sur Appliquer. Les journaux sont affichés dans les résultats de la requête
  6. Choisissez les API commençant par google.cloud.tpu.v1.Tpu

Interroger les journaux Google Cloud

Lorsque vous consultez les 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 d'activation Show query. Vous pouvez modifier la requête par défaut ou en créer une nouvelle. Pour en savoir plus, consultez la page Créer des requêtes dans l'explorateur de journaux.

Comprendre la sortie des journaux de ressources auditées

Cliquez sur n'importe quelle entrée de journal pour la développer. Vous verrez alors un champ appelé protoPayload. Développez protoPayload pour afficher plusieurs sous-champs:

  • logName: nom du journal
  • protoPayload -> @type: type de journal
  • resourceName: nom de votre ressource Cloud TPU
  • methodName: nom de la méthode appelée (journaux d'audit uniquement).
  • request -> @type: type de requête
  • request -> node: détails sur le nœud Cloud TPU
  • request -> node_id: nom du TPU
  • Gravité: sévérité du journal

Comprendre la sortie des journaux pour les journaux de travail Cloud TPU

Cliquez sur n'importe quelle entrée de journal pour la développer. Vous verrez alors un champ appelé jsonPayload. Développez jsonPayload pour afficher plusieurs sous-champs:

  • accelerator_type: type d'accélérateur
  • consumer_project: projet contenant le Cloud TPU
  • evententry_timestamp: l'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 Go)

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 en savoir plus sur la création automatisée de métriques basées sur les journaux, consultez la page Créer des métriques basées sur les journaux de façon automatisée à l'aide de l'API REST Cloud Logging.

L'exemple suivant utilise le sous-champ system_available_memory_GiB pour montrer comment créer une métrique basée sur les journaux pour surveiller la mémoire disponible du nœud de calcul Cloud TPU.

  1. Accédez à l'explorateur de journaux.
  2. Dans la zone de requête, saisissez la requête suivante pour extraire toutes les entrées de journal pour lesquelles 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:*
    
  3. Cliquez sur Créer une métrique pour afficher l'Éditeur de métriques.

  4. Sous Type de métrique, sélectionnez Distribution.

  5. Saisissez un nom, une description facultative et une unité de mesure pour votre métrique. saisissez respectivement "matrix_unit_utilization_percent" et "MXU Usage" dans les champs Nom et Description.

  6. Le filtre est prérempli avec le script que vous avez saisi dans l'explorateur de journaux

  7. Cliquez sur CRÉER UNE MÉTRIQUE.

  8. Cliquez sur Explorer les métriques pour afficher votre nouvelle métrique. L'affichage des métriques peut prendre quelques minutes

Créer des métriques basées sur les journaux de façon automatisée à l'aide de l'API REST Cloud Logging

Vous pouvez également créer des métriques basées sur les journaux via l'API Cloud Logging. Pour en savoir plus, consultez la page 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 (comptez environ deux minutes). Les alertes sont utiles pour envoyer des notifications en cas d'erreur. Pour en savoir plus, consultez Gérer les tableaux de bord personnalisés et Créer des règles d'alerte basées sur les métriques.

Création de tableaux de bord

Pour créer un tableau de bord dans Cloud Monitoring pour la métrique Durée d'inactivité de Tensorcore, procédez comme suit:

  1. Accéder à la console Monitoring
  2. Dans le volet de navigation, cliquez sur Tableaux de bord.
  3. Cliquez sur CRÉER UN TABLEAU DE BORD, puis sur Ajouter un graphique.
  4. Choisissez le type de graphique que vous souhaitez ajouter. Pour cet exemple, sélectionnez Ligne.
  5. Saisissez un titre pour le tableau de bord
  6. Cliquez sur le bouton sous Ressource et métrique.
  7. Faites défiler la liste des ressources/métriques, puis sélectionnez Cloud TPU Worker -> Tpu -> Tensorcore inactive duration (Nœud de calcul Cloud TPU).
  8. Cliquez sur Appliquer.
  9. Pour filtrer le contenu du tableau de bord, cliquez sur CRÉER DES FILTRES DE TABLEAU DE BORD
  10. Dans le champ Libellé, définissez project_id sur votre projet.
  11. Cliquez sur AJOUTER et définissez le champ zone sur la zone dans laquelle vous avez créé votre TPU.
  12. Ajoutez un autre filtre pour node_id et spécifiez le nom de votre ressource Cloud TPU