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 para servir modelos mediante la Serving API de Databricks Mosaic AI o la interfaz de usuario de Databricks Mosaic AI. 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-A
y 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 Mosaic AI 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.