Erstellen Sie Aktionen für Regeln mit Amazon CloudWatch undAWS Lambda - 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.

Erstellen Sie Aktionen für Regeln mit Amazon CloudWatch undAWS Lambda

Amazon CloudWatch sammelt Auftragsprotokolle für Amazon SageMaker-Modellschulungen und Auftragsprotokolle zur Verarbeitung von Amazon SageMaker Debugger-Regeln. Konfigurieren von Debugger mit Amazon CloudWatch Events undAWS Lambdaum Maßnahmen basierend auf dem Auswertungsstatus der Debugger-Regel zu ergreifen.

CloudWatch Logs für Debugger-Regeln und Schulungsjobs

So suchen Sie Trainingsauftragsprotokolle und Auftragsprotokolle für Debugger-Regeln

  1. Öffnen Sie die CloudWatch-Konsole unter https://console.aws.amazon.com/cloudwatch/.

  2. Im linken Navigationsbereich unter derProtokollnode, wählen-Protokollgruppenaus.

  3. Gehen Sie in der Liste der Protokollgruppen wie folgt vor:

    • Klicken Sie auf/aws/sagemaker/TrainingJobsfür Schulungs-Job-Logs.

    • Klicken Sie auf/aws/sagemaker/VerarbeitenJobsfür Debugger-Regel-Job-Logs.

Sie können den Auftragsstatus der Schulungs- und Debugger-Regel in den CloudWatch-Protokollen verwenden, um weitere Maßnahmen zu ergreifen, wenn Schulungsprobleme auftreten.

Weitere Informationen zur Überwachung von Trainingsaufträgen mit CloudWatch finden Sie unterÜberwachung von Amazon SageMakeraus.

Richten Sie den Debugger für die automatische Beendigung von Schulungsaufträgen mit CloudWatch und Lambda ein

Die Debugger-Regeln überwachen den Status des Schulungsauftrags, und eine CloudWatch-Ereignisregel überwacht den Status der Debugger-Regel für Schulungsaufträge.

Schritt 1: Erstellen einer Lambda-Funktion

So erstellen Sie eine Lambda-Funktion:

  1. Öffnen Sie die AWS Lambda-Konsole unter https://console.aws.amazon.com/lambda/.

  2. Wählen Sie im linken Navigationsbereich die OptionFunktionenund dann wählen SieCreate -Funktionaus.

  3. Auf derCreate -Funktion-Seite wählenAuthor from scratchOption.

  4. In derGrundlegende Informationen, geben Sie einFunktionsname(z. B.Debugger-Regel-Stop-Schulungsjob) enthalten.

  5. Wählen Sie für Runtime (Laufzeit) die Option Python 3.7 aus.

  6. FürBerechtigungen, erweitern Sie die Dropdown-Option und wählen SieÄndern der Standardausführungsrolleaus.

  7. FürAusführungsrolle, wählenVerwenden einer vorhandenen RolleWählen Sie die IAM-Rolle, die Sie für Schulungsjobs bei SageMaker nutzen.

    Anmerkung

    Stellen Sie sicher, dass Sie die Ausführungsrolle mit verwendenAmazonSageMakerFullAccessundAWSLambdaBasicExecutionRoleangehängt. Andernfalls reagiert die Lambda-Funktion nicht ordnungsgemäß auf die Statusänderungen der Debugger-Regel des Schulungsauftrags. Wenn Sie sich nicht sicher sind, welche Ausführungsrolle verwendet wird, führen Sie den folgenden Code in einer Jupyter-Notebook-Zelle aus, um die Ausgabe der Ausführungsrolle abzurufen:

    import sagemaker sagemaker.get_execution_role()
  8. Klicken Sie unten auf der Seite auf Create function.

Die folgende Abbildung zeigt ein Beispiel fürCreate -FunktionSeite mit ausgefüllten Eingabefeldern und Auswahlen.


                        Seite Create Function.

Schritt 2: Konfigurieren Sie die Lambda-Funktion

