View a markdown version of this page

Exemples de blocs-notes et de code pour configurer le hook de Debugger - 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.

Exemples de blocs-notes et de code pour configurer le hook de Debugger

Note

Amazon SageMaker Debugger n'est plus ouvert aux nouveaux clients. Les clients existants peuvent continuer à utiliser le service normalement. AWS continue d'investir dans l'amélioration de la sécurité et de la disponibilité de Debugger, mais nous ne prévoyons pas d'introduire de nouvelles fonctionnalités. Pour de plus amples informations, veuillez consulter Modification de la disponibilité du débogueur.

Les sections suivantes fournissent des exemples de blocs-notes et de code sur l'utilisation du hook de Debugger pour enregistrer, consulter et visualiser les tenseurs de sortie.

Exemples de blocs-notes de visualisation de tenseur

Les deux exemples de bloc-notes suivants illustrent l'utilisation avancée d'Amazon SageMaker Debugger pour visualiser les tenseurs. Debugger offre une vue transparente de l'entraînement des modèles de deep learning.

  • Analyse tensorielle interactive dans SageMaker Studio Notebook avec MXNet

    Cet exemple de bloc-notes montre comment visualiser des tenseurs enregistrés à l'aide d'Amazon SageMaker Debugger. En visualisant les tenseurs, vous pouvez voir comment les valeurs du tenseur changent pendant l'entraînement des algorithmes de deep learning. Ce bloc-notes inclut une tâche de formation avec un réseau neuronal mal configuré et utilise Amazon SageMaker Debugger pour agréger et analyser les tenseurs, y compris les gradients, les sorties d'activation et les pondérations. Par exemple, le diagramme suivant montre la distribution des gradients d'une couche convolutive qui souffre d'un problème de disparition gradient.

    Un graphique illustrant la distribution des dégradés.

    Ce bloc-notes montre également comment un bon réglage de l'hyperparamètre initial améliore le processus d'entraînement en générant les mêmes diagrammes de distribution du tenseur.

  • Visualisation et débogage des tenseurs à partir de l'entraînement d'un modèle MXNet

    Cet exemple de bloc-notes montre comment enregistrer et visualiser des tenseurs à partir d'une tâche d'entraînement sur le modèle MXNet Gluon à l'aide d'Amazon Debugger. SageMaker Cela montre que Debugger est configuré pour enregistrer tous les tenseurs dans un compartiment Amazon S3 et récupère les sorties ReLu d'activation pour la visualisation. La figure suivante montre une visualisation tridimensionnelle des sorties ReLu d'activation. En termes de couleurs, le bleu est défini pour indiquer une valeur proche de 0 et le jaune pour indiquer des valeurs proches de 1.

    Une visualisation des sorties d'activation ReLU.

    Dans ce bloc-notes, la classe TensorPlot importée de tensor_plot.py est conçue pour tracer des réseaux de neurones convolutifs qui utilisent des images bidimensionnelles pour les entrées. Le script tensor_plot.py fourni avec le bloc-notes récupère les tenseurs en utilisant Debugger et visualise le réseau de neurones convolutif. Vous pouvez exécuter ce bloc-notes sur SageMaker Studio pour reproduire la visualisation du tenseur et implémenter votre propre modèle de réseau neuronal convolutif.

  • Real-time Analyse tensorielle dans un SageMaker bloc-notes avec MXNet

    Cet exemple vous explique comment installer les composants requis pour émettre des tenseurs dans le cadre d'une tâche de SageMaker formation Amazon et comment utiliser les opérations de l'API Debugger pour accéder à ces tenseurs pendant l'entraînement. Un modèle de réseau de neurones convolutif gluon est entraîné sur le jeu de données Fashion MNIST. Pendant que la tâche est en cours d'exécution, vous verrez comment Debugger récupère les sorties d'activation de la première couche convolutive de chacun des 100 lots et comment il les visualise. Vous découvrirez également comment visualiser les pondérations une fois la tâche terminée.

Enregistrement des tenseurs à l’aide des collections Debugger intégrées

Vous pouvez utiliser des collections intégrées de tenseurs à l'aide de la commande CollectionConfig et les enregistrer à l'aide de l'API DebuggerHookConfig. L'exemple suivant montre comment utiliser les paramètres par défaut des configurations de hook du débogueur pour créer un estimateur SageMaker AI TensorFlow . Vous pouvez également l'utiliser pour les estimateurs MXNet et XGBoost. PyTorch

Note

Dans l'exemple de code suivant, le paramètre s3_output_path pour DebuggerHookConfig est facultatif. Si vous ne le spécifiez pas, Debugger enregistre les tenseurs às3://<output_path>/debug-output/, où <output_path> est le chemin de sortie par défaut des tâches de SageMaker formation. Par exemple :

