Métriques GPU Dataflow

Cette page présente les métriques de GPU compatibles avec Dataflow. Vous pouvez utiliser ces métriques pour surveiller l'état et l'utilisation du GPU. La plupart des métriques sont compatibles avec toutes les tâches Dataflow, mais certaines nécessitent une configuration supplémentaire pour de nombreux modèles de GPU.

Prérequis

Les métriques GPU ne sont collectées que par les tâches Dataflow qui ont explicitement demandé des GPU. Pour en savoir plus, consultez la page Compatibilité avec les GPU.

Présentation

Bien que Dataflow génère de nombreuses métriques GPU, les principales sont la mémoire totale et la mémoire utilisée, qui sont équivalentes aux métriques de RAM, ainsi que l'activité et l'occupation des multiprocesseurs de flux (SM), qui sont les équivalents les plus proches des métriques de CPU Dataflow. D'autres métriques sont abordées dans les sections Métriques courantes et Métriques sur le RPM.

La mémoire totale et utilisée de chaque périphérique GPU du job est signalée par défaut. Dans l'interface de surveillance Dataflow, elles apparaissent sous "Utilisation de base du GPU". Ces métriques ne sont pas les mêmes que "Pourcentage d'accès à la mémoire", qui se trouve également dans les métriques GPU de base, mais qui indique le pourcentage de temps pendant lequel la mémoire du GPU a été consultée.

L'activité et l'occupation du multiprocesseur de flux sont des métriques de GPM. Ces métriques ne sont pas compatibles avec les appareils P4 et P100, mais le sont par défaut avec les appareils H100 et versions ultérieures. Pour tous les autres appareils, tels que les appareils T4 et L4, une configuration supplémentaire est nécessaire. Pour savoir comment les activer, consultez Collecte des données GPM. Si elles sont collectées au niveau de la tâche, ces métriques se trouvent sous "Utilisation du GPU GPM" dans l'interface de surveillance Dataflow.

Principes de base des métriques GPU Dataflow

Toutes les métriques GPU sont envoyées par les nœuds de calcul Dataflow à Cloud Monitoring. Les métriques par appareil sont disponibles sous dataflow.googleapis.com/worker/accelerator/gpu. Toutes ces métriques sont regroupées dans des catégories générales, telles que l'utilisation ou la température, et elles comportent toutes les libellés suivants :

  • device_uuid : identifie de manière unique l'appareil GPU, quel que soit le nœud de calcul ou le pipeline.
  • device_number : numéro attribué à l'appareil sur le nœud de calcul dans la plage [0, N), où N correspond au nombre de GPU sur le nœud de calcul.
  • device_model : modèle du GPU, tel que "Tesla T4".

device_uuid et device_model sont indépendants du worker et sont toujours identiques pour le même appareil physique. Le device_number est lié à la façon dont il est identifié sur ce nœud de calcul.

Métriques GPU courantes pour Dataflow

Les métriques courantes sont générées par chaque tâche Dataflow avec GPU. Dans Monitoring, elles utilisent toutes le format suivant :

dataflow.googleapis.com/worker/accelerator/gpu/CATEGORY/NAME

Le tableau suivant présente chaque métrique, ainsi que sa catégorie, son nom, son unité et son objectif.

