モデルのトレーニングと推論¶
注釈
Snowflake Feature Store API は、Snowpark ML Pythonパッケージ(snowflake-ml-python
)v1.5.0以降で利用可能です。
トレーニング用テーブルの生成¶
フィーチャーストアの generate_training_set
メソッドでトレーニング用のデータセットを生成できます。このメソッドは、ソースデータを含むSnowpark DataFrame を派生したフィーチャー値で強化します。フィーチャー表示からフィーチャーのサブセットを選択するには、 fv.slice
を使用します。
時系列機能の場合は、タイムスタンプの列名を提供して、機能のポイントインタイム値ルックアップを自動化します。
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
)
注釈
ここで、 spine_df
(MySourceDataFrame
) は、ソースデータのエンティティ IDs、タイムスタンプ、ラベル列、および学習データを含む追加列を含む DataFrame です。要求された機能は、提供されたタイムスタンプに関してポイントインタイムで正しく、エンティティIDsのリストに対して取得されます。
トレーニングセットはデフォルトでエフェメラルです。トレーニングセットはSnowpark DataFrames としてのみ存在し、マテリアライズされません。トレーニングセットをテーブルにマテリアライズするには、引数 save_as
に有効な、存在しないテーブル名を指定します。トレーニングセットは新しく作成されたテーブルに書き込まれます。
現在のところ、マテリアライズされたテーブルは不変性を保証しておらず、メタデータのサポートも限られています。これらの機能が必要な場合は、代わりに Snowflake Datasets の使用をご検討ください。
注釈
generate_training_set
API は snowflake-ml-python
バージョン 1.5.4
以降で利用可能です。
トレーニング用Snowflake Datasetsの生成¶
フィーチャーストアの generate_dataset
メソッドを使用して、 Snowflake Dataset を生成できます。メソッドのシグネチャーは generate_training_set
と似ています。主な違いは、必須の引数 name
と、オプションの引数 version
、そして追加のメタデータフィールドです。 generate_dataset
は常に結果をマテリアライズします。
Snowflake Datasetsは、不変のファイルベースのデータスナップショットを提供し、大規模なデータセットや分散トレーニングにおけるモデルの再現性と効率的なデータ取り込みを支援します。データセットはまた、発見しやすく消費しやすいように、メタデータのサポートが拡張されています。
次のコードは、フィーチャービューからデータセットを生成する例です:
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
)
モデルトレーニング¶
データセットを作成したら、次のように学習時にそれをモデルに渡すことができます。
Snowpark DataFrame を生成した場合、それをモデルに直接渡します:
my_model = train_my_model(training_set)
Snowflake Datasetを生成した場合は、それをSnowpark DataFrame に変換してモデルに渡します:
my_model = train_my_model(dataset.read.to_snowpark_dataframe())
このモデルは、 Snowflake Model Registry にログ記録することができます。
機能の取得と予測の実行¶
Pythonセッションでモデルを作成した場合、以下のように、単純にフィーチャーストアからフィーチャービューを取得し、予測用のモデルに渡すことができます。
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)
exclude_columns
引数を使用して指定した列を除外するか、 include_feature_view_timestamp_col
を設定してタイムスタンプ列をフィーチャービューに含めることができます。