Featureweergaven aanbieden

Belangrijk

Deze functie bevindt zich in openbare preview-versie. Werkruimtebeheerders kunnen de toegang tot deze functie beheren vanaf de pagina Previews . Zie Azure Databricks previews beheren.

U kunt functieweergaven op twee manieren online aanbieden:

  • Modelbediening: Implementeer een model dat is getraind op Feature Views. Het endpoint zoekt automatisch featurewaarden op uit de online store, met behulp van de lineage die is vastgelegd toen het model werd gelogd. Gebruik dit om modelvoorspellingen te leveren.
  • Functieweergave: Implementeer een FeatureSpec functie die rechtstreeks verwijst naar functieweergaven, zonder een model. Het eindpunt retourneert de opgezochte featurewaarden. Gebruik deze optie wanneer een toepassing functiewaarden nodig heeft in plaats van modelvoorspellingen.

Beide benaderingen lezen vooraf samengestelde functiewaarden uit een online winkel, dus u moet de functies eerst materialiseren naar een online winkel.

Modellen die worden getraind met behulp van kenmerken van Databricks houden automatisch de herkomst bij naar de kenmerken waarop ze zijn getraind. Wanneer deze modellen worden geïmplementeerd als model voor eindpunten, gebruiken deze modellen Unity Catalog om functies uit online winkels op te zoeken.

Permissions

Om een feature beschikbaar te stellen, moet de principal die het modelserving-eindpunt maakt, beschikken over SELECT voor de Unity Catalog-tabel waaraan de gematerialiseerde feature ten grondslag ligt. Onlinezoekacties worden rechtstreeks uit de gerealiseerde tabel gelezen, dus op tabelniveau SELECT wordt toegang verleend. Zie SELECT voor de beschrijving van de bevoegdheid.

Omdat een gematerialiseerde tabel meer dan één feature kan bevatten, geeft het verlenen van SELECT erop toegang tot elke feature in die tabel, niet alleen tot de feature die u wilt aanbieden. Voordat u toegang verleent, moet u controleren of elke functie die de tabel deelt, kan worden gedeeld met de principal. Als u de blootstelling wilt beperken, materialiseert u gevoelige functies afzonderlijk.

Als u deze toegang wilt verlenen zonder tabellen handmatig op te lossen, gebruikt u FeatureEngineeringClient.grant_feature_serving_access. Op basis van een model- of featurespecificatie wordt voor elke feature de bijbehorende onlinetabel bepaald, wordt SELECT (samen met USE CATALOG en USE SCHEMA) op die tabellen verleend aan de door u opgegeven principals, en wordt een rapport geretourneerd van elke tabel en de aanvullende features waartoe de machtiging toegang geeft. Geef dry_run=True door om het rapport te bekijken voordat u toegang verleent.

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",
)

Een eindpunt voor het leveren van een model implementeren

Gebruik een bestaand model voor eindpunten of gebruik de Databricks SDK om een nieuw model te maken. Het model moet zijn geregistreerd in Unity Catalog.

De volgende code laat zien hoe u een nieuw model voor eindpunten maakt. Zie Aangepast model maken voor eindpunten voor meer informatie.

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,
            )
        ],
    ),
)

Een query uitvoeren op het eindpunt

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"},
    ],
)

Query's uitvoeren op het eindpunt met requestsource-functies

Als het model is getraind met RequestSource functies, moet de nettolading van de aanvraag ook alle RequestSource kolommen bevatten. Deze kolommen zijn toegevoegd aan de handtekening van het MLflow-model, log_modelzodat het API-schema van het eindpunt de vereiste aanvraagvelden weerspiegelt.

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)
        },
    ],
)

Entiteitssleutels worden gebruikt voor het opzoeken van functies die door tabellen worden ondersteund vanuit de online winkel. RequestSource kolommen worden rechtstreeks doorgegeven aan het model.

U kunt ook het volgende gebruiken curl:

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"
      }
    ]
  }'

Functies aanbieden met een FeatureSpec

Als u functieweergaven wilt leveren zonder een model, maakt u een FeatureSpec functie die verwijst naar de functies en implementeert u deze in een functieverdieningseindpunt. Het eindpunt geeft de opgezochte featurewaarden voor de entiteitssleutels in het verzoek terug.

De functies moeten worden geregistreerd in Unity Catalog en worden gerealiseerd in een online winkel voordat u het eindpunt maakt.

Note

Een FeatureSpec dat Feature Views bevat, kan niet ook FeatureLookup- of FeatureFunction-definities bevatten. Feature Views kunnen niet samen met die definities in hetzelfde FeatureSpec worden gebruikt.

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,
        )
    ),
)

Voer een query uit op het eindpunt met de entiteitssleutels die worden gebruikt om de gerealiseerde functies op te zoeken:

from databricks.sdk import WorkspaceClient

w = WorkspaceClient()

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

Lees meer over Feature Serving-endpoints in Feature Serving-endpoints.