Bagikan melalui


Apa itu Penyajian Fitur Databricks?

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 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.

kapan menggunakan penyajian fitur

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-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 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-sdk Fitur 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 UI
  • 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 Mengautentikasi 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 tabel online atau toko online pihak ketiga. Lihat Menggunakan tabel online untuk penyajian fitur real-time atau Toko online pihak ketiga.

Anda harus menggunakan databricks-feature-engineering paket untuk membuat 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 a - b.
    input_bindings={"a": "ytd_spend", "b": "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,
)

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 Mengonfigurasi pengoptimalan rute pada titik akhir penyajian.

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
           }
       ]
   }'

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

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.

Mendapatkan titik akhir

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

Databricks SDK - Python

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 REST API untuk mendapatkan skema titik akhir. Untuk informasi selengkapnya tentang skema titik akhir, lihat Mendapatkan model yang melayani skema titik akhir.

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.

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}
      ]}'

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

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 Sajikan.

  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 kueri menyertakan kode contoh yang dihasilkan di 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

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

Memperbarui titik akhir menggunakan API

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
        }
    ]'

Databricks SDK - Python

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

Memperbarui titik akhir menggunakan UI

Ikuti langkah-langkah berikut untuk menggunakan Antarmuka Pengguna Penyajian:

  1. Di bilah sisi kiri ruang kerja Azure Databricks, klik Sajikan.
  2. Dalam tabel, klik nama titik akhir yang ingin Anda perbarui. Layar titik akhir muncul.
  3. Di kanan atas layar, klik Edit titik akhir.
  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.

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

Menghapus titik akhir menggunakan API

REST API

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

Databricks SDK - Python

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

Python API

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

Menghapus titik akhir menggunakan UI

Ikuti langkah-langkah ini untuk menghapus titik akhir menggunakan Antarmuka Pengguna penyajian:

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

menghapus titik akhir

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 Penayangan Fitur, lihat Mengelola izin pada titik akhir penyajian model Anda.

Contoh notebook

Notebook ini menggambarkan cara menggunakan Databricks SDK untuk membuat titik akhir Penyajian Fitur menggunakan Tabel Online Databricks.

Fitur Menyajikan buku catatan contoh dengan tabel online

Dapatkan buku catatan