Titik akhir Penayangan Fitur

Penyajian Fitur Databricks membuat data di platform Databricks tersedia untuk model atau aplikasi yang disebarkan di luar Azure Databricks. Titik akhir Penyajian Fitur diskalakan secara otomatis untuk menyesuaikan dengan lalu lintas waktu nyata dan menyediakan layanan berlatensi rendah dan sangat tersedia untuk penyajian fitur. Halaman ini menjelaskan cara menyiapkan dan menggunakan Penyajian Fitur. Untuk tutorial langkah demi langkah, lihat Contoh: Menyebarkan dan mengkueri titik akhir penyajian fitur.

Saat Anda menggunakan Mosaic AI Model Serving untuk melayani model yang dibangun menggunakan fitur dari Databricks, model secara otomatis mencari dan mengubah fitur untuk permintaan inferensi. Dengan Penyajian Fitur Databricks, Anda dapat menyajikan data terstruktur untuk aplikasi pengambilan generasi yang ditingkatkan (RAG), serta fitur-fitur yang diperlukan untuk aplikasi lain, seperti model yang disajikan di luar Databricks atau aplikasi apa pun yang memerlukan fitur berdasarkan data di Katalog Unity.

kapan menggunakan penyajian fitur

Mengapa menggunakan Pelayanan Fitur?

Databricks Feature Serving menyediakan satu antarmuka yang melayani fitur pra-materialisasi dan sesuai permintaan. Ini juga mencakup manfaat berikut:

  • Kesederhanaan. Databricks menangani infrastruktur. Dengan satu panggilan API, Databricks menciptakan lingkungan penyajian siap produksi.
  • Ketersediaan dan skalabilitas tinggi. Fitur Endpoint Serving secara otomatis meningkatkan dan mengurangi kapasitas untuk menyesuaikan dengan volume permintaan penyajian.
  • Keamanan. Titik akhir disebarkan dalam batas jaringan yang aman dan menggunakan komputasi khusus yang berakhir saat titik akhir dihapus atau diskalakan ke nol.

Persyaratan

  • Databricks Runtime 14.2 ML atau lebih tinggi.
  • Untuk menggunakan API Python, Penyajian Fitur memerlukan databricks-feature-engineering versi 0.1.2 atau lebih tinggi, yang dibangun ke dalam Databricks Runtime 14.2 ML. Untuk versi ML Runtime Databricks sebelumnya, instal versi yang diperlukan secara manual menggunakan %pip install databricks-feature-engineering>=0.1.2. Jika Anda menggunakan notebook Databricks, Anda kemudian harus memulai ulang kernel Python dengan menjalankan perintah ini di sel baru: dbutils.library.restartPython().
  • Untuk menggunakan Databricks SDK, penyajian fitur databricks-sdk memerlukan versi 0.18.0 atau lebih tinggi. Untuk menginstal versi yang diperlukan secara manual, gunakan %pip install databricks-sdk>=0.18.0. Jika Anda menggunakan notebook Databricks, Anda kemudian harus memulai ulang kernel Python dengan menjalankan perintah ini di sel baru: dbutils.library.restartPython().

Databricks Feature Serving menyediakan UI dan beberapa opsi terprogram untuk membuat, memperbarui, melakukan kueri, dan menghapus titik akhir. Artikel ini menyertakan instruksi untuk setiap opsi berikut:

  • Databricks Antarmuka Pengguna
  • REST API
  • API Python
  • Databricks SDK

Untuk menggunakan REST API atau MLflow Deployments SDK, Anda harus memiliki token Databricks API.

Penting

Sebagai praktik terbaik keamanan untuk skenario produksi, Databricks merekomendasikan agar Anda menggunakan token OAuth mesin-ke-mesin untuk autentikasi selama produksi.

Untuk pengujian dan pengembangan, Databricks merekomendasikan penggunaan token akses pribadi milik perwakilan layanan alih-alih pengguna ruang kerja. Untuk membuat token untuk perwakilan layanan, lihat Mengelola token untuk perwakilan layanan.

Autentikasi untuk Penyajian Fitur

Untuk informasi tentang autentikasi, lihat Otorisasi akses ke sumber daya Azure Databricks.

Membuat FeatureSpec

Sebuah FeatureSpec adalah sekumpulan fitur dan fungsi yang ditentukan pengguna. Anda dapat menggabungkan fitur dan fungsi dalam FeatureSpec. FeatureSpecs disimpan di dan dikelola oleh Katalog Unity dan muncul di Catalog Explorer.

Tabel yang ditentukan dalam FeatureSpec harus diterbitkan ke feature store online atau toko online pihak ketiga. Lihat Toko Fitur Online Databricks.

