Aracılığıyla paylaş


Özellik Hizmet uç noktaları

Databricks Özellik Sunma, Databricks platformundaki verileri Azure Databricks dışında dağıtılan modeller veya uygulamalar için kullanılabilir hale getirir. Özellik Sunma uç noktaları, gerçek zamanlı trafiğe göre ayarlayacak şekilde otomatik olarak ölçeklendirilir ve özellikleri sunmak için yüksek kullanılabilirlik ve düşük gecikme süresine sahip bir hizmet sağlar. Bu sayfada Özellik Sunma'nın nasıl ayarlanacağı ve kullanılacağı açıklanmaktadır. Adım adım öğretici için bkz . Örnek: Uç noktaya hizmet veren bir özelliği dağıtma ve sorgulama.

Databricks'in özellikleri kullanılarak oluşturulmuş bir modele hizmet vermek için Mozaik AI Model Sunma'yı kullandığınızda model, çıkarım istekleri için özellikleri otomatik olarak arar ve dönüştürür. Databricks Özellik Sunma'yı kullanarak, artırılmış üretim (RAG) uygulamaları için yapılandırılmış verileri sunabilir ve Databricks dışında sunulan modeller veya Unity Catalog'daki verilere dayalı özellikler gerektiren diğer uygulamalar için gerekli özellikleri sağlayabilirsiniz.

özellik sunmanın ne zaman kullanılacağı

Özellik Sunma neden kullanılır?

Databricks Özellik Sunumu, önceden oluşturulmuş ve talep üzerine veri özellikleri sunmak için tek bir arabirim sağlar. Ayrıca aşağıdaki avantajları da içerir:

  • Basitlik. Databricks altyapıyı işler. Databricks, tek bir API çağrısıyla üretime hazır bir sunum ortamı oluşturur.
  • Yüksek kullanılabilirlik ve ölçeklenebilirlik. Özellik Sunma uç noktaları, sunum isteklerinin hacmine göre ayarlamak için ölçeği otomatik olarak artırıp küçültür.
  • Güvenlik. Uç noktalar güvenli bir ağ alanında dağıtılır ve uç nokta silindiğinde veya sıfıra ölçeklendirildiğinde sonlandırılan özel işlem bileşenleri kullanılır.

Gereksinimler

  • Databricks Runtime 14.2 ML veya üzeri.
  • Python API'sini kullanmak için Özellik Sunma, Databricks databricks-feature-engineering Runtime 14.2 ML'de yerleşik olarak bulunan 0.1.2 veya üzeri bir sürümü gerektirir. Önceki Databricks Runtime ML sürümleri için, %pip install databricks-feature-engineering>=0.1.2 kullanarak, gerekli sürümü el ile yükleyin. Databricks not defteri kullanıyorsanız, şu komutu yeni bir hücrede çalıştırarak Python çekirdeğini yeniden başlatmanız gerekir: dbutils.library.restartPython().
  • Databricks SDK'sını kullanmak için Özellik Sunmak, 0.18.0 veya daha yüksek bir sürüm gerektirir databricks-sdk. Gerekli sürümü el ile yüklemek için kullanın %pip install databricks-sdk>=0.18.0. Databricks not defteri kullanıyorsanız, şu komutu yeni bir hücrede çalıştırarak Python çekirdeğini yeniden başlatmanız gerekir: dbutils.library.restartPython().

Databricks Özellik Hizmeti, uç noktaları oluşturmak, güncellemek, sorgulamak ve silmek için bir kullanıcı arabirimi ve çeşitli programlı seçenekler sağlar. Bu makale, aşağıdaki seçeneklerin her biri için yönergeler içerir:

  • Databricks kullanıcı arabirimi
  • REST API
  • Python API'si
  • Databricks SDK

REST API veya MLflow Dağıtımları SDK'sını kullanmak için databricks API belirtecine sahip olmanız gerekir.

Önemli

Databricks, üretim senaryoları için en iyi güvenlik uygulaması olarak üretim sırasında kimlik doğrulaması için makineden makineye OAuth belirteçleri kullanmanızı önerir.

Databricks, test ve geliştirme için çalışma alanı kullanıcıları yerine hizmet sorumlularına ait bir kişisel erişim belirteci kullanılmasını önerir. Hizmet sorumlularına yönelik belirteçler oluşturmak için bkz. Hizmet sorumlusu için belirteçleri yönetme.

