View a markdown version of this page

Kit SDK for Python (Boto3) - 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.

Kit SDK for Python (Boto3)

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 règles intégrées d'Amazon SageMaker Debugger peuvent être configurées pour une tâche de formation à l'aide de la create_training_job() fonction du client AWS Boto3 AI SageMaker . Vous devez spécifier l'URI d'image approprié dans le paramètre RuleEvaluatorImage. Les exemples suivants vous expliquent comment configurer le corps de requête pour la fonction create_training_job().

Le code suivant montre un exemple complet de la façon de configurer Debugger pour le corps de la create_training_job() requête et de démarrer une tâche de formation dansus-west-2, en supposant qu'un script de formation entry_point/train.py soit préparé à l'aide de. TensorFlow Pour trouver un exemple de bloc-notes complet, consultez Profiling TensorFlow Multi GPU Multi Node Training Job with Amazon SageMaker Debugger (Boto3).

Note

Assurez-vous d'utiliser les images de conteneur Docker appropriées. Pour trouver les images des conteneurs AWS Deep Learning disponibles, consultez la section Images des conteneurs Deep Learning disponibles. Pour obtenir une liste complète des images Docker disponibles pour l'utilisation des règles Debugger, consultez Images Docker pour les règles Debugger.

import sagemaker, boto3 import datetime, tarfile # Start setting up a SageMaker session and a Boto3 SageMaker client session = sagemaker.Session() region = session.boto_region_name bucket = session.default_bucket() # Upload a training script to a default Amazon S3 bucket of the current SageMaker session source = 'source.tar.gz' project = 'debugger-boto3-test' tar = tarfile.open(source, 'w:gz') tar.add ('entry_point/train.py') # Specify the directory and name of your training script tar.close() s3 = boto3.client('s3') s3.upload_file(source, bucket, project+'/'+source) # Set up a Boto3 session client for SageMaker sm = boto3.Session(region_name=region).client("sagemaker") # Start a training job sm.create_training_job( TrainingJobName='debugger-boto3-'+datetime.datetime.now().strftime('%Y-%m-%d-%H-%M-%S'), HyperParameters={ 'sagemaker_submit_directory': 's3://'+bucket+'/'+project+'/'+source, 'sagemaker_program': '/entry_point/train.py' # training scrip file location and name under the sagemaker_submit_directory }, AlgorithmSpecification={ # Specify a training Docker container image URI (Deep Learning Container or your own training container) to TrainingImage. 'TrainingImage': '763104351884.dkr.ecr.us-west-2.amazonaws.com/tensorflow-training:2.4.1-gpu-py37-cu110-ubuntu18.04', 'TrainingInputMode': 'File', 'EnableSageMakerMetricsTimeSeries': False }, RoleArn='arn:aws:iam::111122223333:role/service-role/AmazonSageMaker-ExecutionRole-20201014T161125', OutputDataConfig={'S3OutputPath': 's3://'+bucket+'/'+project+'/output'}, ResourceConfig={ 'InstanceType': 'ml.p3.8xlarge', 'InstanceCount': 1, 'VolumeSizeInGB': 30 }, StoppingCondition={ 'MaxRuntimeInSeconds': 86400 }, DebugHookConfig={ 'S3OutputPath': 's3://'+bucket+'/'+project+'/debug-output', 'CollectionConfigurations': [ { 'CollectionName': 'losses', 'CollectionParameters' : { 'train.save_interval': '500', 'eval.save_interval': '50' } } ] }, DebugRuleConfigurations=[ { 'RuleConfigurationName': 'LossNotDecreasing', 'RuleEvaluatorImage': '895741380848.dkr.ecr.us-west-2.amazonaws.com/sagemaker-debugger-rules:latest', 'RuleParameters': {'rule_to_invoke': 'LossNotDecreasing'} } ], ProfilerConfig={ 'S3OutputPath': 's3://'+bucket+'/'+project+'/profiler-output', 'ProfilingIntervalInMilliseconds': 500, 'ProfilingParameters': { 'DataloaderProfilingConfig': '{"StartStep": 5, "NumSteps": 3, "MetricsRegex": ".*", }', 'DetailedProfilingConfig': '{"StartStep": 5, "NumSteps": 3, }', 'PythonProfilingConfig': '{"StartStep": 5, "NumSteps": 3, "ProfilerName": "cprofile", "cProfileTimer": "total_time"}', 'LocalPath': '/opt/ml/output/profiler/' # Optional. Local path for profiling outputs } }, ProfilerRuleConfigurations=[ { 'RuleConfigurationName': 'ProfilerReport', 'RuleEvaluatorImage': '895741380848.dkr.ecr.us-west-2.amazonaws.com/sagemaker-debugger-rules:latest', 'RuleParameters': {'rule_to_invoke': 'ProfilerReport'} } ] )

