Servir varios modelos a un punto de conexión de servicio de modelo

En este artículo se describe cómo atender varios modelos en un punto de conexión de servicio de la CPU que usa el servicio de modelos de Azure Databricks.

Para atender varios modelos de IA generativa, como los que proporcionan los modelos externos, consulte Servir varios modelos externos a un punto de conexión.

Requisitos

Consulte Requisitos para obtener información sobre la creación de puntos de conexión de servicio de modelos.

Para comprender las opciones de control de acceso para los puntos de conexión de servicio de modelos y la guía de procedimientos recomendados para la administración de puntos de conexión, consulte Servicio de ACL de punto de conexión.

Creación de un punto de conexión y establecimiento de la división de tráfico inicial

Puede crear puntos de conexión de servicio de modelos con la API de servicio de Databricks Machine Learning o la interfaz de usuario de Databricks Machine Learning. Con un punto de conexión, puede servirse cualquier modelo de MLflow de Python que esté registrado en el registro de modelos.

El siguiente ejemplo de API crea un único punto de conexión con dos modelos y establece la división del tráfico del punto de conexión entre esos modelos. El modelo servido, current, hospeda la versión 1 de model-Ay recibe el 90 % del tráfico de punto de conexión, mientras que el otro modelo servido, challenger, hospeda la versión 1 de model-B y recibe el 10 % del tráfico de punto de conexión.

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

Actualización de la división del tráfico entre los modelos servidos

También puede actualizar la división del tráfico entre los modelos servidos. En el ejemplo de API siguiente se establece el modelo servido, current, para obtener el 50 % del tráfico del punto de conexión y el otro modelo, challenger, para obtener el 50 % restante del tráfico.

También puede realizar esta actualización desde la pestaña Servicio de la interfaz de usuario de Databricks Machine Learning mediante el botón Editar configuración.

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

Consulta de modelos individuales detrás de un punto de conexión

En algunos escenarios, es posible que desee consultar modelos individuales detrás del punto de conexión.

Puede hacerlo mediante:

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

Aquí se consulta el modelo de servicio específico. El formato de solicitud es el mismo que consultar el punto de conexión. Al consultar el modelo individual servido, se omite la configuración del tráfico.

En el contexto del ejemplo multi-model del punto de conexión, si todas las solicitudes se envían a /serving-endpoints/multi-model/served-models/challenger/invocations, el modelo de solicitud challenger atiende todas las solicitudes.