Métrique Catégorie Nom Unité Description
Pourcentage d'exécution du kernel utilisation device_kernel_runtime Pourcentage Pourcentage de temps pendant lequel au moins un kernel s'est exécuté sur le GPU. Cela indique uniquement que le GPU a été utilisé, et non si ses ressources de traitement sont utilisées efficacement.
Pourcentage d'accès à la mémoire utilisation device_memory_access Pourcentage Pourcentage de temps pendant lequel des données ont été lues ou écrites dans la mémoire de l'appareil. Cela indique uniquement que la mémoire a été consultée, et non le pourcentage de mémoire utilisée.
Limite de mémoire mémoire device_limit MiB Quantité de mémoire disponible sur le GPU.
Utilisation de la mémoire mémoire device_usage MiB Quantité de mémoire utilisée par le GPU. Cela inclut à la fois la mémoire utilisée par le job Dataflow et la mémoire réservée au micrologiciel. Par conséquent, une certaine utilisation est attendue même si aucune mémoire n'a encore été transférée au GPU.
Erreurs ECC volatiles corrigibles memory/ecc/volatile device_correctable_total Nombre Nombre d'erreurs ECC (bit unique) corrigibles depuis le dernier rechargement du pilote. Pour Dataflow, le rechargement du pilote n'a lieu qu'au démarrage du nœud de calcul. Cela équivaut donc à des erreurs pendant la durée de vie du nœud de calcul.
Erreurs ECC volatiles non corrigibles memory/ecc/volatile device_uncorrectable_total Nombre Nombre d'erreurs ECC non corrigibles (double bit) depuis le dernier rechargement du pilote. Pour Dataflow, le rechargement du pilote n'a lieu qu'au démarrage du nœud de calcul. Cela équivaut donc à des erreurs pendant la durée de vie du nœud de calcul.
Limite de puissance power device_limit Watts Quantité maximale d'énergie que l'appareil est configuré pour utiliser. Dataflow ne modifie pas cette valeur par défaut.
Consommation électrique power device_usage Watts Quantité d'énergie utilisée par l'appareil.
Température actuelle température device_current Celsius Température actuelle du GPU.
Température de fonctionnement maximale température device_max_op Celsius Température à ne pas dépasser pour le GPU. Si la température actuelle est supérieure à cette valeur, les pilotes GPU tenteront de refroidir le GPU jusqu'à ce qu'il soit en dessous de cette température. Dataflow ne contrôle pas cela.
Température de ralentissement température device_slowdown Celsius Température à partir de laquelle le GPU commence à réduire sa fréquence. Si la température actuelle dépasse cette limite, vous devez vous attendre à une dégradation des performances jusqu'à ce que la température baisse. Dataflow ne contrôle pas cela.
Température d'arrêt température device_shutdown Celsius Température à laquelle le GPU s'éteint. Si la température actuelle la dépasse, l'appareil devient indisponible. Dataflow ne contrôle pas cette température et ne tente pas activement de récupérer les GPU qui ont été éteints en raison d'une température excessivement élevée.
Horloge SM actuelle horloge device_sm_current MHz Vitesse actuelle de l'horloge du multiprocesseur de flux. Si la température dépasse le seuil de ralentissement, le débit peut diminuer en raison de la limitation liée au refroidissement.
Fréquence d'horloge maximale des SM horloge device_sm_max MHz Vitesse maximale de l'horloge du multiprocesseur de flux.
Fréquence mémoire actuelle horloge device_memory_current MHz Vitesse actuelle de l'horloge mémoire. Si la température dépasse le seuil de ralentissement, le débit peut diminuer en raison de la limitation liée au refroidissement.
Fréquence mémoire maximale horloge device_memory_max MHz Vitesse maximale de l'horloge mémoire.

Métriques GPM pour Dataflow

Dataflow est partiellement compatible avec les métriques GPM. Le niveau d'assistance dépend du modèle de GPU et de la configuration de l'accélérateur. Par défaut, la plupart des jobs Dataflow avec GPU nécessitent une configuration supplémentaire.

Les métriques GPM suivent les mêmes principes de base que les métriques courantes.

Métriques acceptées

Comme pour les métriques courantes, les chemins de métriques GPM ont le format suivant :

dataflow.googleapis.com/worker/accelerator/gpu/CATEGORY/NAME

Certaines de ces métriques appartiennent à la même catégorie que certaines métriques courantes.

Métrique Catégorie Nom Unité Description
Activité SM utilisation device_sm_activity Pourcentage Pourcentage de temps pendant lequel un warp a été actif sur le SM (moyenne pour l'ensemble des SM de l'appareil). Cette métrique est semblable au pourcentage d'exécution du noyau, mais elle offre une image plus précise qui montre mieux si les ressources du GPU sont utilisées efficacement. NVIDIA définit une utilisation efficace comme étant égale ou supérieure à 80 %, et une utilisation inefficace comme étant égale ou inférieure à 50 %.
Occupation du multiprocesseur de flux utilisation device_sm_occupancy Pourcentage Pourcentage de warps actifs sur l'appareil par rapport au nombre maximal. Les jobs limités par la mémoire doivent avoir une occupation plus élevée que les jobs limités par le calcul. La métrique Pourcentage d'accès à la mémoire peut fournir des informations à ce sujet. Pour en savoir plus, consultez la documentation NVIDIA sur l'occupation atteinte.
Activité Tensor Pipe utilisation device_tensor_pipe_activity Pourcentage Pourcentage de temps pendant lequel le pipeline Tensor Core a été utilisé. Des valeurs plus élevées indiquent une utilisation plus importante des TensorCores du GPU, qui sont importants pour les opérations matricielles.
Activité du pipeline FP64 utilisation device_fp64_pipe_activity Pourcentage Pourcentage du temps d'utilisation du pipeline FP64 Core. Plus les valeurs sont élevées, plus les cœurs FP64 du GPU sont utilisés. Ces cœurs gèrent les opérations scalaires de valeurs à virgule flottante de 64 bits.
Activité du pipeline FP32 utilisation device_fp32_pipe_activity Pourcentage Pourcentage de temps pendant lequel le pipeline FP32 Core a été utilisé. Plus les valeurs sont élevées, plus les cœurs FP32 du GPU sont utilisés. Ces cœurs gèrent les opérations scalaires de valeurs à virgule flottante de 32 bits.
Activité du pipeline FP16 utilisation device_fp16_pipe_activity Pourcentage Pourcentage de temps d'utilisation du pipeline FP16. Contrairement à FP64 et FP32, qui sont associés respectivement aux cœurs CUDA 64 bits et 32 bits, FP16 est associé à l'exploitation des capacités de demi-précision des cœurs Tensor.
Lecture PCIe pcie device_read Mio/s Débit de données lues par le GPU à partir de la VM hôte via PCIe.
Transfert PCIe pcie device_transfer Mio/s Débit de transfert de données du GPU vers la VM hôte via PCIe.
Lecture NVLink nvlink device_read Mio/s Débit de données lues par le GPU via NVLink. Étant donné que NVLink ne couvre que la communication entre les GPU, cela n'a pas d'importance si chaque nœud de calcul ne dispose que d'un seul GPU.
Transfert NVLink nvlink device_transfer Mio/s Débit de données transférées depuis le GPU avec NVLink. Étant donné que NVLink ne couvre que la communication entre les GPU, cela n'a pas d'importance si chaque nœud de calcul ne dispose que d'un seul GPU.

