Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Puede servir Feature Views en línea de dos maneras:
- Modelo de servicio: Despliegue un modelo entrenado con vistas de características. El punto de conexión consulta o calcula automáticamente los valores de las características utilizando el linaje rastreado cuando se registró el modelo. Úselo para ofrecer predicciones de modelos.
-
Servicio de variables: implemente un
FeatureSpecque haga referencia directamente a las vistas de variables, sin un modelo. El punto de conexión devuelve los resultados de las funciones solicitadas. Úselo cuando una aplicación necesita valores de características en lugar de predicciones del modelo.
Ambos enfoques soportan funciones precomputadas y bajo demanda. Las características de hoja respaldadas por tablas y flujos deben tener materializaciones en línea compatibles.
RequestSource suministra valores de la solicitud y CustomUDF calcula características bajo demanda. Para un CustomUDF con FeatureViewSource, el servicio resuelve las dependencias ascendentes y evalúa automáticamente el grafo de dependencias entre características.
Registra las características solicitadas y todas sus funciones transitivas ascendentes en el Catálogo de Unity. Materializa solo las hojas respaldadas por tablas y flujos, no las características CustomUDF en el momento de la solicitud ni las derivadas.
Permissions
Para poner en servicio una característica, la identidad que crea el punto de conexión de servicio del modelo debe tener SELECT en la tabla del catálogo de Unity en la que se basa la característica materializada. Las búsquedas en línea se leen directamente desde la tabla materializada, por lo que el nivel SELECT de tabla es lo que concede acceso de servicio. Para obtener la descripción de privilegios, consulte SELECT.
Dado que una tabla materializada puede contener más de una funcionalidad, conceder SELECT sobre ella otorga acceso a todas las funcionalidades de esa tabla, no solo a la que pretende ofrecer. Antes de conceder acceso de publicación, confirme que cada elemento que comparte la tabla puede compartirse con el principal. Para limitar la exposición, materialice por separado las características sensibles.
Para conceder este acceso sin resolver tablas manualmente, use FeatureEngineeringClient.grant_feature_serving_access. Dada una especificación de un modelo o de una funcionalidad, resuelve cada funcionalidad a su tabla en línea, concede SELECT (junto con USE CATALOG y USE SCHEMA) sobre esas tablas a las entidades principales que especifique y devuelve un informe de cada tabla y de las funcionalidades adicionales a las que da acceso la concesión. Pase dry_run=True para obtener una vista previa del informe antes de concederlo.
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",
)
Implementación de un modelo de puntos de conexión de servicio
Use un punto de conexión de servicio de modelo existente o use el SDK de Databricks para crear uno nuevo. El modelo debe estar registrado en el catálogo de Unity.
Si CustomUDF utiliza una función definida por el usuario (UDF) que importa paquetes de Python, pásalos explícitamente a través de extra_pip_requirements cuando llames a log_model.
Consulta Dependencias personalizadas de UDF.
En el código siguiente se muestra cómo crear un nuevo modelo que atiende el punto de conexión. Para más información, consulte Creación de modelos de puntos de conexión de servicio personalizados.
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,
)
],
),
)
Consulta del punto de conexión
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"},
],
)
Consulta del punto de conexión con características de RequestSource
Si el modelo se entrenó con características RequestSource, la carga de la solicitud también debe incluir todas las columnas RequestSource. Estas columnas se agregaron a la firma del modelo de MLflow durante log_model, por lo que el esquema de LA API del punto de conexión refleja los campos de solicitud necesarios.
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)
},
],
)
Las claves de entidad se usan para buscar características sustentadas en tablas desde el almacén en línea. Una ColumnSelection característica puede pasar un RequestSource valor al modelo. Una CustomUDF característica transforma sus entradas de solicitud antes de que el modelo utilice el resultado.
También puede usar 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"
}
]
}'
Ofrecer funciones con FeatureSpec
Para servir Feature Views sin un modelo, cree un FeatureSpec que haga referencia a las características e implántelo en un endpoint de Feature Serving. El endpoint solo devuelve las salidas de características solicitadas en la especificación. Calcula automáticamente los valores intermedios sin devolverlos, a menos que también solicites esas características.
Registra todas las características en Unity Catalog y crea materializaciones en línea compatibles para las hojas respaldadas por tablas y flujos antes de crear el punto de conexión.
Note
Un FeatureSpec que contiene Feature Views tampoco puede contener definiciones de FeatureLookup o de FeatureFunction. Las vistas de características no se pueden mezclar con esas definiciones en el mismo 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,
)
),
)
Consulte el punto de conexión con las claves de entidad usadas para buscar las características materializadas:
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
response = w.serving_endpoints.query(
name="transaction-features",
dataframe_records=[{"user_id": "user_123"}],
)
Para más información sobre los endpoints de Feature Serving, consulte Servir tablas de características.
Funciones de Serve CustomUDF y sus dependencias
Este ejemplo sirve para las funciones de transacción y margen definidas en los ejemplos CustomUDF y FeatureViewSource. Utiliza databricks-feature-engineering la versión 0.18.0 o superior para estas APIs de Feature Views.
-
log_transaction_amountaplicamain.ecommerce.log_amount_udfal valor detransaction_amountde la solicitud usando NumPy. -
marginusaFeatureViewSourcepara calcular un margen a partir derevenue_sum_7dycost_sum_7d. Estas características de origen usancustomer_idcomo clave de entidad yevent_timecomo columna de serie temporal.
Registra tanto las características de salida como todas las características de las etapas anteriores antes de crear la especificación. En este ejemplo, materializa en línea únicamente las hojas revenue_sum_7d y cost_sum_7d. Serving consulta sus valores y calcula margin para cada solicitud.
Recupera los objetos registrados Feature y pásalos a create_feature_spec. Declara NumPy para ejecución online aunque ya esté listado en la cláusula de ENVIRONMENT la UDF:
from databricks.feature_engineering import FeatureEngineeringClient
fe = FeatureEngineeringClient()
log_transaction_amount = fe.get_feature(
full_name="main.ecommerce.log_transaction_amount"
)
margin = fe.get_feature(full_name="main.ecommerce.margin")
fe.create_feature_spec(
name="main.ecommerce.derived_transaction_features",
features=[log_transaction_amount, margin],
extra_pip_requirements=["numpy==1.26.4"],
)
Sigue los pasos de creación del endpoint anteriores con feature_spec_name="main.ecommerce.derived_transaction_features" y un nombre de endpoint como derived-transaction-features. Una vez que el endpoint esté listo, proporciona la clave de consulta y el valor de tiempo de solicitud:
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
response = w.serving_endpoints.query(
name="derived-transaction-features",
dataframe_records=[
{"customer_id": "customer_123", "transaction_amount": 99.0},
],
)
La respuesta contiene solo los valores solicitados log_transaction_amount y margin de los resultados, no los valores intermedios de ingresos y costes. Para formatos de dependencias, permisos de rueda y resolución de problemas de instalación, consulta Añadir dependencias en Python.