View a markdown version of this page

SDK per Python (Boto3) - Amazon SageMaker AI

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

SDK per Python (Boto3)

Nota

Amazon SageMaker Debugger non è più aperto a nuovi clienti. I clienti esistenti possono continuare a utilizzare il servizio normalmente. AWS continua a investire in miglioramenti della sicurezza e della disponibilità di Debugger, ma non prevediamo di introdurre nuove funzionalità. Per ulteriori informazioni, consulta Modifica della disponibilità del debugger.

Le regole integrate di Amazon SageMaker Debugger possono essere configurate per un lavoro di formazione utilizzando la create_training_job() funzione del client AI Boto3. AWS SageMaker È necessario specificare l'URI corretto dell'immagine nel parametro RuleEvaluatorImage e gli esempi seguenti illustrano come configurare il corpo della richiesta per la funzione create_training_job().

Il codice seguente mostra un esempio completo di come configurare Debugger per il corpo della create_training_job() richiesta e avviare un processo di formazione inus-west-2, supponendo che uno script di formazione sia preparato utilizzando. entry_point/train.py TensorFlow Per trovare un esempio completo di notebook, consulta Profiling TensorFlow Multi GPU Multi Node Training Job with Amazon Debugger (Boto3). SageMaker

Nota

Assicurati di utilizzare le immagini corrette del container Docker. Per trovare le immagini disponibili dei contenitori di Deep Learning, consulta Immagini disponibili dei contenitori di AWS deep learning. https://github.com/aws/deep-learning-containers/blob/master/available_images.md Per trovare un elenco completo delle immagini Docker disponibili per l'utilizzo delle regole di Debugger, consulta Immagini Docker per le regole di 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'} } ] )

Configurazione di una regola di Debugger per il debug dei parametri del modello

I seguenti esempi di codice mostrano come configurare una VanishingGradient regola integrata utilizzando questa SageMaker API.

Per consentire a Debugger di raccogliere tensori di output

Specifica la configurazione dell’hook Debugger come segue:

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

Ciò farà sì che il processo di addestramento salvi la raccolta di tensori, gradients, ogni save_interval di 500 fasi. Per trovare CollectionName i valori disponibili, consulta Debugger Built-in Collections nella documentazione della libreria client SMDebug. Per trovare le chiavi e i valori CollectionParameters dei parametri disponibili, consultate la sagemaker.debugger.CollectionConfig classe nella documentazione di Python SDK. SageMaker

Per abilitare le regole di Debugger per il debug dei tensori di output

Il seguente esempio di API DebugRuleConfigurations mostra come eseguire la regola VanishingGradient integrata nella raccolta gradients salvata.

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

Con una configurazione come quella in questo esempio, Debugger avvia un processo di valutazione della regola per il processo di addestramento utilizzando la regola VanishingGradient nella raccolta del tensore gradients. Per trovare un elenco completo delle immagini Docker disponibili per l'utilizzo delle regole di Debugger, consulta Immagini Docker per le regole di Debugger. Per trovare le coppie chiave-valore per RuleParameters, consulta Elenco delle regole integrate di Debugger.

Configurazione di una regola integrata di Debugger per la profilazione dei parametri del sistema e del framework

Il codice di esempio seguente mostra come specificare l'operazione ProfilerConfig API per consentire la raccolta di metriche di sistema e framework.

Per abilitare la profilazione di Debugger per raccogliere i parametri del sistema e del 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 } }

Per abilitare le regole di Debugger per la profilazione dei parametri

Il codice di esempio seguente mostra come configurare la regola 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' } } ]

Per trovare un elenco completo delle immagini Docker disponibili per l'utilizzo delle regole di Debugger, consulta Immagini Docker per le regole di Debugger. Per trovare le coppie chiave-valore per RuleParameters, consulta Elenco delle regole integrate di Debugger.

Aggiorna la configurazione della profilazione di Debugger utilizzando l'operazione API UpdateTrainingJob

La configurazione della profilazione del debugger può essere aggiornata durante l'esecuzione del processo di formazione utilizzando la update_training_job() funzione del client Boto3 AI AWS . SageMaker Configura nuovi ProfilerRuleConfiguration oggetti ProfilerConfig e specifica il nome del processo di formazione nel parametro. 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'

Aggiungi la configurazione delle regole personalizzate del Debugger all' CreateTrainingJob operazione API

Una regola personalizzata può essere configurata per un lavoro di formazione utilizzando DebugRuleConfiguration gli oggetti DebugHookConfig and utilizzando la funzione del client AWS Boto3 SageMaker AI. create_training_job() Il seguente esempio di codice mostra come configurare una ImproperActivation regola personalizzata scritta con la libreria smdebug utilizzando questa operazione API. SageMaker In questo esempio si presuppone che la regola personalizzata sia stata scritta nel file custom_rules.py e che sia stata caricata in un bucket Amazon S3. Nell'esempio vengono fornite immagini Docker predefinite che puoi utilizzare per eseguire le regole personalizzate. Queste immagini sono elencate in URI di immagine Amazon SageMaker Debugger per valutatori di regole personalizzate. Specifica l'indirizzo del registro di URL per l'immagine Docker integrata nel parametro 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' } } ]

Per trovare un elenco completo delle immagini Docker disponibili per l'utilizzo delle regole di Debugger, consulta Immagini Docker per le regole di Debugger. Per trovare le coppie chiave-valore per RuleParameters, consulta Elenco delle regole integrate di Debugger.