Utilisez Amazon SageMaker Profiler pour profiler les activités sur les AWS ressources informatiques - Amazon SageMaker

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Utilisez Amazon SageMaker Profiler pour profiler les activités sur les AWS ressources informatiques

Amazon SageMaker Profiler est actuellement en version préliminaire et est disponible gratuitement dans le cadre du support Régions AWS. La version généralement disponible d'Amazon SageMaker Profiler (le cas échéant) peut inclure des fonctionnalités et des prix différents de ceux proposés en version préliminaire.

Amazon SageMaker Profiler est une fonctionnalité d'Amazon SageMaker qui fournit une vue détaillée des ressources de AWS calcul fournies lors de la formation de modèles de deep learning sur. SageMaker Il se concentre sur le profilage de l'utilisation du processeur et du GPU, les exécutions du noyau sur les processeurs graphiques, les lancements du noyau sur les processeurs, les opérations de synchronisation, les opérations de mémoire entre les processeurs et les GPU, les latences entre les lancements du noyau et les exécutions correspondantes, et le transfert de données entre les processeurs et les GPU. SageMaker Profiler propose également une interface utilisateur (UI) qui permet de visualiser le profil, un résumé statistique des événements profilés et la chronologie d'une tâche de formation afin de suivre et de comprendre la relation temporelle des événements entre les GPU et les processeurs.

Note

SageMaker Profiler prend en charge PyTorch TensorFlow et est disponible dans AWS Deep Learning Containers pour SageMaker. Pour en savoir plus, veuillez consulter la section Images de framework et types Régions AWS d'instances pris en charge.

Pour les scientifiques des données

L'entraînement de modèles de deep learning sur un grand cluster de calcul pose souvent des problèmes d'optimisation du calcul, tels que des goulots d'étranglement, des latences de lancement du noyau, des limites de mémoire et une faible utilisation des ressources.

Pour identifier ces problèmes de performances de calcul, vous devez approfondir le profil des ressources de calcul afin de comprendre quels noyaux sont à l'origine de latences et quelles opérations sont à l'origine de goulots d'étranglement. Les data scientists peuvent tirer parti de l'interface utilisateur du SageMaker profileur pour visualiser le profil détaillé des tâches de formation. L'interface utilisateur fournit un tableau de bord avec des graphiques récapitulatifs et une interface chronologique pour suivre chaque événement sur les ressources de calcul. Les data scientists peuvent également ajouter des annotations personnalisées pour suivre certaines parties du travail de formation à l'aide des modules SageMaker Profiler Python.

Pour les administrateurs

Sur la page d'accueil de Profiler de la SageMaker console ou du SageMaker domaine, vous pouvez gérer les utilisateurs de l'application Profiler si vous êtes administrateur d'un AWS compte ou SageMaker d'un domaine. Chaque utilisateur du domaine peut accéder à sa propre application Profiler avec les autorisations accordées. En tant qu'administrateur de SageMaker domaine et utilisateur du domaine, vous pouvez créer et supprimer l'application Profiler en fonction du niveau d'autorisation dont vous disposez.

Images de framework et types Régions AWS d'instances pris en charge

Cette fonctionnalité prend en charge les frameworks de machine learning et les Régions AWS suivants.

Note

Pour utiliser cette fonctionnalité, assurez-vous qu'au moins la version 2.180.0 du SDK SageMaker Python est installée.

SageMaker images de framework préinstallées avec Profiler SageMaker

SageMaker Profiler est préinstallé dans les AWS Deep Learning Containers suivants pour. SageMaker

PyTorchimages

PyTorch versions AWS URI de l'image du DLC
2.2.0

763104351884 .dkr.ecr. <region>.amazonaws.com/pytorch-training:2.2.0-gpu-py310-cu121-ubuntu20.04-sagemaker

2.1.0

763104351884 .dkr.ecr. <region>.amazonaws.com/pytorch-training:2.1.0-gpu-py310-cu121-ubuntu20.04-sagemaker

2.0.1

763104351884 .dkr.ecr. <region>.amazonaws.com/pytorch-training:2.0.1-gpu-py310-cu118-ubuntu20.04 - sagemaker

763104351884 .dkr.ecr. <region>.amazonaws.com/pytorch-training:2.0.1-gpu-py310-cu121-ubuntu20.04-sagemaker

1.13.1

763104351884 .dkr.ecr. <region>.amazonaws.com/pytorch-training:1.13.1-gpu-py39-cu117-ubuntu20.04 - sagemaker

TensorFlow images

TensorFlow versions AWS URI de l'image du DLC
2.13.0

763104351884 .dkr.ecr. <region>.amazonaws.com/tensorflow-training:2.13.0-gpu-py310-cu118-ubuntu20.04 - sagemaker

2.12.0

763104351884 .dkr.ecr. <region>.amazonaws.com/tensorflow-training:2.12.0-gpu-py310-cu118-ubuntu20.04 - sagemaker

2.11.0

763104351884 .dkr.ecr. <region>.amazonaws.com/tensorflow-training:2.11.0-gpu-py39-cu112-ubuntu20.04-sagemaker

Important

La distribution et la maintenance des conteneurs du framework décrits dans les tableaux précédents sont régies par la politique de support du framework gérée par le service AWS Deep Learning Containers. Nous vous recommandons vivement de passer aux versions du framework actuellement prises en charge, si vous utilisez des versions antérieures du framework qui ne sont plus prises en charge.

