Перенесите свои рабочие нагрузки машинного обучения в производство

Одно дело иметь работающую конечную точку для логического вывода. Другое дело — убедиться, что конечная точка может обрабатывать ожидаемый трафик. С Конечными точками SageMaker Real-Time необходимо учитывать множество факторов, когда дело доходит до запуска моделей в производство. Какой тип экземпляра вы используете для конечной точки? Что еще более важно для этого варианта использования, сколько экземпляров у вас есть для поддержки конечной точки?

В этом посте мы рассмотрим AutoScaling SageMaker Endpoints для обработки трафика. В самой простой форме у вас может быть конечная точка SageMaker в реальном времени, поддерживаемая одним экземпляром. Иногда этот экземпляр может перегружаться, что может привести к сбоям и ошибкам вывода из вашей конечной точки. Чтобы бороться с этим, вы можете создать политику AutoScaling, которая поможет вашим инстансам разветвляться на основе показателей CloudWatch, таких как количество вызовов на инстанс или использование ЦП.

Для примера в сегодняшней статье мы создадим политику AutoScaling на развернутой конечной точке Amazon XGBoost. Чтобы получить пошаговое руководство по развертыванию алгоритма Amazon XGBoost, следуйте этой статье сначала.

ПРИМЕЧАНИЕ.Для тех из вас, кто не знаком с AWS, убедитесь, что вы создали учетную запись по следующей ссылке, если хотите продолжить. В этой статье предполагается средний уровень знаний об AWS и SageMaker.

Оглавление

  1. Параметры автомасштабирования
  2. Разверните конечную точку XGBoost
  3. Конечная точка автомасштабирования
  4. Дополнительные ресурсы и заключение

1. Параметры автомасштабирования

Есть несколько разных способов масштабирования конечных точек; различные параметры политики AutoScaling определены ниже.

Масштабирование отслеживания целей: с помощью отслеживания целей вы можете указать показатель для отслеживания. Для SageMaker проверьте поддерживаемые метрики CloudWatch, и вы можете выбрать один из них и отслеживать его. Вы можете установить пороговое значение для этой метрики, и если оно будет достигнуто, оно может масштабироваться, как вы определили. Обратите внимание, что вы также можете определить собственные показатели с помощью SageMaker.

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

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

Для нашего конкретного примера мы будем работать с масштабированием отслеживания целей. Чтобы понять все другие доступные варианты масштабирования, ознакомьтесь с документацией.

2. Разверните конечную точку XGBoost

Давайте быстро рассмотрим развертывание одного из алгоритмов, предоставленных Amazon: XGBoost. Мы будем использовать его для варианта использования регрессии с набором данных Abalone. Для более глубокого изучения каждого из шагов ознакомьтесь с моей предыдущей статьей, в которой более подробно рассматривается использование алгоритма для обучения и развертывания. В этом разделе мы быстро пробежимся по развертыванию модели и пропустим процесс обучения.

Мы будем использовать Boto3 Python SDK для работы с клиентом SageMaker для развертывания модели. Первый шаг — получение данных нашей модели и создание модели SageMaker.

Затем мы можем использовать нашу модель SageMaker для определения нашей конфигурации конечной точки.

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

Теперь у нас создана конечная точка, и мы можем передать образец точки данных, чтобы протестировать вызов модели для вывода.

3. Конечная точка автомасштабирования

Теперь мы можем сосредоточиться на определении политики масштабирования для обработки трафика. Мы будем использовать политику TargetTracking, а метрика, на которой мы сосредоточимся, будет InvocationsPerInstance. Мы можем установить порог для 10 вызовов на экземпляр. Мы можем определить эту политику с помощью Boto3 Python SDK и клиента AutoScaling.

Обратите внимание, что мы определили максимальную емкость как 4 экземпляра с минимум 1 экземпляром за нашей конечной точкой. Теперь мы можем определить порог, целевую метрику, а также время масштабирования и масштабирования. Эти два раза будут означать, сколько времени потребуется нашим экземплярам для масштабирования, а затем обратного масштабирования, если наш порог в отношении вызовов для каждого экземпляра не достигнут.

Теперь мы можем протестировать эту политику с помощью стресс-тестирования. Мы будем использовать вызов вызываемой конечной точки Boto3 и отправлять запросы в течение определенной продолжительности. Помните, что наш период масштабирования занимает 60 секунд.

Конечная точка должна вызываться в течение 250 секунд, мы можем отслеживать это с помощью CloudWatch Invocation Metrics для нашей конкретной конечной точки на консоли SageMaker.

Теперь мы можем отслеживать графики CloudWatch, когда наша конечная точка подвергается нагрузке в течение этих 250 секунд.

Мы можем масштабировать определенные интервалы, чтобы увидеть, как наша конечная точка подвергается все большему и большему стрессу.

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

Через некоторое время вы должны увидеть, что конечная точка была обновлена ​​и теперь имеет четыре экземпляра.

4. Дополнительные ресурсы и заключение

Справочный блог: https://aws.amazon.com/blogs/machine-learning/configuring-autoscaling-inference-endpoints-in-amazon-sagemaker/

Пример кода: https://github.com/RamVegiraju/SageMaker-Deployment/blob/master/AdvancedFunctionality/AutoScaling/XGBoost-ASG/XGBoost-Abalone.ipynb

SageMaker AutoScaling помогает запускать модели в производство различными способами. Благодаря множеству вариантов масштабирования, а также подробному мониторингу CloudWatch вы можете определить свою политику на основе того, что вы ожидаете в отношении своего трафика.

Еще одна полезная функция, которую стоит проверить, — SageMaker Inference Recommender. Эта новая функция помогает проводить нагрузочное тестирование и выбирать оптимальные типы экземпляров для вашей конечной точки. Я прикрепил еще несколько ресурсов ниже, если вас интересует больше контента, связанного с SageMaker.

Если вам понравилась эта статья, не стесняйтесь связаться со мной в LinkedIn и подписаться на мою Информационную рассылку. Если вы новичок в Medium, зарегистрируйтесь с помощью моего Реферала для участников.