Сократите задержку вывода реального времени с использованием стратегий маршрутизации Amazon SageMaker

Улучшите производительность вывода в реальном времени с помощью маршрутизации в Amazon SageMaker

Amazon SageMaker делает развертывание моделей машинного обучения (ML) простым для реального вывода и предлагает широкий выбор экземпляров ML с использованием центральных процессоров и ускорителей, таких как AWS Inferentia. В качестве полностью управляемого сервиса вы можете масштабировать развертывание модели, минимизировать затраты на вывод, и более эффективно управлять моделями в производственной среде, снижая операционные нагрузки. В режиме реального времени SageMaker-эндпоинт распределен на экземпляры HTTPs и ML, которые развертываются в нескольких доступных зонах для обеспечения высокой доступности. Расширяемость приложения SageMaker позволяет динамически настраивать количество экземпляров ML для модели в ответ на изменение рабочей нагрузки. Эндпоинт единообразно распределяет входящие запросы на экземпляры ML с использованием алгоритма round-robin.

Когда модели машинного обучения, работающие на экземплярах, получают API-запросы от большого числа клиентов, случайное распределение запросов может хорошо работать, когда нет большой изменчивости в запросах и ответах. Но в системах с обобщенной нагрузкой ИИ запросы и ответы могут сильно изменяться. В таких случаях часто желательно балансировать нагрузку, учитывая возможности и использование экземпляра, а не случайную балансировку нагрузки.

В этой статье мы рассмотрим стратегию маршрутизации с использованием механизма для обработки наименее оправданных запросов (Least Outstanding Requests, LOR) в SageMaker и как она может уменьшить задержку для определенного типа рабочих нагрузок вывода в реальном времени, учитывая возможности и использование экземпляров ML. Мы расскажем о ее преимуществах по сравнению с механизмом маршрутизации по умолчанию и о том, как включить LOR для развертывания ваших моделей. Наконец, мы представим сравнительный анализ улучшения времени отклика с использованием LOR по сравнению с механизмом маршрутизации по умолчанию – случайной маршрутизацией.

Стратегия SageMaker LOR

По умолчанию эндпоинты SageMaker имеют случайную стратегию маршрутизации. Теперь SageMaker поддерживает стратегию LOR, которая позволяет SageMaker оптимально направлять запросы к экземпляру, наилучшим образом подходящему для обслуживания этого запроса. SageMaker делает это возможным, контролируя нагрузку экземпляров, находящихся за вашим эндпоинтом, а также моделей или компонент вывода, которые развернуты на каждом экземпляре.

Следующая интерактивная диаграмма показывает стратегию маршрутизации по умолчанию, когда запросы, поступающие на модельные эндпоинты, перенаправляются случайным образом к экземплярам ML.

Следующая интерактивная диаграмма показывает стратегию направления, в которой SageMaker будет направлять запрос к экземпляру с наименьшим количеством оставшихся запросов.

В целом, стратегия LOR работает хорошо для фундаментальных моделей или моделей обобщенного ИИ, когда ваша модель отвечает в сотнях миллисекунд до нескольких минут. Если время отклика вашей модели снижается (до сотен миллисекунд), вы можете получить больше пользы от случайной маршрутизации. В любом случае, мы рекомендуем вам протестировать и определить наилучший алгоритм маршрутизации для ваших рабочих нагрузок.

Как настроить стратегии маршрутизации SageMaker

SageMaker теперь позволяет установить параметр RoutingStrategy при создании EndpointConfiguration для эндпоинтов. Различные значения параметра RoutingStrategy, поддерживаемые SageMaker, включают:

  • LEAST_OUTSTANDING_REQUESTS
  • RANDOM

Ниже приведен пример развертывания модели на вычислительном эндпоинте с включенной стратегией LOR:

  1. Создайте конфигурацию эндпоинта, установив RoutingStrategy как LEAST_OUTSTANDING_REQUESTS:

    endpoint_config_response = sm_client.create_endpoint_config(    EndpointConfigName=endpoint_config_name,    ProductionVariants=[        {            "VariantName": "variant1",            "ModelName": model_name,            "InstanceType": "instance_type",            "InitialInstanceCount": initial_instance_count,  …..            "RoutingConfig": {                'RoutingStrategy': 'LEAST_OUTSTANDING_REQUESTS'}        },    ],)
  2. Создайте эндпоинт, используя конфигурацию эндпоинта (без изменений):

    create_endpoint_response = sm_client.create_endpoint(    EndpointName="endpoint_name",     EndpointConfigName="endpoint_config_name")

Результаты производительности

Мы провели тестирование производительности, чтобы измерить время задержки и пропускную способность от начала до конца вывода модели codegen2-7B, размещенной на экземплярах ml.g5.24xl с использованием маршрутизации по умолчанию и умного маршрута. Модель CodeGen2 относится к семейству авторегрессионных языковых моделей и генерирует исполняемый код при указании английских подсказок.

В нашем анализе мы увеличили количество экземпляров ml.g5.24xl за каждым конечным пунктом для каждого тестового запуска при увеличении числа одновременных пользователей, как показано в следующей таблице.

Тест Количество одновременных пользователей Количество экземпляров
1 4 1
2 20 5
3 40 10
4 60 15
5 80 20

Мы измерили временную задержку P99 от начала до конца для обоих конечных пунктов и обнаружили улучшение от 4 до 33%, когда количество экземпляров было увеличено с 5 до 20, как показано на следующем графике.

Аналогично было обнаружено улучшение пропускной способности в минуту на экземпляре от 15 до 16% при увеличении количества экземпляров с 5 до 20.

Это показывает, что умная маршрутизация способна улучшить распределение трафика между конечными пунктами, что приводит к улучшению времени задержки от начала до конца и общей пропускной способности.

Заключение

В этой статье мы объяснили стратегии маршрутизации SageMaker и новую опцию включения маршрутизации LOR. Мы объяснили, как включить LOR и как это может принести пользу вашим моделям. Наши тесты производительности показали улучшение времени задержки и пропускной способности во время реального вывода. Чтобы узнать больше о функциях маршрутизации SageMaker, обратитесь к документации. Мы рекомендуем вам оценить нагрузку на вывод и определить оптимальную конфигурацию маршрутизации.