Pour configurer une règle Debugger pour le débogage des paramètres de modèle

Les exemples de code suivants montrent comment configurer une VanishingGradient règle intégrée à l'aide de cette SageMaker API.

Pour activer Debugger afin de collecter les tenseurs de sortie

Spécifiez la configuration du hook Debugger comme suit :

DebugHookConfig={ 'S3OutputPath': 's3://<default-bucket>/<training-job-name>/debug-output', 'CollectionConfigurations': [ { 'CollectionName': 'gradients', 'CollectionParameters' : { 'train.save_interval': '500', 'eval.save_interval': '50' } } ] }

Ainsi, la tâche d'entraînement enregistre une collection de tenseurs, gradients, chaque save_interval sur 500 étapes. Pour trouver les CollectionName valeurs disponibles, consultez la section Debugger Built-in Collections dans la documentation de la bibliothèque cliente SMDebug. Pour trouver les clés de CollectionParameters paramètres et les valeurs disponibles, consultez la sagemaker.debugger.CollectionConfig classe dans la documentation du SDK SageMaker Python.

Pour activer les règles Debugger pour le débogage des tenseurs de sortie

L'exemple d'API DebugRuleConfigurations suivant montre comment exécuter la règle VanishingGradient intégrée sur la collection gradients enregistrée.

DebugRuleConfigurations=[ { 'RuleConfigurationName': 'VanishingGradient', 'RuleEvaluatorImage': '895741380848.dkr.ecr.us-west-2.amazonaws.com/sagemaker-debugger-rules:latest', 'RuleParameters': { 'rule_to_invoke': 'VanishingGradient', 'threshold': '20.0' } } ]

Avec une configuration telle que celle de cet exemple, Debugger lance une tâche d'évaluation des règles pour votre tâche d'entraînement à l'aide de la règle VanishingGradient sur la collection de tenseurs gradients. Pour obtenir une liste complète des images Docker disponibles pour l'utilisation des règles Debugger, consultez Images Docker pour les règles Debugger. Pour voir les paires clé-valeur pour RuleParameters, consultez Liste des règles intégrées à Debugger.

Pour configurer une règle intégrée Debugger pour le profilage des métriques système et de cadre

L'exemple de code suivant montre comment spécifier le fonctionnement de l' ProfilerConfig API pour permettre la collecte des métriques du système et du framework.

Pour activer le profilage Debugger pour collecter les métriques du système et du framework

