Surveiller les TPU
Ce guide explique comment utiliser Cloud Monitoring pour surveiller vos VM TPU. Cloud Monitoring collecte automatiquement des métriques et des journaux à partir de votre TPU et de sa VM hôte. Ces données peuvent ensuite être utilisées pour surveiller l'état de votre 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), tandis que les journaux capturent les événements à un moment précis. Les entrées de journal sont écrites par votre propre code, par les servicesGoogle Cloud , par les applications tierces et par l'infrastructureGoogle Cloud . Vous pouvez aussi 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.
Pour surveiller les TPU, vous pouvez aussi utiliser le planificateur de capacité (preview). Le planificateur de capacité vous permet de visualiser les données d'utilisation des TPU et données de prévision pour votre projet, votre dossier ou votre organisation. Ces données, qui sont mises à jour toutes les 24 heures, vous aident à analyser les tendances d'utilisation et à planifier vos futurs besoins en capacité. Pour en savoir plus, consultez Présentation du planificateur de capacité.
Accéder aux métriques de TPU
Compute Engine génère deux types de métriques TPU : les métriques d'exécution TPU et les métriques d'infrastructure de VM TPU. Vous pouvez obtenir les métriques de deux manières :
Bibliothèque de surveillance des TPU : obtenez des métriques d'exécution des TPU à partir du SDK LibTPU à l'aide de la bibliothèque de surveillance des TPU. Cela permet à vos applications d'obtenir des données de télémétrie en temps réel depuis l'environnement invité. Pour en savoir plus, consultez la bibliothèque de surveillance des TPU.
Collecteur de télémétrie de l'IA : obtenez des métriques d'exécution et des métriques d'infrastructure de VM grâce au collecteur de télémétrie de l'IA. Le collecteur de télémétrie d'IA s'exécute dans la VM TPU et vous permet d'accéder aux métriques via Cloud Monitoring ou votre propre pipeline de surveillance basé sur Prometheus. Pour en savoir plus, consultez Collecteur de télémétrie de l'IA.
Métriques de TPU
Les métriquesGoogle Cloud pour Cloud TPU sont générées automatiquement par les VM Compute Engine et l'environnement d'exécution Cloud TPU. Les métriques du tableau suivant sont générées par les VM Compute Engine.
Les chaînes "Type de métrique" de ce tableau doivent être précédées du préfixe compute.googleapis.com/. Ce préfixe a été omis dans les entrées du tableau. Lorsque vous interrogez une étiquette, utilisez le préfixe metric.labels (par exemple, metric.labels.LABEL="VALUE").
| Type de métrique Étape de lancement (Niveaux de la hiérarchie des ressources) Nom à afficher |
|
|---|---|
| Genre, type, unité Ressources surveillées |
Description Libellés |
instance/tpu/accelerator/duty_cycle
BÊTA
(projet)
Cycle d'utilisation de l'accélérateur |
|
GAUGE, DOUBLE, %
gce_instance |
Pourcentage de temps au cours de la période d'échantillonnage pendant lequel l'accélérateur effectuait activement un traitement. Les valeurs sont comprises entre 0 et 100.
accelerator_id : ID de l'accélérateur.
|
instance/tpu/accelerator/memory_bandwidth_utilization
BÊTA
(projet)
Utilisation de la bande passante de mémoire de l'accélérateur |
|
GAUGE, DOUBLE, %
gce_instance |
Pourcentage actuel de la bande passante de mémoire utilisée par l'accélérateur. Calculé 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.
accelerator_id : ID de l'accélérateur.
|
instance/tpu/accelerator/memory_total
BÊTA
(projet)
Mémoire totale de l'accélérateur |
|
GAUGE, INT64, By
gce_instance |
Mémoire totale de l'accélérateur actuellement allouée, en octets.
accelerator_id : ID de l'accélérateur.
|
instance/tpu/accelerator/memory_used
BÊTA
(projet)
Mémoire de l'accélérateur utilisée |
|
GAUGE, INT64, By
gce_instance |
Mémoire totale de l'accélérateur actuellement utilisée, en octets.
accelerator_id : ID de l'accélérateur.
|
instance/tpu/accelerator/tensorcore_utilization
BÊTA
(projet)
Utilisation des TensorCores de l'accélérateur |
|
GAUGE, DOUBLE, %
gce_instance |
Pourcentage actuel du Tensorcore utilisé. Ce nombre est calculé en divisant les opérations Tensorcore effectuées sur une période d'échantillonnage par le nombre d'opérations Tensorcore réalisable sur la même période d'échantillonnage.
accelerator_id : ID de l'accélérateur.
|
instance/tpu/active_chips
BÊTA
(projet)
Nombre de puces TPU actives |
|
GAUGE, INT64, 1
gce_instance |
Nombre actuel de puces utilisées activement (c'est-à-dire non inactives).
accelerator_type :
Type et génération de l'accélérateur.
reservation_id : ID de la réservation de la machine physique.
provisioning_model :
Modèle de provisionnement associé.
protection_tier : modèle de protection associé.
block_id : ID du bloc dans le cluster hébergeant la VM.
subblock_id : ID du sous-bloc hébergeant la VM.
is_exr :
(BOOL)
Indique si le chip fait partie d'une réservation étendue.
|
instance/tpu/chip_state
BÊTA
(projet)
Nombre d'états des puces TPU |
|
GAUGE, INT64, 1
gce_instance |
Nombre de puces TPU dans différents états (opérationnel, non opérationnel, inconnu, etc.).
state:
État du chip.
accelerator_type :
Type et génération de l'accélérateur.
block_id : ID du bloc dans le cluster hébergeant la VM.
subblock_id : ID du sous-bloc hébergeant la VM.
reservation_id : ID de la réservation de la machine physique.
is_exr :
(BOOL)
Indique si le chip fait partie d'une réservation étendue.
|
instance/tpu/infra_health
BÊTA
(projet)
État de l'instance TPU |
|
GAUGE, INT64, 1
gce_instance |
Indique l'état de fonctionnement global d'une instance de TPU. Les libellés de métriques permettent d'identifier l'état de fonctionnement spécifique et les raisons des problèmes sur les instances TPU dégradées ou non opérationnelles. Ils se concentrent principalement sur l'état du matériel et du système TPU. L'état de santé peut mettre plusieurs minutes à être reflété dans cette métrique. Échantillonné toutes les 60 secondes. Après échantillonnage, les données ne sont pas visibles pendant un délai pouvant atteindre 420 secondes.
health_status :
État général de l'instance TPU. Valeurs possibles : HEALTHY (fonctionnement normal), UNHEALTHY (problème critique détecté), DEGRADED (problème ayant un impact sur les performances), UNKNOWN (état impossible à déterminer).
unhealthy_category :
Explication de l'état non sain de la VM. Ce libellé n'est renseigné que lorsque la valeur de la métrique est "Non sain".
machine_type : type de machine de l'instance (par exemple, ct6e-standard-4t-tpu).
machine_id :
ID de la machine physique hébergeant la VM.
block_id : ID du bloc dans le cluster hébergeant la VM.
cluster_id : ID du cluster hébergeant la VM.
reservation_id : ID de la réservation de la machine physique.
subblock_id : ID du sous-bloc hébergeant la VM.
|
instance/tpu/runtime/uptime
BÊTA
(projet)
Disponibilité de l'exécution |
|
GAUGE, INT64, s
gce_instance |
Temps d'activité du ML Runtime depuis l'initialisation de la bibliothèque d'exécution (libtpu.so) par le job de ML. Pendant cette période, la bibliothèque d'exécution bloque les appareils TPU pour qu'ils soient utilisés par le job de ML.
ml_framework_name : nom du framework de ML.
ml_framework_version :
Version du framework de ML.
|
instance/tpu/scheduled_chips
BÊTA
(projet)
Nombre de puces TPU planifiées |
|
GAUGE, INT64, 1
gce_instance |
Nombre actuel de puces allouées à une VM dont l'état est "SAINE" et qui n'est PAS DÉSACTIVÉE pour maintenance.
accelerator_type :
Type et génération de l'accélérateur.
reservation_id : ID de la réservation de la machine physique.
provisioning_model :
Modèle de provisionnement associé.
protection_tier : modèle de protection associé.
block_id : ID du bloc dans le cluster hébergeant la VM.
subblock_id : ID du sous-bloc hébergeant la VM.
is_exr :
(BOOL)
Indique si le chip fait partie d'une réservation étendue.
|
instance/tpu/utilized_chips
BÊTA
(projet)
Puces TPU utilisées |
|
GAUGE, DOUBLE, 1
gce_instance |
Capacité utilisée agrégée actuelle exprimée sous forme de nombre effectif de puces actives. Il équivaut à la somme de l'utilisation fractionnelle (de 0,0 à 1,0) de tous les chips actifs.
accelerator_type :
Type et génération de l'accélérateur.
reservation_id : ID de la réservation de la machine physique.
provisioning_model :
Modèle de provisionnement associé.
protection_tier : modèle de protection associé.
block_id : ID du bloc dans le cluster hébergeant la VM.
subblock_id : ID du sous-bloc hébergeant la VM.
is_exr :
(BOOL)
Indique si le chip fait partie d'une réservation étendue.
|
quota/tpus_per_tpu_family/exceeded
ALPHA
(projet)
Erreur de dépassement de quota : nombre de TPU par famille de TPU |
|
DELTA, INT64, 1
compute.googleapis.com/Location |
Nombre de tentatives pour dépasser la limite de la métrique de quota compute.googleapis.com/tpus_per_tpu_family. Après échantillonnage, les données ne sont pas visibles pendant un délai pouvant atteindre 150 secondes.
limit_name:
Nom de la limite.
tpu_family : dimension personnalisée de la famille de TPU.
|
quota/tpus_per_tpu_family/limit
ALPHA
(project)
Nombre de TPU par famille de TPU. Limite de quota |
|
GAUGE, INT64, 1
compute.googleapis.com/Location |
Limite actuelle de la métrique de quota compute.googleapis.com/tpus_per_tpu_family. Échantillonné toutes les 60 secondes. Après échantillonnage, les données ne sont pas visibles pendant un délai pouvant atteindre 150 secondes.
limit_name:
Nom de la limite.
tpu_family : dimension personnalisée de la famille de TPU.
|
quota/tpus_per_tpu_family/usage
ALPHA
(projet)
Nombre de TPU par famille de TPU. Utilisation du quota |
|
GAUGE, INT64, 1
compute.googleapis.com/Location |
Utilisation actuelle de la métrique de quota compute.googleapis.com/tpus_per_tpu_family. Après échantillonnage, les données ne sont pas visibles pendant un délai pouvant atteindre 150 secondes.
limit_name:
Nom de la limite.
tpu_family : dimension personnalisée de la famille de TPU.
|
tpu/multislice/accelerator/device_to_host_transfer_latencies
BÊTA
(projet)
Latences de transfert de l'appareil à l'hôte |
|
CUMULATIVE, DISTRIBUTION, us
gce_instance |
Distribution cumulée de la latence de transfert d'appareil à hôte pour chaque fragment de données. La latence commence lorsque la demande de transfert de données vers l'hôte est émise et se termine lorsqu'un accusé de réception est reçu pour confirmer que le transfert de données est terminé.
buffer_size :
Taille de la mémoire tampon.
|
tpu/multislice/accelerator/host_to_device_transfer_latencies
BÊTA
(projet)
Latences de transfert de l'hôte vers l'appareil |
|
CUMULATIVE, DISTRIBUTION, us
gce_instance |
Distribution cumulative de la latence de transfert hôte à appareil pour chaque fragment de données du trafic multislice. Une latence commence lorsque la demande de transfert de données vers l'appareil est émise et se termine lorsqu'un accusé de réception est reçu indiquant que le transfert de données est terminé.
buffer_size :
Taille de la mémoire tampon.
|
tpu/multislice/network/collective_end_to_end_latencies
BÊTA
(projet)
Latences de bout en bout collectives |
|
CUMULATIVE, DISTRIBUTION, us
gce_instance |
Distribution cumulative de la latence collective de bout en bout pour le trafic multitranche. Une latence commence lorsque la demande de collectif est émise et se termine lorsqu'un accusé de réception est reçu indiquant que le transfert de données est terminé.
input_size :
Taille d'entrée de l'opération collective.
collective_type : type de l'opération collective.
|
tpu/multislice/network/dcn_transfer_latencies
BÊTA
(projet)
Latences de transfert DCN |
|
CUMULATIVE, DISTRIBUTION, us
gce_instance |
Distribution cumulative des latences de transfert réseau pour le trafic multislice. La latence commence lorsque la demande de transfert de données sur le DCN est émise et se termine lorsqu'un accusé de réception est reçu indiquant que le transfert de données est terminé.
buffer_size :
Taille de la mémoire tampon.
type :
Type.
|
tpu/multislice/network/grpc_client_call_latencies
BÊTA
(projet)
Latences des appels de client gRPC |
|
CUMULATIVE, DISTRIBUTION, us
gce_instance |
Distribution cumulative des latences de transfert réseau pour que la bibliothèque gRPC effectue un RPC du point de vue de l'appelant.
buffer_size :
Taille de la mémoire tampon.
|
tpu/multislice/network/grpc_server_call_latencies
BÊTA
(projet)
Latences des appels de serveur gRPC |
|
CUMULATIVE, DISTRIBUTION, us
gce_instance |
Distribution cumulative des latences de transfert réseau pour que le serveur gRPC termine un RPC du point de vue du transport.
buffer_size :
Taille de la mémoire tampon.
|
tpu/multislice/network/grpc_tcp_delivery_rates
BÊTA
(projet)
Taux de distribution TCP gRPC |
|
CUMULATIVE, DISTRIBUTION, Mb/s
gce_instance |
Distribution cumulative des taux de transfert de données des connexions TCP. Chaque échantillon correspond au dernier débit de transfert de données moyen pour une connexion TCP donnée au cours du dernier intervalle TCP ACK. Des échantillons de débits de transfert de données sont extraits du noyau TCP Linux toutes les 20 secondes. Par conséquent, chaque connexion TCP crée environ trois échantillons par intervalle de 60 secondes. |
tpu/multislice/network/grpc_tcp_min_round_trip_times
BÊTA
(projet)
Temps d'aller-retour minimaux TCP gRPC |
|
CUMULATIVE, DISTRIBUTION, us
gce_instance |
Distribution cumulative des latences de transfert réseau minimales par connexion TCP. |
tpu/multislice/network/grpc_tcp_packets_retransmitted_count
BÊTA
(projet)
Nombre de paquets TCP gRPC retransmis |
|
CUMULATIVE, INT64, 1
gce_instance |
Nombre total de paquets retransmis. |
tpu/multislice/network/grpc_tcp_packets_sent_count
BÊTA
(projet)
Nombre de paquets TCP gRPC envoyés |
|
CUMULATIVE, INT64, 1
gce_instance |
Nombre total de paquets envoyés par TCP. |
tpu/slice/capacity/available_chips
BÊTA
(projet)
Nombre de puces TPU disponibles |
|
GAUGE, INT64, 1
compute.googleapis.com/AcceleratorSlice |
Nombre actuel de puces TPU de la réservation étendue qui sont activement disponibles et prêtes à l'emploi. Échantillonné toutes les 60 secondes. Après échantillonnage, les données ne sont pas visibles pendant un délai pouvant atteindre 360 secondes.
accelerator_type :
Type et génération de l'accélérateur.
reservation_id : ID de la réservation de la machine physique.
block_id : ID de bloc associé à la tranche.
subblock_id : ID du sous-bloc associé à la tranche.
provisioning_model :
Modèle de provisionnement associé.
protection_tier : modèle de protection associé.
|
tpu/slice/capacity/committed_chips
BÊTA
(projet)
Nombre de puces TPU achetées |
|
GAUGE, INT64, 1
compute.googleapis.com/AcceleratorSlice |
Nombre actuel de puces TPU achetées pour la réservation étendue. Échantillonné toutes les 60 secondes. Après échantillonnage, les données ne sont pas visibles pendant un délai pouvant atteindre 360 secondes.
accelerator_type :
Type et génération de l'accélérateur.
reservation_id : ID de la réservation de la machine physique.
block_id : ID de bloc associé à la tranche.
subblock_id : ID du sous-bloc associé à la tranche.
provisioning_model :
Modèle de provisionnement associé.
protection_tier : modèle de protection associé.
|
Pour obtenir la liste complète des métriques générées par Compute Engine, consultez Métriques Compute Engine.
Collecteur de télémétrie de l'IA
Le collecteur de télémétrie d'IA collecte et publie les métriques TPU sous l'espace de noms compute.googleapis.com pour les TPU créés à l'aide de l'API Compute Engine.
Ces métriques sont des métriques système intégrées qui offrent une visibilité sur l'état et les performances.
L'architecture du collecteur de télémétrie d'IA est conçue comme un collecteur OpenTelemetry (OTEL) léger et spécialisé. Il utilise deux récepteurs principaux pour capturer les données :
- Récepteur de l'environnement d'exécution TPU : récupère les métriques d'exécution et de charge de travail (telles que le rapport cyclique et l'utilisation de la mémoire) directement à partir de l'environnement d'exécution TPU lorsqu'une charge de travail de machine learning est active.
- Récepteur hôte TPU : capture les métriques d'utilisation du matériel, telles que l'utilisation des TensorCores et de la bande passante mémoire, directement à partir de l'appareil, qu'une charge de travail soit en cours d'exécution ou non.
Le collecteur de télémétrie d'IA utilise ensuite des processeurs pour appliquer automatiquement les tags de ressources nécessaires (tels que project_id, instance_id et zone) et exporter la télémétrie de manière sécurisée directement vers Cloud Monitoring.
Le collecteur de télémétrie d'IA est préinstallé dans les images Ubuntu LTS optimisées pour les TPU de Google et s'exécute automatiquement au démarrage de la VM. Pour utiliser cette configuration, spécifiez le projet et la famille d'images d'accélérateur Google officiels lorsque vous créez une instance ou un modèle d'instance de VM TPU. Une fois la VM démarrée, le collecteur de télémétrie d'IA envoie automatiquement les métriques aux tableaux de bord Cloud Monitoring.
Si vous créez des images de système d'exploitation personnalisées, vous pouvez utiliser le collecteur de télémétrie IA après avoir installé et exécuté l'image Docker ai-telemetry-collector. Pour en savoir plus, consultez Utiliser une image d'OS personnalisée.
Configuration
Le collecteur de télémétrie d'IA envoie automatiquement des métriques aux tableaux de bord Cloud Monitoring et ne nécessite aucune étape de configuration supplémentaire. Toutefois, vous pouvez configurer le package Snap ou l'image Docker pour ajouter des destinations d'exportation externes, modifier les intervalles de collecte des métriques et inclure des options de débogage.
Vous pouvez remplacer la configuration par défaut par un nouveau fichier de configuration ou ajouter un fichier de configuration supplémentaire à la configuration par défaut existante. Lorsque vous ajoutez des configurations, les clés qui n'existent pas encore sont ajoutées et celles qui existent déjà sont écrasées. Toutefois, les tableaux et les listes ne sont pas additifs. Les nouvelles listes doivent donc inclure les valeurs existantes et les nouvelles.
Le fichier YAML suivant configure le collecteur de télémétrie d'IA pour envoyer des métriques à Prometheus, une boîte à outils Open Source de surveillance et d'alerte pour les systèmes. Il active également l'option de débogage, qui affiche les métriques dans la console.
exporters:
prometheus:
endpoint: 0.0.0.0:8889
service:
pipelines:
metrics:
exporters:
- prometheus # For more: https://prometheus.io/docs/introduction/overview/
- googlecloud # If you do not include this, you'll lose Google Cloud Monitoring
- debug # print metrics within the console
OS par défaut
Si vous utilisez les images Ubuntu LTS optimisées pour les TPU de Google, exécutez la commande Snap suivante pour ajouter le nouveau fichier de configuration à la configuration existante :
sudo snap set \
ai-telemetry-collector \
extra-flags="--config /home/username/additional-config.yaml"
Si vous souhaitez écraser et remplacer la configuration existante, utilisez l'indicateur config-path au lieu de extra-flags :
sudo snap set \
ai-telemetry-collector \
config-path="/home/username/new-config.yaml"
La commande snap set doit déclencher un redémarrage automatique du collecteur de télémétrie d'IA. Pour vérifier que le collecteur a redémarré et que vos configurations ont bien été appliquées, utilisez la commande suivante pour afficher les journaux :
sudo snap logs -f ai-telemetry-collector
OS personnalisé
Si vous utilisez un OS personnalisé, exécutez la commande Docker suivante pour ajouter le nouveau fichier de configuration à la configuration existante :
# First apply the default configs via `--config=/etc/ai-telemetry-collector/config.yaml`
# Then apply your additional config by volume mount.
docker run --privileged --net=host \
-v <path>/additional-config.yaml:/etc/ai-telemetry-collector/additional-config.yaml \
ai-telemetry-collector:latest \
--config=/etc/ai-telemetry-collector/config.yaml \
--config=/etc/ai-telemetry-collector/additional-config.yaml
Si vous souhaitez écraser et remplacer la configuration existante, utilisez la commande Docker suivante :
# Mount a volume (your config file) to `/etc/ai-telemetry-collector/config.yaml`
# The binary automatically picks up this file.
docker run --privileged --net=host \
-v <path>/my-config.yaml:/etc/ai-telemetry-collector/config.yaml \
ai-telemetry-collector:latest
Journaux d'audit
Les servicesGoogle Cloud génèrent des journaux d'audit qui enregistrent les activités d'administration et d'accès dans vos ressources Google Cloud . Pour en savoir plus, consultez Journaux d'audit Compute Engine.