gerenciamento de controle do modelo endpoint
Este artigo descreve como gerenciar endpoint do modelo de navegação usando a IU de serviço e a API REST. Consulte Servindo endpoint na referência da API REST.
Para criar um endpoint de modelo de serviço, use um dos seguintes procedimentos:
Obtenha o status do endpoint do modelo
Na IU de exibição , você pode verificar o status de um endpoint no indicador de estado do endpoint de exibição na parte superior da página de detalhes do seu endpoint.
O senhor pode verificar o status e os detalhes de um endpoint programaticamente usando a API REST ou o SDK do MLflow Deployments
GET /api/2.0/serving-endpoints/{name}
O exemplo a seguir cria um endpoint que serve a primeira versão do modelo my-ads-model
que está registrado no Unity Catalog registro de modelo. Você deve fornecer o nome completo do modelo, incluindo o catálogo principal e o esquema, como catalog.schema.example-model
.
No exemplo de resposta a seguir, o campo state.ready
é “READY”, o que significa que o endpoint está pronto para receber tráfego. O campo state.update_state
é NOT_UPDATING
e pending_config
não é mais retornado porque a atualização foi concluída com êxito.
{
"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 UI 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 endpoint de modelo de atividade
Para desabilitar a veiculação de um modelo, você pode excluir o endpoint em que ele é veiculado.
Você pode excluir um endpoint da página de detalhes do endpoint na IU do Serving .
Clique em Exibição na barra lateral.
Clique no endpoint que você deseja excluir.
Clique no menu 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
DELETE /api/2.0/serving-endpoints/{name}
from mlflow.deployments import get_deploy_client
client = get_deploy_client("databricks")
client.delete_endpoint(endpoint="chat")
Depure seu endpoint de modelo específico
Para depurar quaisquer problemas com o endpoint, você pode buscar:
logsde compilação do contêiner do servidor modelo
logsdo servidor modelo
Esses logs também podem ser acessados na endpoint UI tabna Logs .
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 modelo de um modelo de atendimento, você 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.
Obtém a lista de permissões no endpoint de serviço.
databricks permissions get servingendpoints <endpoint-id>
Conceder ao usuário jsmith@example.com
a permissão CAN QUERY no endpoint de serviço.
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.
Obter 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 da 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. O senhor 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 entrada. 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"
}
}
}
}
}
}
}
}
}
}
}
}