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)
Le regole integrate di Amazon SageMaker Debugger possono essere configurate per un job di addestramento utilizzando la funzione create_training_job()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 richiesta create_training_job() e avviare un processo di addestramento in us-west-2, presupponendo che uno script di addestramento entry_point/train.py sia preparato utilizzando TensorFlow. Per trovare un notebook di esempio end-to-end, consulta Profilazione di un processo di addestramento multi nodo TensorFlow Multi GPU con Debugger Amazon SageMaker (Boto3)
Nota
Assicurati di utilizzare le immagini corrette del container Docker. Per trovare le immagini del container AWS Deep Learning disponibili, consulta Immagini del container Deep Learning disponibili
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
Negli esempi di codice riportati di seguito viene illustrato come configurare una regola VanishingGradient integrata utilizzando questa API SageMaker.
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 i valori CollectionName disponibili, consulta Raccolte integrate di DebuggerCollectionParameters disponibili, consulta la classe sagemaker.debugger.CollectionConfig
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 dell'API ProfilerConfig per consentire la raccolta dei parametri del sistema e del framework.
Per abilitare la profilazione di Debugger per raccogliere i parametri del sistema e del framework
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 di Debugger può essere aggiornata durante l’esecuzione del job di addestramento utilizzando la funzione 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'
Aggiungi la configurazione delle regole personalizzate di Debugger all'operazione API CreateTrainingJob
È possibile configurare una regola personalizzata per un job di addestramento ricorrendo agli oggetti DebugHookConfig e DebugRuleConfiguration che utilizzano la funzione create_training_job()ImproperActivation personalizzata scritta con la libreria smdebug utilizzando l'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 delle immagini di Amazon SageMaker Debugger per strumenti di valutazione 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.