Konfigurieren Sie die Lambda-Funktion

  1. In derFunktionscodefügen Sie auf der Konfigurationsseite das folgende Python-Skript in den Bereich des Lambda-Code-Editors ein. Dielambda_handlerüberwacht den von CloudWatch erfassten Auswertungsstatus der Debugger-Regel und löst dieStopTrainingJobAPI-Operation. DieAWS SDK for Python (Boto3) clientbietet für SageMaker eine High-Level-Methode,stop_training_job, was denStopTrainingJobAPI-Operation.

    import json import boto3 import logging logger = logging.getLogger() logger.setLevel(logging.INFO) def lambda_handler(event, context): training_job_name = event.get("detail").get("TrainingJobName") logging.info(f'Evaluating Debugger rules for training job: {training_job_name}') eval_statuses = event.get("detail").get("DebugRuleEvaluationStatuses", None) if eval_statuses is None or len(eval_statuses) == 0: logging.info("Couldn't find any debug rule statuses, skipping...") return { 'statusCode': 200, 'body': json.dumps('Nothing to do') } # should only attempt stopping jobs with InProgress status training_job_status = event.get("detail").get("TrainingJobStatus", None) if training_job_status != 'InProgress': logging.debug(f"Current Training job status({training_job_status}) is not 'InProgress'. Exiting") return { 'statusCode': 200, 'body': json.dumps('Nothing to do') } client = boto3.client('sagemaker') for status in eval_statuses: logging.info(status.get("RuleEvaluationStatus") + ', RuleEvaluationStatus=' + str(status)) if status.get("RuleEvaluationStatus") == "IssuesFound": secondary_status = event.get("detail").get("SecondaryStatus", None) logging.info( f'About to stop training job, since evaluation of rule configuration {status.get("RuleConfigurationName")} resulted in "IssuesFound". ' + f'\ntraining job "{training_job_name}" status is "{training_job_status}", secondary status is "{secondary_status}"' + f'\nAttempting to stop training job "{training_job_name}"' ) ) try: client.stop_training_job( TrainingJobName=training_job_name ) except Exception as e: logging.error( "Encountered error while trying to " "stop training job {}: {}".format( training_job_name, str(e) ) ) raise e return None

    Weitere Informationen über die Lambda-Code-Editor-Schnittstelle finden Sie unterErstellen von -Funktionen mit demAWSLambda-Konsolen-Editoraus.

  2. Überspringen Sie alle anderen Einstellungen und wählen SieSaveoben auf der Konfigurationsseite.

Schritt 3: Erstellen Sie eine CloudWatch-Ereignisregel und verlinken Sie mit der Lambda-Funktion für Debugger

So erstellen Sie Ihre CloudWatch Events-Regel und verknüpfen mit der Lambda-Funktion für Debugger

  1. Öffnen Sie die CloudWatch-Konsole unter https://console.aws.amazon.com/cloudwatch/.

  2. Wählen Sie im linken Navigationsbereich die OptionRegelnunter dem VerzeichnisEventsKnoten.

  3. Wählen Sie Create rule (Regel erstellen).

  4. In derEreignisquelle-Abschnitt imSchritt 1: Regel erstellen-Seite wählenSageMakerzumService-Name, und wählen SieÄnderung des Status von SageMaker Training JobzumEreignistypaus. Die Event-Pattern-Vorschau sollte wie in den folgenden Beispiel-JSON-Strings aussehen:

    { "source": [ "aws.sagemaker" ], "detail-type": [ "SageMaker Training Job State Change" ] }
  5. In derTargets (Ziele)Wählen SieHinzufügen von Ziel*, und wählen Sie dasDebugger-Regel-Stop-SchulungsjobLambda-Funktion, die Sie erstellt haben. In diesem Schritt wird die CloudWatch Events-Regel mit der Lambda-Funktion verknüpft.

  6. Klicken Sie aufKonfigurieren Sie Detailsund gehen Sie zurSchritt 2: Regeldetails konfigurierenangezeigten.

  7. Geben Sie den Namen der CloudWatch-Regeldefinition an. Beispiel,debugger-cw-Ereignis-Regelaus.

  8. Klicken Sie aufRegel erstellenbeenden Sie.

  9. Wechseln Sie zurück zur Konfigurationsseite der Lambda-Funktion und aktualisieren Sie die Seite. Bestätigen Sie, dass es imDesignerPanel. Die CloudWatch-Ereignisregel sollte als Trigger für die Lambda-Funktion registriert werden. Das Konfigurationsdesign sollte wie im folgenden Beispiel aussehen:

    
                                Designer-Panel für die CloudWatch-Konfiguration.

Führen Sie Beispiel-Notebooks aus, um die automatische Kündigung des Schulungsauftrags

Sie können die folgenden Beispiel-Notebooks ausführen, die darauf vorbereitet sind, mit den integrierten Regeln von Debugger mit dem Stoppen eines Schulungsauftrags zu experimentieren.

Deaktivieren Sie die CloudWatch-Ereignisregel, um die Verwendung des automatischen Schulungsauftrags Job beenden

Wenn Sie die automatische Beendigung des Schulungsauftrags deaktivieren möchten, müssen Sie die CloudWatch-Ereignisregel deaktivieren. Im LambdaDesignerwählen Sie dasEventBridge (CloudWatch Events)Block verbunden mit der Lambda-Funktion. Dies zeigt eineEventBridgePanel unterhalb desDesignerPanel (siehe z. B.Vorheriger Screenshot) enthalten. Aktivieren Sie das Kontrollkästchen nebenEventBridge (CloudWatch Events): debugger-cw-EreignisregelKlicken Sie auf und danach aufDeaktivieren vonaus. Wenn Sie die Funktion zur automatischen Beendigung später verwenden möchten, können Sie die CloudWatch-Ereignisregel erneut aktivieren.