Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Sie können Featureansichten auf zwei Arten online bereitstellen:
- Modellbereitstellung: Stellen Sie ein Modell bereit, das mit Feature Views trainiert wurde. Der Endpunkt ruft Feature-Werte automatisch ab oder berechnet sie, wobei die beim Protokollieren des Modells erfasste Lineage verwendet wird. Verwenden Sie dies, um Modellvorhersagen bereitzustellen.
-
Feature Serving: Stellen Sie ein
FeatureSpecbereit, das direkt auf Feature Views verweist, ohne Modell. Der Endpunkt gibt die angeforderten Feature-Ergebnisse zurück. Verwenden Sie diese Option, wenn eine Anwendung Funktionswerte anstelle von Modellvorhersagen benötigt.
Beide Ansätze unterstützen vorberechnete und bedarfsorientierte Funktionen. Auf Tabellen oder Streams basierende Leaf-Features müssen über unterstützte Online-Materialisierungen haben.
RequestSource liefert Werte aus der Anfrage und CustomUDF berechnet Funktionen auf Abruf. Für ein CustomUDF mit FeatureViewSourcelöst das Servieren upstream-Abhängigkeiten auf und bewertet automatisch den Feature-Abhängigkeitsgraphen.
Registrieren Sie die gewünschten Funktionen und alle ihre transitiven Upstream-Funktionen im Unity-Katalog. Materialisieren Sie nur die auf Tabellen oder Streams basierenden Leafs, nicht die zur Abfragezeit berechneten oder abgeleiteten CustomUDF-Features.
Berechtigungen
Um ein Feature bereitzustellen, muss der Prinzipal, der den Modellbereitstellungsendpunkt erstellt, über SELECT für die Unity Catalog-Tabelle verfügen, auf der das materialisierte Feature basiert. Online-Abrufvorgänge werden direkt aus der materialisierten Tabelle gelesen, sodass die Tabellenebene SELECT den Zugriff gewährt. Zur Beschreibung der Berechtigung siehe SELECT.
Da eine materialisierte Tabelle mehr als ein Feature enthalten kann, gewährt das Gewähren von SELECT darauf Zugriff auf jedes Feature in dieser Tabelle, nicht nur auf das Feature, das Sie bereitstellen möchten. Bevor Sie den Bereitstellungszugriff gewähren, vergewissern Sie sich, dass jedes Feature, das die Tabelle gemeinsam nutzt, für den Prinzipal freigegeben werden kann. Um die Exposition zu begrenzen, materialisieren Sie sensible Features separat.
Um diesen Zugriff zu gewähren, ohne Tabellen manuell aufzulösen, verwenden Sie FeatureEngineeringClient.grant_feature_serving_access. Angesichts einer Modell- oder einer Featurespezifikation löst es jedes Feature in seine Onlinetabelle auf, gewährt den von Ihnen angegebenen Prinzipalen SELECT (zusammen mit USE CATALOG und USE SCHEMA) für diese Tabellen und gibt einen Bericht jeder Tabelle und die zusätzlichen Features zurück, die die Gewährung verfügbar macht. Übergeben Sie dry_run=True, um eine Vorschau des Berichts zu sehen, bevor Sie ihn freigeben.
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",
)
Bereitstellen eines Modellbereitstellungsendpunkts
Verwenden Sie ein vorhandenes Modell, das Endpunkt bedient, oder verwenden Sie das Databricks SDK, um eine neue zu erstellen. Das Modell muss im Unity-Katalog registriert sein.
Wenn ein CustomUDF eine benutzerdefinierte Funktion (UDF) verwendet, die Python-Pakete importiert, geben Sie sie beim Aufruf von log_model explizit über extra_pip_requirements an. Siehe benutzerdefinierte UDF-Abhängigkeiten.
Der folgende Code zeigt, wie Sie ein neues Modell erstellen, das Endpunkt bedient. Weitere Informationen finden Sie unter Benutzerdefinierte Modellbereitstellungspunkte erstellen.
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,
)
],
),
)
Endpunkt abfragen
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"},
],
)
Abfragen des Endpunkts mit RequestSource-Features
Wenn das Modell mit RequestSource Features trainiert wurde, muss die Anforderungsnutzlast auch alle RequestSource Spalten enthalten. Diese Spalten wurden während der log_modelMLflow-Modellsignatur hinzugefügt, sodass das API-Schema des Endpunkts die erforderlichen Anforderungsfelder widerspiegelt.
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)
},
],
)
Entitätsschlüssel werden verwendet, um auf tabellengestützte Merkmale im Online-Shop zuzugreifen. Ein ColumnSelection Merkmal kann einen Wert RequestSource an das Modell weitergeben. Eine Funktion transformiert ihre Anfrageeingaben CustomUDF , bevor das Modell das Ergebnis verwendet.
Sie können auch curl verwenden:
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"
}
]
}'
Funktionen mit einer FeatureSpec bereitstellen
Wenn Sie Featureansichten ohne Modell bereitstellen möchten, erstellen Sie ein FeatureSpec Feature, das auf die Features verweist, und stellen Sie es auf einem Feature Serve-Endpunkt bereit. Der Endpunkt gibt nur die in der Spezifikation angeforderten Feature-Ausgaben zurück. Er berechnet Zwischenwerte automatisch, ohne sie zurückzugeben, es sei denn, du forderst diese Features ebenfalls an.
Registrieren Sie alle Funktionen im Unity-Katalog und erstellen Sie unterstützte Online-Materialisierungen für die tabellen- und streamgestützten Leaves, bevor Sie den Endpunkt erstellen.
Note
Ein FeatureSpec, das Feature Views enthält, darf nicht auch FeatureLookup- oder FeatureFunction-Definitionen enthalten. Feature-Ansichten können nicht zusammen mit diesen Definitionen im selben FeatureSpec kombiniert werden.
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,
)
),
)
Fragen Sie den Endpunkt mit den Entitätsschlüsseln ab, die zum Nachschlagen der materialisierten Features verwendet werden:
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
response = w.serving_endpoints.query(
name="transaction-features",
dataframe_records=[{"user_id": "user_123"}],
)
Mehr zu Feature Serving Endpunkten finden Sie unter Feature-Tabellen bereitstellen.
Bereitstellen von CustomUDF-Funktionen und deren Abhängigkeiten
Dieses Beispiel unterstützt die Transaktions- und Margin-Funktionen, die in den Beispielen FeatureViewSource und CustomUDF definiert sind. Verwenden Sie databricks-feature-engineering Version 0.18.0 oder höher für diese Feature Views APIs.
-
log_transaction_amountwendetmain.ecommerce.log_amount_udfmit NumPy auf dentransaction_amount-Wert der Anfrage an. -
marginverwendetFeatureViewSource, um auscost_sum_7dundrevenue_sum_7deine Marge zu berechnen. Diese vorgelagerten Features verwendencustomer_idals Entitätsschlüssel undevent_timeals Zeitreihenspalte.
Registrieren Sie sowohl die Output-Features als auch alle Upstream-Features, bevor Sie die Spezifikation erstellen. Für dieses Beispiel werden online nur die Leaves revenue_sum_7d und cost_sum_7d materialisiert. Serving schaut ihre Werte nach und berechnet margin für jede Anfrage.
Holen Sie die registrierten Feature Objekte ab und übergeben Sie sie an create_feature_spec. Deklarieren Sie NumPy für die Online-Ausführung, auch wenn es bereits in der ENVIRONMENT Klausel der UDF aufgeführt ist:
from databricks.feature_engineering import FeatureEngineeringClient
fe = FeatureEngineeringClient()
log_transaction_amount = fe.get_feature(
full_name="main.ecommerce.log_transaction_amount"
)
margin = fe.get_feature(full_name="main.ecommerce.margin")
fe.create_feature_spec(
name="main.ecommerce.derived_transaction_features",
features=[log_transaction_amount, margin],
extra_pip_requirements=["numpy==1.26.4"],
)
Befolge die oben genannten Schritte zur Endpunkterstellung mit feature_spec_name="main.ecommerce.derived_transaction_features" und einem Endpunktnamen wie derived-transaction-features. Nachdem der Endpunkt bereit ist, geben Sie den Lookup-Schlüssel und den Anforderungszeitwert an:
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
response = w.serving_endpoints.query(
name="derived-transaction-features",
dataframe_records=[
{"customer_id": "customer_123", "transaction_amount": 99.0},
],
)
Die Antwort enthält nur die angefragten log_transaction_amount und margin Ausgaben, nicht die zwischenliegenden Umsatz- und Kostenwerte. Informationen zu Formaten für Abhängigkeiten, Wheel-Berechtigungen und zur Problembehandlung bei der Installation finden Sie unter Add Python dependencies.