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")
Wählen Sie im Navigationsmenü die Option AI & ML » Experiments aus.
Wählen Sie New Experiment aus.
Geben Sie den Name Ihres Experiments ein.
Wählen Sie die Datenbank und das Schema aus, in denen die Ausführungsartefakte Ihres Experiments gespeichert werden sollen.
Wählen Sie Create aus, um das Experiment zu erstellen, oder Cancel, um es abzubrechen.
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
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)])
# exp: ExperimentTracking
from lightgbm import LGBMClassifier
from snowflake.ml.experiment.callback.lightgbm import SnowflakeLightgbmCallback
from snowflake.ml.model.model_signature import infer_signature
sig = infer_signature(X, y)
callback = SnowflakeLightgbmCallback(
exp, model_name="name", model_signature=sig
)
model = LGBMClassifier()
with exp.start_run("my_run"):
model.fit(X, y, eval_set=[(X, y)], callbacks=[callback])
# exp: ExperimentTracking
import keras
from snowflake.ml.experiment.callback.keras import SnowflakeKerasCallback
from snowflake.ml.model.model_signature import infer_signature
sig = infer_signature(X, y)
callback = SnowflakeKerasCallback(
exp, model_name="name", model_signature=sig
)
model = keras.Sequential()
model.add(keras.layers.Dense(1))
model.compile(
optimizer=keras.optimizers.RMSprop(learning_rate=0.1),
loss="mean_squared_error",
metrics=["mean_absolute_error"],
)
with exp.start_run("my_run"):
model.fit(X, y, validation_split=0.5, callbacks=[callback])
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')
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")
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")
LIST snow://experiment/my_experiment/versions/my_run/logs;
GET snow://experiment/my_experiment/versions/my_run/logs/log0.txt file:///tmp;
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")
DROP EXPERIMENT my_experiment;
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")
ALTER EXPERIMENT my_experiment DROP RUN my_run;
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.