Note

Si vous souhaitez utiliser SageMaker Profiler pour d'autres images de framework ou pour vos propres images Docker, vous pouvez installer SageMaker Profiler à l'aide des fichiers binaires du package SageMaker Python Profiler fournis dans la section suivante.

SageMaker Fichiers binaires du package Python Profiler

Si vous souhaitez configurer votre propre conteneur Docker, utiliser SageMaker Profiler dans d'autres conteneurs prédéfinis pour PyTorch et TensorFlow, ou installer le package SageMaker Python Profiler localement, utilisez l'un des fichiers binaires suivants. En fonction des versions Python et CUDA de votre environnement, choisissez l'une des options suivantes.

PyTorch

TensorFlow

Pour plus d'informations sur l'installation de SageMaker Profiler à l'aide des fichiers binaires, consultez(Facultatif) Installez le package Python SageMaker Profiler.

Soutenu Régions AWS

SageMaker Profiler est disponible dans les versions suivantes Régions AWS.

  • USA Est (Virginie du Nord) (us-east-1)

  • USA Est (Ohio) (us-east-2)

  • USA Ouest (Oregon) (us-west-2)

  • Europe (Francfort) (eu-central-1)

  • Europe (Irlande) (eu-west-1)

Types d’instance pris en charge

SageMaker Profiler prend en charge le profilage des tâches de formation sur les types d'instances suivants.

Profilage du processeur et du processeur graphique

  • ml.g4dn.12xlarge

  • ml.g5.24xlarge

  • ml.g5.48xlarge

  • ml.p3dn.24xlarge

  • ml.p4de.24xlarge

  • ml.p4d.24xlarge

  • ml.p5.48xlarge

Profilage du GPU uniquement

  • ml.g5.2xlarge

  • ml.g5.4xlarge

  • ml.g5.8xlarge

  • ml.g5.16.xlarge

Prérequis

La liste suivante indique les conditions requises pour commencer à utiliser SageMaker Profiler.

  • Un SageMaker domaine configuré avec Amazon VPC dans votre AWS compte.

    Pour obtenir des instructions sur la configuration d'un domaine, consultez Intégrer un SageMaker domaine Amazon à l'aide de la configuration rapide. Vous devez également ajouter des profils d'utilisateur de domaine pour que des utilisateurs individuels puissent accéder à l'application Profiler UI. Pour plus d'informations, voir Ajouter et supprimer des profils d'utilisateur de SageMaker domaine.

  • La liste suivante présente l'ensemble minimal d'autorisations pour utiliser l'application de l'interface utilisateur du profileur.

    • sagemaker:CreateApp

    • sagemaker:DeleteApp

    • sagemaker:DescribeTrainingJob

    • sagemaker:Search

    • s3:GetObject

    • s3:ListBucket

Préparez et exécutez un travail de formation avec SageMaker Profiler

La configuration et l'exécution d'une tâche de formation avec le SageMaker profileur se font en deux étapes : l'adaptation du script de formation et la configuration du lanceur de tâches de SageMaker formation.

Étape 1 : Adaptez votre script d'entraînement à l'aide des modules SageMaker Profiler Python

Pour commencer à capturer les exécutions du noyau sur des GPU pendant que la tâche d'entraînement est en cours d'exécution, modifiez votre script d'entraînement à l'aide des modules SageMaker Profiler Python. Importez la bibliothèque et ajoutez les méthodes start_profiling() et stop_profiling() pour définir le début et la fin du profilage. Vous pouvez également utiliser des annotations personnalisées facultatives pour ajouter des marqueurs dans le script d'entraînement afin de visualiser les activités du matériel lors d'opérations spécifiques, à chaque étape.

Notez que les annotateurs extraient les opérations des GPU. Pour les opérations de profilage dans les CPU, il n'est pas nécessaire d'ajouter d'annotations supplémentaires. Le profilage des CPU est également activé lorsque vous spécifiez la configuration du profilage, que vous observerez dans Étape 2 : Création d'un estimateur de SageMaker cadre et activation du profileur SageMaker .

Note

Le profilage d'une tâche d'entraînement complète n'est pas l'utilisation la plus efficace des ressources. Nous recommandons le profilage d'au plus 300 étapes d'une tâche d'entraînement.

Important

La mise à jour 14 décembre 2023 implique une modification radicale. Le nom du package SageMaker Profiler Python est remplacé parsmppy. smprof Cela est efficace dans les conteneurs SageMaker Framework pour TensorFlow v2.12 et versions ultérieures.

Si vous utilisez l'une des versions précédentes des conteneurs SageMaker Framework, telle que la TensorFlow version 2.11.0, le package Profiler SageMaker Python est toujours disponible sous le nom de. smppy Si vous ne savez pas quelle version ou quel nom de package vous devez utiliser, remplacez l'instruction d'importation du package SageMaker Profiler par l'extrait de code suivant.

try: import smprof except ImportError: # backward-compatability for TF 2.11 and PT 1.13.1 images import smppy as smprof

Approche 1. Utilisation du gestionnaire de contexte smprof.annotate pour annoter l'intégralité des fonctions

