Profilage géré avec XProf
Vous pouvez utiliser le profilage XProf géré lorsque vous utilisez la surveillance des charges de travail ML Diagnostics, la CLI ML Diagnostics ou le SDK ML Diagnostics. XProf géré est une instance XProf avec un backend évolutif que la plate-forme ML Diagnostics provisionne et gère dans votre projetGoogle Cloud , tandis que XProf auto-hébergé nécessite que vous déployiez et gériez manuellement vos propres instances XProf pour afficher vos profils.
XProf est un outil Open Source de profilage et d'analyse des performances pour les charges de travail de machine learning (ML). Il fait partie de l'écosystème OpenXLA. Par rapport à XProf auto-hébergé, XProf géré offre les fonctionnalités suivantes :
- Aucune configuration : ne nécessite aucune installation ni configuration manuelle des serveurs de visualisation XProf ou de leurs dépendances.
- Accès centralisé aux sessions de profil à exécutions multiples : charge les sessions de profil sur différentes exécutions de ML avec une seule instance XProf gérée par projet.
- Scaling automatique et chargement rapide : accélère le chargement des profils volumineux et effectue un scaling automatique des ressources de backend lorsque plusieurs utilisateurs consultent des profils en même temps.
- Collaboration et sécurité intégrées : génère des liens partageables pour les sessions de profilage tout en protégeant les instances de profilage des failles de sécurité.
- Plusieurs modes de capture de profil : compatible avec la capture multi-hôte, le profilage à la demande, le profilage continu en mode instantané et la capture automatique de profil à partir de la surveillance de la charge de travail.
- Aucun coût d'infrastructure supplémentaire : fournit des ressources de calcul XProf gérées sans frais supplémentaires, contrairement à l'auto-hébergement d'une instance XProf.
Options de déploiement
Vous pouvez déployer et activer XProf géré à l'aide du SDK ML Diagnostics, de la surveillance des charges de travail ou de la CLI ML Diagnostics.
La plate-forme ML Diagnostics déploie une instance XProf gérée avec un backend évolutif par projet. Vous pouvez utiliser cette instance pour afficher toutes les sessions de profil capturées dans toutes les exécutions de ML du projet. La capture de profils nécessite également un bucket Cloud Storage associé à l'exécution de ML pour stocker les données de profil capturées.
Vous pouvez activer XProf géré et associer un bucket Cloud Storage à votre exécution de ML de l'une des manières suivantes :
- SDK ML Diagnostics : lorsque vous déployez votre première exécution de ML à l'aide du SDK, la plate-forme ML Diagnostics active et déploie automatiquement une instance XProf gérée dans votre projet. Vous spécifiez le bucket Cloud Storage pour stocker les profils en définissant le paramètre
gcs_pathlorsque vous définissez l'exécution de ML dans le SDK. - Surveillance des charges de travail : la surveillance des charges de travail n'active pas XProf géré par défaut. Au lieu de cela, la première fois que la capture automatique de profil déclenche une session de profil dans votre projet, la plate-forme de diagnostic de ML provisionne et active automatiquement une instance XProf gérée. Par défaut, ML Diagnostics provisionne également un bucket Cloud Storage régional dans votre projet.
- CLI ML Diagnostics : vous pouvez mettre à jour n'importe quelle exécution de ML pour activer l'outil XProf, qui déploie l'instance XProf gérée dans votre projet, et associer un bucket Cloud Storage à l'exécution de ML.
Capturer des profils
ML Diagnostics accepte quatre méthodes de capture des profils XProf : la capture programmatique, le profilage à la demande, le profilage continu en mode instantané et la capture automatique de profils à partir de la surveillance des charges de travail. Ces méthodes diffèrent par la manière dont une capture est déclenchée et par la période qu'elles enregistrent.
Le tableau suivant compare les méthodes de capture de profils :
| Méthode de capture | Description | Frameworks compatibles |
|---|---|---|
| Capture programmatique |
Intègre des commandes de profilage directement dans le code de votre charge de travail pour démarrer et arrêter l'enregistrement des données de profil à des étapes ou fonctions d'entraînement spécifiées. Utilisez cette méthode lorsque vous souhaitez obtenir des profils reproductibles d'étapes d'entraînement connues ou de sections de code spécifiques. |
JAX, vLLM, Tunix, TorchTPU |
| Profilage à la demande |
Déclenche une capture de profil en direct depuis la console Google Cloud ou la gcloud CLI sur une durée que vous spécifiez pendant l'exécution de votre charge de travail. Utilisez cette méthode lorsque vous souhaitez inspecter une charge de travail en cours d'exécution en temps réel sans modifier les plages d'étapes ni redémarrer la charge de travail. |
JAX, vLLM, Tunix, TorchTPU |
| Profilage continu en mode instantané (preview) |
Enregistre en continu un profil de 2 Go de traces d'appareil dans un tampon circulaire sur vos hôtes TPU et enregistre le dernier tampon de 2 Go dans votre bucket Cloud Storage lorsque vous déclenchez un instantané. Utilisez cette méthode lorsque vous devez inspecter l'activité de la charge de travail avant un ralentissement ou une anomalie intermittente. |
JAX, vLLM, Tunix |
| Capture automatique de profils à partir de la surveillance des charges de travail (preview) |
Déclenche automatiquement une capture de profil XProf lorsqu'un analyseur de dégradation des performances de surveillance de la charge de travail signale un état Utilisez cette méthode lorsque vous souhaitez que ML Diagnostics capture les données de trace au moment où les performances se dégradent, sans attendre que vous déclenchiez manuellement une capture. |
JAX, vLLM, Tunix, TorchTPU |
Capture programmatique
Avec la capture programmatique, vous intégrez des commandes de profilage directement dans le code de votre charge de travail pour spécifier explicitement quand démarrer et arrêter l'enregistrement des données de profil. Tous les profils écrits dans le bucket Cloud Storage spécifié par le paramètre gcs_path pour votre exécution de ML apparaissent automatiquement en tant que sessions de profil dans l'instance XProf gérée de votre projet, que vous pouvez afficher dans la consoleGoogle Cloud ou à l'aide de Google Cloud CLI.
Vous pouvez configurer la capture programmatique de l'une des manières suivantes :
- SDK ML Diagnostics : utilisez les méthodes
profdu SDK. Ces méthodes encapsulent les API de profilage sous-jacentes au niveau du framework, de sorte que votre code de profilage reste cohérent entre JAX, vLLM, Tunix et TorchTPU. - API de profilage natives du framework : appelez directement les méthodes de profilage intégrées de votre framework de ML et enregistrez le résultat dans le bucket Cloud Storage de votre exécution de ML :
- JAX : profilage des calculs
- vLLM : Profiler vLLM sur Cloud TPU
- TorchTPU : profilage des performances avec XProf
Profilage à la demande
Le profilage à la demande vous permet de déclencher une capture de profil en temps réel pendant l'exécution de votre charge de travail. Le déclenchement d'une capture à la demande enregistre un profil sur une durée que vous spécifiez. Vous pouvez activer le profilage à la demande directement dans le code de votre charge de travail ou à l'aide du SDK ML Diagnostics.
Prérequis
Avant de capturer un profil à la demande, procédez comme suit :
Démarrez un serveur XProf sur le port
9999dans votre charge de travail pour qu'il réponde aux déclencheurs de capture à la demande :Directement dans JAX : appelez la méthode
profiler.start_serversur le port9999:profiler.start_server(port=9999)SDK ML Diagnostics : définissez
on_demand_xprof=Truedansmachinelearning_runlorsque vous définissez votre exécution de ML.
Configurez l'orchestrateur de cluster ou l'environnement de calcul :
- Google Kubernetes Engine (GKE) ou Kubernetes autogéré : déployez l'opérateur et le webhook ou le DaemonSet de diagnostic de ML.
- Slurm géré par Cluster Director ou Slurm autogéré : déployez le daemon de diagnostic de ML à l'aide d'un script prolog Slurm.
- Compute Engine : déployez le daemon ML Diagnostics à l'aide d'un script de démarrage d'instance.
Capturer un profil à la demande
Vous pouvez déclencher une capture de profil à la demande depuis la consoleGoogle Cloud ou la gcloud CLI. Lorsque vous déclenchez une capture, spécifiez les paramètres suivants :
- Durée : durée de la capture, en millisecondes ou en secondes. La durée maximale que vous pouvez capturer dépend des caractéristiques de votre charge de travail et de la quantité de données pouvant être contenue dans la limite de 2 Go du profil.
- Cibles : nœuds cibles sur lesquels vous souhaitez capturer le profil :
- ConsoleGoogle Cloud : tous les nœuds exécutant la charge de travail sont renseignés automatiquement. Vous pouvez sélectionner tous les nœuds ou un sous-ensemble de nœuds.
- gcloud CLI : listez les cibles du profileur pour la charge de travail, puis déclenchez une capture pour toutes ces cibles ou un sous-ensemble d'entre elles.
- Niveaux de traceur d'appareil, d'hôte et Python : niveau de détail à capturer pour les traces d'appareil, d'hôte et Python.
Profilage continu en mode instantané
Lorsque le profilage continu est activé, la plate-forme ML Diagnostics enregistre en continu un profil de 2 Go dans un tampon circulaire sur vos hôtes TPU. Lorsque vous déclenchez un instantané, ML Diagnostics enregistre le dernier profil de 2 Go du tampon en tant que session de profil dans votre bucket Cloud Storage. Cet instantané vous permet d'inspecter l'activité de la charge de travail avant un problème. Le profilage continu n'est compatible qu'avec le traçage de l'appareil. Il ne collecte pas les traces de l'hôte ni de Python.
Prérequis
Avant de commencer le profilage continu, assurez-vous que votre environnement répond aux exigences suivantes :
- Versions de bibliothèque compatibles :
libtpuversion0.0.43ou ultérieure.jaxversion0.11.0ou ultérieure.
- Configuration de l'orchestrateur de cluster ou de l'environnement de calcul :
- GKE ou Kubernetes autogéré : déployez le DaemonSet de diagnostic de ML.
- Slurm géré par Cluster Director ou Slurm autogéré : déployez le daemon ML Diagnostics à l'aide d'un script prolog Slurm.
- Compute Engine : déployez le daemon ML Diagnostics à l'aide d'un script de démarrage d'instance.
Démarrez le serveur XProf dans le code de votre charge de travail en appelant profiler.start_server(port=9999) ou définissez on_demand_xprof=True dans machinelearning_run lorsque vous utilisez le SDK ML Diagnostics.
Démarrer le profilage continu
Vous pouvez démarrer le profilage continu directement dans le code de votre charge de travail, à l'aide de la gcloud CLI ou dans la console Google Cloud . Une fois démarré, le profilage continu enregistre des profils de 2 Go dans un tampon circulaire sur les hôtes TPU spécifiés.
Lorsque vous démarrez le profilage continu à l'aide de la gcloud CLI ou de la consoleGoogle Cloud , spécifiez les paramètres suivants :
- Cibles : nœuds cibles à profiler en continu :
- ConsoleGoogle Cloud : tous les nœuds exécutant la charge de travail sont renseignés automatiquement. Vous pouvez sélectionner tous les nœuds ou un sous-ensemble de nœuds.
- gcloud CLI : listez les cibles du profileur pour la charge de travail, puis démarrez le profilage continu pour toutes ces cibles ou un sous-ensemble d'entre elles.
- Niveau de traceur d'appareil : niveau de traçage de l'appareil à capturer en continu. Le traçage de l'hôte et de Python est désactivé pendant le profilage continu.
Vous pouvez démarrer le profilage continu directement à partir du code de votre charge de travail Python, dans la gcloud CLI ou dans la console Google Cloud .
Code de charge de travail Python
Pour démarrer le profilage continu directement à partir du code de votre charge de travail Python, appelez la fonction start_continuous_profiling :
from xprof.api import continuous_profiling_snapshot
continuous_profiling_snapshot.start_continuous_profiling('localhost:9999', {})
Pour en savoir plus, consultez Profilage JAX XProf.
gcloud CLI
Pour démarrer le profilage continu à partir de la gcloud CLI, listez les cibles de profileur actives et démarrez le profilage continu sur ces nœuds à l'aide des commandes suivantes :
PROJECT_ID="PROJECT_ID"
LOCATION="LOCATION"
RUN_ID="RUN_ID"
# 1. Discover active ProfilerTarget IDs on the ML run:
TARGETS=$(gcloud alpha mldiagnostics profiler-target list \
--machine-learning-run="${RUN_ID}" \
--location="${LOCATION}" \
--project="${PROJECT_ID}" \
--format="csv[no-heading](name.basename())" | paste -sd, -)
# 2. Start continuous profiling across the target nodes:
gcloud alpha mldiagnostics machine-learning-run start-continuous-profiling \
--machine-learning-run="${RUN_ID}" \
--location="${LOCATION}" \
--project="${PROJECT_ID}" \
--targets="${TARGETS}" \
--device-tracer-level=enabled
Remplacez les éléments suivants :
PROJECT_ID: ID de votre projet Google Cloud .LOCATION: région où se trouve votre exécution de ML.RUN_ID: ID de votre exécution de ML.
ConsoleGoogle Cloud
Pour démarrer le profilage continu dans la console Google Cloud , procédez comme suit :
- Dans la console Google Cloud , accédez à Cluster Director ou à GKE > IA/ML > Exécuter les diagnostics, puis sélectionnez votre exécution de ML.
- Ouvrez l'onglet Profils.
- Dans la barre d'action supérieure, cliquez sur Démarrer le profilage continu.
- Sélectionnez les nœuds à profiler et le niveau de traceur de l'appareil, puis cliquez sur Démarrer.
Une fois le profilage continu démarré, la bannière Capturing continuous profiles (Capturer des profils continus) affiche l'heure de début de la session sous la forme Since START_TIME, et la barre d'action affiche Take snapshot (Prendre un instantané) et Stop continuous profiling (Arrêter le profilage continu).
Prendre un instantané
Pendant l'exécution du profilage continu, vous pouvez capturer un instantané pour enregistrer le dernier profil de 2 Go du tampon circulaire en tant que session de profil dans votre bucket Cloud Storage. Vous pouvez capturer un instantané à l'aide de la gcloud CLI ou dans la console Google Cloud .
Lorsque vous capturez un instantané de profilage continu, spécifiez les paramètres suivants :
- Cibles : tout ou partie des nœuds cibles sur lesquels le profilage continu est en cours d'exécution :
- ConsoleGoogle Cloud : tous les nœuds configurés pour le profilage continu sont renseignés automatiquement, et vous pouvez sélectionner tous les nœuds ou un sous-ensemble de nœuds.
- gcloud CLI : spécifiez toutes les cibles du profileur ou un sous-ensemble de celles-ci sur lesquelles le profilage continu est en cours d'exécution.
- Nom de la session Profiler : nom de la session d'instantané capturée.
Vous pouvez capturer un instantané à l'aide de la gcloud CLI ou dans la consoleGoogle Cloud .
gcloud CLI
Pour capturer un instantané de profilage continu à l'aide de gcloud CLI, exécutez la commande suivante :
PROJECT_ID="PROJECT_ID"
LOCATION="LOCATION"
RUN_ID="RUN_ID"
gcloud alpha mldiagnostics profiler-session capture "SNAPSHOT_NAME" \
--machine-learning-run="${RUN_ID}" \
--location="${LOCATION}" \
--project="${PROJECT_ID}" \
--targets="TARGET_NODES" \
--kind=snapshot
Remplacez les éléments suivants :
PROJECT_ID: ID de votre projet Google Cloud .LOCATION: région où se trouve votre exécution de ML.RUN_ID: ID de votre exécution de ML.SNAPSHOT_NAME: nom de la session de profilage capturée.TARGET_NODES: liste de nœuds cibles à capturer, séparés par une virgule.
ConsoleGoogle Cloud
Pour capturer un instantané de profilage continu dans la console Google Cloud , procédez comme suit :
- Dans la console Google Cloud , accédez à Cluster Director ou à GKE > IA/ML > Exécuter les diagnostics, sélectionnez votre exécution de ML, puis ouvrez l'onglet Profils.
- Dans la barre d'action supérieure, cliquez sur Prendre un instantané.
- Dans le volet Capturer un instantané de profilage continu, saisissez un nom de profil, sélectionnez les nœuds cibles, puis cliquez sur Envoyer.
L'instantané s'affiche dans le tableau Profils. Si le lien n'apparaît pas immédiatement, cliquez sur Actualiser.
Capture automatique de profils à partir de la surveillance de la charge de travail
Grâce à la capture automatique de profils à partir de la surveillance des charges de travail, ML Diagnostics capture automatiquement un profil XProf lorsqu'un analyseur de dégradation des performances signale un état "bad", au lieu d'attendre que vous déclenchiez manuellement une capture à la demande après qu'un problème s'est produit. Vous pouvez configurer la capture automatique de profils pour déclencher une capture à la demande ou, si le profilage continu est activé, un instantané de profilage continu. Ce processus vous permet de diagnostiquer la cause principale d'un problème à l'aide d'un profil capturé au moment de l'événement.
Pour obtenir des instructions de configuration et connaître les conditions préalables, consultez Capture automatique de profils dans la documentation sur la surveillance des charges de travail.
Analyse de profil par IA agentive
L'analyse de profil par IA agentique analyse automatiquement les profils de performances XProf capturés pour les charges de travail TPU et génère un rapport d'analyse HTML à partir des données de trace XProf brutes. À l'aide des modèles Gemini sur Vertex AI, l'agent d'analyse exécute les outils de profilage XProf, résume les goulots d'étranglement des performances et recommande des modifications de code ou de configuration. Une fois les API requises activées, ML Diagnostics génère un rapport d'analyse de profil d'IA agentive pour chaque profil capturé dans la plate-forme.
L'analyse de profil par IA agentique utilise les mêmes outils et fonctionnalités sous-jacents que le dépôt de compétences XProf Open Source.
Plutôt que d'utiliser directement le fichier de compétence ou d'installer la CLI XProf requise par la compétence Open Source, ML Diagnostics importe les implémentations de l'outil XProf sous-jacent afin que l'agent puisse les appeler directement. Par conséquent, le résultat de l'analyse dans ML Diagnostics équivaut à l'exécution des compétences XProf Open Source avec la CLI XProf sur des fichiers xplane locaux.
Prérequis
Avant d'utiliser l'analyse de profil par IA agentique, effectuez les étapes de configuration suivantes dans votre projet Google Cloud .
Activer les API requises
Activez l'API Vertex AI (aiplatform.googleapis.com) pour que l'agent d'analyse puisse exécuter des modèles Gemini dans votre projet :
- ConsoleGoogle Cloud : dans la bibliothèque d'API, activez l'API Vertex AI.
gcloud CLI : exécutez la commande suivante :
gcloud services enable aiplatform.googleapis.com
Attribuer des rôles IAM
Attribuez à votre compte utilisateur l'un des rôles IAM (Identity and Access Management) suivants :
- Lecteur Cluster Director (
roles/hypercomputecluster.viewer) : accorde un accès en lecture seule aux ressources Cluster Director et ML Diagnostics, y compris aux rapports d'analyse générés dans la console Google Cloud sous Exécuter les diagnostics > Profils. - Rôle personnalisé (
hypercomputecluster.locations.analysis) : accorde l'autorisation d'afficher les rapports d'analyse générés dans la console Google Cloud sous Exécuter les diagnostics > Profils lorsqu'il est ajouté à un rôle personnalisé.
Fonctionnement
Lorsqu'une capture de profil programmatique, à la demande, continue ou automatique est terminée, un job en arrière-plan isolé exécute le workflow d'analyse suivant sur le profil XProf :
- Collecte de données étendue : exécute 15 outils XProf en parallèle pour collecter un instantané de l'état incluant le temps d'exécution, l'utilisation du matériel, l'utilisation de la mémoire, les limites de roofline, les opérations les plus lentes et les inefficacités du compilateur. Cette étape normalise les temps par étape d'entraînement et sépare les opérations saines des goulots d'étranglement.
- Investigation ciblée par l'IA : examine l'instantané de l'état collecté. Si la charge de travail présente une utilisation élevée des ressources de calcul, un faible temps d'inactivité, un faible coût de communication et un faible risque de mémoire insuffisante, l'agent ignore les appels d'outils supplémentaires et génère un rapport
OPTIMAL. Si des goulots d'étranglement sont détectés, l'agent formule des hypothèses et exécute jusqu'à quatre vérifications de suivi ciblées à l'aide d'outils XProf supplémentaires pour inspecter les opérations environnantes dans le graphique de calcul, les retards de chronologie entre les hôtes et les noyaux personnalisés. - Génération de rapports : combine les métriques de XProf avec l'analyse de la cause principale et les corrections recommandées par l'agent IA. Le rapport
summary.htmlgénéré est enregistré dans votre bucket Cloud Storage et s'affiche dans la consoleGoogle Cloud sous Exécuter les diagnostics > Profils.
Ce workflow garantit la confidentialité des données et de l'analyse de votre profil dans votre projet. Les traces brutes du profileur et les rapports HTML générés sont stockés dans votre bucket Cloud Storage, et tous les appels de modèle d'IA sont exécutés via Vertex AI dans votre projet Google Cloud .
Outils XProf
Le tableau suivant décrit les outils XProf que l'agent exécute pendant l'analyse :
| Catégorie | Outils XProf | Description |
|---|---|---|
| Présentation de la charge de travail et durée des étapes |
get_xprof_overview,
get_step_trace,
get_kpi_metrics,
get_device_information,
get_hosts,
get_utilization_viewer,
get_smart_suggestions
|
Ces outils s'exécutent lors de la collecte de données générale, et l'outil
|
| Roofline et opérations les plus lentes |
get_roofline_model,
get_hlo_op_profile
|
Ces outils s'exécutent lors de la collecte de données générales et de l'investigation ciblée de l'IA pour vérifier les éléments suivants :
|
| Détecteurs d'inefficacité du compilateur |
detect_layout_mismatch_copies,
detect_unfused_reshapes,
detect_unnecessary_convert_reduce,
list_hlo_modules
|
Ces outils s'exécutent lors de la collecte de données générales pour vérifier les éléments suivants :
|
| Mémoire et risque de mémoire insuffisante |
get_memory_profile,
get_peak_allocations
|
Ces outils s'exécutent lors de la collecte de données générales pour vérifier les éléments suivants :
|
| Explorateur de graphiques de calcul | get_hlo_neighborhood |
Cet outil s'exécute lors d'une investigation d'IA ciblée pour vérifier les opérations immédiatement avant et après une opération lente dans le graphique XLA, et identifier ce qui bloque la fusion du compilateur ou force le déplacement des données. |
| Chronologie et timing du kernel |
aggregate_xplane_events,
get_kernel_stats
|
Ces outils s'exécutent lors d'une investigation ciblée de l'IA pour vérifier les éléments suivants :
|
| Profileur de noyau personnalisé |
llo_load,
llo_query
|
Ces outils s'exécutent lors d'une investigation d'IA ciblée pour vérifier les traces d'exécution de bas niveau pour les noyaux personnalisés, tels que Pallas ou Mosaic, qui semblent opaques pour le profilage standard de haut niveau. |
Rapport d'analyse de profil par IA
Une fois l'analyse d'un profil capturé terminée, ML Diagnostics enregistre le rapport summary.html généré dans votre bucket Cloud Storage et l'affiche dans la console Google Cloud sous Exécuter les diagnostics > Profils. Vous pouvez utiliser ce rapport pour examiner l'état général de votre charge de travail, inspecter les principaux goulots d'étranglement des performances et identifier les modifications de code ou de configuration recommandées.
Chaque rapport généré comprend les sections suivantes :
- Résumé de l'analyse : affiche l'état global de
OPTIMALouNEEDS_ATTENTION, un résumé de trois à cinq phrases et des métriques de performances clés telles que le temps d'étape, l'utilisation de la mémoire et l'efficacité Roofline. - Goulots d'étranglement prioritaires et corrections exploitables : liste les résultats classés par ordre de priorité, de
P0pour les problèmes critiques àP2pour les problèmes mineurs. Chaque résultat inclut les éléments suivants :- Que se passe-t-il ? : explication de la cause principale, y compris les formes et les mises en page des tenseurs, le cas échéant.
- Preuve : citations directes des métriques et des opérations XProf où le goulot d'étranglement a été mesuré.
- Impact et correction attendus : durée de l'étape ou quantité de mémoire affectée, ainsi que les modifications recommandées du framework, du partitionnement ou du compilateur.
- Analyse détaillée de l'outil XProf : fournit des données complémentaires et des répartitions détaillées à partir des analyses suivantes :
- Analyse Roofline
- Analyse de mémoire
- Analyse du profil des opérations de l'optimiseur de haut niveau (HLO)
- Statistiques d'exécution du kernel
- Analyse du noyau personnalisé et de l'optimiseur de bas niveau