Обслуживание нескольких моделей в конечной точке обслуживания моделей
В этой статье описывается, как обслуживать несколько моделей в конечной точке обслуживания ЦП, которая использует службу моделей Azure Databricks.
Для обслуживания нескольких моделей генерированного ИИ, таких как предоставляемые внешними моделями, см. статью "Обслуживание нескольких внешних моделей в конечной точке".
Требования
См. сведения о требованиях к созданию конечной точки обслуживания модели.
Сведения о параметрах управления доступом для конечных точек обслуживания моделей и рекомендации по управлению конечными точками см. в статье "Обслуживание списков управления конечными точками".
Создание конечной точки и настройка первоначального разделения трафика
Вы можете создать конечные точки обслуживания моделей с помощью API обслуживания Мозаики Databricks или пользовательского интерфейса ИИ Для Мозаики Databricks. Конечная точка может обслуживать любую модель Python MLflow, зарегистрированную в реестре моделей.
Следующий пример API создает одну конечную точку с двумя моделями и задает трафик конечной точки, разделенный между этими моделями. Обслуживаемая модель, current
узлы версии 1 и получает 90 % трафика конечной точки, а другая обслуживаемая модель, challenger
узлы версии 1 model-A
model-B
и получает 10 % трафика конечной точки.
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"
}
]
}
}
}
Обновление разделения трафика между обслуживами моделями
Вы также можете обновить трафик, разделенный между обслуживаемой моделями. Следующий пример API задает обслуживаемую модель, current
чтобы получить 50% трафика конечной точки и другой модели, challenger
чтобы получить оставшийся 50% трафика.
Вы также можете сделать это обновление на вкладке "Обслуживание" в пользовательском интерфейсе Databricks Mosaic AI с помощью кнопки "Изменить конфигурацию".
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"
}
]
}
}
Запрос отдельных моделей за конечной точкой
В некоторых сценариях может потребоваться запросить отдельные модели за конечной точкой.
Это можно сделать с помощью:
POST /serving-endpoints/{endpoint-name}/served-models/{served-model-name}/invocations
Здесь запрашивается конкретная обслуживаемая модель. Формат запроса совпадает с запросом конечной точки. При запросе отдельной обслуживаемой модели параметры трафика игнорируются.
В контексте примера конечной multi-model
точки, если все запросы отправляются /serving-endpoints/multi-model/served-models/challenger/invocations
, все запросы обслуживаются моделью challenger
.