Anda harus menggunakan databricks-feature-engineering paket untuk membuat FeatureSpec.

Pertama, tentukan fungsi:

from unitycatalog.ai.core.databricks import DatabricksFunctionClient

client = DatabricksFunctionClient()

CATALOG = "main"
SCHEMA = "default"

def difference(num_1: float, num_2: float) -> float:
  """
  A function that accepts two floating point numbers, subtracts the second one
  from the first, and returns the result as a float.

  Args:
      num_1 (float): The first number.
      num_2 (float): The second number.

  Returns:
      float: The resulting difference of the two input numbers.
  """
  return num_1 - num_2

client.create_python_function(
  func=difference,
  catalog=CATALOG,
  schema=SCHEMA,
  replace=True
)

Kemudian Anda dapat menggunakan fungsi di dalam FeatureSpec:

from databricks.feature_engineering import (
  FeatureFunction,
  FeatureLookup,
  FeatureEngineeringClient,
)

fe = FeatureEngineeringClient()

features = [
  # Lookup column `average_yearly_spend` and `country` from a table in UC by the input `user_id`.
  FeatureLookup(
    table_name="main.default.customer_profile",
    lookup_key="user_id",
    feature_names=["average_yearly_spend", "country"]
  ),
  # Calculate a new feature called `spending_gap` - the difference between `ytd_spend` and `average_yearly_spend`.
  FeatureFunction(
    udf_name="main.default.difference",
    output_name="spending_gap",
    # Bind the function parameter with input from other features or from request.
    # The function calculates num_1 - num_2.
    input_bindings={"num_1": "ytd_spend", "num_2": "average_yearly_spend"},
  ),
]

# Create a `FeatureSpec` with the features defined above.
# The `FeatureSpec` can be accessed in Unity Catalog as a function.
fe.create_feature_spec(
  name="main.default.customer_features",
  features=features,
)

Tentukan nilai default

Untuk menentukan nilai default untuk fitur, gunakan default_values parameter di FeatureLookup. Lihat contoh berikut:

feature_lookups = [
    FeatureLookup(
        table_name="ml.recommender_system.customer_features",
        feature_names=[
            "membership_tier",
            "age",
            "page_views_count_30days",
        ],
        lookup_key="customer_id",
        default_values={
          "age": 18,
          "membership_tier": "bronze"
        },
    ),
]

Jika kolom fitur diganti namanya menggunakan rename_outputs parameter , default_values harus menggunakan nama fitur yang diganti namanya.

FeatureLookup(
  table_name = 'main.default.table',
  feature_names = ['materialized_feature_value'],
  lookup_key = 'id',
  rename_outputs={"materialized_feature_value": "feature_value"},
  default_values={
    "feature_value": 0
  }
)

Buat titik akhir

FeatureSpec mendefinisikan titik akhir. Untuk informasi selengkapnya, lihat Buat model kustom yang melayani titik akhir, dokumen API Python, atau dokumentasi Databricks SDK untuk detailnya.

Catatan

Untuk beban kerja yang sensitif terhadap latensi atau memerlukan kueri tinggi per detik, Model Serving menawarkan pengoptimalan rute pada model kustom yang melayani titik akhir, lihat Pengoptimalan rute pada titik akhir penyajian.

Databricks SDK - Python

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

workspace = WorkspaceClient()

# Create endpoint
workspace.serving_endpoints.create(
  name="my-serving-endpoint",
  config = EndpointCoreConfigInput(
    served_entities=[
    ServedEntityInput(
        entity_name="main.default.customer_features",
        scale_to_zero_enabled=True,
        workload_size="Small"
      )
    ]
  )
)

API Python

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

fe.create_feature_serving_endpoint(
  name="customer-features",
    config=EndpointCoreConfig(
    served_entities=ServedEntity(
      feature_spec_name="main.default.customer_features",
             workload_size="Small",
             scale_to_zero_enabled=True,
             instance_profile_arn=None,
    )
  )
)

REST API

curl -X POST -u token:$DATABRICKS_API_TOKEN ${WORKSPACE_URL}/api/2.0/serving-endpoints \
    -H 'Content-Type: application/json' \
    -d '"name": "customer-features",
   "config": {
       "served_entities": [
           {
               "entity_name": "main.default.customer_features",
               "workload_size": "Small",
               "scale_to_zero_enabled": true
           }
       ]
   }'

Untuk melihat titik akhir, klik Melayani di bilah sisi kiri UI Databricks. Saat status Siap, titik akhir siap merespons kueri. Untuk mempelajari selengkapnya tentang Mosaic AI Model Serving, lihat Mosaic AI Model Serving.

