特徴量ストア:FeastとTecton
オンラインとオフラインの特徴量ストア、特徴量のバージョン管理、ポイントインタイム結合、サービングレイテンシについて学習します。
「特徴量ストア:FeastとTecton」はCoddyKit上の無料Learn AI with Pythonレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはLearn AI with Python学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Learn AI with Pythonコースには全4レッスンが含まれています。
Feature Storeが解決する問題
チームは同じ特徴量を何度も再実装し、トレーニングパイプラインとサービングコードで異なる方法で計算してしまいがちです。Feature Storeは特徴量の定義、再利用、サービングを一元化し、重複した作業とトレーニングとサービングのスキューをなくします。
FeastとTecton
代表的なFeature Storeを2つ紹介します。
- Feast:オープンソースで軽量。インフラは自分で用意します
- Tecton:商用のマネージドサービス。ストリーミング特徴量パイプラインとガバナンスを追加します
どちらもエンティティ、特徴量、オフラインストアとオンラインストアという基本概念を共有しています。
エンティティとFeature View
エンティティとは、特徴量が表す対象(ユーザーや商品など)です。Feature Viewは、あるエンティティに関連する特徴量をまとめ、データソースを指定します。これらの定義はコードで管理し、他のアーティファクトと同じようにバージョン管理します。
# A user entity with features:
# avg_purchase, days_since_signup, total_ordersfeast apply
feast applyは、エンティティとFeature Viewの定義をFeature Storeのレジストリに登録します。これにより、どの特徴量が存在し、そのデータがどこから来るのかをストアに知らせます。
feast apply
# Registered entity user
# Registered feature view user_statsマテリアライゼーション
サービングの前に、特徴量をオンラインストアへ読み込む必要があります。マテリアライゼーションでは、ある時点までの特徴量値を計算してオンラインストア(Redisなど)に書き込み、低レイテンシーで読み取れるようにします。
feast materialize
feast materializeは開始日と終了日を受け取り、その期間の特徴量値をオンラインストアに読み込みます。オンライン特徴量を最新の状態に保つため、スケジュールに従って実行します。
feast materialize 2024-01-01T00:00:00 2024-01-31T00:00:00オンラインサービング
推論時には、get_online_featuresを使って指定したエンティティの最新の特徴量を取得します。検索対象のエンティティを識別するentity_rowsを渡すと、ミリ秒単位で最も新しい値が返されます。
from feast import FeatureStore
store = FeatureStore(repo_path=".")
features = store.get_online_features(
features=["user_stats:avg_purchase", "user_stats:total_orders"],
entity_rows=[{"user_id": 123}],
).to_dict()トレーニングデータの構築
トレーニングでは、特徴量の値を過去のラベルに結合します。Feature Storeはオフラインストアから読み取り、各ラベルのタイムスタンプに対応したデータセットを返します。これにより、トレーニングの入力がサービングで提供される入力と一致します。
training_df = store.get_historical_features(
entity_df=labels_df, # has user_id and event_timestamp
features=["user_stats:avg_purchase"],
).to_df()ポイントインタイム結合
Feature Storeの重要な保証がポイントインタイム結合です。各トレーニングラベルについて、そのラベルのタイムスタンプ以前に把握されていた特徴量値だけを取得します。これにより、未来の情報を使用することを防ぎます。
データリーケージの防止
ポイントインタイムの正確性がなければ、データリーケージが発生する危険があります。これは、ラベルイベントの後に計算された特徴量値でトレーニングすることです。オフラインのメトリクスは高く見えますが、本番環境では性能が崩れます。Feature Storeは時間的な整合性を自動的に適用します。
ライフサイクル全体
Feature Storeのライフサイクルは、次のようにつながっています。
feast applyで定義を登録しますfeast materializeでオンラインストアに読み込みます- トレーニングでは、オフラインストアからポイントインタイム結合を行います
- サービングでは、
get_online_featuresで最新の値を読み取ります
クイックチェック
Feature Storeの知識を確認しましょう。
まとめ
FeastとTectonを使ったFeature Storeについて学びました。
feast applyでエンティティとFeature Viewを登録しますfeast materializeで指定した日付の特徴量をオンラインストアに読み込みますget_online_featuresでentity_rowsに対応する最新の値を提供します- ポイントインタイム結合でデータリーケージのないトレーニングデータを構築します
よくある質問
「特徴量ストア:FeastとTecton」レッスンは無料ですか?
はい。「特徴量ストア:FeastとTecton」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Learn AI with Pythonコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Learn AI with Pythonコースには全4レッスンが含まれています。
「特徴量ストア:FeastとTecton」で何を学びますか?
オンラインとオフラインの特徴量ストア、特徴量のバージョン管理、ポイントインタイム結合、サービングレイテンシについて学習します。 ブラウザで直接実行するハンズオンコードでLearn AI with Pythonを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Learn AI with Pythonを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのLearn AI with Pythonは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「特徴量ストア:FeastとTecton」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このLearn AI with Pythonレッスンでコードを書いて実行できますか?
はい。すべてのLearn AI with Pythonレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- AIシステムのアーキテクチャパターン
- AirflowによるスケーラブルなMLパイプライン
- 特徴量ストア:FeastとTecton
- AIシステムの可観測性とモニタリング