Servir vários modelos para um ponto de extremidade Model Serving

Este artigo descreve como servir vários modelos para uma CPU servindo endpoint que utiliza Databricks servindo modelo.

Para servir vários modelos de IA generativos, como os fornecidos por modelos externos, consulte Servir vários modelos externos para um endpoint.

Requisitos

Consulte Requisitos para a criação do modelo endpoint.

Para entender as opções de controle de acesso para o endpoint modelo Servindo e as orientações de práticas recomendadas para o gerenciamento endpoint, consulte Servindo endpoint ACLs.

Crie um endpoint e defina a divisão de tráfego inicial

O Databricks Machine Learning senhor pode criar o endpoint servindo modelo com o servindo API ou a Databricks Machine Learning UI. Um endpoint pode atender a qualquer modelo registrado do 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.