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, utilisez le kit SDK Python Amazon SageMaker et spécifiez des paramètres propres à Debugger lors de la création d'estimateurs SageMaker. Vous devez configurer trois paramètres : profiler_config, debugger_hook_config et rules.

Note

Par défaut, Debugger contrôle et débogue les tâches d'entraînement SageMaker sans paramètres spécifiques à Debugger configurés dans les estimateurs 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 fonctions de Debugger, vous devez mettre à niveau le kit SDK Python 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.

TensorFlow

Pour accéder à la fonction de profilage de deep learning pour TensorFlow, vous devez spécifier les dernières images des conteneurs AWS Deep Learning Containers avec CUDA 11. Par exemple, vous devez spécifier l'URI d'image spécifique, comme illustré dans l'exemple de code suivant :

# An example of constructing a SageMaker TensorFlow estimator import boto3 import sagemaker from sagemaker.tensorflow import TensorFlow from sagemaker.debugger import ProfilerConfig, DebuggerHookConfig, Rule, ProfilerRule, rule_configs session=boto3.session.Session() region=session.region_name profiler_config=ProfilerConfig(...) debugger_hook_config=DebuggerHookConfig(...) rules=[ Rule.sagemaker(rule_configs.built_in_rule()), ProfilerRule.sagemaker(rule_configs.BuiltInRule()) ] estimator=TensorFlow( entry_point="directory/to/your_training_script.py", role=sagemaker.get_execution_role(), base_job_name="debugger-demo", instance_count=1, instance_type="ml.p3.2xlarge", image_uri=f"763104351884.dkr.ecr.{region}.amazonaws.com/tensorflow-training:2.3.1-gpu-py37-cu110-ubuntu18.04" # Debugger-specific parameters profiler_config=profiler_config, debugger_hook_config=debugger_hook_config, rules=rules ) estimator.fit(wait=False)
PyTorch

Pour accéder à la fonction de profilage profond pour PyTorch, vous devez spécifier les dernières images de conteneurs AWS Deep Learning Containers avec CUDA 11. Par exemple, vous devez spécifier l'URI d'image spécifique, comme illustré dans l'exemple de code suivant :

# An example of constructing a SageMaker PyTorch estimator import boto3 import sagemaker from sagemaker.pytorch import PyTorch from sagemaker.debugger import ProfilerConfig, DebuggerHookConfig, Rule, ProfilerRule, rule_configs session=boto3.session.Session() region=session.region_name profiler_config=ProfilerConfig(...) debugger_hook_config=DebuggerHookConfig(...) rules=[ Rule.sagemaker(rule_configs.built_in_rule()), ProfilerRule.sagemaker(rule_configs.BuiltInRule()) ] estimator=PyTorch( entry_point="directory/to/your_training_script.py", role=sagemaker.get_execution_role(), base_job_name="debugger-demo", instance_count=1, instance_type="ml.p3.2xlarge", image_uri=f"763104351884.dkr.ecr.{region}.amazonaws.com/pytorch-training:1.6.0-gpu-py36-cu110-ubuntu18.04", # Debugger-specific parameters profiler_config=profiler_config, debugger_hook_config=debugger_hook_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, DebuggerHookConfig, Rule, ProfilerRule, rule_configs profiler_config=ProfilerConfig(...) debugger_hook_config=DebuggerHookConfig(...) rules=[ Rule.sagemaker(rule_configs.built_in_rule()), ProfilerRule.sagemaker(rule_configs.BuiltInRule()) ] estimator=MXNet( entry_point="directory/to/your_training_script.py", role=sagemaker.get_execution_role(), base_job_name="debugger-demo", instance_count=1, instance_type="ml.p3.2xlarge", framework_version="1.7.0", py_version="py37", # Debugger-specific parameters profiler_config=profiler_config, debugger_hook_config=debugger_hook_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, DebuggerHookConfig, Rule, ProfilerRule, rule_configs profiler_config=ProfilerConfig(...) debugger_hook_config=DebuggerHookConfig(...) rules=[ Rule.sagemaker(rule_configs.built_in_rule()), ProfilerRule.sagemaker(rule_configs.BuiltInRule()) ] estimator=XGBoost( entry_point="directory/to/your_training_script.py", role=sagemaker.get_execution_role(), base_job_name="debugger-demo", instance_count=1, instance_type="ml.p3.2xlarge", framework_version="1.2-1", # Debugger-specific parameters profiler_config=profiler_config, debugger_hook_config=debugger_hook_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(...) debugger_hook_config=DebuggerHookConfig(...) rules=[ Rule.sagemaker(rule_configs.built_in_rule()), ProfilerRule.sagemaker(rule_configs.BuiltInRule()) ] region=boto3.Session().region_name xgboost_container=sagemaker.image_uris.retrieve("xgboost", region, "1.2-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, debugger_hook_config=debugger_hook_config, rules=rules ) estimator.fit(wait=False)

Lorsque vous configurez les paramètres suivants :

  • profiler_configParamètre  : 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.

  • debugger_hook_configParamètre  : configurez Debugger pour collecter les tenseurs de sortie de votre tâche d'entraînement et les enregistrer dans votre URI de compartiment S3 sécurisé ou votre machine locale. Pour savoir comment configurer le paramètre debugger_hook_config, consultez Configurer le hook de Debugger pour enregistrer les tenseurs.

  • rulesParamètre  : 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 URI de 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.