Özellik Sunma için Kimlik Doğrulaması

Kimlik doğrulaması hakkında bilgi için bkz. Azure Databricks kaynaklarına erişimi yetkilendirme.

FeatureSpec oluşturun

FeatureSpec, kullanıcı tanımlı bir özellik ve işlev kümesidir. Özellikleri ve işlevleri FeatureSpec içindekilerle birleştirebilirsiniz. FeatureSpecs Unity Kataloğu'nda depolanır ve bunlar tarafından yönetilir ve Katalog Gezgini'nde görünür.

içinde FeatureSpec belirtilen tabloların bir çevrimiçi özellik mağazasında veya üçüncü taraf çevrimiçi mağazada yayımlanması gerekir. Bkz. Databricks Online Özellik Mağazaları.

databricks-feature-engineering paketini kullanarak bir FeatureSpec oluşturmanız gerekir.

İlk olarak işlevi tanımlayın:

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
)

Ardından işlevini bir FeatureSpeciçinde kullanabilirsiniz:

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

Varsayılan değerleri belirtme

Özelliklerin varsayılan değerlerini belirtmek için default_values içindeki FeatureLookup parametresini kullanın. Aşağıdaki örneğe bakın:

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

Özellik sütunları parametresi kullanılarak rename_outputs yeniden adlandırılıyorsa, default_values yeniden adlandırılan özellik adlarını kullanmalıdır.

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

Uç nokta oluşturma

FeatureSpec noktayı tanımlar. Daha fazla bilgi için bkz. Uç noktaları sunan özel model oluşturma, Python API belgeleri veya Databricks SDK belgeleri .

Not

Gecikme süresine duyarlı olan veya saniye başına yüksek sorgu gerektiren iş yükleri için Model Sunma, uç noktaları sunan özel modelde rota iyileştirmesi sunar. Bkz. Uç noktaları sunmada yol iyileştirme.

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'si

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

Uç noktayı görmek için Databricks kullanıcı arabiriminin sol kenar çubuğunda Hizmet Verme'ye tıklayın. Durum Hazır olduğunda uç nokta sorgulara yanıt vermeye hazırdır. Mozaik Yapay Zeka Modeli Sunma hakkında daha fazla bilgi edinmek için bkz. Mozaik Yapay Zeka Modeli Sunma.

Genişletilmiş DataFrame'i çıkarım tablosuna kaydetme

Şubat 2025 itibarıyla oluşturulan uç noktalar için, model sunum uç noktasını, aranan özellik değerlerini ve işlev dönüş değerlerini içeren genişletilmiş DataFrame'i günlüğe kaydedecek şekilde yapılandırabilirsiniz. DataFrame, sunulan modelin çıkarım tablosuna kaydedilir.

Bu yapılandırmayı ayarlama yönergeleri için bkz Log özelliği arama DataFrame'lerini çıkarım tablolarına.

Çıkarım tabloları hakkında bilgi için bkz. Modelleri izleme ve hata ayıklama için çıkarım tabloları.

Bir uç noktayı al

Bir uç noktanın meta verilerini ve durumunu almak için Databricks SDK'sını veya Python API'sini kullanabilirsiniz.

Databricks SDK - Python

from databricks.sdk import WorkspaceClient
workspace = WorkspaceClient()

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

Python API'si

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

Uç noktanın şemasını alma

Bir uç noktanın şemasını almak için Databricks SDK'sını veya REST API'sini kullanabilirsiniz. Uç nokta şeması hakkında daha fazla bilgi için bkz. Uç nokta şeması sunan bir model alma.

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"

Uç noktayı sorgulama

Bir uç noktayı sorgulamak için REST API'yi, MLflow Dağıtımları SDK'sını veya Sunum Kullanıcı Arabirimi'ni kullanabilirsiniz.

Aşağıdaki kod, MLflow Dağıtımları SDK'sını kullanırken kimlik bilgilerinin nasıl ayarlandığını ve istemcinin nasıl oluşturulacağını gösterir.

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

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

Not

En iyi güvenlik uygulaması olarak otomatik araçlar, sistemler, betikler ve uygulamalarla kimlik doğrulaması yaptığınızda Databricks, çalışma alanı kullanıcıları yerine hizmet sorumlularına ait kişisel erişim belirteçlerini kullanmanızı önerir. Hizmet sorumlularına yönelik belirteçler oluşturmak için bkz. Hizmet sorumlusu için belirteçleri yönetme.

