Tillhandahåll funktionsvyer

Important

Den här funktionen finns som allmänt tillgänglig förhandsversion. Arbetsyteadministratörer kan styra åtkomsten till den här funktionen från sidan Förhandsversioner . Se Hantera förhandsversioner av Azure Databricks.

Du kan visa funktionsvyer online på två sätt:

  • Modellservering: Driftsätt en modell som har tränats på Feature Views. Slutpunkten söker automatiskt upp funktionsvärden från onlinebutiken med hjälp av ursprunget som spårades när modellen loggades. Använd detta för att hantera modellförutsägelser.
  • Funktionsserver: Distribuera en FeatureSpec som refererar till funktionsvyer direkt, utan en modell. API-slutpunkten returnerar de uppslagna funktionsvärdena. Använd detta när ett program behöver funktionsvärden i stället för modellförutsägelser.

Båda metoderna läser in förberäknade funktionsvärden från en onlinebutik, så du måste först materialisera funktionerna till en onlinebutik.

Modeller som tränas med hjälp av funktioner från Databricks spårar automatiskt ursprung till de funktioner som de har tränats på. När de distribueras som modell som betjänar slutpunkter använder dessa modeller Unity Catalog för att söka efter funktioner från onlinebutiker.

behörigheter

För att servera en feature måste principalen som skapar modellserveringsslutpunkten ha SELECT på Unity Catalog-tabellen som ligger till grund för den materialiserade featuren. Onlinesökningar läser direkt från den materialiserade tabellen, så SELECT på tabellnivå är det som ger serveringsåtkomst. Mer information om behörighetsbeskrivningen finns i SELECT.

Eftersom en materialiserad tabell kan innehålla mer än en funktion ger beviljande SELECT av den åtkomst till varje funktion i tabellen, inte bara den som du tänker hantera. Innan du beviljar åtkomst, säkerställ att alla objekt som delar tabellen kan delas med huvudmannen. För att begränsa exponeringen materialiserar du känsliga funktioner separat.

Om du vill ge den här åtkomsten utan att slå upp tabeller manuellt, använd FeatureEngineeringClient.grant_feature_serving_access. Med tanke på en modell eller funktionsspecifikation löser den varje funktion till sin onlinetabell, beviljar SELECT (tillsammans med USE CATALOG och USE SCHEMA) på dessa tabeller till de huvudkonton som du anger och returnerar en rapport för varje tabell och de ytterligare funktioner som beviljandet exponerar. Skicka dry_run=True för att förhandsgranska rapporten innan du beviljar den.

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

Distribuera en modell som betjänar slutpunkt

Använd en befintlig modell som betjänar slutpunkten eller använd Databricks SDK för att skapa en ny. Modellen måste vara registrerad i Unity Catalog.

Följande kod visar hur du skapar en ny modell som betjänar slutpunkten. Mer information finns i Skapa anpassade modellserverslutpunkter.

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

Fråga slutpunkten

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

Fråga slutpunkten med RequestSource-funktioner

Om modellen har tränats med RequestSource funktioner måste nyttolasten för begäran även innehålla alla RequestSource kolumner. Dessa kolumner lades till i MLflow-modellsignaturen under log_model, så slutpunktens API-schema återspeglar de obligatoriska fälten för begäran.

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

Entitetsnycklar används för att leta upp tabellbaserade funktioner från onlinebutiken. RequestSource kolumner skickas direkt till modellen.

Du kan också använda 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"
      }
    ]
  }'

Hantera funktioner med en FeatureSpec

Om du vill hantera funktionsvyer utan en modell skapar du en FeatureSpec som refererar till funktionerna och distribuerar den till en funktionsserverslutpunkt. Slutpunkten returnerar de uppslagna funktionsvärdena för entitetsnycklarna i förfrågan.

Funktionerna måste registreras i Unity Catalog och materialiseras till en onlinebutik innan du skapar slutpunkten.

Note

En FeatureSpec som innehåller funktionsvyer får inte heller innehålla FeatureLookup eller FeatureFunction definitioner. Funktionsvyer kan inte blandas med dessa definitioner i samma FeatureSpec.

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

Gör en förfrågan till slutpunkten med de entitetsnycklar som används för att slå upp de materialiserade funktionerna:

from databricks.sdk import WorkspaceClient

w = WorkspaceClient()

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

Mer information om slutpunkter för funktionsservering finns i Slutpunkter för funktionsservering.