Автор: Али Яздизаде Харрази

Почему вывод бессерверного машинного обучения?

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

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

Здесь Serverless Inference сводится к действиям, когда вы платите только за то, что использовали, а не за время простоя. В нашем посте Бессерверные архитектуры — сделайте паузу, подумайте, а затем перепроектируйте мы говорили о преимуществах бессерверной архитектуры в целом. Здесь мы сосредоточимся на вариантах его использования в выводах машинного обучения.

Чтобы понять, насколько рентабельным может быть бессерверный вывод, здесь мы сравнили конечную точку рабочей нагрузки с 10 000 запросов в день, используя как бессерверную AWS Lambda, так и обычную конечную точку SageMaker. Для обоих подходов мы использовали модель Random Forest Regressor от Skearn.

Тип архитектуры Количество запросов в день Задержка каждого запроса Объем выделенной памяти Общая оценка затрат в месяц (долл. США)

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

Каковы параметры API в реальном времени?

В большинстве случаев вам нужно развернуть свою модель как REST-API, чтобы другие могли отправить запрос POST и получить ответ с малой задержкой (обычно не более секунды). В этой части будут рассмотрены доступные варианты создания такого API.

АВС Лямбда

  • Как работает этот сервис?

Lambda — это управляемая событиями бессерверная вычислительная платформа, которая запускает предоставленный вами сценарий в ответ на триггер. Существует множество вариантов запуска лямбда-функции. Для вывода машинного обучения обычно это вызов REST-API, который поступает от API-Gateway к Lambda. Наша лямбда-функция получает входные данные и возвращает прогнозы, используя нашу обученную модель.

Обратите внимание, что есть два способа развернуть функцию Lambda. Один из вариантов — использовать ZIP-файл, размер которого не может превышать 50 МБ (размер в разархивированном виде не должен превышать 250 МБ) и содержать весь код логического вывода и модель. Другой вариант — через образ Docker из ECR, который может иметь размер до 10 ГБ, поэтому у вас есть больше места для артефактов и зависимостей вашей модели.

  • Как цены?

AWS взимает плату за комбинацию количества запросов, которые вы отправили в лямбда-выражение, а также за память и время, затраченное на каждый запрос. Вы можете выделить любой объем памяти от 128 МБ до 10 240 МБ (с шагом 1 МБ) для вашей функции.

Например, при загрузке 1 млн запросов, каждый из которых занимает около 200 мс, с выделенной памятью 1024 МБ, цена Lambda на базе ARM будет следующей:

1M * 0,2 + 1M * 200 мс * 0,001 * 0,0000133334 = 0,20 USD (ежемесячная плата за запросы) + 2,67 USD (ежемесячная плата за вычисления) = 2,87 USD.

  • Для каких сценариев эта услуга идеальна?

Lambda идеально подходит для API в реальном времени с непредсказуемой нагрузкой запросов, поскольку она может быстро масштабироваться. Кроме того, его цена подходит для типа запроса, обработка которого занимает короткое время. Так что, если вы согласны с его ограничениями (ограничение памяти 10 ГБ и количество процессоров), Lambda может быть хорошим вариантом. Однако одним из его недостатков для вывода машинного обучения является необходимость разработки конвейера CI/CD для обновления лямбда-функции всякий раз, когда вы обновляете/переобучаете модель.

Бессерверный инференс Amazon SageMaker

  • Как работает этот сервис?

Представленный в re:invent 2021, SageMaker serverless inference — это новый вариант развертывания вашей модели в SageMaker. В отличие от традиционных вариантов развертывания, в которых используются определенные экземпляры EC2, SageMaker Inference использует Lambda для обслуживания вашей модели. Следовательно, он имеет как преимущества, так и ограничения Lambda, а также лучшую целостность со средой SageMaker, которая предлагает вам лучший рабочий процесс CI/CD через SageMaker Projects и SageMaker Pipelines.

  • Как цены?

