Experiment durchführen, um Modelle zu vergleichen und auszuwählen

Mit Snowflake ML Experiments können Sie Experimente einrichten, d. h. organisierte Auswertungen der Ergebnisse des Modelltrainings. So können Sie die Ergebnisse der Hyperparameter-Anpassung, unterschiedlicher Zielmetriken und des Verhaltens verschiedener Modelltypen schnell auf organisierte Weise vergleichen, um das beste Modell für Ihre Bedürfnisse auszuwählen. Jedes Experiment besteht aus einer Reihe von Ausführungen, die Metadaten und Artefakte Ihres Trainings sind. Snowflake hat keine Ansichten über die von Ihnen ausgeführten Artefakte – Sie können alles einreichen, was für Ihren Modellbewertungsprozess nützlich ist.

Nachdem Sie ein Experiment abgeschlossen haben, sind die Ergebnisse über Snowsight sichtbar. Sie können Artefakte auch jederzeit in Python oder SQL ausführen.

Bemerkung

Snowflake-Experimente erfordern snowflake-ml-python Version 1.19.0 oder höher.

Anforderungen an die Zugriffssteuerung

Für das Erstellen eines Experiments ist die CREATE EXPERIMENT-Berechtigung für das Schema erforderlich, in dem Ausführungsartefakte gespeichert werden. Für das Erstellen eines Experiments ist die USAGE-Berechtigung für die übergeordnete Datenbank und das übergeordnete Schema erforderlich.

Ein Experiment erstellen

Erstellen Sie zunächst ein Experiment. Dies erfordert eine vorhandene Datenbank und ein vorhandenes Schema, die zum Speichern von Ausführungsinformationen verwendet werden.

Unterstützung für Experimente ist in der Klasse snowflake.ml.experiment.ExperimentTracking verfügbar. Verwenden Sie die set_experiment(name: Optional[str])-Methode, um ein Experiment mit dem angegebenen Namen zu öffnen und es auf den aktiven Experimentkontext für Protokolle und Artefakte zu setzen. Experimente, die noch nicht vorhanden sind, werden erstellt.

Das folgende Beispiel zeigt, wie Sie ein Experiment mit dem Namen My_Experiment in der aktiven Datenbank und im aktiven Schema erstellen oder öffnen und es als das aktive Experiment festlegen, wobei Sie eine vorhandene session verwenden:

from snowflake.ml.experiment import ExperimentTracking

exp = ExperimentTracking(session=session)
exp.set_experiment("My_Experiment")
Copy

Experimentausführung starten

Jede Ausführung eines Experiments verfügt über eigene Kennzahlen, Parameter und Artefakte. Diese Informationen werden in Snowsight verwendet, um Visualisierungen und Daten über Ihr Modelltraining und dessen Ergebnisse bereitzustellen.

Starten Sie eine Ausführung mit der Methode start_run(name: Optional[str]) in Ihrer ExperimentTracking-Instanz Dies gibt einen neuen Run-Wert zurück, der die Verwendung in einer with-Anweisung unterstützt. Snowflake empfiehlt die Verwendung von with-Anweisungen, sodass Ausführungen ordnungsgemäß abgeschlossen werden und es einfacher ist, den Ausführungsumfang nachzuvollziehen.

with exp.start_run("my_run"):
  # .. Train your model and log artifacts
Copy

Trainingsinformationen automatisch protokollieren

Sie können Trainingsinformationen für XGBoost-, LightGBM- oder Keras-Modelle während des Modelltrainings automatisch protokollieren. Die automatische Protokollierung wird durchgeführt, indem ein Callback registriert wird, der sich auf Ihr Experiment und die Informationen über das Modell bezieht, das Sie trainieren. Jedes Mal, wenn eine Methode in Ihrer Model-Instanz aufgerufen wird, die einen Parameter oder eine Kennzahl anpasst, wird dies automatisch in Ihrem Experiment für die aktive Ausführung protokolliert.

Das folgende Beispiel zeigt, wie Sie die Callbacks Ihres Experiments für jeden unterstützten Modelltrainer konfigurieren und dann einen einfachen Trainingslauf starten, um Artefakte zu protokollieren.

# exp: ExperimentTracking

from xgboost import XGBClassifier

from snowflake.ml.experiment.callback.xgboost import SnowflakeXgboostCallback
from snowflake.ml.model.model_signature import infer_signature

sig = infer_signature(X, y)
callback = SnowflakeXgboostCallback(
    exp, model_name="name", model_signature=sig
)
model = XGBClassifier(callbacks=[callback])
with exp.start_run("my_run"):
    model.fit(X, y, eval_set=[(X, y)])
Copy

Trainingsinformationen und Artefakte manuell protokollieren

Für Modelle, die keine automatische Protokollierung unterstützen oder bereits vortrainiert sind, können Sie Experimentinformationen manuell protokollieren und Artefakte in Python hochladen. Parameter sind konstante Eingaben für das Trainingsmodell, während Metriken in einem Modell-Schritt ausgewertet werden. Sie können eine Trainingsepoche als entsprechenden Schritt darstellen. Das folgende Beispiel zeigt, wie Sie Parameter und Metriken protokollieren und Artefakte hochladen.

