Menyajikan Tampilan Fitur

Important

Fitur ini ada di Pratinjau Umum. Admin ruang kerja dapat mengontrol akses ke fitur ini dari halaman Pratinjau . Lihat Kelola Pratinjau Azure Databricks.

Anda dapat menyajikan Tampilan Fitur secara online dengan dua cara:

  • Penerapan model: Terapkan model yang dilatih menggunakan Tampilan Fitur. Titik akhir mencari nilai fitur dari toko online secara otomatis, menggunakan silsilah data yang dilacak saat model dicatat. Gunakan ini untuk menyajikan prediksi model.
  • Penyajian Fitur: Terapkan FeatureSpec yang merujuk langsung ke Feature View, tanpa model. Titik akhir mengembalikan nilai fitur yang dicari. Gunakan ini saat aplikasi membutuhkan nilai fitur daripada prediksi model.

Kedua pendekatan membaca nilai fitur yang telah dikomputasi dari toko online, jadi Anda harus terlebih dahulu mewujudkan fitur ke toko online.

Model-model yang dilatih menggunakan fitur dari Databricks secara otomatis melacak linimasa ke fitur yang digunakan selama pelatihan. Saat disebarkan sebagai model yang melayani titik akhir, model ini menggunakan Unity Catalog untuk mencari fitur dari toko online.

Permissions

Untuk menyajikan fitur, prinsipal yang membuat titik akhir penyajian model harus memiliki SELECT pada tabel Unity Catalog yang mendukung fitur materialisasi. Penelusuran online membaca data secara langsung dari tabel termaterialisasi, sehingga izin SELECT pada tingkat tabellah yang memberikan akses penyajian. Untuk deskripsi hak istimewa, lihat SELECT.

Karena tabel termaterialisasi dapat memuat lebih dari satu fitur, pemberian SELECT pada tabel tersebut memberikan akses ke setiap fitur di dalamnya, bukan hanya fitur yang ingin Anda sajikan. Sebelum Anda memberikan akses penyajian, konfirmasikan bahwa setiap fitur yang berbagi tabel dapat dibagikan dengan prinsipal. Untuk membatasi paparan, materialisasi fitur sensitif secara terpisah.

Untuk memberikan akses ini tanpa menyelesaikan tabel dengan tangan, gunakan FeatureEngineeringClient.grant_feature_serving_access. Berdasarkan model atau spesifikasi fitur, ini memetakan setiap fitur ke tabel online masing-masing, memberikan SELECT (beserta USE CATALOG dan USE SCHEMA) untuk tabel tersebut kepada prinsipal yang Anda tentukan, dan mengembalikan laporan yang mencantumkan setiap tabel serta fitur tambahan yang dibuka aksesnya oleh pemberian izin tersebut. Berikan dry_run=True untuk mempratinjau laporan sebelum memberikan izin.

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

Menyebarkan model yang melayani titik akhir

Gunakan model yang sudah ada yang melayani titik akhir, atau gunakan Databricks SDK untuk membuat yang baru. Model harus terdaftar di Katalog Unity.

Kode berikut menunjukkan cara membuat model baru yang melayani titik akhir. Untuk informasi selengkapnya, lihat Membuat model kustom yang melayani titik akhir.

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

Mengkueri titik akhir

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

Mengkueri titik akhir dengan fitur RequestSource

Jika model dilatih dengan fitur RequestSource, payload permintaan harus menyertakan juga semua kolom RequestSource. Kolom ini ditambahkan ke tanda tangan model MLflow selama log_model, sehingga skema API titik akhir mencerminkan bidang permintaan yang diperlukan.

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

Kunci entitas digunakan untuk mencari fitur yang didukung tabel dari toko online. RequestSource kolom diteruskan langsung ke model.

Anda juga dapat menggunakan 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"
      }
    ]
  }'

Sajikan fitur dengan FeatureSpec

Untuk menyajikan Feature Views tanpa model, buat FeatureSpec yang mereferensikan fitur-fitur tersebut dan terapkan ke endpoint Feature Serving. Titik akhir mengembalikan nilai fitur yang dicari untuk kunci entitas dalam permintaan.

Fitur harus terdaftar di Unity Catalog dan dimaterialisasikan ke penyimpanan online sebelum Anda membuat endpoint.

Note

FeatureSpec yang berisi Tampilan Fitur tidak boleh juga berisi definisi FeatureLookup atau FeatureFunction. Feature Views tidak dapat dicampur dengan definisi tersebut dalam 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,
        )
    ),
)

Lakukan kueri pada endpoint dengan kunci entitas yang digunakan untuk mencari fitur yang dimaterialisasi:

from databricks.sdk import WorkspaceClient

w = WorkspaceClient()

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

Untuk informasi selengkapnya tentang Titik akhir Penyajian Fitur, lihat Titik akhir Penyajian Fitur.