Поделиться через


Обслуживание нескольких моделей в конечной точке обслуживания моделей

В этой статье описывается, как обслуживать несколько моделей в конечной точке обслуживания ЦП, которая использует службу моделей 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 .