Pular para o conteúdo principal

Disponibilize Recurso views

info

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 FeatureSpec que 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.

Python
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.

Python
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​

Python
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.

Python
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:

Bash
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.

nota

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.

Python
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:

Python
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_amount aplica main.ecommerce.log_amount_udf ao valor transaction_amount da solicitação usando NumPy.
  • margin usa FeatureViewSource para compute uma margem de revenue_sum_7d e cost_sum_7d. Esses recursos upstream usam customer_id como a key da entidade e event_time como 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:

Python
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:

Python
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.