API'leri kullanarak uç noktayı sorgulama

Bu bölüm, REST API veya MLflow Dağıtımları SDK'sını kullanarak bir uç noktayı sorgulama örnekleri içerir.

MLflow Dağıtımları SDK'sı

Önemli

Aşağıdaki örnek, MLflow Dağıtımları SDK'sından predict()API'yi kullanır. Bu API Deneyseldir ve API tanımı değişebilir.

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

Kullanıcı arabirimini kullanarak uç noktayı sorgulama

Bir sunum uç noktasını doğrudan Sunum Kullanıcı Arabirimi'nden sorgulayabilirsiniz. Kullanıcı arabirimi, uç noktayı sorgulamak için kullanabileceğiniz oluşturulmuş kod örnekleri içerir.

  1. Azure Databricks çalışma alanının sol kenar çubuğunda Hizmete tıklayın.

  2. Sorgulamak istediğiniz uç noktaya tıklayın.

  3. Ekranın sağ üst kısmında Sorgu uç noktası'na tıklayın.

    sorgu uç noktası düğmesi

  4. İstek kutusuna istek gövdesini JSON biçiminde yazın.

  5. İstek gönder'e tıklayın.

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

Sorgu uç noktası iletişim kutusu curl, Python ve SQL'de oluşturulan örnek kodu içerir. Örnek kodu görüntülemek ve kopyalamak için sekmelere tıklayın.

sorgu uç noktası iletişim kutusu

Kodu kopyalamak için metin kutusunun sağ üst kısmındaki kopyala simgesine tıklayın.

sorgu uç noktası iletişim kutusundaki kopyala düğmesi

Uç noktayı güncelleştirme

REST API, Databricks SDK veya Sunum Kullanıcı Arabirimini kullanarak bir uç noktayı güncelleştirebilirsiniz.

API'leri kullanarak uç noktayı güncelleştirme

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

Kullanıcı arabirimini kullanarak uç noktayı güncelleştirme

Hizmet Kullanıcı Arayüzünü kullanmak için şu adımları takip edin:

  1. Azure Databricks çalışma alanının sol kenar çubuğunda Hizmete tıklayın.
  2. Tabloda, güncelleştirmek istediğiniz uç noktanın adına tıklayın. Uç nokta ekranı görüntülenir.
  3. Ekranın sağ üst kısmında Uç noktayı düzenle'ye tıklayın.
  4. Sunum uç noktasını düzenle iletişim kutusunda, uç nokta ayarlarını gerektiği gibi düzenleyin.
  5. Değişikliklerinizi kaydetmek için Güncelleştir'e tıklayın.

uç noktayı güncelleştirme

Uç noktayı silme

Uyarı

Bu eylem geri alınamaz.

REST API, Databricks SDK, Python API veya Sunum Kullanıcı Arabirimini kullanarak bir uç noktayı silebilirsiniz.

API'leri kullanarak uç noktayı silme

Databricks SDK - Python

from databricks.sdk import WorkspaceClient
workspace = WorkspaceClient()

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

Python API'si

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>

Kullanıcı arabirimini kullanarak uç noktayı silme

Sunum Kullanıcı Arabirimini kullanarak bir uç noktayı silmek için şu adımları izleyin:

  1. Azure Databricks çalışma alanının sol kenar çubuğunda Hizmete tıklayın.
  2. Tabloda, silmek istediğiniz uç noktanın adına tıklayın. Uç nokta ekranı görüntülenir.
  3. Ekranın sağ üst kısmında kebap menüsü Kebap menü simgesine tıklayın ve Sil'i seçin.

uç noktayı silme

Uç noktanın durumunu izleme

Özellik Sunma uç noktaları için kullanılabilen günlükler ve ölçümler hakkında bilgi için bkz. Model kalitesini ve uç nokta durumunu izleme.

Erişim denetimi

Bir Model Sunma uç noktasındaki izinler hakkında bilgi için bkz. Model sunma uç noktasındaki izinleri yönetme.

Örnek not defteri

Bu not defteri Databricks Çevrimiçi Özellik Deposu kullanarak Özellik Sunma uç noktası oluşturmak için Databricks SDK'sının nasıl kullanılacağını gösterir.

Özellik Çevrimiçi mağaza ile örnek not defteri sunma

Not defterini alma