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.
AWS Boto3
Les règles intégrées d'Amazon SageMaker Debugger peuvent être configurées pour une tâche d'entraînement à l'aide de la fonction create_training_job()
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 requête create_training_job()
et de démarrer une tâche d'entraînement dans us-west-2
, en supposant qu'un script d'entraînement entry_point/train.py
est préparé à l'aide de TensorFlow. Pour voir un exemple de bloc-notes de bout en bout, 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 voir des images de conteneurs AWS Deep Learning Containers, consultez Available Deep Learning Containers Images
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 règle VanishingGradient
intégrée à l'aide de cette API SageMaker.
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 voir les valeurs CollectionName
disponibles, consultez Debugger Built-in CollectionsCollectionParameters
, consultez la section sagemaker.debugger.CollectionConfig
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 Utiliser des images Docker Debugger pour des règles intégrées ou personnalisées. Pour voir les paires clé-valeur pour RuleParameters
, consultez Liste des règles intégrées du 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 l'opération d'API ProfilerConfig pour activer la collecte des métriques système et de cadre.
Pour activer le profilage Debugger pour collecter les métriques du système et du framework
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 Utiliser des images Docker Debugger pour des règles intégrées ou personnalisées. Pour voir les paires clé-valeur pour RuleParameters
, consultez Liste des règles intégrées du Debugger.
Mettre à jour la configuration du profilage Debugger à l'aide de l'opération d'API UpdateTrainingJob
La configuration du profilage Debugger peut être mise à jour lorsque votre tâche d'entraînement est en cours d'exécution à l'aide de la fonction update_training_job()
TrainingJobName
.
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 une configuration de règle personnalisée Debugger à l'opération d'API CreateTrainingJob
Une règle personnalisée peut être configurée pour une tâche d'entraînement à l'aide des objets DebugHookConfig et DebugRuleConfiguration avec la fonction create_training_job()
ImproperActivation
personnalisée écrite avec la bibliothèque smdebug à l'aide de cette opération d'API SageMaker. 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 URL de registre Amazon SageMaker Debugger pour les évaluateurs de règles personnalisées. 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 Utiliser des images Docker Debugger pour des règles intégrées ou personnalisées. Pour voir les paires clé-valeur pour RuleParameters
, consultez Liste des règles intégrées du Debugger.