Bemerkung

Der Standardschrittwert ist 0.

# Logging requires an active run for the exp: ExperimentTracker instance.

# Log model parameters with the log_param(...) or log_params(...) methods
exp.log_param("learning_rate", 0.01)
exp.log_params({"optimizer": "adam", "batch_size": 64})

# Log model metrics with the log_metric(...) or log_metrics(...) methods
exp.log_metric("loss", 0.3, step=100)
exp.log_metrics({"loss": 0.4, "accuracy": 0.8}, step=200)

# Log your model to the experiment's model registry with the log_model(...) method.
exp.log_model(model, model_name="my_model", signatures={"predict": model_signature})
exp.log_model(model, model_name="my_model", sample_input_data=data)

# Log local artifacts to an experiment run with the log_artifact(...) method.
exp.log_artifact('/tmp/file.txt', artifact_path='artifacts')
Copy

Bemerkung

Die Artefakt-Protokollierung wird bei Warehouse-Notizbüchern nicht unterstützt.

Eine Ausführung abschließen

Durch den Abschluss einer Ausführung wird sie unveränderlich. In Snowsight wird sie als beendet angezeigt.

Wenn Sie eine Ausführung als Teil einer with-Anweisung gestartet haben, wird die Ausführung bei Verlassen des Bereichs automatisch abgeschlossen. Andernfalls können Sie eine Ausführung beenden, indem Sie die end_run(name: Optional[str])-Methode Ihres Experiments mit dem Namen des zu beendenden Laufs aufrufen.

experiment.end_run("my_run")
Copy

Ausführungen innerhalb eines Experiments vergleichen

Die Auswertung der Experimente erfolgt über Snowsight. Wählen Sie im Navigationsmenü AI & ML » Experiments und dann das zu untersuchende Experiment in der Liste aus.

Die Experiment-Ansicht enthält Informationen zu Run count over time, eine Ansicht Ihrer aktuell ausgewählten Metrik und eine Liste Ihrer verfügbaren Ausführungen für das Experiment. Das Dropdown-Menü oben rechts enthält eine Liste der zu prüfenden Metriken, die das Metric Value Range-Diagramm in der Experiment-Ansicht ausfüllt.

Die Liste der Ausführungen auf dieser Seite enthält den Run name, den Status, wenn die Ausführung Created war, und eine zusätzliche Spalte für jede im Experiment verfügbare Metrik. Informationen zu Parametern und Modellversionen sind in der Ausführungsvergleichsansicht verfügbar.

Sie können bis zu fünf Ausführungen in Ihrem Experiment und dann die Schaltfläche Compare auswählen, um die Vergleichsansicht anzuzeigen. Hier werden die Metadaten, Parameter und Metriken zur Ausführung und Informationen zur Modellversion angezeigt. Jede Metrik wird visuell dargestellt und kann mit dem Umschalter im Abschnitt Metrics geändert werden, um zwischen Charts und Tables zu wechseln.

Artefakte aus einer Ausführung abrufen

Sie können jederzeit während oder nach einer Ausführung Artefakte abrufen. Das folgende Beispiel zeigt, wie Sie die verfügbaren Artefakte einer Ausführung im Pfad logs auflisten und das logs/log0.txt-Artefakt für die Ausführung my_run im Experiment my_experiment in das lokale Verzeichnis /tmp herunterladen:

# exp: ExperimentTracking
exp.set_experiment("my_experiment")

exp.list_artifacts("my_run", artifact_path="logs")
exp.download_artifacts("my_run", artifact_path="logs/log0.txt", target_path="/tmp")
Copy

Ausführungen und Experimente löschen

Nachdem Sie ein Experiment beendet haben, können Sie es mit allen verbundenen Ausführungsartefakten entfernen. Im folgenden Beispiel wird das Experiment my_experiment entfernt:

# exp: ExperimentTracking
exp.delete_experiment("my_experiment")
Copy

Sie können auch eine einzelne Ausführung aus einem Experiment entfernen. Im folgenden Beispiel wird die Ausführung my_run aus dem Experiment my_experiment entfernt:

# exp: ExperimentTracking
exp.set_experiment("my_experiment")
exp.delete_run("my_run")
Copy

Einschränkungen

Snowflake-Experimente unterliegen den folgenden Einschränkungen:

  • Jedes Schema ist auf 500 Experimente beschränkt.

  • Jedes Experiment ist auf 500 Ausführungen beschränkt.

  • Ausführungen werden maximal ein Jahr lang gespeichert.

  • Die Parameter und Metriken für einzelne Ausführungen sind auf 200 KB insgesamt begrenzt.

Hinweise zu Kosten

Für die Verwendung von Snowflake-Experimenten fallen die üblichen verbrauchsabhängigen Kosten von Snowflake an. Dazu zählen:

  • Kosten für die Speicherung von Ausführungsartefakten. Allgemeine Informationen zu den Kosten für den Speicher finden Sie unter Untersuchen der Speicherkosten.