Vous pouvez encapsuler toutes les fonctions à l'aide du gestionnaire de smprof.annotate() contexte. Cet encapsuleur est recommandé si vous souhaitez effectuer un profilage par fonctions plutôt que par lignes de code. L'exemple de script suivant montre comment implémenter le gestionnaire de contexte pour encapsuler la boucle d'entraînement et les fonctions complètes à chaque itération.

import smprof SMProf = smprof.SMProfiler.instance() config = smprof.Config() config.profiler = { "EnableCuda": "1", } SMProf.configure(config) SMProf.start_profiling() for epoch in range(args.epochs): if world_size > 1: sampler.set_epoch(epoch) tstart = time.perf_counter() for i, data in enumerate(trainloader, 0): with smprof.annotate("step_"+str(i)): inputs, labels = data inputs = inputs.to("cuda", non_blocking=True) labels = labels.to("cuda", non_blocking=True) optimizer.zero_grad() with smprof.annotate("Forward"): outputs = net(inputs) with smprof.annotate("Loss"): loss = criterion(outputs, labels) with smprof.annotate("Backward"): loss.backward() with smprof.annotate("Optimizer"): optimizer.step() SMProf.stop_profiling()

Approche 2. Utilisation de smprof.annotation_begin() et de smprof.annotation_end() pour annoter une ligne de code spécifique dans les fonctions

Vous pouvez également définir des annotations pour profiler des lignes de code spécifiques. Vous pouvez définir le point de départ et le point final exacts du profilage au niveau des lignes de code individuelles et non par fonctions. Par exemple, dans le script suivant, step_annotator est défini au début de chaque itération et se termine à la fin de l'itération. Pendant ce temps, d'autres annotateurs détaillés pour chaque opération sont définis et encapsulent les opérations cibles tout au long de chaque itération.

import smprof SMProf = smprof.SMProfiler.instance() config = smprof.Config() config.profiler = { "EnableCuda": "1", } SMProf.configure(config) SMProf.start_profiling() for epoch in range(args.epochs): if world_size > 1: sampler.set_epoch(epoch) tstart = time.perf_counter() for i, data in enumerate(trainloader, 0): step_annotator = smprof.annotation_begin("step_" + str(i)) inputs, labels = data inputs = inputs.to("cuda", non_blocking=True) labels = labels.to("cuda", non_blocking=True) optimizer.zero_grad() forward_annotator = smprof.annotation_begin("Forward") outputs = net(inputs) smprof.annotation_end(forward_annotator) loss_annotator = smprof.annotation_begin("Loss") loss = criterion(outputs, labels) smprof.annotation_end(loss_annotator) backward_annotator = smprof.annotation_begin("Backward") loss.backward() smprof.annotation_end(backward_annotator) optimizer_annotator = smprof.annotation_begin("Optimizer") optimizer.step() smprof.annotation_end(optimizer_annotator) smprof.annotation_end(step_annotator) SMProf.stop_profiling()

Après avoir annoté et configuré les modules d'initiation du profileur, enregistrez le script pour le soumettre à l'aide d'un lanceur de tâches de SageMaker formation à l'étape 2 suivante. L'exemple de lanceur suppose que le script d'entraînement est nommé train_with_profiler_demo.py.

Étape 2 : Création d'un estimateur de SageMaker cadre et activation du profileur SageMaker

