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.
Protokollierung von Parametern und Metriken mit Amazon SageMaker Experiments
Diese Anleitung zeigt, wie Sie Parameter und Metriken mit Amazon SageMaker Experiments protokollieren. Ein SageMaker Experiment besteht aus Durchläufen, und jeder Lauf besteht aus allen Eingaben, Parametern, Konfigurationen und Ergebnissen für eine einzelne Modelltrainingsinteraktion.
Sie können Parameter und Metriken von einer Remote-Funktion aus entweder mit dem @remote Decorator oder dem RemoteExecutor
API protokollieren.
Wählen Sie eine der folgenden Methoden aus, um Parameter und Kennzahlen von einer Remote-Funktion zu protokollieren:
-
Instanziieren Sie ein SageMaker Experiment, das in einer Remote-Funktion ausgeführt wird, mithilfe der
Run
SageMaker Experiments-Bibliothek. Weitere Informationen finden Sie unter Erstellen Sie ein SageMaker Amazon-Experiment. -
Verwenden Sie die
load_run
Funktion innerhalb einer Remote-Funktion aus der SageMaker Experiments-Bibliothek. Dann wird eineRun
Instance geladen, die außerhalb der Remote-Funktion deklariert wird.
In den folgenden Abschnitten wird gezeigt, wie Sie mithilfe der oben aufgeführten Methoden eine Abstammung anhand von SageMaker Experimentläufen erstellen und verfolgen können. In den Abschnitten werden auch Fälle beschrieben, die nicht durch SageMaker Schulungen unterstützt werden.
Verwenden Sie den @remote -Decorator zur Integration mit Experiments SageMaker
Sie können ein Experiment entweder in SageMaker einer Remote-Funktion instanziieren oder ein aktuelles SageMaker Experiment aus einer Remote-Funktion laden. In den folgenden Abschnitten erfahren Sie, wie Sie jede dieser beiden Methoden verwenden können.
Erstellen Sie ein Experiment mit Experimenten SageMaker
Sie können ein Experiment erstellen, das im SageMaker Experiment ausgeführt wird. Dazu übergeben Sie den Namen Ihres Experiments, den Namen des Durchgangs und weitere Parameter an Ihre Remote-Funktion.
Der folgende Beispielcode importiert den Namen Ihres Experiments, den Namen des Durchlaufs und die Parameter, die bei jedem Durchlauf protokolliert werden sollen. Die Parameter param_1
und param_2
werden im Laufe der Zeit in einer Trainingsschleife protokolliert. Allgemeine Parameter sind ggf. u.a. Chargengröße oder Epochen. In diesem Beispiel werden die Kennzahlen metric_a
und metric_b
für einen längeren Zeitraum innerhalb einer Trainingsschleife protokolliert. Weitere gängige Kennzahlen können accuracy
oder loss
sein.
from sagemaker.remote_function import remote from sagemaker.experiments.run import Run # Define your remote function @remote def train(
value_1
,value_2
,exp_name
,run_name
): ... ... #Creates the experiment with Run( experiment_name=exp_name, run_name=run_name, ) as run: ... #Define values for the parameters to log run.log_parameter("param_1
", value_1) run.log_parameter("param_2
", value_2) ... #Define metrics to log run.log_metric("metric_a
", 0.5) run.log_metric("metric_b
", 0.1) # Invoke your remote function train(1.0, 2.0, "my-exp-name", "my-run-name")
Laden Sie aktuelle SageMaker Experimente mit einem Job, der vom @remote -Decorator initiiert wurde
Verwenden Sie die load_run()
Funktion aus der SageMaker Experiments-Bibliothek, um das aktuelle Run-Objekt aus dem Run-Kontext zu laden. Sie können die load_run()
Funktion auch in Ihrer Remote-Funktion verwenden. Laden Sie das Lauf-Objekt, das lokal durch die with
Anweisung für das Lauf-Objekt initialisiert wird, wie im folgenden Beispielcode gezeigt.
from sagemaker.experiments.run import Run, load_run # Define your remote function @remote def train(
value_1
,value_2
): ... ... with load_run() as run: run.log_metric("metric_a
", value_1) run.log_metric("metric_b
", value_2) # Invoke your remote function with Run( experiment_name="my-exp-name
", run_name="my-run-name
", ) as run: train(0.5, 1.0)
Lädt einen aktuellen Experimentlauf innerhalb eines Jobs, der mit dem initiiert wurde RemoteExecutor
API
Sie können auch einen aktuellen SageMaker Experimentlauf laden, wenn Ihre Jobs mit dem initiiert wurden RemoteExecutor
API. Das folgende Codebeispiel zeigt die Verwendung RemoteExecutor
API mit der load_run
Funktion SageMaker Experiments. Sie tun dies, um einen aktuellen SageMaker Testlauf zu laden und Metriken in dem Job zu erfassen, der von eingereicht wurdeRemoteExecutor
.
from sagemaker.experiments.run import Run, load_run def square(x): with load_run() as run: result = x * x run.log_metric("result", result) return result with RemoteExecutor( max_parallel_job=2, instance_type="
ml.m5.large
" ) as e: with Run( experiment_name="my-exp-name
", run_name="my-run-name
", ): future_1 = e.submit(square, 2)
Nicht unterstützte Verwendungen für SageMaker Experimente beim Kommentieren Ihres Codes mit einem @remote -Decorator
SageMaker unterstützt nicht die Übergabe eines Run
Typobjekts an eine @remote -Funktion oder die Verwendung globaler Objekte. Run
Die folgenden Beispiele zeigen Code, der eine SerializationError
auslöst.
Im folgenden Beispielcode wird versucht, ein Objekt vom Typ Run
an einen @remote Decorator zu übergeben. Das führt zu einem Fehler.
@remote def func(run: Run): run.log_metrics("metric_a", 1.0) with Run(...) as run: func(run) ---> SerializationError caused by NotImplementedError
Im folgenden Beispielcode wird versucht, ein globales run
Objekt zu verwenden, das außerhalb der Remote-Funktion instanziiert wurde. Im Beispielcode ist die train()
Funktion innerhalb des with Run
Kontextes definiert und verweist von innen auf ein globales Lauf-Objekt. Wenn train()
aufgerufen wird, kommt es zu einem Fehler.
with Run(...) as run: @remote def train(
metric_1
,value_1
,metric_2
,value_2
): run.log_parameter(metric_1, value_1) run.log_parameter(metric_2, value_2) train("p1", 1.0, "p2", 0.5) ---> SerializationError caused by NotImplementedError