Compartilhar via


Fornecer vários modelos para um ponto de extremidade de Serviço de Modelo

Este artigo descreve como servir vários modelos para um ponto de extremidade de serviço de CPU que utiliza o Serviço de Modelo do Azure Databricks.

Para servir vários modelos de IA generativa, como os fornecidos por modelos externos, consulte Servir vários modelos externos para um ponto de extremidade.

Requisitos

Confira os Requisitos para a criação de ponto de extremidade de serviço de modelo.

Para entender as opções de controle de acesso para pontos de extremidade de serviço de modelo e diretrizes de melhores práticas para o gerenciamento de ponto de extremidade, consulte ACLs de pontos de extremidade de serviço.

Criar um ponto de extremidade e definir a divisão de tráfego inicial

Você pode criar pontos de extremidade de serviço de modelo com a API de serviço do Databricks Machine Learning ou a interface do usuário do Databricks Machine Learning. Um ponto de extremidade pode atender a qualquer modelo de MLflow do Python registrado no Registro de Modelo.

O exemplo de API a seguir cria um único ponto de extremidade com dois modelos e define o tráfego de ponto de extremidade dividido entre esses modelos. O modelo servido, current, hospeda a versão 1 de model-A e obtém 90% do tráfego do ponto de extremidade, enquanto o outro modelo atendido, challenger, hospeda a versão 1 de model-B e obtém 10% do tráfego do ponto de extremidade.

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"
            }
         ]
      }
   }
}

Atualizar a divisão de tráfego entre modelos fornecidos

Você também pode atualizar a divisão de tráfego entre os modelos fornecidos. O exemplo de API a seguir define o modelo servido, current, para obter 50% do tráfego do ponto de extremidade, e o outro modelo, challenger, para obter os 50% restantes do tráfego.

Você também pode fazer essa atualização na guia Serviço na interface do usuário 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 ponto de extremidade

Em alguns cenários, talvez você queira consultar modelos individuais por trás do ponto de extremidade.

Você pode fazer isso usando:

POST /serving-endpoints/{endpoint-name}/served-models/{served-model-name}/invocations

Aqui, o modelo fornecido específico é consultado. O formato de solicitação é o mesmo que consultar o ponto de extremidade. Ao consultar o modelo de serviço individual, as configurações de tráfego são ignoradas.

No contexto do exemplo de ponto de extremidade 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 servido por challenger.