JSON (AWS CLI) - Amazon SageMaker

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à.

JSON (AWS CLI)

Le regole integrate di Amazon SageMaker Debugger possono essere configurate per un processo di formazione utilizzando gli ProfilerRuleConfigurationoggetti DebugHookConfig, DebugRuleConfigurationProfilerConfig, e tramite l' SageMaker CreateTrainingJoboperazione API. È necessario specificare l'URI corretto dell'immagine nel RuleEvaluatorImage parametro e gli esempi seguenti illustrano come configurare le stringhe JSON da richiedere. CreateTrainingJob

Il codice seguente mostra un modello JSON completo per eseguire un processo di addestramento con le impostazioni e le configurazioni di Debugger richieste. Salva il modello come file JSON nella tua directory di lavoro ed esegui il processo di formazione utilizzando la AWS CLI. Ad esempio, salva il seguente codice come debugger-training-job-cli.json

Nota

Assicurati di utilizzare le immagini corrette del container Docker. Per trovare le immagini dei AWS Deep Learning Container, consulta Immagini dei Deep Learning Containers disponibili. Per trovare un elenco completo delle immagini Docker disponibili per l'utilizzo delle regole del Debugger, consulta Utilizza le immagini Docker di Debugger per regole integrate o personalizzate.

{ "TrainingJobName": "debugger-aws-cli-test", "RoleArn": "arn:aws:iam::111122223333:role/service-role/AmazonSageMaker-ExecutionRole-YYYYMMDDT123456", "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 }, "HyperParameters": { "sagemaker_program": "entry_point/tf-hvd-train.py", "sagemaker_submit_directory": "s3://sagemaker-us-west-2-111122223333/debugger-boto3-profiling-test/source.tar.gz" }, "OutputDataConfig": { "S3OutputPath": "s3://sagemaker-us-west-2-111122223333/debugger-aws-cli-test/output" }, "DebugHookConfig": { "S3OutputPath": "s3://sagemaker-us-west-2-111122223333/debugger-aws-cli-test/debug-output", "CollectionConfigurations": [ { "CollectionName": "losses", "CollectionParameters" : { "train.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://sagemaker-us-west-2-111122223333/debugger-aws-cli-test/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/" } }, "ProfilerRuleConfigurations": [ { "RuleConfigurationName": "ProfilerReport", "RuleEvaluatorImage": "895741380848.dkr.ecr.us-west-2.amazonaws.com/sagemaker-debugger-rules:latest", "RuleParameters": {"rule_to_invoke": "ProfilerReport"} } ], "ResourceConfig": { "InstanceType": "ml.p3.8xlarge", "InstanceCount": 1, "VolumeSizeInGB": 30 }, "StoppingCondition": { "MaxRuntimeInSeconds": 86400 } }

Dopo aver salvato il file JSON, esegui il comando seguente nel terminale. (Usa ! all'inizio della riga se usi un notebook Jupyter).

aws sagemaker create-training-job --cli-input-json file://debugger-training-job-cli.json

Per configurare una regola 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 del Debugger hook come segue:

"DebugHookConfig": { "S3OutputPath": "s3://<default-bucket>/<training-job-name>/debug-output", "CollectionConfigurations": [ { "CollectionName": "gradients", "CollectionParameters" : { "save_interval": "500" } } ] }

Ciò farà sì che il processo di addestramento salvi la raccolta di tensori, gradients, ogni save_interval di 500 passaggi. Per trovare i valori CollectionName disponibili, consulta Raccolte incorporate di Debugger nella documentazione della libreria client SMDebug. Per trovare le chiavi e i valori dei CollectionParameters parametri disponibili, consulta la sagemaker.debugger.CollectionConfigclasse nella documentazione di SageMaker Python SDK.

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 incorporata nella raccolta gradients salvata.

"DebugRuleConfigurations": [ { "RuleConfigurationName": "VanishingGradient", "RuleEvaluatorImage": "503895931360.dkr.ecr.us-east-1.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 del Debugger, consulta Utilizza le immagini Docker di Debugger per regole integrate o personalizzate. Per trovare le coppie chiave-valore per RuleParameters, consulta Elenco delle regole integrate di Debugger.

Per configurare una regola incorporata in Debugger per la profilazione dei parametri del sistema e del framework

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

Per abilitare la profilazione di Debugger per raccogliere i parametri del sistema e del framework

Target Step
"ProfilerConfig": { // Optional. Path to an S3 bucket to save profiling outputs "S3OutputPath": "s3://<default-bucket>/<training-job-name>/profiler-output", // 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 }", // For PythonProfilingConfig, // available ProfilerName options: cProfile, Pyinstrument // available cProfileTimer options only when using cProfile: cpu, off_cpu, total_time "PythonProfilingConfig": "{ \"StartStep\": 5, \"NumSteps\": 3, \"ProfilerName\": \"cProfile\", \"cProfileTimer\": \"total_time\" }", // Optional. Local path for profiling outputs "LocalPath": "/opt/ml/output/profiler/" } }
Target Time Duration
"ProfilerConfig": { // Optional. Path to an S3 bucket to save profiling outputs "S3OutputPath": "s3://<default-bucket>/<training-job-name>/profiler-output", // 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 }", // For PythonProfilingConfig, // available ProfilerName options: cProfile, Pyinstrument // available cProfileTimer options only when using cProfile: cpu, off_cpu, total_time "PythonProfilingConfig": "{ \"StartTimeInSecSinceEpoch\": 12345567789, \"DurationInSeconds\": 10, \"ProfilerName\": \"cProfile\", \"cProfileTimer\": \"total_time\" }", // Optional. Local path for profiling outputs "LocalPath": "/opt/ml/output/profiler/" } }

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 del Debugger, consulta Utilizza le immagini Docker di Debugger per regole integrate o personalizzate. 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 l'operazione API. UpdateTrainingJob Configura nuovi ProfilerRuleConfigurationoggetti ProfilerConfige 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'operazione API CreateTrainingJob

È possibile configurare una regola personalizzata per un processo di formazione utilizzando gli DebugRuleConfigurationoggetti DebugHookConfigand nell' CreateTrainingJoboperazione API. Il seguente esempio di codice mostra come configurare una ImproperActivation regola personalizzata scritta con la libreria smdebug utilizzando questa operazione SageMaker API. 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 Amazon SageMaker Debugger Registry URLs per strumenti di valutazione delle regole personalizzati. Specifica l'indirizzo del registro di URL per l'immagine Docker incorporata 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 del Debugger, consulta Utilizza le immagini Docker di Debugger per regole integrate o personalizzate. Per trovare le coppie chiave-valore per RuleParameters, consulta Elenco delle regole integrate di Debugger.