Integrierte Debuger-Aktionen für Regeln - 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-Aktionen für Regeln

Verwenden Sie die integrierten Debuger-Aktionen, um auf Probleme zu reagieren, die von Debugger-Regel gefunden wurden. Die rule_configs Debugger-Klasse bietet Tools zum Konfigurieren einer Liste von Aktionen, darunter das automatische Stoppen von Trainingsjobs und das Senden von Benachrichtigungen mithilfe von Amazon Simple Notification Service (Amazon SNS), wenn die Debugger-Regeln Trainingsprobleme feststellen.

Schritt 1: Amazon SNS einrichten, ein SMDebugRules-Thema erstellen und das Thema abonnieren

In diesem Abschnitt erfahren Sie, wie Sie ein Amazon SNS SMDebugRules-Thema einrichten, es abonnieren und das Abonnement bestätigen, um Benachrichtigungen von den Debugger-Regeln zu erhalten.

Anmerkung

Weitere Informationen zur Abrechnung für Amazon SNS finden Sie unter Amazon SNS-Preise und häufig gestellte Fragen zu Amazon SNS.

Erstellen Sie ein SmDebugRules Thema wie folgt
  1. Melden Sie sich bei der AWS Management Console an und öffnen Sie die Amazon-SNS-Konsole unter https://console.aws.amazon.com/sns/v3/home.

  2. Wählen Sie im linken Navigationsbereich Topics (Themen).

  3. Wählen Sie auf der Seite Topics (Themen) Create New Topic (Neues Thema erstellen) aus.

  4. Führen Sie auf der Seite Create subscription (Abonnement erstellen) im Abschnitt Details die folgenden Schritte aus:

    1. Wählen Sie als Typ die Option Standard als Thementyp aus.

    2. Geben Sie unter Name SMDebugRules ein.

  5. Überspringen Sie alle anderen optionalen Einstellungen und wählen Sie Thema erstellen. Weitere Informationen zu den optionalen Einstellungen finden Sie unter Amazon SNS-Thema erstellen.

Um das Thema SMDebugRules zu abonnieren

  1. Öffnen Sie die Amazon SNS-Konsole unter https://console.aws.amazon.com/sns/v3/home.

  2. Wählen Sie im linken Navigationsbereich Subscriptions (Abonnements).

  3. Wählen Sie auf der Seite Subscriptions (Abonnements) die Option Create subscription (Abonnement erstellen)aus.

  4. Führen Sie auf der Seite Create subscription (Abonnement erstellen) im Abschnitt Details die folgenden Schritte aus:

    1. Wählen Sie für Topic ARN das Thema SMDebugRules aus. Der ARN sollte im Format von arn:aws:sns:<region-id>:111122223333:SMDebugRules sein.

    2. Wählen Sie für Protocol (Protokoll) die Option Email (E-Mail) oder SMS.

    3. Für Endpunkt, geben Sie den Endpunktwert ein, wie z. B. eine E-Mail-Adresse oder eine Telefonnummer, über die Benachrichtigungen erhalten sollen.

      Anmerkung

      Vergewissern Sie sich, dass Sie die richtige E-Mail-Adresse und Telefonnummer eingeben. Telefonnummern müssen +, eine Landesvorwahl und eine Telefonnummer ohne Sonderzeichen oder Leerzeichen enthalten. Die Telefonnummer +1 (222) 333-4444 ist beispielsweise formatiert als +12223334444.

  5. Überspringen Sie alle anderen optionalen Einstellungen und wählen Sie Abonnement erstellen. Weitere Informationen zu den optionalen Einstellungen finden Sie unter Amazon SNS abonnieren.

Nachdem Sie das Thema SMDebugRules abonniert haben, erhalten Sie die folgende Bestätigungsnachricht per E-Mail oder Telefon:


                    Eine E-Mail-Nachricht zur Bestätigung des Abonnements für das Thema Amazon SNS SMDebugRules.

Weitere Informationen über Amazon SNS finden Sie unter Mobile Textnachrichten (SMS) und E-Mail-Benachrichtigungen im Amazon SNS Developer Guide.

Schritt 2: Richten Sie Ihre IAM-Rolle ein, um erforderliche Richtlinien anzuhängen

In diesem Schritt fügen Sie die erforderlichen Richtlinien zu Ihrer IAM-Rolle hinzu.