SageMaker использует немного другую цену, чем Lambda. Он взимает плату на основе комбинации миллисекунд, которые требуются для обработки, и объема данных, которые вы отправляете/получаете. Подробнее см. на странице с ценами на SageMaker.

  • Для каких сценариев эта услуга идеальна?

Если ваша команда использует сервисы SageMaker, этот новый вариант более прост в развертывании, чем Lambda. Обратите внимание, что для вывода SageMaker используется более низкий предел памяти (6144 МБ вместо 10 ГБ), поэтому, если 6144 МБ недостаточно для вашей модели, вам, вероятно, следует рассмотреть Lambda или обычную конечную точку SageMaker.

Каковы параметры пакетного преобразования?

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

АМС Фаргейт

  • Как работает этот сервис?

AWS Fargate — это бессерверная служба оркестрации контейнеров, которая помогает развертывать и масштабировать ваше контейнерное приложение и совместима с сервисом Amazon ECS. Если вы хотите использовать Fargate для API вывода в реальном времени, это будет похоже на развертывание докеризованного веб-приложения на EC2, но без сервера. Но, как мы увидим в части ценообразования, AWS Fargate больше оптимизирован для пакетной обработки заданий. Эти задания либо запускаются периодически, либо по триггеру события и завершаются через некоторое время. AWS Fargate обычно используется для задач продолжительностью более 15 минут, которые Lambda не поддерживает.

  • Как цены?

Fargate взимает плату за комбинацию виртуальных процессоров (vCPU) и используемой памяти. Поскольку он предназначен для больших задач, он имеет минимум 1 минуту для выставления счетов. Для большего виртуального ЦП у вас есть дополнительные варианты памяти, до 30 ГБ памяти для 4 виртуальных ЦП.

  • Для каких сценариев эта услуга идеальна?

Таким образом, Fargate — не лучший выбор для API реального времени. Предположим, у вас есть пакетное задание, и вам также нужна хорошая настройка для вашей среды, и вы не хотите использовать SageMaker Batch Transform. В этом случае Fargate может быть хорошим вариантом.

Пакетное преобразование Amazon SageMaker

  • Как работает этот сервис?

SageMaker Batch Transform — это часть сервисов логического вывода SageMaker, помогающая прогнозировать большие наборы данных, которые не обязательно должны выполняться в реальном времени. Технически он не является «бессерверным», так как работает так же, как SageMaker Endpoint, но вместо того, чтобы открывать API снаружи, он загружает входные данные из S3, получает прогноз от загруженной модели для этих данных, используя запрос POST к локальному хосту, и сохраняет результат в S3. Это может хорошо масштабироваться в зависимости от вашего варианта использования, поскольку вы можете увеличить количество экземпляров и отправлять запросы POST для пакета входных данных, а не по одному за раз.

  • Как цены?

При использовании SageMaker Batch Transform с вас взимается плата в зависимости от того, сколько времени занимает выполнение задания, и от выбранного вами типа инстанса. Подробнее см. на странице с ценами на SageMaker.

  • Для каких сценариев эта услуга идеальна?

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

Заключение

Здесь мы обсудили четыре разных сервиса AWS для бессерверного вывода машинного обучения. Таким образом, если у вас непредсказуемый шаблон загрузки запросов и вашей модели не требуется GPU или огромный объем памяти для работы, вам следует рассмотреть Lambda или Sagemaker Serverless Inference. Если вам не нужна конечная точка в реальном времени, вы можете использовать SageMaker Batch Transform или создать свою версию с помощью Fargate.

Следующая таблица суммирует то, что мы рассмотрели в этом посте:

Столбец затрат был рассчитан для одного дня с 10 000 запросов. Каждый запрос обрабатывается 200 мс и имеет размер 1 КБ как для ввода, так и для вывода. Для модели случайного леса выбраны минимальные значения ЦП и памяти.

Первоначально опубликовано на https://datachef.co 2 февраля 2022 г.