Servir vários modelos para um ponto de extremidade Model Serving
Este artigo descreve como servir vários modelos para um endpoint de serviço que utiliza Databricks Model Serving.
Requisitos
Consulte Requisitos para criação de terminal Model Serving .
Para entender as opções de controle de acesso para o endpoint do modelo Servindo e as orientações de práticas recomendadas para o gerenciamento do endpoint, consulte Servindo ACLs do endpoint .
Crie um endpoint e defina a divisão de tráfego inicial
Você pode criar endpoint de modelo interativo com a API Databricks Machine Learning. Um endpoint pode servir qualquer modelo Python MLflow registrado no Model Registry.
O exemplo de API a seguir cria um único endpoint com dois modelos e define a divisão do tráfego do endpoint entre esses modelos. O modelo servido, current
, hospeda a versão 1 de model-A
e obtém 90% do tráfego do endpoint, enquanto o outro modelo servido, challenger
, hospeda a versão 1 de model-B
e obtém 10% do tráfego do endpoint.
POST /api/2.0/serving-endpoints
{
"name":"multi-model"
"config":{
"served_entities":[
{
"name":"current",
"entity_name":"model-A",
"entity_version":"1",
"workload_size":"Small",
"scale_to_zero_enabled":true
},
{
"name":"challenger",
"entity_name":"model-B",
"entity_version":"1",
"workload_size":"Small",
"scale_to_zero_enabled":true
}
],
"traffic_config":{
"routes":[
{
"served_model_name":"current",
"traffic_percentage":"90"
},
{
"served_model_name":"challenger",
"traffic_percentage":"10"
}
]
}
}
}
Atualize a divisão de tráfego entre os modelos servidos
Você também pode atualizar a divisão de tráfego entre os modelos atendidos. O exemplo de API a seguir define o modelo fornecido, current
, para obter 50% do tráfego endpoint e o outro modelo, challenger
, para obter os 50% restantes do tráfego.
Você também pode fazer essa atualização na guia Servindo na IU do Databricks Machine Learning usando o botão Editar configuração .
PUT /api/2.0/serving-endpoints/{name}/config
{
"served_entities":[
{
"name":"current",
"entity_name":"model-A",
"entity_version":"1",
"workload_size":"Small",
"scale_to_zero_enabled":true
},
{
"name":"challenger",
"entity_name":"model-B",
"entity_version":"1",
"workload_size":"Small",
"scale_to_zero_enabled":true
}
],
"traffic_config":{
"routes":[
{
"served_model_name":"current",
"traffic_percentage":"50"
},
{
"served_model_name":"challenger",
"traffic_percentage":"50"
}
]
}
}
Consultar modelos individuais por trás de um endpoint
Em alguns cenários, você pode querer query modelos individuais por trás do endpoint.
Você pode fazer isso usando:
POST /serving-endpoints/{endpoint-name}/served-models/{served-model-name}/invocations
Aqui o modelo servido específico é query. O formato da solicitação é o mesmo que consultar o endpoint. Ao consultar o modelo servido individual, as configurações de tráfego são ignoradas.
No contexto do exemplo endpoint multi-model
, se todas as solicitações forem enviadas para /serving-endpoints/multi-model/served-models/challenger/invocations
, todas as solicitações serão atendidas pelo modelo atendido challenger
.