Integrierte Debuger-Regeln konfigurieren - Amazon SageMaker

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.

Integrierte Debuger-Regeln konfigurieren

Die integrierten Regeln von Amazon SageMaker Debugger analysieren Tensoren, die während des Trainings eines Modells emittiert werden. SageMakerDebugger bietet eine Rule API-Operation, mit der der Fortschritt und die Fehler von Trainingsaufgaben überwacht werden, damit Ihr Modell erfolgreich trainiert werden kann. Die Regeln können zum Beispiel erkennen, ob Gradienten zu groß oder zu klein werden, ob ein Modell zu stark oder zu stark trainiert wird und ob ein Trainingsauftrag nicht die Funktionsfähigkeit beeinträchtigt und verbessert. Eine vollständige Liste verfügbarer integrierter Regeln finden Sie unter Liste der in den Debugger integrierten Regeln.

In den folgenden Themen erfahren Sie, wie Sie die integrierten SageMaker Debuger-Regeln verwenden.

Verwenden Sie die integrierten Debuger-Regeln mit den Standard-Parametereinstellungen

Um die integrierten Debugger-Regeln in einem Estimator anzugeben, müssen Sie ein Listenobjekt konfigurieren. Der folgende Beispielcode zeigt die grundlegende Struktur der Auflistung der integrierten Debugger-Regeln:

