Configurer Debugger à l'aide du kit SDK Python Amazon SageMaker - Amazon SageMaker

Configurer Debugger à l'aide du kit SDK Python Amazon SageMaker

Pour configurer Debugger afin de définir le profil de votre tâche d'entraînement et de l'utilisation des ressources, utilisez le kit SDK Python pour Amazon SageMaker et spécifiez les paramètres propres à Debugger lors de la création des estimateurs SageMaker. Vous devez configurer deux paramètres : profiler_config et rules.

Note

Par défaut, SageMaker Debugger surveille et débogue les tâches d'entraînement SageMaker sans paramètres spécifiques à Debugger configurés dans les estimateurs SageMaker. SageMaker Debugger collecte des métriques système toutes les 500 millisecondes et des tenseurs de sortie de base (sorties scalaires telles que la perte et la précision) toutes les 500 étapes. Il exécute également la règle ProfilerReport pour analyser les métriques système et agréger le tableau de bord Studio Debugger Insights ainsi qu'un rapport de profilage. Debugger enregistre les données de sortie dans votre compartiment S3 sécurisé.

Important

Pour utiliser les nouvelles fonctionnalités de SageMaker Debugger, vous devez mettre à niveau le kit SDK Python pour SageMaker et la bibliothèque client SMDebug. Dans votre noyau iPython, bloc-notes Jupyter ou environnement JupyterLab, exécutez le code suivant pour installer les dernières versions des bibliothèques et redémarrer le noyau.

import sys import IPython !{sys.executable} -m pip install -U sagemaker smdebug IPython.Application.instance().kernel.do_shutdown(True)

Créer un estimateur SageMaker avec Debugger

Les exemples de codes suivants montrent comment créer un estimateur SageMaker avec les paramètres spécifiques à Debugger en fonction du cadre de votre choix. Dans la documentation des rubriques suivantes, vous trouverez plus d'informations sur la configuration des paramètres spécifiques à Debugger, que vous pouvez combiner et assortir à votre guise.

Note

Les exemples de codes suivants ne sont pas directement exécutables. Vous devez passer aux sections suivantes et configurer les paramètres spécifiques à Debugger.

PyTorch

Pour accéder à la fonctionnalité de profilage profond pour PyTorch, vous devez actuellement spécifier les dernières images de conteneurs deep learning AWS avec CUDA 11 ou version ultérieure.

# An example of constructing a SageMaker PyTorch estimator import boto3 import sagemaker from sagemaker.pytorch import PyTorch from sagemaker.debugger import ProfilerConfig, ProfilerRule, rule_configs session=boto3.session.Session() region=session.region_name profiler_config=ProfilerConfig(...) rules=[ ProfilerRule.sagemaker(rule_configs.BuiltInRule()) ] estimator=PyTorch( entry_point="directory/to/your_training_script.py", role=sagemaker.get_execution_role(), base_job_name="debugger-profiling-demo", instance_count=1, instance_type="ml.p3.2xlarge", framework_version="1.12.0", py_version="py37", # SageMaker Debugger parameters profiler_config=profiler_config, rules=rules ) estimator.fit(wait=False)
TensorFlow

Pour accéder à la fonctionnalité de profilage profond pour TensorFlow, vous devez actuellement spécifier les dernières images de conteneurs deep learning AWS avec CUDA 11 ou version ultérieure.

# An example of constructing a SageMaker TensorFlow estimator import boto3 import sagemaker from sagemaker.tensorflow import TensorFlow from sagemaker.debugger import ProfilerConfig, ProfilerRule, rule_configs session=boto3.session.Session() region=session.region_name profiler_config=ProfilerConfig(...) rules=[ ProfilerRule.sagemaker(rule_configs.BuiltInRule()) ] estimator=TensorFlow( entry_point="directory/to/your_training_script.py", role=sagemaker.get_execution_role(), base_job_name="debugger-profiling-demo", instance_count=1, instance_type="ml.p3.2xlarge", framework_version="2.8.0", py_version="py37", # SageMaker Debugger parameters profiler_config=profiler_config, rules=rules ) estimator.fit(wait=False)
MXNet
# An example of constructing a SageMaker MXNet estimator import sagemaker from sagemaker.mxnet import MXNet from sagemaker.debugger import ProfilerConfig, ProfilerRule, rule_configs profiler_config=ProfilerConfig(...) rules=[ ProfilerRule.sagemaker(rule_configs.BuiltInRule()) ] estimator=MXNet( entry_point="directory/to/your_training_script.py", role=sagemaker.get_execution_role(), base_job_name="debugger-profiling-demo", instance_count=1, instance_type="ml.p3.2xlarge", framework_version="1.7.0", py_version="py37", # SageMaker Debugger parameters profiler_config=profiler_config, rules=rules ) estimator.fit(wait=False)
Note

