Erstellen Sie benutzerdefinierte Debugger-Regeln für die Analyse von Schulungsaufträgen - 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 benutzerdefinierte Debugger-Regeln für die Analyse von Schulungsaufträgen

Mithilfe der Debugger-Regel-APIs und der Open-Source Python-Bibliothek smdebug, die Tools zum Erstellen eigener Regelcontainer bereitstellt, können Sie benutzerdefinierte Regeln erstellen, um Ihren Schulungsauftrag zu überwachen.

Voraussetzungen für die Erstellung von benutzerdefinierten Debugger-Regeln

Um benutzerdefinierte Debugger-Regeln erstellen zu können, benötigen Sie Folgendes.

Verwenden Sie die Debugger-Client-Bibliothek smdebug, um ein Python-Skript für benutzerdefinierte Regeln zu erstellen

Die smdebug Regel-API bietet eine Schnittstelle zum Einrichten Ihrer eigenen benutzerdefinierten Regeln. Das folgende Python-Skript ist ein Beispiel für die Erstellung einer benutzerdefinierten Regel, CustomGradientRule. Diese benutzerdefinierte Regel für das Tutorial überwacht, ob die Farbverläufe zu groß werden, und legt den Standardschwellenwert auf 10 fest. Die benutzerdefinierte Regel verwendet eine von einem SageMaker-Schätzer erstellte Basisstudie, wenn sie den 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 dem gleichen Python-Skript beliebig viele benutzerdefinierte Regelklassen hinzufügen und sie für alle Schulungsauftragsversuche einsetzen, indem Sie im folgenden Abschnitt benutzerdefinierte Regelobjekte erstellen.

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

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

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 werden die Debugger Rule.custom-API-Argumente erklärt.

  • name (str): Geben Sie beliebig einen benutzerdefinierten Regelnamen an.

  • image_uri (str): Dies ist das Bild des Containers, das die Logik enthält, Ihre benutzerdefinierte Regel zu verstehen. Es bezieht die angegebenen Tensorsammlungen, die Sie im Schulungsauftrag speichern, und wertet sie aus. Die Liste der Open-Source-Bilder für die SageMaker-Regelauswertung finden Sie unter Amazon SageMaker Debugger-Registrierungs-URLs für benutzerdefinierte Regelauswertungen.

  • instance_type (str): Sie müssen eine Instance angeben, um einen Regel-Docker-Container zu erstellen. Dadurch wird die Instance parallel zu einem Schulungscontainer hochgefahren.

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

  • rule_to_invoke (str): Dies spezifiziert die spezielle Regelklassenimplementierung in Ihrem benutzerdefinierten Regelskript. SageMaker unterstützt jeweils nur eine Regel, die in einem Regelauftrag ausgewertet werden kann.

  • collections_to_save (str): Dies gibt an, welche Tensorsammlungen Sie speichern, damit die Regel ausgeführt werden kann.

  • 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 das custom_rule Objekt eingerichtet haben, können Sie es verwenden, um einen SageMaker-Schätzer für alle Schulungsaufträge zu erstellen. Geben Sie das entry_point in Ihrem Schulungsskript an. Sie müssen keine Änderungen an Ihrem Schulungsskript 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.