from sagemaker.debugger import Rule, rule_configs rules=[ Rule.sagemaker(rule_configs.built_in_rule_name_1()), Rule.sagemaker(rule_configs.built_in_rule_name_2()), ... Rule.sagemaker(rule_configs.built_in_rule_name_n()), ... # You can also append more profiler rules in the ProfilerRule.sagemaker(rule_configs.*()) format. ]

Weitere Informationen zu Standardparameterwerten und Beschreibungen der integrierten Regel finden Sie unter Liste der in den Debugger integrierten Regeln.

Die SageMaker Debugger-API-Referenz finden Sie unter sagemaker.debugger.rule_configsund. sagemaker.debugger.Rule

Um beispielsweise die allgemeine Trainingsleistung und den Trainingsfortschritt Ihres Modells zu überprüfen, erstellen Sie einen SageMaker Schätzer mit der folgenden integrierten Regelkonfiguration.

from sagemaker.debugger import Rule, rule_configs rules=[ Rule.sagemaker(rule_configs.loss_not_decreasing()), Rule.sagemaker(rule_configs.overfit()), Rule.sagemaker(rule_configs.overtraining()), Rule.sagemaker(rule_configs.stalled_training_rule()) ]

Wenn Sie den Trainingsauftrag starten, erfasst der Debugger standardmäßig alle 500 Millisekunden Daten zur Systemressourcenauslastung und die Verlust- und Genauigkeitswerte alle 500 Schritte. Der Debugger analysiert die Ressourcennutzung, um festzustellen, ob Ihr Modell Engpassprobleme aufweist. Der loss_not_decreasing, overfit, overtraining, und stalled_training_rule überwacht, ob Ihr Modell die Verlustfunktion optimiert, ohne dass diese Trainingsprobleme auftreten. Wenn die Regeln Trainingsanomalien erkennen, ändert sich der Status der Regelauswertung in IssueFound. Mit Amazon CloudWatch Events und können Sie automatisierte Aktionen einrichten, z. B. das Melden von Schulungsproblemen und das Beenden von Schulungsaufträgen. AWS Lambda Weitere Informationen finden Sie unter Aktion auf Amazon SageMaker Debugger-Regeln.

Verwenden Sie die integrierten Debuger-Regeln mit benutzerdefinierten Parameterwerten

Wenn Sie die Werte der integrierten Regelparameter anpassen und die Regex für die Tensorsammlung anpassen möchten, konfigurieren Sie die base_config und rule_parameters Parameter für die Klassenmethoden ProfilerRule.sagemaker und Rule.sagemaker. Bei den Rule.sagemaker Klassenmethoden können Sie die Tensorsammlungen auch über den Parameter collections_to_save anpassen. Die Anleitung zur Verwendung der CollectionConfig Klasse finden Sie unter Konfigurieren Sie Tensor-Sammlungen mithilfe der CollectionConfig API.

Verwenden Sie die folgende Konfigurationsvorlage für integrierte Regeln, um Parameterwerte anzupassen. Indem Sie die Regelparameter nach Ihren Wünschen ändern, können Sie die Empfindlichkeit der auszulösenden Regeln anpassen.

  • Das base_config-Argument ist der Ort, an dem Sie die integrierten Regelmethoden aufrufen.

  • Das rule_parameters-Argument besteht darin, die Standardschlüsselwerte der unter Liste der in den Debugger integrierten Regeln aufgeführten integrierten Regeln anzupassen.

  • Das collections_to_save-Argument nimmt über die CollectionConfig-API eine Tensorkonfiguration an, die Argumente name und parameters erfordern.

Weitere Informationen über die Debugger-Regelklasse, Methoden und Parameter finden Sie unter SageMakerDebugger-Regelklasse im Amazon SageMaker Python SDK.

from sagemaker.debugger import Rule, ProfilerRule, rule_configs, CollectionConfig rules=[ Rule.sagemaker( base_config=rule_configs.built_in_rule_name(), rule_parameters={ "key": "value" }, collections_to_save=[ CollectionConfig( name="tensor_collection_name", parameters={ "key": "value" } ) ] ) ]

Die Parameterbeschreibungen und Beispiele für die Anpassung von Werten finden Sie für jede Regel unter Liste der in den Debugger integrierten Regeln.

Beispiel-Notebooks und Codebeispiele zur Konfiguration von Debugger-Regeln

In den folgenden Abschnitten werden Notizbücher und Codebeispiele zur Verwendung von Debugger-Regeln zur Überwachung von SageMaker Trainingsaufträgen bereitgestellt.

Beispiel für Notebooks mit integrierten Debuger-Regeln

Die folgenden Beispiel-Notebooks zeigen, wie die integrierten Debuger-Regeln verwendet werden, wenn Trainingsjobs mit Amazon SageMaker ausgeführt werden:

Während Sie die Beispiel-Notebooks in SageMaker Studio ausführen, finden Sie die Trainingsjob-Testversion, die auf der Registerkarte Studio-Experimentliste erstellt wurde. Wie im folgenden Screenshot gezeigt, können Sie beispielsweise das Fenster Testkomponente beschreiben Ihres aktuellen Trainingsauftrags finden und öffnen. Auf der Registerkarte Debugger können Sie überprüfen, ob die Debugger-Regeln vanishing_gradient() undloss_not_decreasing(), die Trainingssitzung parallel überwachen. Eine vollständige Anleitung, wie Sie die Komponenten Ihrer Trainingsjob-Testversion in der Studio-Benutzeroberfläche finden, finden Sie unter SageMaker Studio — Experimente, Versuche und Testkomponenten anzeigen.

Ein Bild der Ausführung eines Trainingsjobs mit in SageMaker Studio aktivierten integrierten Debugger-Regeln

Es gibt zwei Möglichkeiten, die integrierten Debuger-Regeln in der SageMaker Umgebung zu verwenden: Stellen Sie die integrierten Regeln so bereit, wie sie vorbereitet sind, oder passen Sie ihre Parameter nach Ihren Wünschen an. Im Folgenden erfahren Sie anhand von Beispielcodes, wie Sie integrierte Regeln verwenden.

Beispielcode für integrierte Debuger-Regeln

Das folgende Codebeispiel zeigt, wie die integrierten Debugger-Regeln mit der Methode Rule.sagemaker festgelegt werden. Um die integrierten Regeln anzugeben, die Sie ausführen möchten, rufen Sie die integrierten Regeln mithilfe der rules_configs API-Operation auf. Eine vollständige Liste der integrierten Debugger-Regeln und Standardparameterwerte finden Sie unter Liste der in den Debugger integrierten Regeln.

import sagemaker from sagemaker.tensorflow import TensorFlow from sagemaker.debugger import Rule, CollectionConfig, rule_configs # call built-in rules that you want to use. built_in_rules=[ Rule.sagemaker(rule_configs.vanishing_gradient()) Rule.sagemaker(rule_configs.loss_not_decreasing()) ] # construct a SageMaker estimator with the Debugger built-in rules sagemaker_estimator=TensorFlow( entry_point='directory/to/your_training_script.py', role=sm.get_execution_role(), base_job_name='debugger-built-in-rules-demo', instance_count=1, instance_type="ml.p3.2xlarge", framework_version="2.9.0", py_version="py39", # debugger-specific arguments below rules=built_in_rules ) sagemaker_estimator.fit()
Anmerkung

Die integrierten Debugger-Regeln werden parallel zu Ihrem Trainingsauftrag ausgeführt. Die maximale Anzahl von integrierten Regelcontainern für einen Trainingsauftrag ist 20.

Weitere Informationen über die Debugger-Regelklasse, Methoden und Parameter finden Sie in der SageMaker Debugger-Regelklasse im Amazon SageMaker Python SDK.

Ein Beispiel für die Anpassung der Debugger-Regelparameter finden Sie im folgenden Abschnitt Verwenden Sie die integrierten Debuger-Regeln mit Parameteränderungen.

Verwenden Sie die integrierten Debuger-Regeln mit Parameteränderungen

Das folgende Codebeispiel zeigt die Struktur der integrierten Regeln zur Anpassung von Parametern. In diesem Beispiel erfasst stalled_training_rule alle 50 Schritte die losses Tensorerfassung aus einem Trainingsauftrag und alle 10 Schritte aus einer Evaluierungsphase. Wenn der Trainingsprozess ins Stocken gerät und 120 Sekunden lang keine Tensorausgaben erfasst werden, stoppt der stalled_training_rule den Trainingsjob.

import sagemaker from sagemaker.tensorflow import TensorFlow from sagemaker.debugger import Rule, CollectionConfig, rule_configs # call the built-in rules and modify the CollectionConfig parameters base_job_name_prefix= 'smdebug-stalled-demo-' + str(int(time.time())) built_in_rules_modified=[ Rule.sagemaker( base_config=rule_configs.stalled_training_rule(), rule_parameters={ 'threshold': '120', 'training_job_name_prefix': base_job_name_prefix, 'stop_training_on_fire' : 'True' } collections_to_save=[ CollectionConfig( name="losses", parameters={ "train.save_interval": "50" "eval.save_interval": "10" } ) ] ) ] # construct a SageMaker estimator with the modified Debugger built-in rule sagemaker_estimator=TensorFlow( entry_point='directory/to/your_training_script.py', role=sm.get_execution_role(), base_job_name=base_job_name_prefix, instance_count=1, instance_type="ml.p3.2xlarge", framework_version="2.9.0", py_version="py39", # debugger-specific arguments below rules=built_in_rules_modified ) sagemaker_estimator.fit()

Eine erweiterte Konfiguration der integrierten Debuger-Regeln mithilfe der CreateTrainingJob API finden Sie unter Konfigurieren des Debuggers mithilfe der Amazon SageMaker -API.