Erstellen benutzerdefinierter Debugger-Regeln für die Ausbildungsauftragsanalyse - 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 benutzerdefinierter Debugger-Regeln für die Ausbildungsauftragsanalyse

Sie können benutzerdefinierte Regeln erstellen, um Ihren Schulungsauftrag mit den Debugger-Rule-APIs und der Open Source zu überwachensmdebug-Python-Bibliothekdie Tools zum Erstellen eigener Regelcontainer bereitstellen.

Voraussetzungen für das Erstellen von benutzerdefinierten Debugger-Regeln

Um benutzerdefinierte Debugger-Regeln zu erstellen, benötigen Sie die folgenden Voraussetzungen.

Verwenden Sie die Debugger-Client-BibliotheksmdebugSo erstellen Sie ein benutzerdefiniertes Regelpython-Skript

DiesmdebugDie Rule-API bietet eine Schnittstelle zum Einrichten Ihrer eigenen benutzerdefinierten Regeln. Das folgende Python-Skript ist ein Beispiel für das Erstellen einer benutzerdefinierten Regel:CustomGradientRuleaus. Diese benutzerdefinierte Regel des Tutorials überwacht, ob die Farbverläufe zu groß werden, und legt den Standardschwellenwert auf 10 fest. Die benutzerdefinierte Regel verwendet eine Basisstudie, die von einem SageMaker-Schätzer erstellt wurde, wenn sie einen Schulungsauftrag initiiert.

from smdebug.rules.rule import Rule class CustomGradientRule(Rule): def __init__(self, base_trial, threshold=10.0): super().__init__(base_trial) self.threshold = float(threshold) def invoke_at_step(self, step): for tname in self.base_trial.tensor_names(collection="gradients"): t = self.base_trial.tensor(tname) abs_mean = t.reduction_value(step, "mean", abs=True) if abs_mean > self.threshold: return True return False

Sie können mehrere benutzerdefinierte Regelklassen beliebig im selben Python-Skript hinzufügen und sie für alle Trainingsauftragsversuche bereitstellen, indem Sie benutzerdefinierte Regelobjekte im folgenden Abschnitt erstellen.

Verwenden Sie die Debugger-APIs, um Ihre eigenen benutzerdefinierten Regeln auszuführen

Das folgende Codebeispiel zeigt, wie Sie eine benutzerdefinierte Regel mit dem konfigurierenAmazon SageMaker Python SDKaus. In diesem Beispiel wird davon ausgegangen, dass das benutzerdefinierte Regelskript, das Sie im vorherigen Schritt erstellt haben, unter 'path/to/my_custom_rule.py'.

from sagemaker.debugger import Rule, CollectionConfig custom_rule = Rule.custom( name='MyCustomRule', image_uri='759209512951.dkr.ecr.us-west-2.amazonaws.com/sagemaker-debugger-rule-evaluator:latest', instance_type='ml.t3.medium', source='path/to/my_custom_rule.py', rule_to_invoke='CustomGradientRule', collections_to_save=[CollectionConfig("gradients")], rule_parameters={"threshold": "20.0"} )

In der folgenden Liste wird der Debugger erklärtRule.customAPI-Argumente.

  • name(str): Geben Sie einen benutzerdefinierten Regelnamen an, wie Sie möchten.

  • image_uri(str): Dies ist das Bild des Containers, der die Logik hat, Ihre benutzerdefinierte Regel zu verstehen. Es bezieht und wertet die angegebenen Tensorsammlungen aus, die Sie im Schulungsjob speichern. Die Liste der Open Source SageMaker-Rule-Evaluator-Images finden Sie unterRegistrierungs-URLs für Amazon SageMaker Debugger für benutzerdefinierte Regelauswertungsprogrammeaus.

  • instance_type(str): Sie müssen eine Instanz angeben, um einen Regeldocker-Container zu erstellen. Dies dreht die Instanz parallel zu einem Trainingscontainer.

  • source(str): Dies ist der lokale Pfad oder der Amazon S3 S3-URI zu Ihrem benutzerdefinierten Regelskript.

  • rule_to_invoke(str): Dies gibt die bestimmte Rule-Klassenimplementierung in Ihrem benutzerdefinierten Regelskript an. SageMaker unterstützt jeweils nur eine Regel, die in einem Regeljob ausgewertet werden muss.

  • collections_to_save(str): Dies gibt an, welche Tensor-Sammlungen Sie speichern, damit die Regel ausgeführt werden soll.

  • rule_parameters(Wörterbuch): Dies akzeptiert Parametereingaben in einem Wörterbuchformat. Sie können die Parameter anpassen, die Sie im benutzerdefinierten Regelskript konfiguriert haben.

Nachdem Sie diecustom_rule-Objekt können Sie es verwenden, um einen SageMaker-Schätzer für alle Ausbildungsjobs zu erstellen. Geben Sie dieentry_pointzu deinem Trainingsskript. Sie müssen keine Änderung Ihres Trainingsskripts vornehmen.

from sagemaker.tensorflow import TensorFlow estimator = TensorFlow( role=sagemaker.get_execution_role(), base_job_name='smdebug-custom-rule-demo-tf-keras', entry_point='path/to/your_training_script.py' train_instance_type='ml.p2.xlarge' ... # debugger-specific arguments below rules = [custom_rule] ) estimator.fit()

Weitere Varianten und erweiterte Beispiele für die Verwendung benutzerdefinierter Debugger-Regeln finden Sie in den folgenden Beispiel-Notebooks.