Disponibilize Recurso views
Visualização
Esse recurso está em Prévia Pública. Os administradores do espaço de trabalho podem controlar o acesso a esse recurso na página Pré-visualizações . Consulte Gerenciar prévias do Databricks.
Você pode disponibilizar as Views de Recurso online de duas maneiras:
- Servindo modelo : implante um modelo treinado em Feature Views. O Endpoint consulta ou calcula automaticamente os valores dos recursos, usando a linhagem rastreada quando o modelo foi registrado. Use isto para disponibilizar previsões do modelo.
- Feature Serving : implante um
FeatureSpecque faça referência direta a Feature Views, sem um modelo. O endpoint retorna as saídas de recursos solicitadas. Use isto quando um aplicativo precisar de valores de recursos em vez de previsões de modelo.
Ambas as abordagens oferecem suporte a recursos pré-computados e sob demanda. Os recursos folha com suporte de tabela e transmissão devem ter materializações online compatíveis. RequestSource fornece valores da solicitação, e CustomUDF calcula recursos sob demanda. Para um CustomUDF com FeatureViewSource, o serviço resolve as dependências upstream e avalia o gráfico de dependências de recursos automaticamente.
Registre os recursos solicitados e todos os seus recursos de upstream transitivos no Unity Catalog. Materialize apenas as folhas apoiadas por tabela e transmissão, não os recursos de CustomUDF derivados ou em tempo de solicitação.
Permissões
Para disponibilizar um recurso, a entidade que cria o endpoint de servindo modelo deve ter SELECT na tabela do Unity Catalog que apoia o recurso materializado. Pesquisas online leem diretamente da tabela materializada, então, SELECT em nível de tabela é o que concede acesso à disponibilização. Para a descrição do privilégio, consulte SELECT.
Como uma tabela materializada pode conter mais de um recurso, conceder SELECT nela concede acesso a cada recurso nessa tabela, e não apenas àquele que você pretende disponibilizar. Antes de conceder acesso de disponibilização, confirme que cada recurso de compartilhamento da tabela pode ser compartilhado com a entidade principal. Para limitar a exposição, materialize recursos confidenciais separadamente.
Para conceder este acesso sem resolver as tabelas manualmente, use FeatureEngineeringClient.grant_feature_serving_access. Dada uma especificação de modelo ou recurso, ela resolve cada recurso para sua tabela online, concede SELECT (juntamente com USE CATALOG e USE SCHEMA) nessas tabelas aos principais que você especificar e retorna um relatório de cada tabela e os recursos adicionais que a concessão expõe. Passe dry_run=True para 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",
)
implantou um modelo endpoint
Utilize um endpoint de modelo de serviço existente ou use o SDK Databricks para criar um novo. O modelo deve ser registrado no Unity Catalog.
Se um CustomUDF usar uma função definida pelo usuário (UDF) que importe pacotes Python, passe-os explicitamente por meio de extra_pip_requirements quando você chamar log_model. Consulte Dependências de UDF personalizadas.
O código a seguir mostra como criar um novo endpoint servindo modelo. Para obter mais informações, consulte Criar endpoint de modelo de navegação personalizado.
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"},
],
)
Consulte o endpoint com o recurso RequestSource
Se o modelo foi treinado com recurso RequestSource , a carga útil da solicitação também deve incluir todas as colunas RequestSource . Essas colunas foram adicionadas à assinatura do modelo MLflow durante log_model, portanto, o esquema da API do endpoint reflete os campos de solicitação 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 procurar recursos apoiados por tabela no armazenamento online. Um recurso ColumnSelection pode passar um valor RequestSource para o modelo. Um recurso CustomUDF transforma suas entradas de solicitação 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"
}
]
}'
Disponibilizar recursos com um FeatureSpec
Para disponibilizar Feature Views sem um modelo, crie um FeatureSpec que faça referência aos recursos e implante-o em um endpoint do Feature Serving. O endpoint retorna apenas as saídas de recursos solicitadas na especificação. Ele calcula valores intermediários automaticamente sem retorná-los, a menos que você também solicite esses recursos.
Registre todos os recursos no Unity Catalog e crie materializações online compatíveis para as folhas baseadas em tabela e em transmissão antes de criar o endpoint.
A FeatureSpec que contém recurso Views não pode também conter definições de FeatureLookup ou FeatureFunction. Recurso views não podem ser misturadas com essas definições no mesmo 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 pesquisar os recursos materializados:
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
response = w.serving_endpoints.query(
name="transaction-features",
dataframe_records=[{"user_id": "user_123"}],
)
Para saber mais sobre os endpoints de Feature Serving, consulte endpoints de Feature Serving.
Disponibilizar recursos CustomUDF e suas dependências
Este exemplo disponibiliza os recursos de transação e margem definidos nos exemplos CustomUDF e FeatureViewSource. Use a versão 0.18.0 ou superior de databricks-feature-engineering para estas APIs de Feature Views.
log_transaction_amountaplicamain.ecommerce.log_amount_udfao valortransaction_amountda solicitação usando NumPy.marginusaFeatureViewSourcepara compute uma margem derevenue_sum_7decost_sum_7d. Esses recursos upstream usamcustomer_idcomo a key da entidade eevent_timecomo a coluna de série temporal.
Registre os recursos de saída e cada recurso upstream antes de criar a especificação. Para este exemplo, materialize online apenas as folhas revenue_sum_7d e cost_sum_7d. O Serving pesquisa os valores deles e computa margin para cada solicitação.
Recupere os objetos Feature registrados e repasse-os para create_feature_spec. Declare o NumPy para execução online, mesmo que ele já esteja listado na cláusula ENVIRONMENT do 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 acima de criação de endpoint com feature_spec_name="main.ecommerce.derived_transaction_features" e um nome de endpoint como derived-transaction-features. Depois que o endpoint estiver pronto, forneça a key de pesquisa e o valor no momento da solicitação:
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 as saídas log_transaction_amount e margin solicitadas, e não os valores intermediários de receita e custo. Para formatos de dependência, permissões de wheel e solução de problemas de instalação, consulte Adicionar dependências do Python.