Simpan DataFrame tertambah dalam tabel inferensi

Untuk titik akhir yang dibuat mulai Februari 2025, Anda dapat mengonfigurasi model yang melayani titik akhir untuk mencatat DataFrame tertambah yang berisi nilai fitur yang dicari dan nilai pengembalian fungsi. DataFrame disimpan ke tabel inferensi untuk model yang disajikan.

Untuk petunjuk tentang pengaturan konfigurasi ini, lihat Pencarian fitur Log pada DataFrame untuk tabel inferensi.

Untuk informasi tentang tabel inferensi, lihat tabel Inferensi untuk model pemantauan dan penelusuran kesalahan.

Mendapatkan titik akhir

Anda dapat menggunakan Databricks SDK atau API Python untuk mendapatkan metadata dan status titik akhir.

Databricks SDK - Python

from databricks.sdk import WorkspaceClient
workspace = WorkspaceClient()

endpoint = workspace.serving_endpoints.get(name="customer-features")
# print(endpoint)

API Python

endpoint = fe.get_feature_serving_endpoint(name="customer-features")
# print(endpoint)

Mendapatkan skema titik akhir

Anda dapat menggunakan Databricks SDK atau REST API untuk mendapatkan skema titik akhir. Untuk informasi selengkapnya tentang skema titik akhir, lihat Mendapatkan model yang melayani skema titik akhir.

Databricks SDK - Python

from databricks.sdk import WorkspaceClient
workspace = WorkspaceClient()

# Create endpoint
endpoint = workspace.serving_endpoints.get_open_api(name="customer-features")

REST API

ACCESS_TOKEN=<token>
ENDPOINT_NAME=<endpoint name>

curl "https://example.databricks.com/api/2.0/serving-endpoints/$ENDPOINT_NAME/openapi" -H "Authorization: Bearer $ACCESS_TOKEN" -H "Content-Type: application/json"

Mengkueri titik akhir

Anda dapat menggunakan REST API, MLflow Deployments SDK, atau Antarmuka pengguna Penyajian untuk mengkueri titik akhir.

Kode berikut menunjukkan cara menyiapkan kredensial dan membuat klien saat menggunakan SDK Penyebaran MLflow.

  # Set up credentials
  export DATABRICKS_HOST=...
  export DATABRICKS_TOKEN=...
  # Set up the client
  import mlflow.deployments

  client = mlflow.deployments.get_deploy_client("databricks")

Catatan

Sebagai praktik terbaik keamanan, saat Anda mengautentikasi dengan alat, sistem, skrip, dan aplikasi otomatis, Databricks merekomendasikan agar Anda menggunakan token akses pribadi milik perwakilan layanan, bukan pengguna ruang kerja. Untuk membuat token untuk perwakilan layanan, lihat Mengelola token untuk perwakilan layanan.

Mengkueri titik akhir menggunakan API

Bagian ini mencakup contoh kueri titik akhir menggunakan REST API atau SDK Penyebaran MLflow.

SDK Penyebaran MLflow

Penting

Contoh berikut menggunakan predict() API dari MLflow Deployments SDK. API ini bersifat Eksperimental dan definisi API mungkin berubah.

import mlflow.deployments

client = mlflow.deployments.get_deploy_client("databricks")
response = client.predict(
    endpoint="test-feature-endpoint",
    inputs={
        "dataframe_records": [
            {"user_id": 1, "ytd_spend": 598},
            {"user_id": 2, "ytd_spend": 280},
        ]
    },
)

REST API

curl -X POST -u token:$DATABRICKS_API_TOKEN $ENDPOINT_INVOCATION_URL \
  -H 'Content-Type: application/json' \
  -d '{"dataframe_records": [
          {"user_id": 1, "ytd_spend": 598},
          {"user_id": 2, "ytd_spend": 280}
      ]}'

Mengkueri titik akhir menggunakan UI

Anda bisa mengkueri titik akhir penyajian langsung dari antarmuka pengguna Penyajian. UI menyertakan contoh kode yang dihasilkan yang bisa Anda gunakan untuk mengkueri titik akhir.

  1. Di bilah sisi kiri ruang kerja Azure Databricks, klik Layanan.

  2. Klik titik akhir yang ingin Anda kueri.

  3. Di kanan atas layar, klik Titik akhir kueri.

    tombol titik akhir kueri

  4. Dalam kotak Permintaan , ketik isi permintaan dalam format JSON.

  5. Klik Kirim permintaan.

