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 . 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 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 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.2
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 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 kaynaklarına erişimin kimliğini doğrulama.
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 FeatureSpec
iç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",
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,
)
Uç nokta oluşturma
uç 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. Mozaik Yapay Zeka Modeli Sunma hakkında daha fazla bilgi edinmek için bkz . Mozaik Yapay Zeka Modeli 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
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.
Azure Databricks çalışma alanının sol kenar çubuğunda Sunum'a tıklayın.
Sorgulamak istediğiniz uç noktaya tıklayın.
Ekranın sağ üst kısmında Sorgu uç noktası'na tıklayın.
İstek kutusuna istek gövdesini JSON biçiminde yazın.
İ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.
Kodu kopyalamak için metin kutusunun sağ üst kısmındaki kopyala simgesine tıklayın.
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:
- Azure Databricks çalışma alanının sol kenar çubuğunda Sunum'a tıklayın.
- Tabloda, güncelleştirmek istediğiniz uç noktanın adına tıklayın. Uç nokta ekranı görüntülenir.
- Ekranın sağ üst kısmında Uç noktayı düzenle'ye tıklayın.
- Sunum uç noktasını düzenle iletişim kutusunda, uç nokta ayarlarını gerektiği gibi düzenleyin.
- Değişikliklerinizi kaydetmek için Güncelleştir'e tıklayın.
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:
- Azure Databricks çalışma alanının sol kenar çubuğunda Sunum'a tıklayın.
- Tabloda, silmek istediğiniz uç noktanın adına tıklayın. Uç nokta ekranı görüntülenir.
- Ekranın sağ üst kısmında kebap menüsüne tıklayın ve Sil'i seçin.
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.