Étape 2 : lancer et déboguer des tâches d'entraînement à l'aide du kit SDK Python SageMaker - 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.

Étape 2 : lancer et déboguer des tâches d'entraînement à l'aide du kit SDK Python SageMaker

Pour configurer un estimateur SageMaker avec SageMaker Debugger, utilisez le kit SDK Python Amazon SageMaker et spécifiez des paramètres spécifiques à Debugger. Pour utiliser pleinement la fonctionnalité de débogage, vous devez configurer trois paramètres : debugger_hook_config, tensorboard_output_config et rules.

Important

Avant de créer et d'exécuter la méthode d'ajustement de l'estimateur pour lancer une tâche d'entraînement, assurez-vous d'adapter votre script d'entraînement en suivant les instructions fournies dans Étape 1 : adapter votre script d'entraînement pour enregistrer un hook.

Créer un estimateur SageMaker avec des paramètres spécifiques à Debugger

Les exemples de code de cette section montrent comment créer un estimateur SageMaker avec les paramètres spécifiques à Debugger.

Note

Les exemples de code suivants sont des modèles permettant de créer les estimateurs du framework SageMaker et ne sont pas directement exécutables. Vous devez passer aux sections suivantes et configurer les paramètres spécifiques à Debugger.

PyTorch
# An example of constructing a SageMaker PyTorch estimator import boto3 import sagemaker from sagemaker.pytorch import PyTorch from sagemaker.debugger import CollectionConfig, DebuggerHookConfig, Rule, rule_configs session=boto3.session.Session() region=session.region_name debugger_hook_config=DebuggerHookConfig(...) rules=[ Rule.sagemaker(rule_configs.built_in_rule()) ] 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", framework_version="1.12.0", py_version="py37", # Debugger-specific parameters debugger_hook_config=debugger_hook_config, rules=rules ) estimator.fit(wait=False)
TensorFlow
# An example of constructing a SageMaker TensorFlow estimator import boto3 import sagemaker from sagemaker.tensorflow import TensorFlow from sagemaker.debugger import CollectionConfig, DebuggerHookConfig, Rule, rule_configs session=boto3.session.Session() region=session.region_name 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", framework_version="2.9.0", py_version="py39", # Debugger-specific parameters 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 CollectionConfig, DebuggerHookConfig, Rule, rule_configs debugger_hook_config=DebuggerHookConfig(...) rules=[ Rule.sagemaker(rule_configs.built_in_rule()) ] 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 debugger_hook_config=debugger_hook_config, rules=rules ) estimator.fit(wait=False)
XGBoost
# An example of constructing a SageMaker XGBoost estimator import sagemaker from sagemaker.xgboost.estimator import XGBoost from sagemaker.debugger import CollectionConfig, DebuggerHookConfig, Rule, rule_configs debugger_hook_config=DebuggerHookConfig(...) rules=[ Rule.sagemaker(rule_configs.built_in_rule()) ] 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.5-1", # Debugger-specific parameters debugger_hook_config=debugger_hook_config, rules=rules ) estimator.fit(wait=False)
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 CollectionConfig, DebuggerHookConfig, Rule, rule_configs debugger_hook_config=DebuggerHookConfig(...) rules=[ Rule.sagemaker(rule_configs.built_in_rule()) ] 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 debugger_hook_config=debugger_hook_config, rules=rules ) estimator.fit(wait=False)

Configurez les paramètres suivants pour activer SageMaker Debugger :

  • debugger_hook_config (un objet de DebuggerHookConfig) : nécessaire pour activer le hook dans le script d'entraînement adapté pendant Étape 1 : adapter votre script d'entraînement pour enregistrer un hook, configurer le lanceur d'entraînement SageMaker (estimateur) pour collecter les tenseurs de sortie de votre tâche d'entraînement et enregistrer les tenseurs dans votre compartiment S3 sécurisé ou votre machine locale. Pour savoir comment configurer le paramètre debugger_hook_config, consultez Configurer SageMaker Debugger pour enregistrer les tenseurs.

  • rules (liste d'objets Rule) : configurez ce paramètre pour activer les règles intégrées de SageMaker Debugger que vous souhaitez exécuter en temps réel. Les règles intégrées sont des logiques qui déboguent automatiquement la progression de l'entraînement de votre modèle et détectent les problèmes d'entraînement en analysant les tenseurs de sortie enregistrés dans votre compartiment S3 sécurisé. Pour savoir comment configurer le paramètre rules, consultez Configuration des règles intégrées de Debugger. Pour obtenir la liste complète des règles intégrées de débogage des tenseurs de sortie, consultez Règle Debugger. Si vous souhaitez créer votre propre logique pour détecter les problèmes d'entraînement, consultez Créer des règles personnalisées Debugger pour l'analyse des tâches d'entraînement.

    Note

    Les règles intégrées sont disponibles uniquement via les instances d'entraînement SageMaker. Vous ne pouvez pas les utiliser en mode local.

  • tensorboard_output_config (objet de TensorBoardOutputConfig) : configurez SageMaker Debugger pour collecter les tenseurs de sortie au format compatible avec TensorBoard et les enregistrer dans votre chemin de sortie S3 spécifié dans l'objet TensorBoardOutputConfig. Pour en savoir plus, veuillez consulter la section Visualiser les tenseurs de sortie Amazon SageMaker Debugger dans TensorBoard.

    Note

    L'objet tensorboard_output_config doit être configuré avec le paramètre debugger_hook_config, ce qui vous oblige également à adapter votre script d'entraînement en ajoutant le hook sagemaker-debugger.

Note

SageMaker Debugger enregistre en toute sécurité les tenseurs de sortie dans les sous-dossiers de votre compartiment S3. Par exemple, le format de l'URI du compartiment S3 par défaut dans votre compte est s3://sagemaker-<region>-<12digit_account_id>/<base-job-name>/<debugger-subfolders>/. Il y a deux sous-dossiers créés par SageMaker Debugger : debug-output et rule-output. Si vous ajoutez le paramètre tensorboard_output_config, vous trouverez également le dossier tensorboard-output.

Consultez les rubriques suivantes pour obtenir des exemples supplémentaires sur la façon de configurer les paramètres spécifiques à Debugger.