Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Pode disponibilizar as Visualizações de Destaque online de duas formas:
- Disponibilização de modelos: Implemente um modelo treinado com base em Feature Views. O endpoint pesquisa ou calcula automaticamente os valores dos atributos, usando a linhagem monitorizada quando o modelo foi registado. Utilize isto para disponibilizar previsões do modelo.
-
Feature Serving: Implemente um
FeatureSpecque faça referência diretamente às Feature Views, sem um modelo. O endpoint retorna os resultados da funcionalidade solicitada. Use isto quando uma aplicação precisa de valores de funcionalidades em vez de previsões de modelos.
Ambas as abordagens suportam funcionalidades pré-computadas e sob demanda. As funcionalidades finais baseadas em tabelas e fluxos devem suportar materializações online.
RequestSource fornece valores a partir do pedido e CustomUDF calcula as funcionalidades a pedido. Para um CustomUDF com FeatureViewSource, o serviço resolve dependências a montante e avalia automaticamente o grafo de dependência de características.
Registe as funcionalidades solicitadas e todas as suas funcionalidades transitivas a montante no Catálogo Unity. Materializar apenas as folhas suportadas por tabela e por fluxo, não as funcionalidades em tempo de pedido ou derivadas CustomUDF.
Permissions
Para disponibilizar uma funcionalidade, a entidade principal que cria o endpoint de disponibilização do modelo tem de ter SELECT na tabela do Unity Catalog subjacente à funcionalidade materializada. As consultas online leem diretamente da tabela materializada, por isso o nível SELECT da tabela é o que concede o acesso ao serviço. Para a descrição do privilégio, veja SELECT.
Como uma tabela materializada pode conter mais do que uma funcionalidade, conceder SELECT nela concede acesso a todas as funcionalidades dessa tabela, não apenas aquela que pretende servir. Antes de conceder acesso ao serviço, confirme que todas as funcionalidades que partilham a tabela podem ser partilhadas com o principal. Para limitar a exposição, materialize as características sensíveis separadamente.
Para conceder este acesso sem resolver tabelas manualmente, use FeatureEngineeringClient.grant_feature_serving_access. Dado um modelo ou uma especificação de funcionalidade, resolve cada funcionalidade para a respetiva tabela online, concede SELECT (juntamente com USE CATALOG e USE SCHEMA) nessas tabelas às entidades principais que especificar e devolve um relatório de cada tabela e das funcionalidades adicionais que a concessão expõe. Passe dry_run=True para pré-visualizar o relatório antes de conceder.
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",
)
Implementar um endpoint de disponibilização de modelo
Use um modelo existente para servir o endpoint, ou utilize o Databricks SDK para criar um novo. O modelo deve estar registado no Catálogo Unity.
Se CustomUDF usar uma função definida pelo utilizador (UDF) que importa pacotes Python, passe-os explicitamente através de extra_pip_requirements quando chamar log_model.
Consulte dependências personalizadas de UDF.
O código seguinte mostra como criar um novo endpoint de serviço de modelo. Para mais informações, consulte Configurar endpoints de fornecimento de modelos 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,
)
],
),
)
Consultar o endpoint
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"},
],
)
Fazer consulta ao endpoint com as funcionalidades RequestSource
Se o modelo foi treinado com RequestSource características, o payload do pedido deve também incluir todas as RequestSource colunas. Estas colunas foram adicionadas à assinatura do modelo MLflow durante log_model, pelo que o esquema API do endpoint reflete os campos de pedido necessários.
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)
},
],
)
As chaves de entidade são usadas para consultar funcionalidades com tabelas na loja online. Uma ColumnSelection funcionalidade pode passar um RequestSource valor para o modelo. Uma CustomUDF funcionalidade transforma as suas entradas de pedido antes de o modelo usar o resultado.
Você também pode 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"
}
]
}'
Funcionalidades do Serve com um FeatureSpec
Para servir Feature Views sem um modelo, crie um FeatureSpec que faça referência às features e implemente-o num endpoint Feature Serving. O endpoint devolve apenas as saídas de funcionalidades solicitadas na especificação. Calcula automaticamente valores intermédios sem os devolver, a menos que também solicite essas funcionalidades.
Registe todas as funcionalidades no Unity Catalog e crie materializações online suportadas para as folhas com tabela e fluxo antes de criar o endpoint.
Note
A FeatureSpec que contém Vistas de Funcionalidade também não pode conter definições de FeatureLookup ou FeatureFunction. As Feature Views não podem ser misturadas com essas definições na mesma 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 o endpoint com as chaves de entidade usadas para consultar as funcionalidades materializadas:
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
response = w.serving_endpoints.query(
name="transaction-features",
dataframe_records=[{"user_id": "user_123"}],
)
Para mais informações sobre os endpoints de Feature Serving, consulte Disponibilizar tabelas de funcionalidades.
Servir funcionalidades do CustomUDF e suas dependências
Este exemplo abrange as funcionalidades de transação e margem definidas nos exemplos CustomUDF e FeatureViewSource. Use databricks-feature-engineering a versão 0.18.0 ou superior para estas APIs de Visualizações de Funcionalidades.
-
log_transaction_amountaplicamain.ecommerce.log_amount_udfao valor detransaction_amountdo pedido usando NumPy. -
marginusaFeatureViewSourcepara calcular uma margem derevenue_sum_7decost_sum_7d. Estas funcionalidades ascendentes usamcustomer_idcomo sua chave de entidade eevent_timecomo sua coluna de série temporal.
Registe as duas características de saída e todas as características a montante antes de criar a especificação. Neste exemplo, o online-materialize materializa apenas as folhas revenue_sum_7d e cost_sum_7d. O serviço consulta os seus valores e calcula margin para cada pedido.
Recuperar os objetos registados Feature e passá-los para create_feature_spec. Declare o NumPy para execução online mesmo que já esteja listado na cláusula da ENVIRONMENT 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"],
)
Siga os passos de criação do endpoint acima com feature_spec_name="main.ecommerce.derived_transaction_features" e um nome de endpoint como derived-transaction-features. Quando o endpoint estiver pronto, forneça a chave de consulta e o valor no momento do pedido:
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},
],
)
A resposta contém apenas os resultados log_transaction_amount e margin solicitados, não os valores intermédios de receita e custo. Para formatos de dependências, permissões de roda e resolução de problemas de instalação, veja Adicionar dependências em Python.