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.
Verifique 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.
Adicionar uma política orçamentária para um modelo servindo endpoint
Visualização
Esse recurso está em Public Preview e não está disponível para atender a endpoints que atendem a modelos externos ou ao Foundation Model APIs cargas de trabalho pay-per-tokens.
As políticas de orçamento 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 para atribuir o uso do serverless, o senhor pode adicionar uma política de orçamento ao seu endpoint servindo modelo. Consulte Atributo serverless uso com políticas orçamentárias.
Durante a criação do modelo endpoint, o senhor pode selecionar a política de orçamento do endpointno menu Budget policy (Política de orçamento ) na Serving UI. Se tiver uma política de orçamento atribuída a você, todos os endpoints que criar serão atribuídos a essa política de orçamento, mesmo que não selecione uma política no menu Política de orçamento.
Se o senhor tiver MANAGE
permissões para um endpoint existente, poderá editar e adicionar uma política de orçamento a esse endpoint na página de detalhes do ponto de extremidade na interface do usuário.
Observação
Se uma política de orçamento tiver sido atribuída ao senhor, os endpoints existentes não serão automaticamente marcados com a política. O senhor deve atualizar manualmente os pontos de extremidade existentes se quiser anexar uma política de orçamento a eles.
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"
}
}
}
}
}
}
}
}
}
}
}
}