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. 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.
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-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 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-sdkmemerlukan 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.
Di bilah sisi kiri ruang kerja Azure Databricks, klik Layanan.
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 Query menyertakan contoh kode yang dihasilkan dalam 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
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:
- Di bilah sisi kiri ruang kerja Azure Databricks, klik Layanan.
- Dalam tabel, klik nama titik akhir yang ingin Anda perbarui. Layar titik akhir muncul.
- Di kanan atas layar, klik Edit endpoint.
- 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. 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:
- Di bilah sisi kiri ruang kerja Azure Databricks, klik Layanan.
- 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 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.