メインコンテンツまでスキップ

Databricksオンライン特徴量ストア

備考

プレビュー

この機能は パブリック プレビュー 段階で、次のリージョンで使用できます。

us-east-1us-west-2eu-west-1ap-southeast-1ap-southeast-2eu-central-1us-east-2ap-south-1

Databricksオンライン特徴量ストアは、オンラインアプリケーションやリアルタイムの機械学習モデルに特徴データを提供するための、高性能でスケーラブルなソリューションです。Databricks Lakebase を搭載しているため、オフラインの特徴量テーブルとの一貫性を維持しながら、フィーチャ データへの低遅延アクセスを高スケールで実現できます。

Online Feature Store の主な使用例は次のとおりです。

必要条件

Databricksオンライン特徴量ストアには、Databricks Runtime 16.4 LTS ML 以降が必要です。サーバレス コンピュートを使用することもできます。

Databricksオンライン特徴量ストアを使用するには、まずパッケージをインストールする必要があります。次のコード行は、ノートブックが実行されるたびに実行する必要があります。

Python
%pip install databricks-feature-engineering>=0.13.0
dbutils.library.restartPython()

オンラインストアを作成する

新しいオンライン特徴量ストアを作成するには:

Python
from databricks.feature_engineering import FeatureEngineeringClient

# Initialize the client
fe = FeatureEngineeringClient()

# Create an online store with specified capacity
fe.create_online_store(
name="my-online-store",
capacity="CU_2" # Valid options: "CU_1", "CU_2", "CU_4", "CU_8"
)

容量オプションは、「CU_1」、「CU_2」、「CU_4」、および「CU_8」のさまざまなパフォーマンス階層に対応しています。各キャパシティー・ユニットは、データベース・インスタンスに約 16GB の RAM を、関連するすべての CPU およびローカル SSD リソースとともに割り当てます。スケールアップすると、これらのリソースは直線的に増加します。詳細については、「 インスタンス容量の管理」を参照してください。

オンラインストアを管理する

次のコードは、オンライン ストアを取得および更新する方法を示しています。

Python
# Get information about an existing online store
store = fe.get_online_store(name="my-online-store")
if store:
print(f"Store: {store.name}, State: {store.state}, Capacity: {store.capacity}")

# Update the capacity of an online store
updated_store = fe.update_online_store(
name="my-online-store",
capacity="CU_4" # Upgrade to higher capacity
)

オンラインストアへのリードレプリカの追加

オンラインストアを作成または更新するときに、 read_replica_count パラメーターを指定することで、リードレプリカをオンラインストアに追加できます。 読み取りトラフィックはリードレプリカ全体に自動的に分散されるため、レイテンシーが短縮され、同時実行性の高いワークロードのパフォーマンスとスケーラビリティが向上します。

特徴量テーブルをオンラインストアに公開する

オンラインストアが AVAILABLE 状態になったら、 特徴量テーブル を公開して、低遅延のアクセスに使用できるようにすることができます。 以下の表を確認して、ソースオフラインテーブルがリアルタイムユースケース用に正しく作成されていることを確認します。

ユースケース

この方法を使用してオフライン特徴量テーブルを作成する

各エンティティIDの 最新の 機能値のみが、リアルタイムアプリケーション用のオンラインストアで利用できます。 同じ主キー値を持つ複数の行がオフラインデータソースに存在する可能性があり、publish パイプラインで重複排除されます。

このケースは、オンライン モデルまたは Feature Serving エンドポイントで最も頻繁に使用されます。

時系列指定 テーブルを作成する

オフラインテーブルの最新および以前のすべての時系列特徴値は、リアルタイムアプリケーションからアクセスできるようにオンラインストアで入手できます。

ソース (オフライン) テーブルのすべての行は、重複排除なしで公開されます。これは使用頻度は低いですが、エンドポイントがデータ検証またはバックテストのためにエンティティ ID と正確な日付/タイムスタンプで特徴を照会する場合に必要になる場合があります。

時系列指定 なし のテーブルの作成

オンラインストアに公開するための前提条件

すべての特徴量テーブル (時系列の有無にかかわらず) は、公開する前に次の要件を満たす必要があります。

  1. 主キー制約 : オンラインストアの公開に必要
  2. null 非許容の主キー: 主キー列に NULL 値を含めることはできません
  3. チェンジデータフィード enabled : オンラインストアの同期に必要です。 チェン ジデータフィードの有効化を参照してください。
