Sélectionner vos préférences de cookies

Nous utilisons des cookies essentiels et des outils similaires qui sont nécessaires au fonctionnement de notre site et à la fourniture de nos services. Nous utilisons des cookies de performance pour collecter des statistiques anonymes afin de comprendre comment les clients utilisent notre site et d’apporter des améliorations. Les cookies essentiels ne peuvent pas être désactivés, mais vous pouvez cliquer sur « Personnaliser » ou « Refuser » pour refuser les cookies de performance.

Si vous êtes d’accord, AWS et les tiers approuvés utiliseront également des cookies pour fournir des fonctionnalités utiles au site, mémoriser vos préférences et afficher du contenu pertinent, y compris des publicités pertinentes. Pour accepter ou refuser tous les cookies non essentiels, cliquez sur « Accepter » ou « Refuser ». Pour effectuer des choix plus détaillés, cliquez sur « Personnaliser ».

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

Mode de mise au point
Préparez et exécutez un travail de formation avec SageMaker Profiler - Amazon SageMaker AI

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.

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.

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 GPUs 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 de GPUs. Pour les opérations de profilage dans CPUs, 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 du framework SageMaker AI 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 AI Framework pour TensorFlow v2.12 et versions ultérieures.

Si vous utilisez l'une des versions précédentes des conteneurs SageMaker AI Framework, telle que la TensorFlow version 2.11.0, le package Profiler SageMaker Python est toujours disponible en tant que. 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 du framework SageMaker AI et activation du profileur SageMaker

La procédure suivante montre comment préparer un estimateur de framework d' SageMaker IA 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 CPUs. La valeur par défaut est de 3 600 secondes.

  2. Créez un estimateur de framework SageMaker AI 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 du framework AI 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 du framework AI 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 du framework AI 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 framework d' SageMaker IA à 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 sur l' SageMaker IA en général, consultez Adapter votre propre conteneur de formation.

ConfidentialitéConditions d'utilisation du sitePréférences de cookies
© 2025, Amazon Web Services, Inc. ou ses affiliés. Tous droits réservés.