O que é o Databricks Feature Serving?
Databricks Feature Serving disponibiliza os dados da plataforma Databricks para modelos ou aplicativos implantados fora do site Databricks. Feature Serving O ponto de extremidade é automaticamente escalonado para se ajustar ao tempo do tráfego real e fornecer um serviço de alta disponibilidade e baixa latência para servir recursos. Esta página descreve como configurar e usar o Feature Serving. Para obter um passo a passo em tutorial, consulte implantado e consulte um Feature Serving endpoint .
Quando o senhor usa o site Mosaic AI Model Serving para atender a um modelo que foi criado usando o recurso do site Databricks, o modelo procura e transforma automaticamente o recurso para solicitações de inferência. Com o Databricks Feature Serving, o senhor pode servir dados estruturados para aplicativos de geração aumentada de recuperação (RAG), bem como recursos necessários para outros aplicativos, como modelos servidos fora do Databricks ou qualquer outro aplicativo que exija recursos baseados em dados no Unity Catalog.
Por que usar o Feature Serving?
Databricks Feature Serving oferece uma única interface que atende a recursos pré-materializados e sob demanda. Também inclui os seguintes benefícios:
- Simplicidade. A Databricks cuida da infraestrutura. Com uma única chamada de API, a Databricks cria um ambiente de serviço pronto para produção.
- Alta disponibilidade e escalabilidade. Feature Serving aumenta e diminui automaticamente para se ajustar ao volume de solicitações de atendimento.
- Segurança. são implantados em um limite de rede seguro e usam o site compute dedicado, que termina quando o endpoint é excluído ou reduzido a zero.
Requisitos
- Databricks Runtime 14.2 ML ou acima.
- Para usar a API do Python, o Feature Serving requer o site
databricks-feature-engineering
versão 0.1.2 ou acima, que está incorporado no Databricks Runtime 14.2 ML. Para versões anteriores do Databricks Runtime ML, instale manualmente a versão necessária usando%pip install databricks-feature-engineering>=0.1.2
. Se estiver usando um notebook Databricks, o senhor deverá reiniciar o kernel Python executando este comando em uma nova célula:dbutils.library.restartPython()
. - Para usar o Databricks SDK, Feature Serving requer
databricks-sdk
versão 0.18.0 ou acima. Para instalar manualmente a versão necessária, use%pip install databricks-sdk>=0.18.0
. Se estiver usando um notebook Databricks, o senhor deverá reiniciar o kernel Python executando este comando em uma nova célula:dbutils.library.restartPython()
.
Databricks Feature Serving fornece uma interface de usuário e várias opções programáticas para criar, atualizar, consultar e excluir pontos de extremidade. Este artigo inclui instruções para cada uma das opções a seguir:
- IU da Databricks
- API REST
- API do Python
- SDK da Databricks
Para usar o REST API ou MLflow Deployments SDK, o senhor deve ter um token Databricks API .
Como prática recomendada de segurança para cenários de produção, a Databricks recomenda que o senhor use tokens OAuth máquina a máquina para autenticação durante a produção.
Para testes e desenvolvimento, o site Databricks recomenda o uso de tokens de acesso pessoal pertencentes à entidade de serviço em vez de usuários do site workspace. Para criar tokens o site para uma entidade de serviço, consulte gerenciar tokens para uma entidade de serviço.
Autenticação para Feature Serving
Para obter informações sobre autenticação, consulte Autorização de acesso a Databricks recurso.
Crie um FeatureSpec
O site FeatureSpec
é um conjunto de recursos e funções definido pelo usuário. O senhor pode combinar recurso e funções em um FeatureSpec
. FeatureSpecs
são armazenados e gerenciados pelo site Unity Catalog e aparecem no Catalog Explorer.
As tabelas especificadas em um FeatureSpec
devem ser publicadas em uma tabela on-line ou em um armazenamento on-line de terceiros. Consulte Use online tables for tempo real Feature Serving ou Third-party online stores.
O senhor deve usar o pacote databricks-feature-engineering
para criar um FeatureSpec
.
from databricks.feature_engineering import (
FeatureFunction,
FeatureLookup,
FeatureEngineeringClient,
)
fe = FeatureEngineeringClient()
features = [
# Lookup column `average_yearly_spend` and `country` from a table in UC by the input `user_id`.
FeatureLookup(
table_name="main.default.customer_profile",
lookup_key="user_id",
feature_names=["average_yearly_spend", "country"]
),
# Calculate a new feature called `spending_gap` - the difference between `ytd_spend` and `average_yearly_spend`.
FeatureFunction(
udf_name="main.default.difference",
output_name="spending_gap",
# Bind the function parameter with input from other features or from request.
# The function calculates a - b.
input_bindings={"a": "ytd_spend", "b": "average_yearly_spend"},
),
]
# Create a `FeatureSpec` with the features defined above.
# The `FeatureSpec` can be accessed in Unity Catalog as a function.
fe.create_feature_spec(
name="main.default.customer_features",
features=features,
)
Criar um endpoint
O FeatureSpec
define o endpoint. Para obter mais informações, consulte Create custom servindo modelo endpoint, a documentação Python API ou a documentaçãoDatabricks SDK para obter detalhes.
Para cargas de trabalho que são sensíveis à latência ou que exigem altas consultas por segundo, a Servindo Modelo oferece otimização de rota no endpoint personalizado da Servindo Modelo, consulte Configurar otimização de rota no endpoint de serviço.
- REST API
- Databricks SDK - Python
- Python API
curl -X POST -u token:$DATABRICKS_API_TOKEN ${WORKSPACE_URL}/api/2.0/serving-endpoints \
-H 'Content-Type: application/json' \
-d '"name": "customer-features",
"config": {
"served_entities": [
{
"entity_name": "main.default.customer_features",
"workload_size": "Small",
"scale_to_zero_enabled": true
}
]
}'
from databricks.sdk import WorkspaceClient
from databricks.sdk.service.serving import EndpointCoreConfigInput, ServedEntityInput
workspace = WorkspaceClient()
# Create endpoint
workspace.serving_endpoints.create(
name="my-serving-endpoint",
config = EndpointCoreConfigInput(
served_entities=[
ServedEntityInput(
entity_name="main.default.customer_features",
scale_to_zero_enabled=True,
workload_size="Small"
)
]
)
)
from databricks.feature_engineering.entities.feature_serving_endpoint import (
ServedEntity,
EndpointCoreConfig,
)
fe.create_feature_serving_endpoint(
name="customer-features",
config=EndpointCoreConfig(
served_entities=ServedEntity(
feature_spec_name="main.default.customer_features",
workload_size="Small",
scale_to_zero_enabled=True,
instance_profile_arn=None,
)
)
)
Para ver o endpoint, clique em Serving na barra lateral esquerda da interface do usuário do Databricks. Quando o estado é Ready (Pronto ), o site endpoint está pronto para responder às consultas. Para saber mais sobre o Mosaic AI Model Serving, consulte Mosaic AI Model Serving.
Salvar o DataFrame ampliado na tabela de inferência
Para endpoints criados a partir de fevereiro de 2025, o senhor pode configurar o modelo de serviço endpoint para log o DataFrame aumentado que contém os valores de recurso pesquisados e os valores de retorno de função. O DataFrame é salvo na tabela de inferência do modelo atendido.
Para obter instruções sobre como definir essa configuração, consulte log recurso lookup DataFrames to inference tables.
Para obter informações sobre tabelas de inferência, consulte Tabelas de inferência para modelos de monitoramento e depuração.
Obter um endpoint
O senhor pode usar o SDK da Databricks ou a API do Python para obter os metadados e o status de um endpoint.
- Databricks SDK - Python
- Python API
endpoint = workspace.serving_endpoints.get(name="customer-features")
# print(endpoint)
endpoint = fe.get_feature_serving_endpoint(name="customer-features")
# print(endpoint)
Obter o esquema de um endpoint
Você pode usar
o REST API para obter o esquema de um endpoint. Para obter mais informações sobre o esquema endpoint, consulte Get a servindo modelo endpoint schema.
ACCESS_TOKEN=<token>
ENDPOINT_NAME=<endpoint name>
curl "https://example.databricks.com/api/2.0/serving-endpoints/$ENDPOINT_NAME/openapi" -H "Authorization: Bearer $ACCESS_TOKEN" -H "Content-Type: application/json"
Consultar um endpoint
O senhor pode usar a REST API, o MLflow Deployments SDK ou a Serving UI para consultar um endpoint.
O código a seguir mostra como configurar as credenciais e criar o cliente ao usar o SDK do MLflow Deployments.
# Set up credentials
export DATABRICKS_HOST=...
export DATABRICKS_TOKEN=...
# Set up the client
import mlflow.deployments
client = mlflow.deployments.get_deploy_client("databricks")
Como prática recomendada de segurança ao se autenticar com ferramentas, sistemas, scripts e aplicativos automatizados, a Databricks recomenda que você use tokens OAuth.
Se o senhor usar a autenticação de tokens de acesso pessoal, a Databricks recomenda usar o acesso pessoal tokens pertencente à entidade de serviço em vez de usuários workspace. Para criar tokens o site para uma entidade de serviço, consulte gerenciar tokens para uma entidade de serviço.
Consultar um site endpoint usando APIs
Esta seção inclui exemplos de consulta a um endpoint usando a API REST ou o SDK do MLflow Deployments.
- REST API
- MLflow Deployments SDK
curl -X POST -u token:$DATABRICKS_API_TOKEN $ENDPOINT_INVOCATION_URL \
-H 'Content-Type: application/json' \
-d '{"dataframe_records": [
{"user_id": 1, "ytd_spend": 598},
{"user_id": 2, "ytd_spend": 280}
]}'
The following example uses the predict()
API from the MLflow Deployments SDK. This API is Experimental and the API definition might change.
import mlflow.deployments
client = mlflow.deployments.get_deploy_client("databricks")
response = client.predict(
endpoint="test-feature-endpoint",
inputs={
"dataframe_records": [
{"user_id": 1, "ytd_spend": 598},
{"user_id": 2, "ytd_spend": 280},
]
},
)
Consultar um endpoint usando a UI
O senhor pode consultar um serviço endpoint diretamente da Serving UI. A interface do usuário inclui exemplos de códigos gerados que o senhor pode usar para consultar o endpoint.
-
Na barra lateral esquerda do site Databricks workspace, clique em Serving .
-
Clique no endpoint que o senhor deseja consultar.
-
No canto superior direito da tela, clique em Query endpoint (Consultar ponto de extremidade ).
-
Na caixa Request (Solicitação ), digite o corpo da solicitação no formato JSON.
-
Clique em Enviar solicitação .
// Example of a request body.
{
"dataframe_records": [
{ "user_id": 1, "ytd_spend": 598 },
{ "user_id": 2, "ytd_spend": 280 }
]
}
A caixa de diálogo do endpoint Query inclui um código de exemplo gerado em curl, Python e SQL. Clique na guia view e copie o código de exemplo.
Para copiar o código, clique no ícone de cópia no canto superior direito da caixa de texto.
Atualizar e endpoint
O senhor pode atualizar um endpoint usando a REST API, o Databricks SDK ou a Serving UI.
Atualize o site endpoint usando APIs
- REST API
- Databricks SDK - Python
curl -X PUT -u token:$DATABRICKS_API_TOKEN ${WORKSPACE_URL}/api/2.0/serving-endpoints/<endpoint_name>/config \
-H 'Content-Type: application/json' \
-d '"served_entities": [
{
"name": "customer-features",
"entity_name": "main.default.customer_features_new",
"workload_size": "Small",
"scale_to_zero_enabled": True
}
]'
workspace.serving_endpoints.update_config(
name="my-serving-endpoint",
served_entities=[
ServedEntityInput(
entity_name="main.default.customer_features",
scale_to_zero_enabled=True,
workload_size="Small"
)
]
)
Atualizar um endpoint usando a UI
Siga estas etapas para usar a Serving UI:
- Na barra lateral esquerda do site Databricks workspace, clique em Serving .
- Na tabela, clique no nome do endpoint que o senhor deseja atualizar. A tela do endpoint é exibida.
- No canto superior direito da tela, clique em Editar endpoint .
- Na caixa de diálogo Edit serving endpoint (Editar endpoint de serviço ), edite as configurações do endpoint conforme necessário.
- Clique em Atualizar para salvar suas alterações.
Excluir um endpoint
Essa ação é irreversível.
O senhor pode excluir um endpoint usando a REST API, o Databricks SDK, a Python API ou a Serving UI.
Excluir um endpoint usando APIs
- REST API
- Databricks SDK - Python
- Python API
curl -X DELETE -u token:$DATABRICKS_API_TOKEN ${WORKSPACE_URL}/api/2.0/serving-endpoints/<endpoint_name>
workspace.serving_endpoints.delete(name="customer-features")
fe.delete_feature_serving_endpoint(name="customer-features")
Excluir um endpoint usando a interface do usuário
Siga estas etapas para excluir um endpoint usando a Serving UI:
- Na barra lateral esquerda do site Databricks workspace, clique em Serving .
- Na tabela, clique no nome do endpoint que o senhor deseja excluir. A tela do endpoint é exibida.
- No canto superior direito da tela, clique no menu de kebab
e selecione Excluir.
Monitorar a integridade de um endpoint
Para obter informações sobre o logs e as métricas disponíveis para o endpoint Feature Serving, consulte Monitorar a qualidade do modelo e a saúde do endpoint.
Controle de acesso
Para obter informações sobre permissões no endpoint Feature Serving, consulte gerenciar permissões em seu modelo de serviço endpoint.
Exemplo de notebook
Este Notebook ilustra como usar o Databricks SDK para criar um Feature Serving endpoint usando Databricks Online Tables.