// Example of a request body.
{
  "dataframe_records": [
    { "user_id": 1, "ytd_spend": 598 },
    { "user_id": 2, "ytd_spend": 280 }
  ]
}

Dialog titik akhir Query menyertakan contoh kode yang dihasilkan dalam curl, Python, dan SQL. Klik tab untuk melihat dan menyalin kode contoh.

dialog titik akhir kueri

Untuk menyalin kode, klik ikon salin di kanan atas kotak teks.

tombol salin dalam dialog titik akhir kueri

Memperbarui titik akhir

Penting

Untuk mengubah konfigurasi titik akhir Pelayanan Fitur (seperti mengubah ukuran FeatureSpec atau beban kerja), selalu gunakan API pembaruan yang dijelaskan di bagian ini. Jangan hapus dan buat ulang titik akhir untuk menerapkan perubahan. Menghapus endpoint aktif mengakibatkan downtime seketika dan mengganggu semua aplikasi yang mengaksesnya.

Anda dapat memperbarui titik akhir menggunakan REST API, Databricks SDK, atau Antarmuka Pengguna Penyajian.

Memperbarui titik akhir menggunakan API

Databricks SDK - Python

from databricks.sdk import WorkspaceClient
workspace = WorkspaceClient()

workspace.serving_endpoints.update_config(
  name="my-serving-endpoint",
  served_entities=[
    ServedEntityInput(
      entity_name="main.default.customer_features",
      scale_to_zero_enabled=True,
      workload_size="Small"
    )
  ]
)

REST API

curl -X PUT -u token:$DATABRICKS_API_TOKEN ${WORKSPACE_URL}/api/2.0/serving-endpoints/<endpoint_name>/config \
  -H 'Content-Type: application/json' \
  -d '"served_entities": [
        {
            "name": "customer-features",
            "entity_name": "main.default.customer_features_new",
            "workload_size": "Small",
            "scale_to_zero_enabled": True
        }
    ]'

Memperbarui titik akhir menggunakan UI

Ikuti langkah-langkah berikut untuk menggunakan Antarmuka Penyajian:

  1. Di bilah sisi kiri ruang kerja Azure Databricks, klik Layanan.
  2. Dalam tabel, klik nama titik akhir yang ingin Anda perbarui. Layar titik akhir muncul.
  3. Di kanan atas layar, klik Edit endpoint.
  4. Dalam dialog Edit titik akhir penyajian, edit pengaturan titik akhir sesuai kebutuhan.
  5. Klik Perbarui untuk menyimpan perubahan Anda.

memperbarui titik akhir

Menghapus titik akhir

Peringatan

Tindakan ini tidak dapat dipulihkan. Menghapus titik akhir Penyajian Fitur menyebabkan waktu henti segera untuk aplikasi apa pun yang mengkuerinya. Jika Anda ingin mengubah konfigurasi titik akhir, gunakan Perbarui titik akhir alih-alih menghapus dan membuat ulang titik akhir.

Anda dapat menghapus titik akhir menggunakan REST API, Databricks SDK, api Python, atau Antarmuka Pengguna Penyajian.

Menghapus titik akhir menggunakan API

Databricks SDK - Python

from databricks.sdk import WorkspaceClient
workspace = WorkspaceClient()

workspace.serving_endpoints.delete(name="customer-features")

API Python

fe.delete_feature_serving_endpoint(name="customer-features")

REST API

curl -X DELETE -u token:$DATABRICKS_API_TOKEN ${WORKSPACE_URL}/api/2.0/serving-endpoints/<endpoint_name>

Menghapus titik akhir menggunakan UI

Ikuti langkah-langkah ini untuk menghapus endpoint menggunakan UI Penyajian:

  1. Di bilah sisi kiri ruang kerja Azure Databricks, klik Layanan.
  2. Dalam tabel, klik nama titik akhir yang ingin Anda hapus. Layar titik akhir muncul.
  3. Di kanan atas layar, klik menu kebab ikon menu Kebab. dan pilih Hapus.

menghapus titik akhir

Memantau kesehatan titik akhir

Untuk informasi tentang log dan metrik yang tersedia untuk endpoint Feature Serving, lihat Memantau kualitas model dan kesehatan titik akhir.

Kontrol akses

Untuk informasi tentang izin pada titik akhir penyajian fitur, lihat Mengelola izin pada titik akhir penyajian model.

Contoh notebook

Notebook ini menggambarkan cara menggunakan Databricks SDK untuk membuat endpoint Penyajian Fitur menggunakan Databricks Online Feature Store.

Fitur Menyajikan buku catatan contoh dengan toko online

Dapatkan buku catatan