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

フィーチャービューを提供する

備考

プレビュー

この機能は パブリック プレビュー段階です。ワークスペース管理者は、 プレビュー ページからこの機能へのアクセスを制御できます。Databricksのプレビューを管理するを参照してください。

Feature Viewsをオンラインで提供するには、2つの方法があります:

  • **モデルサービング**: フィーチャービューでトレーニングされたモデルをデプロイします。エンドポイントは、モデルがログに記録されたときに追跡されたリネージを使用して、オンラインストアから特徴量値を自動的にルックアップします。これを使用して、モデルの予測を提供します。
  • Feature Serving : モデルを使用せずに、特徴量ビューを直接参照するFeatureSpecをデプロイします。エンドポイントは、検索された特徴量値を返します。アプリケーションがモデルの予測ではなく、特徴量値を必要とする場合に使用します。

どちらのアプローチも、事前計算された特徴量値をオンラインストアから読み取ります。そのため、まず特徴量をオンラインストアに実体化する必要があります。

Databricksの特徴量を使用してトレーニングされたモデルは、トレーニングに使用された特徴量に自動的にリネージを追跡します。 モデルビングサー エンドポイントとしてデプロイされる場合、これらのモデルはUnity Catalog使用してオンライン ストアから機能を検索します。

権限

特徴量をサーブするには、モデルサービングエンドポイントを作成するプリンシパルは、マテリアライズされた特徴量をバックアップするUnity Catalogテーブルに対してSELECTを持っている必要があります。オンラインルックアップはマテリアライズされたテーブルから直接読み取るため、テーブルレベルのSELECTがサービングアクセスを付与します。特権の説明については、SELECTを参照してください。

マテリアライズされたテーブルは複数の特徴量を含むことができるため、それに対してSELECTを付与すると、サーブを意図する特徴量だけでなく、そのテーブル内のすべての特徴量へのアクセスも付与されます。サービングアクセスを付与する前に、テーブルを共有するすべての特徴量がプリンシパルと共有できることを確認してください。リスクを軽減するため、機密性の高い特徴量を個別にマテリアライズします。

手動でテーブルを解決せずにこのアクセスを付与するには、FeatureEngineeringClient.grant_feature_serving_accessを使用します。モデルまたはフィーチャースペックが指定されると、各特徴量がオンラインテーブルに解決され、指定したプリンシパルに、それらのテーブルに対するSELECTUSE CATALOGUSE SCHEMAとともに)が付与され、各テーブルとこの付与によって公開される追加機能のレポートが返されます。付与する前にレポートをプレビューするには、dry_run=Trueを渡します。

Python
from databricks.feature_engineering import FeatureEngineeringClient

fe = FeatureEngineeringClient()

# Preview the tables and the features each grant would expose.
report = fe.grant_feature_serving_access(
grant_to=["serving-principal@example.com"],
model_uri="models:/main.ecommerce.fraud_model/1",
dry_run=True,
)
print(report)

# Grant SELECT on the resolved online tables.
fe.grant_feature_serving_access(
grant_to=["serving-principal@example.com"],
model_uri="models:/main.ecommerce.fraud_model/1",
)

モデルサービングエンドポイントをデプロイする

既存のモデルビングサー エンドポイントを使用するか、 Databricks SDKを使用して新しいエンドポイントを作成します。 モデルはUnity Catalogに登録する必要があります。

次のコードは、新しいモデルサービング エンドポイントを作成する方法を示しています。 詳細については、 「カスタム モデルサービング エンドポイントの作成」を参照してください。

Python
from databricks.sdk import WorkspaceClient
from databricks.sdk.service.serving import EndpointCoreConfigInput, ServedEntityInput

w = WorkspaceClient()

endpoint_name = "fraud-detection-endpoint"
model_name = "main.ecommerce.fraud_model"

w.serving_endpoints.create(
name=endpoint_name,
config=EndpointCoreConfigInput(
name=endpoint_name,
served_entities=[
ServedEntityInput(
entity_name=model_name,
entity_version=1,
max_provisioned_concurrency=4,
min_provisioned_concurrency=0,
)
],
),
)

エンドポイントにクエリを実行する

Python
from databricks.sdk import WorkspaceClient

w = WorkspaceClient()

response = w.serving_endpoints.query(
name="fraud-detection-endpoint",
dataframe_records=[
{"user_id": "user_123", "transaction_time": "2026-03-01T12:00:00"},
],
)

RequestSource機能を使用してエンドポイントを照会する

モデルがRequestSource特徴量でトレーニングされている場合、リクエストペイロードにはすべてのRequestSource列も含まれている必要があります。これらの列はlog_model際にMLflowモデルの署名に追加されたため、エンドポイントのAPIスキーマは必要なリクエストフィールドを反映しています。

Python
response = w.serving_endpoints.query(
name="fraud-detection-endpoint",
dataframe_records=[
{
"user_id": "user_123",
"transaction_time": "2026-03-01T12:00:00",
"transaction_amount": 275.30, # RequestSource column
"vendor_id": "v_42", # RequestSource column (also used as entity key)
},
],
)

エンティティキーは、オンラインストアからテーブルベースの機能を検索するために使用されます。RequestSource列はモデルに直接渡されます。

curlも使用できます。

Bash
curl -X POST "https://<workspace>.cloud.databricks.com/serving-endpoints/<endpoint>/invocations" \
-H "Authorization: Bearer $DATABRICKS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"dataframe_records": [
{
"user_id": "user_123",
"transaction_time": "2026-03-01T12:00:00",
"transaction_amount": 275.30,
"vendor_id": "v_42"
}
]
}'

特徴を配信します FeatureSpec

モデルなしで特徴量ビューをサーブするには、特徴量を参照するFeatureSpecを作成し、Feature Servingエンドポイントにデプロイします。エンドポイントは、リクエスト内のエンティティキーに対応する検索された特徴量値を返します。

エンドポイントを作成する前に、フィーチャーはUnity Catalogに登録され、オンラインストアに具体化されている必要があります

注記

フィーチャービューを含むFeatureSpecには、FeatureLookupまたはFeatureFunctionの定義を含めることはできません。フィーチャービューを同じFeatureSpec内のそれらの定義と混在させることはできません。

Python
from databricks.feature_engineering import FeatureEngineeringClient
from databricks.feature_engineering.entities.feature_serving_endpoint import (
EndpointCoreConfig,
ServedEntity,
)

fe = FeatureEngineeringClient()

# 1. Retrieve a registered Feature View
agg_feature = fe.get_feature(full_name="main.ecommerce.amount_sum_sliding_7d_1d")

# 2. Create a FeatureSpec that includes the Feature View
feature_spec_name = "main.ecommerce.transaction_feature_spec"
fe.create_feature_spec(name=feature_spec_name, features=[agg_feature])

# 3. Deploy a Feature Serving endpoint backed by the FeatureSpec
fe.create_feature_serving_endpoint(
name="transaction-features",
config=EndpointCoreConfig(
served_entities=ServedEntity(
feature_spec_name=feature_spec_name,
workload_size="Small",
scale_to_zero_enabled=True,
)
),
)

実体化された特徴量をルックアップするために使用されるエンティティキーでエンドポイントをクエリします:

Python
from databricks.sdk import WorkspaceClient

w = WorkspaceClient()

response = w.serving_endpoints.query(
name="transaction-features",
dataframe_records=[{"user_id": "user_123"}],
)

Feature Servingエンドポイントの詳細については、Feature Servingエンドポイントを参照してください。