Databricks Feature Storeの正式提供(GA)の発表

[Announcing General Availability of Databricks Feature Store \- The Databricks Blog](https://databricks.com/blog/2022/04/29/announcing-general-availability-of-databricks-feature-store.html)の翻訳です。

:::note warn
本書は抄訳であり内容の正確性を保証するものではありません。正確な内容に関しては原文を参照ください。
:::

# データとMLOpsと協調設計された業界初の特徴量ストア

本日、Databricks Feature Storeの正式提供(GA)を発表できることを嬉しく思います！この記事では、エンドツーエンドデータとMLOpsのプラットフォームと協調設計された業界初の特徴量ストアであるDatabricks Feature Storeが、どのようにして機械学習の特徴量を定義、探索、再利用できる能力をデータチームに提供し、トレーニングデータセットを構築し、バッチ推論の際に特徴量を取得し、低レーテンシーのオンラインストアに特徴量を公開することができるのかを探索します。

# クイックな振り返り: 特徴量とは？

機械学習では、特徴量とは予測を行うのに適した属性、あるいは計測可能な特性となります。例えば、高速道路における交通量パターンを予測しようとする機械学習モデルにおいては、時刻、曜日、車のスループットの全てを特徴量と考えることができます。しかし、リアルワールドのデータを機械学習アプリケーションで使えるようにするには、膨大な量の前処理、データ加工、変換処理が必要となります。例えば、相関の高いデータを除外したり、モデルに特徴量としてデータを与える前に言語を解析したいと思うかもしれません。生データを機械学習で使える状態に変換するプロセスは特徴量エンジニアリングと呼ばれます。

# 特徴量エンジニアリングの課題

特徴量エンジニアリングは複雑で時間を消費するものです。企業がより多くの機械学習モデルを構築すればするほど、構築済みの特徴量を検索、共有、再利用できるようにすることは重要となります。良い特徴量を再利用するというプラクティスは、データチームの数集荷の時間を節約します。しかし、特徴量が再利用されると、それらのリアルワールドにおけるパフォーマンスを密接に追跡することが重要となります。多くの場合、トレーニングで用いられた特徴量計算ロジックは、プロダクションで用いられるものと乖離することがあり、これは予測の偏りを引き起こし、モデル品質の低下につながります。また、どのモデルがどの特徴量を使っているのか、これらの特徴量にどのデータが用いられているのかを追跡するために、特徴量のリネージュ(依存関係)を確立することも重要です。

我々のお客様の多くは、優れた特徴量開発プラットフォームはモデル開発の時間を劇的に加速し、重複したデータパイプラインを排除し、データ品質を改善し、データガバナンスの助けになると述べています。

# Databricks Feature Store

初の試みであるDatabricks Feature Storeは、人気のあるオープンソースフレームワークである[Delta Lake](https://delta.io/)と[MLflow](https://mlflow.org/)と協調設計されています。Delta Lakeは特徴量ストアのオープンデータレイヤーとして動作し、MLflowフォマットを用いることで、モデルパッケージの中に特徴量ストアとのやりとりをカプセル化することができ、モデルの開発とバージョン管理をシンプルにします。これらのユニークな差別化要因によって、Databricks Feature Storeは以下のようなキーとなるメリットを提供します。

- **お使いのツールによる特徴量の検索、再利用**: Databricks Feature StoreのUIは、企業の各所にいるデータサイエンスチームがそれぞれの作業で活用し、特徴量の重複を削減する役に立ちます。Databricks Feature Storeにおける特徴量テーブルは、Deltaテーブルとして実装されます。このオープンな[データレイクハウス](https://databricks.com/jp/glossary/data-lakehouse)アーキテクチャは全ての特徴量に対するセントラルハブとしての特徴量ストアをデプロイすることを可能にし、Databricksワークスペースやサードパーティツールからオープンかつセキュアにアクセスできるようになります。
- **オンライン/オフラインの偏りの排除**: MLflowモデルの中に特徴量情報をパッケージングすることで、Databricks Feature Storeはモデルライフサイクルのすべてのフェーズ、モデルトレーニングからバッチ、オンラインの推論を通じて特徴量検索を自動化します。これによって、モデル推論とモデルトレーニングで用いられる特徴量には、常に同じ変換処理が適用され、リアルタイムのモデルサービングの際の一般的な失敗パターンを排除することができます。
- **自動化されたリネージュトラッキング**: 統合されたデータとAIプラットフォームにインテグレーションされたコンポーネントとして、Databricks Feature Storeは完全なリネージュグラフを捕捉できるように位置付けられています。データソースから特徴量、それらを利用するモデルや推論エンドポイントまで追跡されます。リネージュグラフにはそれぞれの時点で使用されたコードのバージョンも含まれます。これによって、パワフルなリネージュベースの検索とガバナンスを推進します。データサイエンティストは、興味のある生データから既に計算された特徴量を見つけ出すことができます。データエンジニアは、アクティブなモデルが特徴量を利用しているのかどうかに基づいて、どの特徴量を更新すべきか、削除すべきかを安全に判断することができます。
![](https://databricks.com/wp-content/uploads/2022/04/db-146-blog-img-1.png)

# レイクハウスの特徴量ストアによるお客様のwin

すでに数百のお客様が本格運用している機械学習プロセスを支援するために、Databricks Feature Storeをデプロイしています。[Via](https://databricks.com/customers/via)のようなお客様においては、開発者の生産性を30%改善し、25%以上のデータ処理コストの削減を達成しました。

- **Via**: 「Databricks Feature Storeによって、モデルによって使用される特徴量の作成、再利用のための堅牢かつ安定した環境を作成することができました。毎回データを最初から特徴量に変換することで時間を浪費する必要がなくなったので、我々のデータサイエンティストとアナリストはより生産的になりました。」 - Cezar Steinz, Manager of MLOps at Via

# 新機能は？

GAリリースには様々な新機能が含まれています。

## 時系列特徴量テーブルとpoint-in-timeのjoin

([AWS](https://docs.databricks.com/applications/machine-learning/feature-store/time-series.html), [Azure](https://docs.microsoft.com/en-us/azure/databricks/applications/machine-learning/feature-store/time-series), [GCP](https://docs.gcp.databricks.com/applications/machine-learning/feature-store/time-series.html))

特徴量ストアによく格納されるのは時系列データです。また、このタイプのデータは最も注意深い操作が求められます。時間次元に対するjoinにおけるデータポイントの僅かなズレは、通常検知が困難な形でモデルパフォーマンスを侵食し、将来の時系列データにおけるデータの漏れを引き起こします。異なる時間ウィンドウを持つ特徴量間の手動プログラムによるjoinには、特別な労力と詳細に対する綿密な注意が必要となります。

Databricks Feature Storeは、時系列データに対するビルトインのサポートを提供することで、この負荷を取り除きます。データサイエンティストはシンプルに特徴量テーブルのどのカラムが時間次元であるのかを指定するだけでよく、Feature Store APIが残りの面倒を見ます。モデルトレーニングにおいては、データセットは一連の適切なAS-OF join(時刻が一致しているjoin)を用いて構成されます。バッチジョインでは、パッケージングされたMLflowモデルがpoint-in-timeの検索を行います。オンラインサービングでは、Feature Storeは時系列データの最新の値のみを公開し、自動的に古い値を廃棄します。

製品レコメンデーションモデルに新たなFeature Store APIを用いて、時系列特徴量テーブルからトレーニングデータセットを作成するのかがどれだけ簡単なのかを説明します。最初に、時間次元として`event_time`を指定してPySparkデータフレーム`user_features_dataframe`から時系列特徴量テーブルを作成します。

```py:Python
from databricks.feature_store import FeatureStoreClient

fs = FeatureStoreClient()
fs.create_table(
 name="advertisement_team.user_features",
 keys="user_id",
 timestamp_keys="event_time",
 features_df=user_features_dataframe,
)
```

次に、トレーニングデータの`raw_clickstream`データフレームと特徴量テーブルの2つの特徴量をjoinすることでトレーニングデータセットを作成します。

```py:Python
from databricks.feature_store import FeatureLookup

feature_lookups = [
 FeatureLookup(
   table_name="advertisement_team.user_features",
   feature_names=["purchases_30d", "purchases_1d"],
   lookup_key="user_id",
   timestamp_lookup_key="ad_impression_time"
 )
]

training_dataset = fs.create_training_set(
 raw_clickstream,
 feature_lookups=feature_lookups,
 label="ad_clicked",
)
```

`training_dataset`には適切な挙動を保障する最適化されたAS-OFのjoinが含まれています。これがDatabricks Feature Store APIによるトレーニングデータセットの作成、そしていかなるMLフレームワークのモデルのトレーニングをスタートする際に必要なことのすべてです。

## NoSQLオンラインストア

([AWS](https://docs.databricks.com/applications/machine-learning/feature-store/feature-tables.html#publish-features-to-an-online-feature-store))

特徴量サービングのためのオンラインストアとして既にサポートされている様々なSQLデータベースに加えて、Databricks Feature StoreではAWSのDynamoDBもサポートします。時系列特徴量テーブルの公開において、古い特徴量がオンラインストアから自動で排除されるように、ライブのデータをDynamoDBに公開することができます。Azure Cosmos DBのサポートは間も無くです。

## データパイプラインのヘルスモニタリング

([AWS](https://docs.databricks.com/applications/machine-learning/feature-store/ui.html), [Azure](https://docs.microsoft.com/en-us/azure/databricks/applications/machine-learning/feature-store/ui#track-feature-lineage-and-freshness), [GCP](https://docs.gcp.databricks.com/applications/machine-learning/feature-store/ui.html#track-feature-lineage-and-freshness))

Feature StoreのUIでは、特徴量テーブルを作成したデータパイプラインのステータスをモニタリングすることができ、ユーザーにデータの鮮度を知らせます。これによって障害を防ぎ、データサイエンティストが特徴量ストアで見つける特徴量の品質に関して洞察を得ることができます。
![](https://databricks.com/wp-content/uploads/2022/04/db-146-blog-img-2.png)

# Databricks Feature Storeの詳細について

特徴量ストアに関して理解を深めたいのであればebook: [The Comprehensive Guide to Feature Stores](https://databricks.com/p/ebook/the-comprehensive-guide-to-feature-stores)をご覧ください。

試してみましょう！お使いのクラウドで[Databricks機械学習](https://databricks.com/jp/try-databricks)のフリートライアルにサインアップし、Feature Storeを使ってみてください。

Databricks Feature Storeの[ドキュメント](https://docs.databricks.com/applications/machine-learning/feature-store/index.html)にディープダイブしてみてください。

Viaの素晴らしいユースケースとFeature Storeのテックリードをチェックしてみてください: [All About Feature Stores](https://databricks.com/p/webinar/all-about-feature-stores)

## クレジット

原文を参照ください。

### Databricks 無料トライアル

[Databricks 無料トライアル](https://databricks.com/jp/try-databricks)