Target Step
ProfilerConfig={ 'S3OutputPath': 's3://<default-bucket>/<training-job-name>/profiler-output', # Optional. Path to an S3 bucket to save profiling outputs # Available values for ProfilingIntervalInMilliseconds: 100, 200, 500, 1000 (1 second), 5000 (5 seconds), and 60000 (1 minute) milliseconds. 'ProfilingIntervalInMilliseconds': 500, 'ProfilingParameters': { 'DataloaderProfilingConfig': '{ "StartStep": 5, "NumSteps": 3, "MetricsRegex": ".*" }', 'DetailedProfilingConfig': '{ "StartStep": 5, "NumSteps": 3 }', 'PythonProfilingConfig': '{ "StartStep": 5, "NumSteps": 3, "ProfilerName": "cprofile", # Available options: cprofile, pyinstrument "cProfileTimer": "total_time" # Include only when using cprofile. Available options: cpu, off_cpu, total_time }', 'LocalPath': '/opt/ml/output/profiler/' # Optional. Local path for profiling outputs } }
Target Time Duration
ProfilerConfig={ 'S3OutputPath': 's3://<default-bucket>/<training-job-name>/profiler-output', # Optional. Path to an S3 bucket to save profiling outputs # Available values for ProfilingIntervalInMilliseconds: 100, 200, 500, 1000 (1 second), 5000 (5 seconds), and 60000 (1 minute) milliseconds. 'ProfilingIntervalInMilliseconds': 500, 'ProfilingParameters': { 'DataloaderProfilingConfig': '{ "StartTimeInSecSinceEpoch": 12345567789, "DurationInSeconds": 10, "MetricsRegex": ".*" }', 'DetailedProfilingConfig': '{ "StartTimeInSecSinceEpoch": 12345567789, "DurationInSeconds": 10 }', 'PythonProfilingConfig': '{ "StartTimeInSecSinceEpoch": 12345567789, "DurationInSeconds": 10, "ProfilerName": "cprofile", # Available options: cprofile, pyinstrument "cProfileTimer": "total_time" # Include only when using cprofile. Available options: cpu, off_cpu, total_time }', 'LocalPath': '/opt/ml/output/profiler/' # Optional. Local path for profiling outputs } }

Pour activer les règles Debugger pour le profilage des métriques

L'exemple de code suivant montre comment configurer la règle ProfilerReport.

ProfilerRuleConfigurations=[ { 'RuleConfigurationName': 'ProfilerReport', 'RuleEvaluatorImage': '895741380848.dkr.ecr.us-west-2.amazonaws.com/sagemaker-debugger-rules:latest', 'RuleParameters': { 'rule_to_invoke': 'ProfilerReport', 'CPUBottleneck_cpu_threshold': '90', 'IOBottleneck_threshold': '90' } } ]

Pour obtenir une liste complète des images Docker disponibles pour l'utilisation des règles Debugger, consultez Images Docker pour les règles Debugger. Pour voir les paires clé-valeur pour RuleParameters, consultez Liste des règles intégrées à Debugger.

Mettre à jour la configuration du profilage Debugger à l'aide de l'opération d'API UpdateTrainingJob

La configuration du profilage du débogueur peut être mise à jour pendant l'exécution de votre tâche d'entraînement à l'aide de la update_training_job() fonction du client AWS Boto3 AI SageMaker . Configurez de nouveaux ProfilerRuleConfiguration objets ProfilerConfig et spécifiez le nom de la tâche de formation dans le TrainingJobName paramètre.

ProfilerConfig={ 'DisableProfiler': boolean, 'ProfilingIntervalInMilliseconds': number, 'ProfilingParameters': { 'string' : 'string' } }, ProfilerRuleConfigurations=[ { 'RuleConfigurationName': 'string', 'RuleEvaluatorImage': 'string', 'RuleParameters': { 'string' : 'string' } } ], TrainingJobName='your-training-job-name-YYYY-MM-DD-HH-MM-SS-SSS'

Ajouter la configuration de règles personnalisées du débogueur à l'opération d'API CreateTrainingJob

Une règle personnalisée peut être configurée pour une tâche de formation à l'aide DebugRuleConfiguration des objets DebugHookConfig et à l'aide de la fonction du create_training_job() client AWS Boto3 SageMaker AI. L'exemple de code suivant montre comment configurer une ImproperActivation règle personnalisée écrite avec la bibliothèque smdebug à l'aide de cette opération d' SageMaker API. Cet exemple suppose que vous avez écrit la règle personnalisée dans le fichier custom_rules.py et que vous l'avez chargée dans un compartiment Amazon S3. L'exemple fournit des images Docker préconçues que vous pouvez utiliser pour exécuter vos règles personnalisées. Celles-ci sont énumérées sur la page URI d'images Amazon SageMaker Debugger pour les évaluateurs de règles personnalisés. Vous spécifiez l'adresse de registre d'URL pour l'image Docker préconçue dans le paramètre RuleEvaluatorImage.

DebugHookConfig={ 'S3OutputPath': 's3://<default-bucket>/<training-job-name>/debug-output', 'CollectionConfigurations': [ { 'CollectionName': 'relu_activations', 'CollectionParameters': { 'include_regex': 'relu', 'save_interval': '500', 'end_step': '5000' } } ] }, DebugRulesConfigurations=[ { 'RuleConfigurationName': 'improper_activation_job', 'RuleEvaluatorImage': '552407032007.dkr.ecr.ap-south-1.amazonaws.com/sagemaker-debugger-rule-evaluator:latest', 'InstanceType': 'ml.c4.xlarge', 'VolumeSizeInGB': 400, 'RuleParameters': { 'source_s3_uri': 's3://bucket/custom_rules.py', 'rule_to_invoke': 'ImproperActivation', 'collection_names': 'relu_activations' } } ]

Pour obtenir une liste complète des images Docker disponibles pour l'utilisation des règles Debugger, consultez Images Docker pour les règles Debugger. Pour voir les paires clé-valeur pour RuleParameters, consultez Liste des règles intégrées à Debugger.