SQL
-- Enable CDF if not already enabled
ALTER TABLE catalog.schema.your_feature_table
SET TBLPROPERTIES ('delta.enableChangeDataFeed' = 'true');

-- Ensure primary key columns are not nullable
ALTER TABLE catalog.schema.your_feature_table
ALTER COLUMN user_id SET NOT NULL;

特徴量テーブルをオンラインストアに公開するには:

Python
from databricks.ml_features.entities.online_store import DatabricksOnlineStore

# Get the online store instance
online_store = fe.get_online_store(name="my-online-store")

# Publish the feature table to the online store
fe.publish_table(
online_store=online_store,
source_table_name="catalog_name.schema_name.feature_table_name",
online_table_name="catalog_name.schema_name.online_feature_table_name"
)

publish_table操作では、次の処理が行われます。

  1. オンラインストアにテーブルが存在しない場合は、作成します。
  2. オフライン特徴量テーブルからオンラインストアに特徴量データを同期します。
  3. オンラインストアとオフラインテーブルを同期させるために必要なインフラストラクチャを設定します。

オンライン機能を継続的に更新する

publish_tablestreaming=Trueで呼び出された場合、オンライン テーブルはストリーミング パイプラインを使用して設定され、オフライン特徴量テーブルに新しいデータが到着するとオンラインストアが継続的に更新されます。

オンライン特徴量の更新をスケジュールする

オンライン テーブルの特徴量を定期的に更新するには、 publish_tableを実行するスケジュール LakeFlowジョブを作成します。このジョブは、テーブルを自動的に更新し、オンライン特徴量を増分更新します。LakeFlowジョブを参照してください。

オンライン特徴量の探索とクエリ

公開されたテーブルのステータスが "AVAILABLE" と表示されたら、いくつかの方法で特徴量データを探索し、クエリを実行できます。

Unity Catalog UI : Unity Catalog のオンライン テーブルに移動して、サンプル データを表示し、UI で直接スキーマを探索します。これにより、フィーチャ データを検査し、公開プロセスが正常に完了したことを確認するのに便利です。

SQLエディター :より高度なクエリとデータ探索のために、SQLエディターを使用して、オンラインの特徴量テーブルに対してPostgreSQLクエリを実行できます。これにより、フィーチャ データに対して複雑なクエリ、結合、および解析を実行できます。オンライン・ストアで SQL エディターを使用する手順について詳しくは、 SQL エディターからのデータベース・インスタンスへのアクセスを参照してください。

リアルタイムアプリケーションでのオンライン特徴量の使用

リアルタイム アプリケーションやサービスに特徴量を提供するには、 特徴量サービングエンドポイントを作成します。 特徴量サービング エンドポイントを参照してください。

Databricksの特徴量を使用して学習されたモデルは、学習した特徴量に自動的にリネージを追跡します。エンドポイントとしてデプロイすると、これらのモデルは Unity Catalog を使用して、オンライン ストアで適切な特徴量を見つけます。詳細については、オンライン ワークフローで特徴量を使用するを参照してください。

オンラインストアを削除する

オンラインストアを削除するには:

Python
fe.delete_online_store(name="my-online-store")
注記

オンラインで公開されたテーブルを削除すると、ダウンストリームの依存関係で予期しないエラーが発生する可能性があります。テーブルを削除する前に、そのオンライン特徴量がモデルサービングまたは 特徴量サービングエンドポイントで使用されなくなったことを確認する必要があります。

制限

  • Databricks オンライン特徴量ストアの読み取りレプリカの最大数は 2 です。Databricks アカウント チームに連絡して、制限を引き上げてください。
  • Databricks オンライン特徴量ストアにパブリッシュする場合、 filter_conditioncheckpoint_locationmodetrigger、および featuresのパラメーターはサポートされていません。
  • Unity Catalogの特徴量テーブルのみがサポートされています。
  • サポートされているパブリッシュモードは「マージ」のみです。

ノートブックの例

次のノートブックは、Databricks Lakebase を使用して Databricks オンライン特徴量ストアを設定してアクセスする方法の例を示しています。

オンライン特徴量ストアとLakebaseのノートブック

Open notebook in new tab

追加のリソース