Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Это важно
Эта функция доступна в общедоступной предварительной версии. Администраторы рабочей области могут управлять доступом к этой функции на странице "Предварительные версии ". См. статью "Управление предварительными версиями Azure Databricks".
Вы можете использовать представления признаков в онлайн-режиме двумя способами:
- Обслуживание моделей: развертывание модели, обученной в представлениях компонентов. Конечная точка автоматически ищет значения функций из интернет-магазина, используя происхождение, отслеживаемое при регистрации модели. Используйте это для обслуживания прогнозов модели.
-
Сервинг признаков: разверните
FeatureSpec, который напрямую ссылается на представления признаков, без модели. Эндпоинт возвращает найденные значения признаков. Используйте это, если приложению требуются значения признаков, а не прогнозы моделей.
Оба подхода считывают предварительно вычисляемые значения признаков из интернет-магазина, поэтому необходимо сначала материализовать функции в интернет-магазине.
Модели, обученные с помощью функций из Databricks, автоматически отслеживают происхождение функций, на которые они были обучены. При развертывании в качестве конечных точек службы моделей эти модели используют каталог Unity для поиска функций из интернет-магазинов.
Разрешения
Чтобы обслуживать признак, принципал, создающий конечную точку обслуживания модели, должен иметь разрешение SELECT на таблицу Unity Catalog, лежащую в основе материализованного признака. Онлайн-запросы считываются непосредственно из материализованной таблицы, поэтому именно SELECT на уровне таблицы предоставляет доступ для выдачи. Описание привилегий см. в разделе SELECT.
Поскольку материализованная таблица может содержать более одного признака, предоставление SELECT к ней открывает доступ ко всем признакам в этой таблице, а не только к тому, который вы намерены предоставлять. Перед предоставлением доступа к обслуживанию убедитесь, что все функции, которым предоставлен общий доступ к таблице, можно предоставить субъекту общий доступ. Чтобы ограничить экспозицию, материализуйте конфиденциальные функции отдельно.
Чтобы предоставить этот доступ, не определяя таблицы вручную, используйте FeatureEngineeringClient.grant_feature_serving_access. На основе модели или спецификации признаков система сопоставляет каждый признак с соответствующей онлайн-таблицей, предоставляет права SELECT (а также USE CATALOG и USE SCHEMA) на эти таблицы указанным вами субъектам безопасности и возвращает отчет по каждой таблице и дополнительным признакам, к которым открывает доступ эта выдача прав. Передайте dry_run=True, чтобы просмотреть отчет перед предоставлением.
from databricks.feature_engineering import FeatureEngineeringClient
fe = FeatureEngineeringClient()
# Preview the tables and the features each grant would expose.
report = fe.grant_feature_serving_access(
grant_to=["serving-principal@example.com"],
model_uri="models:/main.ecommerce.fraud_model/1",
dry_run=True,
)
print(report)
# Grant SELECT on the resolved online tables.
fe.grant_feature_serving_access(
grant_to=["serving-principal@example.com"],
model_uri="models:/main.ecommerce.fraud_model/1",
)
Развертывание конечной точки обслуживания модели
Используйте существующую конечную точку обслуживания модели или используйте пакет SDK Databricks для создания новой. Модель должна быть зарегистрирована в каталоге Unity.
В следующем коде показано, как создать конечную точку обслуживания модели. Дополнительные сведения см. в статье "Создание пользовательских конечных точек обслуживания моделей".
from databricks.sdk import WorkspaceClient
from databricks.sdk.service.serving import EndpointCoreConfigInput, ServedEntityInput
w = WorkspaceClient()
endpoint_name = "fraud-detection-endpoint"
model_name = "main.ecommerce.fraud_model"
w.serving_endpoints.create(
name=endpoint_name,
config=EndpointCoreConfigInput(
name=endpoint_name,
served_entities=[
ServedEntityInput(
entity_name=model_name,
entity_version=1,
max_provisioned_concurrency=4,
min_provisioned_concurrency=0,
)
],
),
)
Запрос конечной точки
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
response = w.serving_endpoints.query(
name="fraud-detection-endpoint",
dataframe_records=[
{"user_id": "user_123", "transaction_time": "2026-03-01T12:00:00"},
],
)
Запрос конечной точки с помощью функций RequestSource
Если модель обучена функциями RequestSource , полезные данные запроса также должны содержать все RequestSource столбцы. Эти столбцы были добавлены в подпись модели MLflow во время log_model, поэтому схема API конечной точки отражает обязательные поля запроса.
response = w.serving_endpoints.query(
name="fraud-detection-endpoint",
dataframe_records=[
{
"user_id": "user_123",
"transaction_time": "2026-03-01T12:00:00",
"transaction_amount": 275.30, # RequestSource column
"vendor_id": "v_42", # RequestSource column (also used as entity key)
},
],
)
Ключи сущностей используются для поиска функций, поддерживаемых таблицами, из интернет-магазина.
RequestSource столбцы передаются непосредственно в модель.
Также можно использовать curl:
curl -X POST "https://<workspace>.cloud.databricks.com/serving-endpoints/<endpoint>/invocations" \
-H "Authorization: Bearer $DATABRICKS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"dataframe_records": [
{
"user_id": "user_123",
"transaction_time": "2026-03-01T12:00:00",
"transaction_amount": 275.30,
"vendor_id": "v_42"
}
]
}'
Предоставление функций с помощью FeatureSpec
Чтобы обслуживать представления признаков без модели, создайте объект FeatureSpec, который ссылается на признаки, и разверните его в конечной точке обслуживания признаков. Эндпоинт возвращает найденные значения признаков для ключей сущностей, указанных в запросе.
Перед созданием конечной точки компоненты должны быть зарегистрированы в каталоге Unity и материализованы в интернет-магазин .
Note
Объект FeatureSpec, содержащий представления функций, не может также содержать определения FeatureLookup или FeatureFunction. Feature Views нельзя смешивать с этими определениями в рамках одного и того же FeatureSpec.
from databricks.feature_engineering import FeatureEngineeringClient
from databricks.feature_engineering.entities.feature_serving_endpoint import (
EndpointCoreConfig,
ServedEntity,
)
fe = FeatureEngineeringClient()
# 1. Retrieve a registered Feature View
agg_feature = fe.get_feature(full_name="main.ecommerce.amount_sum_sliding_7d_1d")
# 2. Create a FeatureSpec that includes the Feature View
feature_spec_name = "main.ecommerce.transaction_feature_spec"
fe.create_feature_spec(name=feature_spec_name, features=[agg_feature])
# 3. Deploy a Feature Serving endpoint backed by the FeatureSpec
fe.create_feature_serving_endpoint(
name="transaction-features",
config=EndpointCoreConfig(
served_entities=ServedEntity(
feature_spec_name=feature_spec_name,
workload_size="Small",
scale_to_zero_enabled=True,
)
),
)
Запросите конечную точку с помощью ключей сущностей, используемых для поиска материализованных функций:
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
response = w.serving_endpoints.query(
name="transaction-features",
dataframe_records=[{"user_id": "user_123"}],
)
Дополнительные сведения о конечных точках обслуживания компонентов см. в статье "Обслуживание компонентов".