Collecter des métriques GPM

Toute tâche Dataflow avec des GPU utilisant l'architecture Hopper ou une version ultérieure (par exemple, H100, H100 Mega) collecte les métriques GPM par défaut. Aucune configuration supplémentaire n'est donc requise. Toutefois, les jobs utilisant l'architecture Pascal ou une version antérieure (comme P4 et P100) ne sont pas compatibles avec ces métriques.

Pour tous les autres modèles, la collecte de ces métriques nécessite l'ajout de install-gke-dcgm-exporter à la configuration de l'accélérateur de nœud de calcul. Exemple :

--experiment="worker_accelerator=type:TYPE;count:COUNT;install-nvidia-driver;install-gke-dcgm-exporter"

Cet indicateur installe un équivalent géré par GKE de l'exportateur NVIDIA DCGM. Les types suivants sont compatibles avec cette option :

  • nvidia-l4
  • nvidia-tesla-a100
  • nvidia-a100-80gb
  • nvidia-tesla-t4
  • nvidia-tesla-v100

Si un autre type est fourni, le service Dataflow renvoie une erreur lors de la création du job. Cette vérification vous permet d'éviter d'exécuter le conteneur sur des jobs où il n'aide pas à collecter des métriques.

Anciennes métriques

Dans Monitoring, vous pouvez voir deux métriques nommées dataflow.googleapis.com/job/gpu_utilization et dataflow.googleapis.com/job/gpu_memory_utilization. Ces métriques sont respectivement semblables à Pourcentage d'exécution du noyau et Pourcentage d'accès à la mémoire, mais les nœuds de calcul les signalent en calculant la moyenne des GPU sur le nœud de calcul. Nous vous recommandons d'utiliser les équivalents par appareil, en particulier si les nœuds de calcul sont configurés pour disposer de plusieurs GPU.

UI Dataflow

Si des GPU sont associés aux nœuds de calcul de la tâche Dataflow, les métriques devraient s'afficher dans l'onglet "Métriques de job" de la page de la tâche, sous la catégorie "Dataflow ML". Cette catégorie n'apparaît pas pour les jobs sans GPU et met quelques secondes à se charger, car elle vérifie d'abord que les métriques sont pertinentes pour le job.

Les sous-catégories suivantes s'affichent sous "Dataflow ML" :

Sous-catégorie Métriques Conditions
Utilisation GPU de base Pourcentage d'exécution du noyau
Pourcentage d'accès à la mémoire
Mémoire totale/utilisée
Tous les jobs GPU
Performances du GPU Puissance/Limite
Température/Limites
Fréquence SM actuelle/max.
Fréquence mémoire actuelle/max.
Erreurs ECC volatiles corrigibles/non corrigibles
Tous les jobs GPU
Utilisation du GPM du GPU Activité du SM
Occupation du SM
Activité du pipeline CUDA/Tensor
Métriques GPM activées
E/S du GPM du GPU Lecture/Transfert PCIe
Lecture/Transfert NVLink
Métriques GPM activées
Utilisation de l'ancien GPU Anciennes métriques Tous les jobs GPU

Lorsque vous affichez des métriques non héritées, vous pouvez filtrer les graphiques sur un nom de worker et un numéro de périphérique GPU spécifiques. Le nom du nœud de calcul est le même que celui de la VM si vous l'affichez sous Compute Engine. Le numéro de l'appareil GPU est le même que celui des libellés de métriques. Vous pouvez utiliser ce filtrage pour vérifier les métriques sur un appareil GPU spécifique, par exemple pour voir à quel point sa consommation d'énergie est proche de sa limite :

Exemple de filtrage des métriques GPU par appareil