Skip to content
Latchkey

フィーチャーパイプラインとは?MLのfeature生成を解説

フィーチャーパイプラインは、生データをモデルが消費する再利用可能で検証済みのfeatureに変える自動化されたプロセスで、多くの場合それらをfeature storeに書き込みます。

モデルが学習できるようになる前に、生データはfeatureにならなければなりません - 「過去7日間の注文数」のようなクリーンな数値入力です。フィーチャーパイプラインは、それらのfeatureを計算する再現可能なプロセスで、モデル間で再利用でき、学習とservingの間で一貫性を保てるようにします。

フィーチャーパイプラインとは何か

フィーチャーパイプラインは、生データまたはwarehouseのデータを読み込み、feature engineeringの変換を適用し、結果を検証し、featureを再利用可能な場所 - 通常はオフラインとオンラインのfeature store - に書き込みます。これはMLシステムのupstream側の半分であり、training pipelineに供給します。

なぜ学習から分離するか

feature生成をモデル学習から分離すると、多くのモデルが同じfeatureを再利用でき、featureが独自のscheduleで更新できます。また、同じpipelineのロジックがオフライン学習とオンライン推論の両方のfeatureを生成するため、training-serving skewの防止にも役立ちます。

検証が重要

featureはすべてのdownstreamのモデルに供給されるため、フィーチャーパイプラインは公開前にその出力 - 範囲、null、分布 - を検証すべきです。静かに壊れたfeatureは一度に多くのモデルを劣化させる可能性があるため、この段階での品質チェックは非常に大きな価値を持ちます。

CIでのフィーチャーパイプライン

CIでサンプルデータに対してfeatureのロジックを検証し、その後scheduleに従ってmaterializeします。

A feature pipeline in CI
steps:
  - run: pytest tests/features          # logic + range checks
  - run: python build_features.py --sample data/sample
  - run: feast materialize-incremental $(date -I)

Latchkeyノート

featureのmaterializeは大きな履歴テーブルを読み込み、メモリを多く消費することがあります。Latchkeyでは、materializeをより大きなrunnerで実行し、入力データと依存関係をrun間でcacheし、backfill中の一時的なwarehouseやobject storeの読み取りにはauto-retryに頼ります。

重要なポイント

  • フィーチャーパイプラインは、生データを再利用可能で検証済みのfeatureに変え、多くの場合feature storeに書き込む。
  • それを学習から分離すると、featureの再利用が可能になり、training-serving skewの防止に役立つ。
  • 公開前にfeatureの出力を検証すると、すべてのdownstreamのモデルを静かな破損から守れる。

関連ガイド