La procédure suivante montre comment préparer un estimateur de SageMaker framework pour l'entraînement à l'aide du SDK SageMaker Python.

  1. Configurez un objet profiler_config à l'aide des modules ProfilerConfig et Profiler comme suit.

    from sagemaker import ProfilerConfig, Profiler profiler_config = ProfilerConfig( profile_params = Profiler(cpu_profiling_duration=3600) )

    Voici la description du module Profiler et de son argument.

    • Profiler: Le module permettant d'activer SageMaker Profiler avec le job de formation.

      • cpu_profiling_duration (int) : spécifiez la durée en secondes pour le profilage sur les CPU. La valeur par défaut est de 3 600 secondes.

  2. Créez un estimateur de SageMaker cadre avec l'profiler_configobjet créé à l'étape précédente. Le code suivant montre un exemple de création d'un PyTorch estimateur. Si vous souhaitez créer un TensorFlow estimateur, importez-le sagemaker.tensorflow.TensorFlow plutôt et spécifiez l'une des TensorFlowversions prises en charge par SageMaker Profiler. Pour plus d'informations sur les frameworks et les types d'instance pris en charge, consultez SageMaker images de framework préinstallées avec Profiler SageMaker .

    import sagemaker from sagemaker.pytorch import PyTorch estimator = PyTorch( framework_version="2.0.0", role=sagemaker.get_execution_role(), entry_point="train_with_profiler_demo.py", # your training job entry point source_dir=source_dir, # source directory for your training script output_path=output_path, base_job_name="sagemaker-profiler-demo", hyperparameters=hyperparameters, # if any instance_count=1, # Recommended to test with < 8 instance_type=ml.p4d.24xlarge, profiler_config=profiler_config )
  3. Démarrez la tâche d'entraînement en exécutant la méthode fit. Avec wait=False, vous pouvez rendre silencieux les journaux des tâches d'entraînement et les laisser s'exécuter en arrière-plan.

    estimator.fit(wait=False)

Pendant l'exécution de la tâche d'entraînement ou une fois celle-ci terminée, vous pouvez passer à la rubrique suivante Ouvrez l'application SageMaker Profiler UI et commencer à explorer et à visualiser les profils enregistrés.

Si vous souhaitez accéder directement aux données de profil enregistrées dans le compartiment Amazon S3, utilisez le script suivant pour récupérer l'URI S3.

import os # This is an ad-hoc function to get the S3 URI # to where the profile output data is saved def get_detailed_profiler_output_uri(estimator): config_name = None for processing in estimator.profiler_rule_configs: params = processing.get("RuleParameters", dict()) rule = config_name = params.get("rule_to_invoke", "") if rule == "DetailedProfilerProcessing": config_name = processing.get("RuleConfigurationName") break return os.path.join( estimator.output_path, estimator.latest_training_job.name, "rule-output", config_name, ) print( f"Profiler output S3 bucket: ", get_detailed_profiler_output_uri(estimator) )

(Facultatif) Installez le package Python SageMaker Profiler

Pour utiliser SageMaker Profiler sur PyTorch des images de TensorFlow framework non répertoriées dansSageMaker images de framework préinstallées avec Profiler SageMaker , ou sur votre propre conteneur Docker personnalisé à des fins de formation, vous pouvez installer SageMaker Profiler à l'aide de l'un des. SageMaker Fichiers binaires du package Python Profiler

Option 1 : installer le package SageMaker Profiler lors du lancement d'une tâche de formation

Si vous souhaitez utiliser SageMaker Profiler pour former des tâches à l'aide PyTorch d' TensorFlow images non répertoriéesSageMaker images de framework préinstallées avec Profiler SageMaker , créez un requirements.txt fichier et localisez-le sous le chemin que vous avez spécifié pour le source_dir paramètre de l'estimateur du SageMaker framework à l'étape 2. Pour plus d'informations sur la configuration d'un requirements.txt fichier en général, consultez la section Utilisation de bibliothèques tierces dans la documentation du SDK SageMaker Python. Dans le requirements.txt fichier, ajoutez l'un des chemins de compartiment S3 pour leSageMaker Fichiers binaires du package Python Profiler.

# requirements.txt https://smppy.s3.amazonaws.com/tensorflow/cu112/smprof-0.3.332-cp39-cp39-linux_x86_64.whl

Option 2 : installer le package SageMaker Profiler dans vos conteneurs Docker personnalisés

Si vous utilisez un conteneur Docker personnalisé pour la formation, ajoutez-en un SageMaker Fichiers binaires du package Python Profiler à votre Dockerfile.

# Install the smprof package version compatible with your CUDA version RUN pip install https://smppy.s3.amazonaws.com/tensorflow/cu112/smprof-0.3.332-cp39-cp39-linux_x86_64.whl

Pour obtenir des conseils sur l'exécution d'un conteneur Docker personnalisé pour la formation SageMaker en général, voir Adapter votre propre conteneur de formation.

Ouvrez l'application SageMaker Profiler UI

Vous pouvez accéder à l'application SageMaker Profiler UI via les options suivantes.

Option 1 : lancer l'interface utilisateur du SageMaker profileur depuis la page des détails du domaine

Si vous avez accès à la SageMaker console, vous pouvez choisir cette option.

Accédez à la page des détails du domaine

La procédure suivante indique comment accéder à la page de détails du domaine.

  1. Ouvrez la SageMaker console Amazon à l'adresse https://console.aws.amazon.com/sagemaker/.

  2. Dans le volet de navigation de gauche, sélectionnez les domaines.

  3. Dans la liste des domaines, sélectionnez le domaine dans lequel vous souhaitez lancer l'application SageMaker Profiler.

Lancez l'application SageMaker Profiler UI

La procédure suivante indique comment lancer l'application SageMaker Profiler limitée à un profil utilisateur.

  1. Sur la page des détails du domaine, choisissez l'onglet Profils utilisateurs.

  2. Identifiez le profil utilisateur pour lequel vous souhaitez lancer l'application SageMaker Profiler UI.

  3. Choisissez Lancer pour le profil utilisateur que vous avez sélectionné, puis Profileur.

Option 2 : lancer l'application SageMaker Profiler UI depuis la page d'accueil du SageMaker profileur dans la console SageMaker

La procédure suivante explique comment lancer l'application SageMaker Profiler UI à partir de la page d'accueil SageMaker Profiler de la SageMaker console. Si vous avez accès à la SageMaker console, vous pouvez choisir cette option.

  1. Ouvrez la SageMaker console Amazon à l'adresse https://console.aws.amazon.com/sagemaker/.

  2. Dans le panneau de navigation de gauche, choisissez Profileur.

  3. Sous Commencer, sélectionnez le domaine dans lequel vous souhaitez lancer l'application Studio Classic. Si votre profil utilisateur n'appartient qu'à un seul domaine, l'option permettant de sélectionner un domaine ne s'affiche pas.

  4. Sélectionnez le profil utilisateur pour lequel vous souhaitez lancer l'application SageMaker Profiler UI. S'il n'existe aucun profil utilisateur dans le domaine, choisissez Créer un profil utilisateur. Pour plus d'informations sur la création d'un nouveau profil utilisateur, consultez Ajout et suppression de profils utilisateur.

  5. Choisissez Ouvrir le profileur.

Option 3 : utiliser la fonction de lancement d'applications dans le SDK SageMaker Python

Si vous êtes un utilisateur de SageMaker domaine et que vous n'avez accès qu'à SageMaker Studio, vous pouvez accéder à l'application SageMaker Profiler UI via SageMaker Studio Classic en exécutant la sagemaker.interactive_apps.detail_profiler_app.DetailProfilerAppfonction.

Notez que SageMaker Studio Classic est la version précédente de l'interface utilisateur de Studio avant re:Invent 2023, et qu'elle a été migrée en tant qu'application vers une nouvelle interface utilisateur Studio lors de re:Invent 2023. L'application SageMaker Profiler UI est disponible au niveau SageMaker du domaine et nécessite donc votre identifiant de domaine et votre nom de profil utilisateur. Actuellement, la DetailedProfilerApp fonction ne fonctionne que dans l'application SageMaker Studio Classic ; elle prend correctement en compte les informations de domaine et de profil utilisateur de SageMaker Studio Classic.

Pour les domaines, les utilisateurs du domaine et Studio créés avant re:Invent 2023, Studio Classic serait l'expérience par défaut, sauf si vous l'avez mis à jour en suivant les instructions de la section Migration depuis Amazon SageMaker Studio Classic. Si tel est votre cas, aucune autre action n'est nécessaire et vous pouvez lancer directement l'application SageMaker Profiler UI en exécutant la DetailProfilerApp fonction.

Si vous avez créé un nouveau domaine et Studio après re:Invent 2023, lancez l'application Studio Classic dans l'interface utilisateur de Studio, puis exécutez la DetailProfilerApp fonction pour lancer l'application SageMaker Profiler UI.

Notez que la DetailedProfilerApp fonction ne fonctionne pas dans les autres IDE d'apprentissage SageMaker automatique, tels que l' JupyterLab application SageMaker Studio, l'application SageMaker Studio Code Editor et les instances SageMaker Notebook. Si vous exécutez la DetailedProfilerApp fonction dans ces IDE, elle renvoie une URL vers la page d'accueil du profileur dans la SageMaker console, au lieu d'un lien direct pour ouvrir l'application Profiler UI.

Explorez les données de sortie de profil visualisées dans l'interface utilisateur du SageMaker profileur

Cette section présente l'interface utilisateur du SageMaker profileur et fournit des conseils sur la façon de l'utiliser et d'en tirer des informations.

Chargement du profil

Lorsque vous ouvrez l'interface utilisateur du SageMaker profileur, la page Charger le profil s'ouvre. Pour charger et générer le Tableau de bord et la Chronologie, suivez la procédure suivante.

Pour charger le profil d'une tâche d'entraînement
  1. Dans la section Liste des tâches d'entraînement, cochez la case pour choisir la tâche d'entraînement pour laquelle vous souhaitez charger le profil.

  2. Choisissez Load (Charger). Le nom de la tâche doit apparaître dans la section Profil chargé en haut de la page.

  3. Cochez la case d'option à gauche du Nom de la tâche pour générer le Tableau de bord et la Chronologie. Notez que lorsque vous cochez la case d'option, l'interface utilisateur ouvre automatiquement le Tableau de bord. Notez également que si vous générez les visualisations alors que le statut de la tâche et le statut de chargement semblent toujours en cours, l'interface utilisateur du SageMaker profileur génère des diagrammes de tableau de bord et une chronologie reprenant les données de profil les plus récentes collectées lors de la tâche de formation en cours ou les données de profil partiellement chargées.

Astuce

Vous pouvez charger et visualiser un seul profil à la fois. Pour charger un autre profil, vous devez d'abord décharger le profil précédemment chargé. Pour décharger un profil, utilisez l'icône de corbeille située à l'extrémité droite du profil dans la section Profil chargé.

Capture d'écran de la page Charger le profil dans l'interface utilisateur du SageMaker profileur

Tableau de bord

Une fois que vous avez fini de charger et de sélectionner la tâche d'entraînement, l'interface utilisateur ouvre la page du Tableau de bord dotée par défaut des panneaux suivants.

  • Temps d'activité de GPU : ce graphique à secteurs montre le pourcentage du temps d'activité de GPU par rapport à son temps d'inactivité. Vous pouvez vérifier si vos GPU sont plus actifs qu'inactifs pendant toute la durée de la tâche d'entraînement. Le temps d'activité de GPU est basé sur les points de données du profil dont le taux d'utilisation est supérieur à 0 %, tandis que le temps d'inactivité de GPU correspond aux points de données du profil avec une utilisation de 0 %.

  • Utilisation de GPU au fil du temps : ce graphique chronologique montre le taux d'utilisation moyen de GPU au fil du temps par nœud, en agrégeant tous les nœuds dans un seul graphique. Vous pouvez vérifier si les GPU présentent une charge de travail déséquilibrée, des problèmes de sous-utilisation, des goulots d'étranglement ou des problèmes d'inactivité dans certains intervalles de temps. Pour suivre le taux d'utilisation au niveau de chaque GPU et les exécutions associées au noyau, utilisez l'Interface de chronologie. Notez que la collecte des activités de GPU commence à l'endroit où vous avez ajouté la fonction de démarrage du profileur SMProf.start_profiling() dans votre script d'entraînement et s'arrête à SMProf.stop_profiling().

  • Temps d'activité de CPU : ce graphique à secteurs montre le pourcentage du temps d'activité de CPU par rapport à son temps d'inactivité. Vous pouvez vérifier si vos CPU sont plus actifs qu'inactifs pendant toute la durée de la tâche d'entraînement. Le temps d'activité de CPU est basé sur les points de données du profil dont le taux d'utilisation est supérieur à 0 %, tandis que le temps d'inactivité de CPU correspond aux points de données du profil avec une utilisation de 0 %.

  • Utilisation de CPU au fil du temps : ce graphique chronologique montre le taux d'utilisation moyen de CPU au fil du temps par nœud, en agrégeant tous les nœuds dans un seul graphique. Vous pouvez vérifier si les CPU sont saturés ou sous-utilisés pendant certains intervalles de temps. Pour suivre le taux d'utilisation des CPU en fonction de l'utilisation individuelle des GPU et des exécutions du noyau, utilisez l'Interface de chronologie. Notez que les métriques d'utilisation commencent dès l'initialisation de la tâche.

  • Temps passé par tous les noyaux de GPU : ce graphique à secteurs montre tous les noyaux de GPU utilisés au cours de la tâche d'entraînement. Il affiche les 15 noyaux principaux de GPU par défaut sous forme de secteurs individuels et tous les autres noyaux d'un secteur. Passez la souris sur les secteurs pour obtenir des informations plus détaillées. La valeur indique la durée totale de fonctionnement des noyaux de GPU en secondes et le pourcentage est basé sur la durée totale du profil.

  • Temps passé par les 15 noyaux principaux de GPU : ce graphique à secteurs montre tous les noyaux de GPU utilisés au cours de la tâche d'entraînement. Il montre les 15 noyaux principaux de GPU sous forme de secteurs individuels. Passez la souris sur les secteurs pour obtenir des informations plus détaillées. La valeur indique la durée totale de fonctionnement des noyaux de GPU en secondes et le pourcentage est basé sur la durée totale du profil.

  • Nombre de lancements de tous les noyaux de GPU : ce graphique à secteurs indique le nombre de lancements pour chaque noyau de GPU au cours de la tâche d'entraînement. Il affiche les 15 noyaux principaux de GPU sous forme de secteurs individuels et tous les autres noyaux d'un secteur. Passez la souris sur les secteurs pour obtenir des informations plus détaillées. La valeur indique le nombre total de noyaux de GPU lancés et le pourcentage est basé sur le nombre total de noyaux.

  • Nombre de lancements des 15 noyaux principaux de GPU : ce graphique à secteurs indique le nombre de lancements de chaque noyau de GPU au cours de la tâche d'entraînement. Il montre les 15 noyaux principaux de GPU. Passez la souris sur les secteurs pour obtenir des informations plus détaillées. La valeur indique le nombre total de noyaux de GPU lancés et le pourcentage est basé sur le nombre total de noyaux.

  • Répartition des durées d'étape : cet histogramme montre la distribution des durées des étapes sur les GPU. Ce diagramme est généré uniquement après avoir ajouté l'annotateur d'étape dans votre script d'entraînement.

  • Répartition de la précision du noyau : ce graphique à secteurs indique le pourcentage de temps passé à exécuter les noyaux dans différents types de données tels que FP32, FP16, INT32 et INT8.

  • Répartition de l'activité de GPU : ce graphique à secteurs indique le pourcentage de temps consacré aux activités de GPU, telles que l'exécution des noyaux, la mémoire (memcpy et memset) et la synchronisation (sync).

  • Répartition des opérations de mémoire de GPU : ce graphique à secteurs indique le pourcentage de temps consacré aux opérations de mémoire de GPU. Cela permet de visualiser les activités memcopy et de déterminer si votre tâche d'entraînement consacre trop de temps à certaines opérations de mémoire.

  • Créer un nouvel histogramme : créez un nouveau diagramme d'une métrique personnalisée que vous avez annoté manuellement pendant l'Étape 1 : Adaptez votre script d'entraînement à l'aide des modules SageMaker Profiler Python. Lorsque vous ajoutez une annotation personnalisée à un nouvel histogramme, sélectionnez ou saisissez le nom de l'annotation que vous avez ajoutée dans le script d'entraînement. Par exemple, dans le script d'entraînement de démonstration de l'étape 1, step, Forward, Backward, Optimize et Loss sont les annotations personnalisées. Lors de la création d'un nouvel histogramme, les noms de ces annotations doivent apparaître dans le menu déroulant pour la sélection des métriques. Si vous choisissez Backward, l'interface utilisateur ajoute au Tableau de bord l'histogramme du temps consacré aux transmissions vers l'arrière pendant la période profilée. Ce type d'histogramme est utile pour vérifier si des valeurs aberrantes prennent anormalement plus de temps et sont à l'origine de problèmes de goulots d'étranglement.

Les captures d'écran suivantes montrent le ratio de temps d'activité de GPU et de CPU, ainsi que le taux d'utilisation moyen de GPU et de CPU par rapport au temps par nœud de calcul.

Capture d'écran de la page Tableau de bord dans l'interface utilisateur du SageMaker profileur

La capture d'écran suivante montre un exemple de graphique à secteurs permettant de comparer le nombre de fois où les noyaux de GPU sont lancés et de mesurer le temps passé à les exécuter. Dans les panneaux Temps passé par tous les noyaux de GPU et Nombre de lancements de tous les noyaux de GPU, vous pouvez également spécifier un entier dans le champ de saisie pour k afin d'ajuster le nombre de légendes à afficher dans les diagrammes. Par exemple, si vous spécifiez 10, les diagrammes indiquent les 10 noyaux les plus exécutés et les plus lancés, respectivement.

Capture d'écran de la page Tableau de bord dans l'interface utilisateur du SageMaker profileur

La capture d'écran suivante montre un exemple d'histogramme de la durée des étapes et des graphiques à secteurs pour la distribution de la précision du noyau, la distribution de l'activité de GPU et la distribution des opérations de mémoire de GPU.

Capture d'écran de la page Tableau de bord dans l'interface utilisateur du SageMaker profileur

Interface de chronologie

Pour obtenir une vue détaillée des ressources de calcul au niveau des opérations et des noyaux planifiés sur les CPU et exécutés sur les GPU, utilisez l'interface Chronologie.

Vous pouvez faire un zoom avant et arrière et vous déplacer vers la gauche ou vers la droite dans l'interface de chronologie à l'aide de votre souris, des touches [w, a, s, d] ou des quatre flèches du clavier.

Astuce

Pour plus de conseils sur les raccourcis clavier permettant d'interagir avec l'interface Chronologie, choisissez Raccourcis clavier dans le volet de gauche.

Les traces chronologiques sont organisées sous forme d'arborescence, vous fournissant des informations allant du niveau de l'hôte au niveau de l'appareil. Par exemple, si vous exécutez des instances N comportant huit GPU chacune, la structure chronologique de chaque instance sera la suivante.

  • algo-i node — Voici les SageMaker balises pour attribuer des tâches aux instances provisionnées. inode est attribué de manière aléatoire. Par exemple, si vous utilisez 4 instances, cette section passe d'algo-1 à algo-4.

    • CPU : dans cette section, vous pouvez vérifier le taux d'utilisation moyen de CPU et les compteurs de performance.

    • GPU : dans cette section, vous pouvez vérifier le taux d'utilisation moyen de GPU, le taux d'utilisation de GPU individuel et les noyaux.

      • Utilisation du SUM : taux d'utilisation moyen de GPU par instance.

      • HOST-0 PID-123 : nom unique attribué à chaque piste de processus. L'acronyme PID est l'identifiant du processus et le numéro qui y est ajouté est le numéro d'identification du processus enregistré lors de la capture des données du processus. Cette section présente les informations suivantes relatives au processus.

        • Utilisation de GPU-inum_gpu : taux d'utilisation du inum_gpuème GPU au fil du temps.

        • Appareil GPU-inum_gpu : le noyau s'exécute sur le inum_gpuème dispositif GPU.

          • stream icuda_stream : flux CUDA montrant que le noyau s'exécute sur le dispositif GPU. Pour en savoir plus sur les flux CUDA, consultez les diapositives au format PDF sur Flux et simultanéités CUDA C/C++ (langue française non garantie) fournies par NVIDIA.

        • Hôte de GPU-inum_gpu : le noyau est lancé sur le inum_gpuème hôte de GPU.

Les captures d'écran suivantes montrent la Chronologie du profil d'une tâche d'entraînement exécutée sur des instances ml.p4d.24xlarge équipées de 8 GPU NVIDIA A100 Tensor Core chacune.

Ce qui suit est une vue agrandie du profil, avec une douzaine d'étapes, y compris un chargeur de données intermittent entre step_232 et step_233 pour récupérer le lot de données suivant.

Capture d'écran de la page Timeline de l'interface utilisateur du SageMaker profileur, qui permet de visualiser le profil d'un exemple de tâche de formation.

Pour chaque CPU, vous pouvez suivre l'utilisation de CPU et les compteurs de performance, tels que "clk_unhalted_ref.tsc" et "itlb_misses.miss_causes_a_walk", qui indiquent les instructions exécutées sur le CPU.

Pour chaque GPU, vous pouvez consulter une chronologie de l'hôte et une chronologie de l'appareil. Les lancements du noyau se font dans le calendrier de l'hôte et les exécutions du noyau dans le calendrier de l'appareil. Vous pouvez également voir les annotations (telles que les annotations Forward, Backward et Optimize) si vous avez ajouté un script d'entraînement dans la chronologie de l'hôte de GPU.

Dans la vue chronologique, vous pouvez également suivre les launch-and-run paires de noyaux. Cela vous permet de comprendre comment un lancement de noyau planifié sur un hôte (CPU) est exécuté sur le dispositif GPU correspondant.

Astuce

Appuyez sur la touche f pour zoomer sur le noyau sélectionné.

La capture d'écran suivante est une vue agrandie de step_233 et step_234 à partir de la capture d'écran précédente. L'intervalle chronologique sélectionné dans la capture d'écran suivante correspond à l'opération AllReduce, étape essentielle de communication et de synchronisation de l'entraînement distribué, exécutée sur l'appareil GPU-0. Dans la capture d'écran, notez que le lancement du noyau dans l'hôte GPU-0 se connecte au noyau exécuté dans le flux 1 de l'appareil GPU-0, indiqué par la flèche de couleur cyan.

Capture d'écran de la page Timeline dans l'interface utilisateur du SageMaker profileur

Deux onglets d'informations apparaissent également dans le volet inférieur de l'interface utilisateur lorsque vous sélectionnez un intervalle chronologique, comme indiqué dans la capture d'écran précédente. L'onglet Sélection actuelle affiche les détails du noyau sélectionné et du lancement du noyau connecté depuis l'hôte. La direction de connexion va toujours de l'hôte (CPU) à l'appareil (GPU) puisque chaque noyau de GPU est toujours appelé depuis un CPU. L'onglet Connexions indique la paire de lancement et d'exécution du noyau choisie. Vous pouvez sélectionner l'un ou l'autre pour le déplacer au centre de la vue Chronologie.

La capture d'écran suivante permet de zoomer davantage sur la paire de lancement et d'exécution de l'opération AllReduce.

Capture d'écran de la page Timeline dans l'interface utilisateur du SageMaker profileur

Informations

Dans Informations, vous pouvez accéder aux informations relatives à la tâche d'entraînement chargée, telles que le type d'instance, les Amazon Resource Names (ARN) des ressources de calcul provisionnées pour la tâche, les noms des nœuds et les hyperparamètres.

Paramètres

L'instance de l'application SageMaker Profiler UI est configurée pour s'arrêter après 2 heures d'inactivité par défaut. Dans Paramètres, utilisez les paramètres suivants pour régler le minuteur d'arrêt automatique.

  • Activer l'arrêt automatique de l'application : choisissez Activé pour permettre à l'application de s'arrêter automatiquement après le nombre d'heures d'inactivité spécifié. Pour désactiver la fonctionnalité d'arrêt automatique, choisissez Désactivé.

  • Seuil d'arrêt automatique en heures : si vous choisissez Activé pour Activer l'arrêt automatique de l'application, vous pouvez définir le délai en heures au cours duquel l'application s'arrête automatiquement. La valeur par défaut de cette option est 2.

Questions fréquemment posées sur l'utilisation de SageMaker Profiler

Consultez les questions fréquemment posées ci-dessous pour trouver des réponses à propos de l'utilisation de SageMaker Profiler.

Q. Je reçois un message d'erreur ModuleNotFoundError: No module named 'smppy'

Depuis décembre 2023, le nom du package Python SageMaker Profiler est passé de smppy smprof à pour résoudre un problème de nom de package dupliqué ; smppy il est déjà utilisé par un package open source.

Par conséquent, si vous l'utilisez avant décembre 2023 et smppy que vous rencontrez ce ModuleNotFoundError problème, cela peut être dû au fait que le nom du package n'est pas à jour dans votre script d'entraînement alors que le dernier smprof package était installé ou que vous utilisiez l'un des derniersSageMaker images de framework préinstallées avec Profiler SageMaker . Dans ce cas, assurez-vous de remplacer toutes les mentions de smppy par smprof dans votre script de formation.

Lorsque vous mettez à jour le nom du package SageMaker Profiler Python dans vos scripts d'entraînement, pour éviter toute confusion quant à la version du nom du package à utiliser, pensez à utiliser une instruction d'importation conditionnelle, comme indiqué dans l'extrait de code suivant.

try: import smprof except ImportError: # backward-compatability for TF 2.11 and PT 1.13.1 images import smppy as smprof

Notez également que si vous l'avez utilisé smppy lors de la mise à niveau vers TensorFlow les versions les plus récentes PyTorch , assurez-vous d'installer le dernier smprof package en suivant les instructions sur(Facultatif) Installez le package Python SageMaker Profiler.

Q. Je reçois un message d'erreur ModuleNotFoundError: No module named 'smprof'

Tout d'abord, assurez-vous d'utiliser l'un des conteneurs SageMaker Framework officiellement pris en charge. Si vous n'utilisez pas l'un d'entre eux, vous pouvez installer le smprof package en suivant les instructions sur(Facultatif) Installez le package Python SageMaker Profiler.

Q. Je ne parviens pas à importer ProfilerConfig

Si vous ne parvenez pas à importer ProfilerConfig dans votre script de lancement de tâches à l'aide du SDK SageMaker Python, il se peut que votre environnement local ou le noyau Jupyter disposent d'une version nettement obsolète du SDK Python. SageMaker Assurez-vous de mettre à niveau le SDK vers la dernière version.

$ pip install --upgrade sagemaker

Q. Je reçois un message d'erreur aborted: core dumped when importing smprof into my training script

Dans une version antérieure desmprof, ce problème se produisait avec les versions PyTorch 2.0+ et PyTorch Lightning. Pour résoudre ce problème, installez également le dernier smprof package en suivant les instructions sur(Facultatif) Installez le package Python SageMaker Profiler.

Q : Je ne trouve pas l'interface utilisateur du SageMaker profileur dans SageMaker Studio. Comment puis-je le trouver ?

Si vous avez accès à la SageMaker console, choisissez l'une des options suivantes.

Si vous êtes un utilisateur de domaine et que vous n'avez pas accès à la SageMaker console, vous pouvez accéder à l'application via SageMaker Studio Classic. Si tel est votre cas, choisissez l'option suivante.

Considérations

Tenez compte des points suivants lorsque vous utilisez SageMaker Profiler.