Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Penyajian Fitur Databricks membuat data di platform Databricks tersedia untuk model atau aplikasi yang disebarkan di luar Azure Databricks. Fitur Melayani titik akhir secara otomatis diskalakan untuk menyesuaikan dengan lalu lintas real time dan menyediakan layanan ketersediaan tinggi dengan latensi rendah untuk melayani 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 pembuatan tambahan pengambilan (RAG), serta fitur yang diperlukan untuk aplikasi lain, seperti model yang disajikan di luar Databricks atau aplikasi lain yang memerlukan fitur berdasarkan data di Katalog Unity.
Mengapa menggunakan Penyajian 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 Melayani titik akhir secara otomatis meningkatkan dan menurunkan skala 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 Python API, Penyajian Fitur memerlukan
databricks-feature-engineeringversi 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 buku catatan Databricks, Anda kemudian harus memulai ulang kernel Python dengan menjalankan perintah ini di sel baru:dbutils.library.restartPython(). - Untuk menggunakan Databricks SDK, Penyajian
databricks-sdkFitur 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 buku catatan 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, mengkueri, dan menghapus titik akhir. Artikel ini menyertakan instruksi untuk setiap opsi berikut:
- Databricks Antarmuka Pengguna
- REST API
- Python API
- 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 Mengotorisasi akses ke sumber daya Azure Databricks.
Membuat FeatureSpec
adalah FeatureSpec 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 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
menentukan FeatureSpec titik akhir. Untuk informasi selengkapnya, lihat Membuat model kustom yang melayani titik akhir, dokumentasi Python API, 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"
)
]
)
)
Python API
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 Python API 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)
Python API
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 SDK Penyebaran MLflow. 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.
Di bilah sisi kiri ruang kerja Azure Databricks, klik Sajikan.
Klik titik akhir yang ingin Anda kueri.
Di kanan atas layar, klik Titik akhir kueri.
Dalam kotak Permintaan , ketik isi permintaan dalam format JSON.
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 kueri menyertakan kode contoh yang dihasilkan di curl, Python, dan SQL. Klik tab untuk melihat dan menyalin kode contoh.
Untuk menyalin kode, klik ikon salin di kanan atas kotak teks.
Memperbarui titik akhir
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 Pengguna Penyajian:
- Di bilah sisi kiri ruang kerja Azure Databricks, klik Sajikan.
- Dalam tabel, klik nama titik akhir yang ingin Anda perbarui. Layar titik akhir muncul.
- Di kanan atas layar, klik Edit titik akhir.
- Dalam dialog Edit titik akhir penyajian, edit pengaturan titik akhir sesuai kebutuhan.
- Klik Perbarui untuk menyimpan perubahan Anda.
Menghapus titik akhir
Peringatan
Tindakan ini tidak dapat dipulihkan.
Anda dapat menghapus titik akhir menggunakan REST API, Databricks SDK, Python API, 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")
Python API
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 titik akhir menggunakan Antarmuka Pengguna penyajian:
- Di bilah sisi kiri ruang kerja Azure Databricks, klik Sajikan.
- Dalam tabel, klik nama titik akhir yang ingin Anda hapus. Layar titik akhir muncul.
- Di kanan atas layar, klik menu kebab
dan pilih Hapus.
Memantau kesehatan titik akhir
Untuk informasi tentang log dan metrik yang tersedia untuk titik akhir Penyajian Fitur, 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.