"s3://sagemaker-us-east-1-111122223333/sagemaker-debugger-training-YYYY-MM-DD-HH-MM-SS-123/debug-output"
import boto3 import sagemaker from sagemaker.train import ModelTrainer from sagemaker.core.debugger import DebuggerHookConfig, CollectionConfig from sagemaker.core.helper.session_helper import Session, get_execution_role # use Debugger CollectionConfig to call built-in collections collection_configs=[ CollectionConfig(name="weights"), CollectionConfig(name="gradients"), CollectionConfig(name="losses"), CollectionConfig(name="biases") ] # configure Debugger hook # set a target S3 bucket as you want sagemaker_session=Session() BUCKET_NAME=sagemaker_session.default_bucket() LOCATION_IN_BUCKET='debugger-built-in-collections-hook' hook_config=DebuggerHookConfig( s3_output_path='s3://{BUCKET_NAME}/{LOCATION_IN_BUCKET}'. format(BUCKET_NAME=BUCKET_NAME, LOCATION_IN_BUCKET=LOCATION_IN_BUCKET), collection_configs=collection_configs ) from sagemaker.core import image_uris from sagemaker.train.configs import SourceCode, Compute training_image = image_uris.retrieve( framework="tensorflow", region=boto3.Session().region_name, version="2.9.0", py_version="py39", instance_type="ml.p3.2xlarge", image_scope="training" ) # construct a SageMaker ModelTrainer sagemaker_model_trainer=ModelTrainer( training_image=training_image, source_code=SourceCode(entry_script='directory/to/your_training_script.py'), role=get_execution_role(), base_job_name='debugger-demo-job', compute=Compute(instance_type="ml.p3.2xlarge", instance_count=1), # debugger-specific hook argument below debugger_hook_config=hook_config ) sagemaker_model_trainer.train()

Pour consulter la liste des collections intégrées du débogueur, consultez la section Collections du Built-in débogueur.

Enregistrement des tenseurs en modifiant les collections intégrées Debugger

Vous pouvez modifier les collections intégrées de Debugger à l'aide de l'opération d'API CollectionConfig. L'exemple suivant montre comment modifier la losses collection intégrée et créer un TensorFlow estimateur SageMaker IA. Vous pouvez également l'utiliser pour les estimateurs MXNet et XGBoost. PyTorch

import boto3 import sagemaker from sagemaker.train import ModelTrainer from sagemaker.core.debugger import DebuggerHookConfig, CollectionConfig from sagemaker.core.helper.session_helper import Session, get_execution_role # use Debugger CollectionConfig to call and modify built-in collections collection_configs=[ CollectionConfig( name="losses", parameters={"save_interval": "50"})] # configure Debugger hook # set a target S3 bucket as you want sagemaker_session=Session() BUCKET_NAME=sagemaker_session.default_bucket() LOCATION_IN_BUCKET='debugger-modified-collections-hook' hook_config=DebuggerHookConfig( s3_output_path='s3://{BUCKET_NAME}/{LOCATION_IN_BUCKET}'. format(BUCKET_NAME=BUCKET_NAME, LOCATION_IN_BUCKET=LOCATION_IN_BUCKET), collection_configs=collection_configs ) from sagemaker.core import image_uris from sagemaker.train.configs import SourceCode, Compute training_image = image_uris.retrieve( framework="tensorflow", region=boto3.Session().region_name, version="2.9.0", py_version="py39", instance_type="ml.p3.2xlarge", image_scope="training" ) # construct a SageMaker ModelTrainer sagemaker_model_trainer=ModelTrainer( training_image=training_image, source_code=SourceCode(entry_script='directory/to/your_training_script.py'), role=get_execution_role(), base_job_name='debugger-demo-job', compute=Compute(instance_type="ml.p3.2xlarge", instance_count=1), # debugger-specific hook argument below debugger_hook_config=hook_config ) sagemaker_model_trainer.train()

Pour une liste complète des CollectionConfig paramètres, voir Debugger API CollectionConfig .

Enregistrement des tenseurs à l’aide de collections personnalisées Debugger

Vous pouvez également enregistrer un nombre réduit de tenseurs au lieu de la totalité des tenseurs (par exemple, si vous souhaitez réduire la quantité de données enregistrées dans votre compartiment Amazon S3). L'exemple suivant montre comment personnaliser la configuration du hook de Debugger pour spécifier les tenseurs cible à enregistrer. Vous pouvez l'utiliser pour les TensorFlow estimateurs MXNet et XGBoost. PyTorch

import boto3 import sagemaker from sagemaker.train import ModelTrainer from sagemaker.core.debugger import DebuggerHookConfig, CollectionConfig from sagemaker.core.helper.session_helper import Session, get_execution_role # use Debugger CollectionConfig to create a custom collection collection_configs=[ CollectionConfig( name="custom_activations_collection", parameters={ "include_regex": "relu|tanh", # Required "reductions": "mean,variance,max,abs_mean,abs_variance,abs_max" }) ] # configure Debugger hook # set a target S3 bucket as you want sagemaker_session=Session() BUCKET_NAME=sagemaker_session.default_bucket() LOCATION_IN_BUCKET='debugger-custom-collections-hook' hook_config=DebuggerHookConfig( s3_output_path='s3://{BUCKET_NAME}/{LOCATION_IN_BUCKET}'. format(BUCKET_NAME=BUCKET_NAME, LOCATION_IN_BUCKET=LOCATION_IN_BUCKET), collection_configs=collection_configs ) from sagemaker.core import image_uris from sagemaker.train.configs import SourceCode, Compute training_image = image_uris.retrieve( framework="tensorflow", region=boto3.Session().region_name, version="2.9.0", py_version="py39", instance_type="ml.p3.2xlarge", image_scope="training" ) # construct a SageMaker ModelTrainer sagemaker_model_trainer=ModelTrainer( training_image=training_image, source_code=SourceCode(entry_script='directory/to/your_training_script.py'), role=get_execution_role(), base_job_name='debugger-demo-job', compute=Compute(instance_type="ml.p3.2xlarge", instance_count=1), # debugger-specific hook argument below debugger_hook_config=hook_config ) sagemaker_model_trainer.train()

Pour une liste complète des CollectionConfig paramètres, voir Debugger CollectionConfig.