Snowflake特徴ストア¶
注釈
Snowflake Feature Store API は、Snowpark ML Pythonパッケージ(snowflake-ml-python)v1.5.0以降で利用可能です。
Snowflake Feature Storeにより、データサイエンティストと ML エンジニアは、データサイエンスと ML ワークロードで、 ML フィーチャーを作成、保守、使用することができます。すべてSnowflake内で行います。
一般的に、 フィーチャー は機械学習モデルの入力として使われるデータ要素です。気温や出席日数など、データセットの多くの列は、そのままフィーチャーとして使うことができます。また、前処理や変換を行うことで、よりトレーニングに役立つ列になる場合もあります。例えば、モデルが週ごとのパターンを検出できるように、タイムスタンプから曜日のフィーチャーを導き出す場合があります。その他の一般的なフィーチャー変換には、データの集約、微分、タイムシフトが含まれます。 フィーチャーエンジニアリング とは、モデルに必要なフィーチャーを決定し、生データからどのようにフィーチャーを導き出すかを定義するプロセスです。
フィーチャーストア を使用すると、よく使用されるフィーチャー変換を中央リポジトリで標準化できるため、再利用が可能になり、データと労力の重複を減らし、生産性を向上させることができます。また、新しいソースデータで更新することでフィーチャーを維持し、常に正しく一貫性のある新しいフィーチャーを信頼できる唯一の情報源で提供することができます。生データからフィーチャーを抽出する方法に一貫性を持たせることで、フィーチャーストアはプロダクションの ML パイプラインをより堅牢にするのにも役立ちます。
Snowflake Feature Storeは、データサイエンスおよび機械学習ワークロードの機能の作成、保存、管理をより簡単かつ効率的に行えるように設計されています。Snowflake内でネイティブにホストされるSnowflake Feature Storeには、以下のような利点があります。
- お客様のデータは、お客様の管理とガバナンスのもとで安全に保管され、Snowflakeを離れることはありません。 
- Snowsightフィーチャーストア UI では、フィーチャーを簡単に検索・発見できます。 
- アクセスは、きめ細かな ロールベースのアクセス制御 で管理されます。 
Snowflake Feature Storeの主な利点には、以下のサポートが含まれます。
- バッチデータとストリーミングデータの両方で、新しいデータが到着すると効率的に自動更新されます 
- バックフィルとポイントインタイムの修正機能 ASOF JOIN 
- Pythonあるいは SQL で書かれたフィーチャー変換 
- Snowflakeが管理するFeature Viewsを使用した、ソースデータからフィーチャー値を自動更新およびリフレッシュ 
- dbt のような外部ツールでユーザー管理されたフィーチャーパイプラインを使用する能力 
Snowflake Feature Store は、 Snowflake Model Registry およびその他の Snowflake ML フィーチャーと完全に統合されており、エンドツーエンドのプロダクション ML を実現します。
次の図は、Snowflake Feature Storeが機械学習パイプラインにどのように適合するかを示しています。
 
- 生データは、テーブルやビューからバッチで取得することも、ストリーミングデータソースから取得することもできます。 
- 生データは、データエンジニアによって定義されたフィーチャーによって変換され、フィーチャーテーブルが作成されます。 
- フィーチャーテーブルは、Snowpark ML でモデルのトレーニングに使用されるトレーニングデータセットを生成したり、モデルが予測を行うために使用するテストデータを充実させるために使用することができます。 
機能の仕組み¶
注釈
Snowflakeのフィーチャーストアは、単にスキーマです。フィーチャーストアとして使用するスキーマは、新規に作成することも、既存のものを使用することもできます。
フィーチャーストアには フィーチャービュー が含まれます。フィーチャービューは、生データを1つまたは複数の関連フィーチャーに変換するためのPythonまたは SQL パイプラインをカプセル化します。フィーチャビューで定義されたすべてのフィーチャは、ソースデータから同時にリフレッシュされます。
Tip
複数のフィーチャーストアにアクセスできるユーザーは、複数のフィーチャーストアのフィーチャービューを組み合わせて、トレーニングデータセットと推論データセットを作成できます。
Snowflake Feature Storeは、2種類のフィーチャービューをサポートしています。
- Snowflake 管理:Snowflake Feature Storeは、指定したスケジュールで、フィーチャービューのフィーチャーを段階的かつ効率的に更新します。 
- 外部:フィーチャーストアの外部にある他のプロセスが、フィーチャービュー内のフィーチャーを管理します。このタイプのフィーチャービューは、 dbt などのツールで使用するためのものです。 
フィーチャービューは、フィーチャーストアの中で、フィーチャービューが適用される エンティティ に従って整理されます。エンティティは、フィーチャの主題を表す、より高いレベルの抽象化です。例えば、映画ストリーミングサービスでは、主なエンティティはユーザーと映画となります。未加工の映画データやユーザーのアクティビティデータは、映画ごとの表示時間やユーザーセッションの長さなどの有用なフィーチャーに変換することができます。また、これらのフィーチャーを含むフィーチャービューを関連するエンティティにタグ付けすることができます。
バックエンドデータモデル¶
フィーチャーストアのオブジェクトはSnowflakeオブジェクトとして実装されています。したがって、すべてのフィーチャーストアのオブジェクトは、Snowflakeのアクセス制御ルールの対象となります。
| フィーチャーストアのオブジェクト | Snowflakeオブジェクト | 
|---|---|
| フィーチャーストア | |
| 機能ビュー | |
| エンティティ | |
| 機能 | 動的テーブルまたはビューの列 | 
機能ビューのプロパティ(名前やエンティティなど)は、動的なテーブルやビューのタグとして実装されます。
SQL を使用して、Snowflakeオブジェクトを直接クエリしたり操作したりできます。SQL 経由で行った変更は、Python API と相互に反映されます。
Tip
Snowflake Feature Storeのすべてのオブジェクトは、フィーチャーストアのスキーマに格納されます。フィーチャーストアを完全に削除するには、スキーマに他のリソースが含まれていないことを確認し、 スキーマを削除します。
はじめるにあたり¶
注釈
Snowflake Feature Store Python API は、Snowpark ML Python パッケージ、 snowflake-ml-python の一部です。ローカルシステムでお好みのPython IDE、またはSnowsightのワークシートやノートブックで使用できます。詳細については、 Python APIs for Snowflake ML をご参照ください。
Introduction to Snowflake Feature Store で、Snowflake Feature Store のコンセプトの概要から始めましょう。その後、以下を含む Snowflake クイックスタート を追加します。
- Snowflake Feature Store および Model Registry を使用した ML モデルの開発と管理。これは、Feature StoreとModel Registryを使ったエンドツーエンド ML の開発サイクルデモです。 
- Snowflake Feature Store入門 API。Feature Store Python APIs の概要です。 
- Snowflake Feature Store上級ガイド。これはFeature Storeとパイプラインのより高度な例です。 
- Snowflake Feature Store と dbt 入門。DBT パイプラインから Snowflake Feature Store にフィーチャーを登録する方法を示します。 
フィーチャー変換の具体的なタイプについては、 一般的な機能とクエリのパターン をご参照ください。
注釈
これらのクイックスタートはあくまで例として示したものです。例に従い、Snowflakeが所有または提供していない第三者のデータ、製品、またはサービスに対する追加の権利が必要となる場合があります。Snowflakeはこの例の正確性を保証するものではありません。