Pour MxNet, lorsque vous configurez le paramètre profiler_config, vous ne pouvez configurer que la surveillance du système. Les métriques du cadre de profilage ne sont pas prises en charge pour MxNet.

XGBoost
# An example of constructing a SageMaker XGBoost estimator import sagemaker from sagemaker.xgboost.estimator import XGBoost from sagemaker.debugger import ProfilerConfig, ProfilerRule, rule_configs profiler_config=ProfilerConfig(...) rules=[ ProfilerRule.sagemaker(rule_configs.BuiltInRule()) ] estimator=XGBoost( entry_point="directory/to/your_training_script.py", role=sagemaker.get_execution_role(), base_job_name="debugger-profiling-demo", instance_count=1, instance_type="ml.p3.2xlarge", framework_version="1.5-1", # Debugger-specific parameters profiler_config=profiler_config, rules=rules ) estimator.fit(wait=False)
Note

Pour XGBoost, lorsque vous configurez le paramètre profiler_config, vous ne pouvez configurer que la surveillance du système. Les métriques du cadre de profilage ne sont pas prises en charge pour XGBoost.

Generic estimator
# An example of constructing a SageMaker generic estimator using the XGBoost algorithm base image import boto3 import sagemaker from sagemaker.estimator import Estimator from sagemaker import image_uris from sagemaker.debugger import ProfilerConfig, DebuggerHookConfig, Rule, ProfilerRule, rule_configs profiler_config=ProfilerConfig(...) rules=[ ProfilerRule.sagemaker(rule_configs.BuiltInRule()) ] region=boto3.Session().region_name xgboost_container=sagemaker.image_uris.retrieve("xgboost", region, "1.5-1") estimator=Estimator( role=sagemaker.get_execution_role() image_uri=xgboost_container, base_job_name="debugger-demo", instance_count=1, instance_type="ml.m5.2xlarge", # Debugger-specific parameters profiler_config=profiler_config, rules=rules ) estimator.fit(wait=False)

Lorsque vous configurez les paramètres suivants :

  • Paramètre profiler_config : configurez Debugger pour collecter les métriques système et les métriques de cadre de votre tâche d'entraînement et les enregistrer dans votre URI de compartiment S3 sécurisé ou votre machine locale. Pour en savoir plus sur la configuration du paramètre profiler_config, consultez Configurer l'utilisation des ressources matérielles du système de surveillance de Debugger et Configurer le profilage du cadre Debugger.

  • Paramètre rules : configurez ce paramètre pour activer les règles intégrées de Debugger que vous souhaitez exécuter en parallèle. Les règles analysent automatiquement votre tâche d'entraînement et détectent les problèmes d'entraînement. La règle ProfilerReport enregistre les rapports de profilage de Debugger dans votre compartiment S3 sécurisé. Pour savoir comment configurer le paramètre rules, consultez Configuration des règles intégrées de Debugger.

Note

Debugger enregistre en toute sécurité les données de sortie dans les sous-dossiers de votre compartiment S3 par défaut. Par exemple, le format de l'URI du compartiment S3 par défaut est s3://sagemaker-<region>-<12digit_account_id>/<base-job-name>/<debugger-subfolders>/. Il y a trois sous-dossiers créés par Debugger : debug-output, profiler-output et rule-output. Vous pouvez également extraire les URI du compartiment S3 par défaut à l'aide des méthodes de classe d'estimateur SageMaker.

Consultez les rubriques suivantes pour savoir comment configurer en détail les paramètres spécifiques à Debugger.