JSON (AWS CLI) - Amazon SageMaker KI

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

JSON (AWS CLI)

Die in Amazon SageMaker Debugger integrierten Regeln können für einen Trainingsjob mithilfe der Objekte DebugHookConfig, DebugRuleConfiguration, ProfilerConfig und ProfilerRuleConfiguration durch die Operation CreateTrainingJob der SageMaker AI API konfiguriert werden. Sie müssen den richtigen Image-URI im RuleEvaluatorImage Parameter angeben. In den folgenden Beispielen erfahren Sie, wie Sie die JSON-Zeichenfolgen für die Anforderung von CreateTrainingJob einrichten.

Der folgende Code zeigt eine vollständige JSON-Vorlage zum Ausführen eines Trainingsauftrags mit den erforderlichen Einstellungen und Debugger-Konfigurationen. Speichern Sie die Vorlage als JSON-Datei in Ihrem Arbeitsverzeichnis und führen Sie den Trainingsauftrag mit AWS CLI aus. Speichern Sie zum Beispiel den folgenden Code als debugger-training-job-cli.json.

Anmerkung

Stellen Sie sicher, dass Sie die richtigen Docker-Container-Images verwenden. Verfügbare AWS Deep-Learning-Container-Images finden Sie unter Verfügbare Deep-Learning-Container-Images. Eine vollständige Liste der verfügbaren Docker-Images für die Verwendung der Debugger-Regeln finden Sie unter Docker-Images für Debugger-Regeln.

{ "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 } }

Führen Sie nach dem Speichern der JSON-Datei den folgenden Befehl in Ihrem Terminal aus. (Verwenden Sie ! am Anfang der Zeile, wenn Sie ein Jupyter Notebook verwenden.)

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

So konfigurieren Sie eine Debugger-Regel für das Debuggen von Modellparametern

Die folgenden Codebeispiele zeigen, wie eine integrierte VanishingGradient-Regel mit dieser SageMaker-API konfiguriert werden kann.

Um zu aktivieren, dass der Debugger Ausgabetensoren sammelt

Geben Sie die Debugger-Hook-Konfiguration wie folgt an:

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

Dies führt dazu, dass der Trainingsauftrag die Tensorsammlung, gradients, alle save_interval von 500 Schritten speichert. Informationen zu verfügbaren CollectionName Werten finden Sie unter Integrierte Debugger-Sammlungen in der Dokumentation zur SMDebug-Client-Bibliothek. Verfügbare CollectionParameters Parameterschlüssel und -werte finden Sie in der sagemaker.debugger.CollectionConfig Klasse in der SageMaker Python SDK-Dokumentation.

Um Debugger-Regeln für das Debuggen der Ausgabetensoren zu aktivieren

Das folgende DebugRuleConfigurations API-Beispiel zeigt, wie die integrierte VanishingGradient Regel für die gespeicherte gradients Sammlung ausgeführt wird.

"DebugRuleConfigurations": [ { "RuleConfigurationName": "VanishingGradient", "RuleEvaluatorImage": "503895931360.dkr.ecr.us-east-1.amazonaws.com/sagemaker-debugger-rules:latest", "RuleParameters": { "rule_to_invoke": "VanishingGradient", "threshold": "20.0" } } ]

Mit einer Konfiguration wie in diesem Beispiel startet der Debugger einen Regelauswertungsauftrag für Ihren Trainingsauftrag unter Verwendung der VanishingGradient-Regel für die Sammlung des gradients-Tensors. Eine vollständige Liste der verfügbaren Docker-Images für die Verwendung der Debugger-Regeln finden Sie unter Docker-Images für Debugger-Regeln. Die Schlüssel-Wert-Paare für RuleParameters finden Sie unter Liste der in den Debugger integrierten Regeln.

Um eine integrierte Debugger-Regel für das Profiling von System- und Framework-Metriken zu konfigurieren

Der folgende Beispielcode zeigt, wie der API-Betrieb ProfilerConfig spezifiziert wird, um die Sammlung von System- und Framework-Metriken zu aktivieren.

Um Debugger-Profiling zur Sammlung von System- und Framework-Metriken zu aktivieren

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/" } }

Um Debugger-Regeln für die das Profiling der Metriken zu aktivieren

Das folgende Codebeispiel zeigt, wie Sie die ProfilerReport-Regel konfigurieren.

"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" } } ]

Eine vollständige Liste der verfügbaren Docker-Images für die Verwendung der Debugger-Regeln finden Sie unter Docker-Images für Debugger-Regeln. Die Schlüssel-Wert-Paare für RuleParameters finden Sie unter Liste der in den Debugger integrierten Regeln.

Die Profiling-Konfiguration des Debuggers mithilfe der UpdateTrainingJob-API aktualisieren

Die Profiling-Konfiguration des Debuggers kann während der Ausführung Ihres Trainingsauftrags mithilfe des API-Betriebs UpdateTrainingJob aktualisiert werden. Konfigurieren Sie neue ProfilerConfig- und ProfilerRuleConfigurations-Objekte und geben Sie den Trainingsauftragsnamen für den Parameter TrainingJobName an.

{ "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" }

Der CreateTrainingJob-API eine benutzerdefinierte Debugger-Regelkonfiguration hinzufügen

Eine benutzerdefinierte Regel kann für einen Trainingsauftrag mithilfe der Objekte DebugHookConfig und DebugRuleConfiguration im API-Betrieb CreateTrainingJob konfiguriert werden. Das folgende Codebeispiel zeigt, wie eine mit der smdebug-Bibliothek geschriebene benutzerdefinierte ImproperActivation-Regel mit diesem SageMaker-API-Betrieb konfiguriert wird. In diesem Beispiel wird davon ausgegangen, dass Sie die benutzerdefinierte Regel in der Datei custom_rules.py geschrieben und in einen Amazon-S3-Bucket hochgeladen haben. Das Beispiel stellt vorgefertigte Docker-Images bereit, mit denen Sie Ihre benutzerdefinierten Regeln ausführen können. Diese werden unter Image-URLs des Amazon SageMaker Debugger für benutzerdefinierte Regelauswerter gelistet. Sie geben die URL-Registry-Adresse für das vorgefertigte Docker-Image im RuleEvaluatorImage-Parameter an.

"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" } } ]

Eine vollständige Liste der verfügbaren Docker-Images für die Verwendung der Debugger-Regeln finden Sie unter Docker-Images für Debugger-Regeln. Die Schlüssel-Wert-Paare für RuleParameters finden Sie unter Liste der in den Debugger integrierten Regeln.