Aracılığıyla paylaş


Databricks Özellik Sunma nedir?

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 . Öğretici: Uç noktaya hizmet veren bir özelliği dağıtma ve sorgulama.

Databricks'in özellikleri kullanılarak oluşturulmuş bir modele hizmet vermek için Databricks 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 ile, artırılmış nesil (RAG) uygulamaları için yapılandırılmış verilerin yanı sıra Databricks dışında sunulan modeller veya Unity Kataloğu'ndaki verilere dayalı özellikler gerektiren diğer uygulamalar gibi diğer uygulamalar için gerekli özelliklere hizmet edebilirsiniz.

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

Özellik Sunma neden kullanılır?

Databricks Özellik Sunma, önceden gerçekleştirilmiş ve isteğe bağlı özellikler sunan 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ğ sınırında dağıtılır ve uç nokta silindiğinde veya sıfıra ölçeklendirildiğinde sonlandırılan ayrılmış işlem kullanılır.

Gereksinim -leri

  • 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, kullanarak %pip install databricks-feature-engineering>=0.1.2gerekli 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 Sunma için 0.18.0 veya üzeri bir sürüm gerekir 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 Sunma, uç noktaları oluşturmak, güncelleştirmek, 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
  • 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 otomasyonu için kimlik doğrulaması - genel bakış.

FeatureSpec oluşturma

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

içinde FeatureSpec belirtilen tabloların çevrimiçi bir tabloda veya üçüncü taraf çevrimiçi mağazada yayımlanması gerekir. Bkz . Gerçek zamanlı özellik sunma veya Üçüncü taraf çevrimiçi mağazalar için çevrimiçi tabloları kullanma.

bir oluşturmak FeatureSpeciçin paketini kullanmanız databricks-feature-engineering gerekir.

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",
    features=["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,
)

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, özel model sunan uç noktalarda yol iyileştirmesi sunar. Bkz . Hizmet veren uç noktalarda yol iyileştirmeyi yapılandırma.

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

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. Databricks Model Sunma hakkında daha fazla bilgi edinmek için bkz . Databricks Model Sunma.

Uç nokta alma

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

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)

Uç noktanın şemasını alma

Önemli

Bu özellik Genel Önizlemededir.

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

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.

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

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

Önemli

Aşağıdaki örnek, MLflow Dağıtımları SDK'sından API'yi kullanırpredict(). 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},
        ]
    },
)

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 Sunum'a 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

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

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

Sunum Kullanıcı Arabirimini kullanmak için şu adımları izleyin:

  1. Azure Databricks çalışma alanının sol kenar çubuğunda Sunum'a 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

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

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 Sunum'a 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üne Kebap menüsü 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

Özellik Sunma uç noktalarındaki izinler hakkında bilgi için bkz . Model sunum uç noktanızdaki izinleri yönetme.

Örnek not defteri

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

Özellik Çevrimiçi tablolarla örnek not defteri sunma

Not defterini alma