gerenciar o atendimento ao modelo endpoint
Este artigo descreve como gerenciar o endpoint de modelo de serviço usando a UI de serviço e REST API. Consulte Serving endpoint na referência REST API .
Para criar um endpoint de modelo de serviço, use uma das seguintes opções:
Obter o status do modelo endpoint
Na UI de serviço , o senhor pode verificar o status de um endpoint no indicador de estado Serving endpoint na parte superior da página de detalhes do seu endpoint.
Verifique o status e os detalhes de um endpoint programaticamente usando a API REST ou o SDK do MLflow Deployments:
- REST API
- MLflow Deployments SDK
GET /api/2.0/serving-endpoints/{name}
The following example creates an endpoint that serves the first version of the my-ads-model
model that is registered in the Unity Catalog model registry. You must provide the full model name including parent catalog and schema such as, catalog.schema.example-model
.
In the following example response, the state.ready
field is “READY”, which means the endpoint is ready to receive traffic. The state.update_state
field is NOT_UPDATING
and pending_config
is no longer returned because the update was finished successfully.
{
"name": "unity-model-endpoint",
"creator": "customer@example.com",
"creation_timestamp": 1666829055000,
"last_updated_timestamp": 1666829055000,
"state": {
"ready": "READY",
"update_state": "NOT_UPDATING"
},
"config": {
"served_entities": [
{
"name": "my-ads-model",
"entity_name": "myCatalog.mySchema.my-ads-model",
"entity_version": "1",
"workload_size": "Small",
"scale_to_zero_enabled": false,
"state": {
"deployment": "DEPLOYMENT_READY",
"deployment_state_message": ""
},
"creator": "customer@example.com",
"creation_timestamp": 1666829055000
}
],
"traffic_config": {
"routes": [
{
"served_model_name": "my-ads-model",
"traffic_percentage": 100
}
]
},
"config_version": 1
},
"id": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"permission_level": "CAN_MANAGE"
}
from mlflow.deployments import get_deploy_client
client = get_deploy_client("databricks")
endpoint = client.get_endpoint(endpoint="chat")
assert endpoint == {
"name": "chat",
"creator": "alice@company.com",
"creation_timestamp": 0,
"last_updated_timestamp": 0,
"state": {...},
"config": {...},
"tags": [...],
"id": "88fd3f75a0d24b0380ddc40484d7a31b",
}
Parar de servir o modelo endpoint
O senhor pode interromper temporariamente um modelo de serviço endpoint e começar a usá-lo mais tarde. Quando um endpoint é interrompido, o provisionamento de recursos para ele é encerrado e o endpoint não consegue atender às consultas até que seja iniciado novamente. Somente os pontos de extremidade que atendem a modelos personalizados, não são otimizados para rotas e não têm atualizações em andamento podem ser interrompidos. Os pontos de extremidade interrompidos não contam para a cota de recursos. As consultas enviadas a um endpoint interrompido retornam um erro 400.
O senhor pode interromper um endpoint na página de detalhes do endpoint na IU de serviço .
- Clique no endpoint que o senhor deseja interromper.
- Clique em Parar no canto superior direito.
Como alternativa, o senhor pode interromper um endpoint de serviço programaticamente usando a API REST da seguinte forma:
POST /api/2.0/serving-endpoints/{name}/config:stop
Quando o senhor estiver pronto para começar a parar de servir o modelo endpoint, poderá fazê-lo na página de detalhes do endpointna UI de serviço .
- Clique no endereço endpoint que o senhor deseja começar.
- Clique em começar no canto superior direito.
Como alternativa, o senhor pode começar a servir endpoint de forma programática usando o REST API da seguinte forma:
POST /api/2.0/serving-endpoints/{name}/config:start
Excluir um modelo de serviço endpoint
Para desativar a veiculação de um modelo, o senhor pode excluir o endpoint no qual ele é veiculado.
O senhor pode excluir um endpoint na página de detalhes do endpointna IU de serviço .
- Clique em Servindo na barra lateral.
- Clique no endpoint que o senhor deseja excluir.
- Clique no menu de kebab na parte superior e selecione Excluir.
Como alternativa, o senhor pode excluir um endpoint de serviço programaticamente usando a API REST ou o SDK do MLflow Deployments
- REST API
- MLflow Deployments SDK
DELETE /api/2.0/serving-endpoints/{name}
from mlflow.deployments import get_deploy_client
client = get_deploy_client("databricks")
client.delete_endpoint(endpoint="chat")
Depurar seu modelo de serviço endpoint
Para depurar quaisquer problemas com o endpoint, o senhor pode buscar:
- Construção do contêiner do servidor modelo logs
- Modelo de servidor logs
Esses logs também podem ser acessados na interface do usuário do endpoint nos registros tab.
Para a construção logs de um modelo servido, o senhor pode usar a seguinte solicitação. Para obter mais informações, consulte o guia de depuração para manutenção do modelo.
GET /api/2.0/serving-endpoints/{name}/served-models/{served-model-name}/build-logs
{
“config_version”: 1 // optional
}
Para os logs do servidor de modelos de um modelo de serviço, o senhor pode usar a seguinte solicitação:
GET /api/2.0/serving-endpoints/{name}/served-models/{served-model-name}/logs
{
“config_version”: 1 // optional
}
gerenciar permissões em seu modelo de serviço endpoint
O senhor deve ter pelo menos a permissão CAN MANAGE em um endpoint de serviço para modificar as permissões. Para obter mais informações sobre os níveis de permissão, consulte Serving endpoint ACLs.
Obter a lista de permissões no endpoint de serviço.
databricks permissions get servingendpoints <endpoint-id>
Conceda ao usuário jsmith@example.com
a permissão CAN QUERY no endpoint de atendimento.
databricks permissions update servingendpoints <endpoint-id> --json '{
"access_control_list": [
{
"user_name": "jsmith@example.com",
"permission_level": "CAN_QUERY"
}
]
}'
O senhor também pode modificar as permissões do endpoint de atendimento usando a API de permissões.
Adicionar uma política orçamentária serverless para um modelo de serviço endpoint
Visualização
Esse recurso está em Public Preview e não está disponível para o endpoint de atendimento que atende a modelos externos.
As políticas de orçamento sem servidor permitem que sua organização aplique tags personalizadas no uso do serverless para atribuição de faturamento granular. Se o seu workspace usa políticas de orçamento serverless para atribuir o uso do serverless, o senhor pode adicionar uma política de orçamento serverless ao seu endpoint servindo modelo. Consulte Uso de atributos com as políticas de orçamento do serverless.
endpoint Durante a criação do modelo endpoint, o senhor pode selecionar a política de orçamento do serverless no menu Budget policy (Política de orçamento ) na Serving UI. Se tiver uma política de orçamento serverless atribuída a você, todos os pontos de extremidade que criar serão atribuídos a essa política de orçamento serverless, mesmo que você não selecione uma política no menu Política de orçamento .
Se o senhor tiver permissões MANAGE
para um endpoint existente, poderá editar e adicionar uma política de orçamento serverless a esse endpoint na página de detalhes do ponto de extremidade na interface do usuário.
Se o senhor tiver recebido uma política de orçamento serverless, os endpoints existentes não serão automaticamente marcados com a política. O senhor deve atualizar manualmente o endpoint existente se quiser anexar uma política de orçamento serverless a ele.
Obtenha um esquema servindo modelo endpoint
Visualização
O suporte para atender a esquemas de consulta de endpoint está em Public Preview. Essa funcionalidade está disponível nas regiões do modelo servindo.
Um esquema de consulta endpoint é uma descrição formal do serviço endpoint usando a especificação padrão da OpenAPI no formato JSON. Ele contém informações sobre o endpoint, incluindo o caminho do endpoint, detalhes para consultar o endpoint, como o formato do corpo da solicitação e da resposta, e o tipo de dados de cada campo. Essas informações podem ser úteis em cenários de reprodutibilidade ou quando o senhor precisar de informações sobre o endpoint, mas não for o criador ou proprietário original do endpoint.
Para obter o esquema servindo modelo endpoint, o modelo servido deve ter um registro de assinatura de modelo e o endpoint deve estar em um estado READY
.
Os exemplos a seguir demonstram como obter programaticamente o esquema servindo modelo endpoint usando o REST API. Para conhecer os esquemas Feature Serving endpoint , consulte O que é Databricks Feature Serving?
O esquema retornado pela API está no formato de um objeto JSON que segue a especificação OpenAPI.
ACCESS_TOKEN="<endpoint-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"
Detalhes da resposta do esquema
A resposta é uma especificação OpenAPI no formato JSON, normalmente incluindo campos como openapi
, info
, servers
e paths
. Como a resposta do esquema é um objeto JSON, o senhor pode analisá-la usando linguagens de programação comuns e gerar código de cliente a partir da especificação usando ferramentas de terceiros.
Você também pode visualizar a especificação OpenAPI usando ferramentas de terceiros, como o Swagger Editor.
Os principais campos da resposta incluem:
- O campo
info.title
mostra o nome do endpoint de atendimento. - O campo
servers
sempre contém um objeto, normalmente o campourl
, que é a url base do endpoint. - O objeto
paths
na resposta contém todos os caminhos suportados para um endpoint. A chave no objeto é o URL do caminho. Cadapath
pode suportar vários formatos de entradas. Essas entradas estão listadas no campooneOf
.
A seguir, um exemplo de resposta de esquema de endpoint:
{
"openapi": "3.1.0",
"info": {
"title": "example-endpoint",
"version": "2"
},
"servers": [{ "url": "https://example.databricks.com/serving-endpoints/example-endpoint" }],
"paths": {
"/served-models/vanilla_simple_model-2/invocations": {
"post": {
"requestBody": {
"content": {
"application/json": {
"schema": {
"oneOf": [
{
"type": "object",
"properties": {
"dataframe_split": {
"type": "object",
"properties": {
"columns": {
"description": "required fields: int_col",
"type": "array",
"items": {
"type": "string",
"enum": ["int_col", "float_col", "string_col"]
}
},
"data": {
"type": "array",
"items": {
"type": "array",
"prefixItems": [
{
"type": "integer",
"format": "int64"
},
{
"type": "number",
"format": "double"
},
{
"type": "string"
}
]
}
}
}
},
"params": {
"type": "object",
"properties": {
"sentiment": {
"type": "number",
"format": "double",
"default": "0.5"
}
}
}
},
"examples": [
{
"columns": ["int_col", "float_col", "string_col"],
"data": [
[3, 10.4, "abc"],
[2, 20.4, "xyz"]
]
}
]
},
{
"type": "object",
"properties": {
"dataframe_records": {
"type": "array",
"items": {
"required": ["int_col", "float_col", "string_col"],
"type": "object",
"properties": {
"int_col": {
"type": "integer",
"format": "int64"
},
"float_col": {
"type": "number",
"format": "double"
},
"string_col": {
"type": "string"
},
"becx_col": {
"type": "object",
"format": "unknown"
}
}
}
},
"params": {
"type": "object",
"properties": {
"sentiment": {
"type": "number",
"format": "double",
"default": "0.5"
}
}
}
}
}
]
}
}
}
},
"responses": {
"200": {
"description": "Successful operation",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"predictions": {
"type": "array",
"items": {
"type": "number",
"format": "double"
}
}
}
}
}
}
}
}
}
}
}
}