Modelltraining und Inferenz¶
Bemerkung
Der Snowflake Feature Store API ist im Snowpark ML Python-Paket (snowflake-ml-python
) v1.5.0 und höher verfügbar.
Tabellen für Das Training erstellen¶
Sie können mit der generate_training_set
-Methode des Feature Stores einen Trainingsdatensatz erzeugen, der einen Snowpark DataFrame, der die Quelldaten enthält, mit den abgeleiteten Feature-Werten anreichert. Um eine Teilmenge von Features aus einer Feature-Ansicht auszuwählen, verwenden Sie fv.slice
.
Für Zeitreihen-Features geben Sie den Namen der Zeitstempelspalte an, um die Suche nach dem Feature-Wert zu einem bestimmten Zeitpunkt zu automatisieren.
training_set = fs.generate_training_set(
spine_df=MySourceDataFrame,
features=[registered_fv],
save_as="data_20240101", # optional
spine_timestamp_col="TS", # optional
spine_label_cols=["LABEL1", "LABEL2"], # optional
include_feature_view_timestamp_col=False, # optional
)
Bemerkung
Hier ist der spine_df
(MySourceDataFrame
) ein DataFrame, der die Entität-IDs in den Quelldaten, den Zeitstempel, die Label-Spalten und zusätzlichen Spalten mit Trainingsdaten enthält. Die angeforderten Features werden für die Liste der Entitäts-IDs abgerufen, und zwar zeitpunktgenau in Bezug auf den angegebenen Zeitstempel.
Trainingssets sind standardmäßig ephemer; sie existieren nur als Snowpark DataFrames und werden nicht materialisiert. Um den Trainingssatz in einer Tabelle zu materialisieren, geben Sie das save_as
-Argument mit einem gültigen, nicht existierenden Tabellennamen an. Das Trainingsset wird in die neu erstellte Tabelle geschrieben.
Materialisierte Tabellen bieten derzeit keine Garantie für die Unveränderlichkeit und unterstützen Metadaten nur begrenzt. Wenn Sie diese Features benötigen, sollten Sie stattdessen Snowflake Datasets verwenden.
Bemerkung
Die generate_training_set
API ist in der snowflake-ml-python
-Version 1.5.4
oder höher verfügbar.
Erzeugen von Snowflake-Datensätzen für das Training¶
Sie können ein Snowflake Dataset mit der Methode generate_dataset
des Feature Stores erstellen. Die Signatur der Methode ähnelt der von generate_training_set
; die Schlüsselunterschiede sind das erforderliche name
-Argument, das optionale version
-Argument und zusätzliche Felder für Metadaten. generate_dataset
materialisiert immer das Ergebnis.
Snowflake Datasets bieten einen unveränderlichen, dateibasierten Snapshot der Daten, der die Reproduzierbarkeit des Modells und eine effiziente Datenaufnahme für große Datensätze und/oder verteiltes Training ermöglicht. Die Datensätze verfügen außerdem über eine erweiterte Unterstützung von Metadaten für eine leichtere Auffindbarkeit und Nutzung.
Der folgende Code veranschaulicht die Generierung eines Datensatzes aus einer Feature-Ansicht:
dataset: Dataset = fs.generate_dataset(
name="MY_DATASET",
spine_df=MySourceDataFrame,
features=[registered_fv],
version="v1", # optional
spine_timestamp_col="TS", # optional
spine_label_cols=["LABEL1", "LABEL2"], # optional
include_feature_view_timestamp_col=False, # optional
desc="my new dataset", # optional
)
Modelltraining¶
Nachdem Sie einen Trainingsdatensatz erstellt haben, können Sie diesen beim Training wie folgt an Ihr Modell übergeben.
Wenn Sie einen Snowpark DataFrame erstellt haben, übergeben Sie ihn direkt an Ihr Modell:
my_model = train_my_model(training_set)
Wenn Sie ein Snowflake Dataset erstellt haben, konvertieren Sie es in ein Snowpark DataFrame und übergeben es an Ihr Modell:
my_model = train_my_model(dataset.read.to_snowpark_dataframe())
Sobald das Modell trainiert ist, kann es in der Snowflake Model Registry gespeichert werden.
Abrufen von Features und Erstellen von Vorhersagen¶
Wenn Sie in Ihrer Python-Sitzung ein Modell erstellt haben, können Sie die Feature-Ansicht aus dem Feature Store abrufen und zur Vorhersage an Ihr Modell übergeben, wie im Folgenden gezeigt.
prediction_df: snowpark.DataFrame = fs.retrieve_feature_values(
spine_df=prediction_source_dataframe,
features=[registered_fv],
spine_timestamp_col="TS",
exclude_columns=[],
)
# predict with your previously trained model
my_model.predict(prediction_df)
Sie können bestimmte Spalten mit dem exclude_columns
-Argument ausschließen oder die Zeitstempelspalte durch die Einstellung include_feature_view_timestamp_col
in die Feature-Ansicht aufnehmen.