Um die erforderlichen Richtlinien zu Ihrer IAM-Rolle hinzuzufügen
  1. Melden Sie sich bei der AWS Management Console an und öffnen Sie die IAM-Konsole unter https://console.aws.amazon.com/iam/.

  2. Wählen Sie im linken Navigationsbereich Policies (Richtlinien) und anschließend Create Policy (Richtlinie erstellen) aus.

  3. Gehen Sie auf der Seite Richtlinie erstellen wie folgt vor, um eine neue SNS-Zugriffsrichtlinie zu erstellen:

    1. Wählen Sie den Tab JSON.

    2. Fügen Sie die im folgenden Code fett formatierten JSON-Zeichenfolgen in die "Statement" ein und ersetzen Sie dabei die 12-stellige AWS Konto-ID durch Ihre AWS Konto-ID.

      { "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "sns:Publish", "sns:CreateTopic", "sns:Subscribe" ], "Resource": "arn:aws:sns:*:111122223333:SMDebugRules" } ] }
    3. Wählen Sie unten auf der Seite die Option Richtlinie überprüfen.

    4. Geben Sie auf der Seite Create policy (Richtlinie erstellen) für Name sns-access ein.

    5. Wählen Sie unten auf der Seite Create policy (Richtlinie erstellen) aus.

  4. Gehen Sie zurück zur IAM-Konsole und wählen Sie im linken Navigationsbereich Rollen aus.

  5. Suchen Sie nach der IAM-Rolle, die Sie für das SageMaker-Modelltraining verwenden, und wählen Sie diese IAM-Rolle aus.

  6. Wählen Sie auf der Übersichtsseite auf der Registerkarte Berechtigungen die Option Richtlinien anhängen aus.

  7. Suchen Sie nach der sns-Zugriffsrichtlinie, aktivieren Sie das Kontrollkästchen neben der Richtlinie, und wählen Sie dann Richtlinie anhängen.

Weitere Beispiele für die Einrichtung von IAM-Richtlinien für Amazon SNS finden Sie unter Beispielfälle für die Amazon SNS-Zugriffskontrolle.

Schritt 3: Konfigurieren Sie Debugger-Regeln mit den integrierten Aktionen

Nachdem Sie die erforderlichen Einstellungen in den vorherigen Schritten erfolgreich abgeschlossen haben, können Sie die integrierten Debugger-Aktionen für Debugging-Regeln konfigurieren, wie im folgenden Beispielskript gezeigt. Sie können wählen, welche integrierten Aktionen beim Erstellen des actions Listenobjekts verwendet werden sollen. Das rule_configs ist ein Hilfsmodul, das Tools auf hoher Ebene zur Konfiguration der im Debugger integrierten Regeln und Aktionen bereitstellt. Die folgenden integrierten Aktionen sind für Debugger verfügbar:

  • rule_configs.StopTraining()— Stoppt einen Trainingsjob, wenn die Debugger-Regel ein Problem feststellt.

  • rule_configs.Email("abc@abc.com")— Sendet eine Benachrichtigung per E-Mail, wenn die Debugger-Regel ein Problem feststellt. Verwenden Sie die E-Mail-Adresse, die Sie bei der Einrichtung Ihres SNS-Themenabonnements verwendet haben.

  • rule_configs.SMS("+1234567890")— Sendet eine Benachrichtigung per Textnachricht, wenn die Debugger-Regel ein Problem feststellt. Verwenden Sie die Telefonnummer, die Sie bei der Einrichtung Ihres SNS-Themenabonnements verwendet haben.

    Anmerkung

    Vergewissern Sie sich, dass Sie die richtige E-Mail-Adresse und Telefonnummer eingeben. Telefonnummern müssen +, eine Landesvorwahl und eine Telefonnummer ohne Sonderzeichen oder Leerzeichen enthalten. Die Telefonnummer +1 (222) 333-4444 ist beispielsweise formatiert als +12223334444.

Sie können alle integrierten Aktionen oder eine Teilmenge von Aktionen verwenden, indem Sie zum Abschluss die rule_configs.ActionList() Methode verwenden, die die integrierten Aktionen übernimmt und eine Liste von Aktionen konfiguriert.

Um alle drei integrierten Aktionen zu einer einzigen Regel hinzuzufügen

Wenn Sie alle drei integrierten Aktionen einer einzigen Regel zuweisen möchten, konfigurieren Sie bei der Erstellung eines Schätzers eine Liste der integrierten Debuger-Aktionen. Verwenden Sie die folgende Vorlage, um den Schätzer zu erstellen, und der Debugger beendet die Trainingsjobs und sendet Benachrichtigungen per E-Mail und Text für alle Regeln, die Sie zur Überwachung des Fortschritts Ihrer Trainingsaufgabe verwenden.

from sagemaker.debugger import Rule, rule_configs # Configure an action list object for Debugger rules actions = rule_configs.ActionList( rule_configs.StopTraining(), rule_configs.Email("abc@abc.com"), rule_configs.SMS("+1234567890") ) # Configure rules for debugging with the actions parameter rules = [ Rule.sagemaker( base_config=rule_configs.built_in_rule(), # Required rule_parameters={"paramter_key": value }, # Optional actions=actions ) ] estimator = Estimator( ... rules = rules ) estimator.fit(wait=False)

Um mehrere integrierte Aktionsobjekte zu erstellen, um einer einzelnen Regel verschiedene Aktionen zuzuweisen

Wenn Sie die integrierten Aktionen so zuweisen möchten, dass sie bei unterschiedlichen Schwellenwerten einer einzelnen Regel ausgelöst werden, können Sie mehrere integrierte Aktionsobjekte erstellen, wie im folgenden Skript gezeigt. Um einen Konfliktfehler durch die Ausführung derselben Regel zu vermeiden, müssen Sie unterschiedliche Regelauftragsnamen einreichen (geben Sie unterschiedliche Zeichenfolgen für das name Regelattribut an), wie in der folgenden Beispielskriptvorlage gezeigt. Dieses Beispiel zeigt, wie man StalledTrainingRule so einrichtet, dass es zwei verschiedene Aktionen durchführt: eine E-Mail an abc@abc.com senden, wenn ein Trainingsauftrag 60 Sekunden lang blockiert, und den Trainingsauftrag stoppen, wenn er 120 Sekunden lang blockiert.

from sagemaker.debugger import Rule, rule_configs import time base_job_name_prefix= 'smdebug-stalled-demo-' + str(int(time.time())) # Configure an action object for StopTraining action_stop_training = rule_configs.ActionList( rule_configs.StopTraining() ) # Configure an action object for Email action_email = rule_configs.ActionList( rule_configs.Email("abc@abc.com") ) # Configure a rule with the Email built-in action to trigger if a training job stalls for 60 seconds stalled_training_job_rule_email = Rule.sagemaker( base_config=rule_configs.stalled_training_rule(), rule_parameters={ "threshold": "60", "training_job_name_prefix": base_job_name_prefix }, actions=action_email ) stalled_training_job_rule_text.name="StalledTrainingJobRuleEmail" # Configure a rule with the StopTraining built-in action to trigger if a training job stalls for 120 seconds stalled_training_job_rule = Rule.sagemaker( base_config=rule_configs.stalled_training_rule(), rule_parameters={ "threshold": "120", "training_job_name_prefix": base_job_name_prefix }, actions=action_stop_training ) stalled_training_job_rule.name="StalledTrainingJobRuleStopTraining" estimator = Estimator( ... rules = [stalled_training_job_rule_email, stalled_training_job_rule] ) estimator.fit(wait=False)

Während der Trainingsjob ausgeführt wird, sendet die integrierte Debuger-Aktion Benachrichtigungs-E-Mails und Textnachrichten, wenn die Regel Probleme mit Ihrem Trainingsjob feststellt. Der folgende Screenshot zeigt ein Beispiel für eine E-Mail-Benachrichtigung für einen Trainingsjob, bei dem das Problem mit der Trainingsaufgabe blockiert wurde.


                    Ein Beispiel für eine E-Mail-Benachrichtigung, die von Debugger gesendet wird, wenn ein StalledTraining-Problem erkannt wird.

Der folgende Screenshot zeigt ein Beispiel für eine Textbenachrichtigung, die der Debugger sendet, wenn die Regel ein StalledTraining-Problem feststellt.


                    Ein Beispiel für eine Textbenachrichtigung, die vom Debugger gesendet wird, wenn ein StalledTraining-Problem erkannt wird.

Überlegungen zur Verwendung der integrierten Debuger-Aktionen

  • Um die integrierten Debuger-Aktionen verwenden zu können, ist eine Internetverbindung erforderlich. Dieses Feature wird im Netzwerkisolationsmodus von Amazon SageMaker oder Amazon VPC nicht unterstützt.

  • Die integrierten Aktionen können nicht für Profiler-Regeln verwendet werden.

  • Die integrierten Aktionen können nicht für Trainingsaufgaben mit punktuellen Trainingsunterbrechungen verwendet werden.

  • In den E-Mail- oder Textbenachrichtigungen erscheint None am Ende der Nachrichten. Dies hat keine Bedeutung, sodass Sie den Text None ignorieren können.