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")
Wichtig
Die ExperimentTracking-Klasse ist eine Singleton-Klasse, und es kann jeweils nur eine Ausführung aktiv sein. Experimente und Ausführungen sind nicht Thread-sicher und sollten nur von dem Thread aus geändert werden, in dem die ExperimentTracking-Instanz konfiguriert wurde.
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 Liste der Ausführungen zeigt Run name, Status, Created-Datum und eine Spalte für jede Metrik. Sie können Parameter auch als zusätzliche Spalten umschalten. Zeigen Sie weitere Details, wie Artefakte, Metrikdiagramme und verknüpfte Modellversionen, aus der Ausführungsansicht und den Ausführungsvergleichsansichten an.
Bemerkung
Das Anzeigen verknüpfter Modellversionen ist Teil des Modellherkunft-Features, das nur für Kunden mit der Enterprise Edition und höher verfügbar ist.
Sie können bis zu fünf Ausführungen in Ihrem Experiment auswählen. Um Ausführungen zu vergleichen, wählen Sie die Schaltfläche Compare aus. Ihnen wird die Vergleichsansicht angezeigt, in der Metadaten, Parameter, Metriken und Informationen zur Ausführung angezeigt werden.
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 Ausführungen sind auf 1.000 eindeutige Parameter und 200 eindeutige Metriken beschränkt.
Hinweise zu Kosten¶
Es fallen keine zusätzlichen Kosten für die Nutzung von Snowflake-Experimenten an. Es fallen die üblichen verbrauchsabhängigen Kosten von Snowflake an. Dazu zählen die folgenden:
Kosten für die Speicherung von Ausführungsartefakten. Allgemeine Informationen zu den Kosten für den Speicher finden Sie unter Untersuchen der Speicherkosten.
Kosten für die Protokollierung von Daten. Allgemeine Informationen zu den Kosten, die bei der Protokollierung von Daten entstehen, finden Sie unter Anzeigen der Credit-Nutzung.
Kosten für die Visualisierung von Daten. Die Diagramme in derUI werden von virtuellen Warehouses unterstützt. Weitere Informationen dazu finden Sie unter Anzeigen der Credit-Nutzung.