Следует ли мне использовать модель прогнозирования с помощью AWS lambda или sagemaker?

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

Мы хотим достичь:

  • читать данные из корзины S3 ежемесячно (новые данные будут поступать каждый месяц),
  • запустите несколько файлов Python (.py) для пользовательских пакетов и установите зависимости (включая файлы, не более 30 КБ),
  • создавать прогнозируемые результаты в файле обратно в S3 (работает JSON или CSV) или передавать на другие конечные точки (скорее всего, это будут некоторые инструменты бизнес-аналитики - таблица и т. д.) - но на самом деле этот шаг может быть гибким (не обязательно в Интернете)

Первая мысль, которая у меня возникла, - это AWS sagemaker. Однако мы будем использовать модель «fb prophet» для прогнозирования результатов, и мы создали специальный пакет для использования в модели, поэтому я не думаю, что экземпляр notebook нам поможет. (Пожалуйста, поправьте меня, если я ошибаюсь) Я понимаю, что sagemaker - это среда для построения и обучения модели, но мы уже построили и обучили модель. Кроме того, мы в любом случае не будем использовать готовые модели AWS.

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

Второй вариант - создать несколько лямбда-функций

  • тот, который запускает скрипты python из корзины S3 (2-3 файла .py) каждый раз, когда новый файл импортируется в корзину S3, что будет происходить ежемесячно.

  • тот, который запускается после того, как скрипты python будут запущены и выдают результаты и сохраняются в корзине S3.

Третий вариант объединит оба варианта: - Использование лямбда-функции для запуска реализации сценариев python в корзине S3 при поступлении нового файла. - Отправка результата с помощью конечной точки sagemaker, что означает, что мы размещаем модель на sagemaker и развертываем оттуда.

Я до сих пор не совсем уверен, как разместить готовую модель и скрипты Python на экземпляре и хосте sagemaker оттуда.

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

Спасибо!!


person Hellojoy    schedule 08.04.2020    source источник


Ответы (2)


Я бы сказал, все зависит от того, насколько тяжелая ваша модель / сколько данных вы обрабатываете. Вы правы, предполагая, что Lambda, скорее всего, будет меньше работать. Довольно легко запустить лямбду для выполнения необходимых действий, а у Lambda очень щедрый уровень бесплатного пользования. Проблема в:

  1. Возможности обработки лямбда-функций существенно ограничены (время ожидания истекает через max 15 минут).

  2. Загрузка вашей модели может быть дорогой.

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

Если у вас мало данных, Lambda будет работать нормально. Я бы посмотрел на это следующим образом: предполагая, что на этапе обработки данных преобладает этап вашей модели, и если все ваши взаимодействия с моделью (загрузка модели + оценка всех ваших данных) занимают менее 15 минут, вы определенно в порядке. Если они возьмут больше, вам нужно будет выполнить предварительный расчет, чтобы выяснить, откажетесь ли вы от уровня бесплатного использования Lambda.

Что касается Lambda: вы можете буквально скопировать и вставить код, чтобы настроить прототип. Если выполнение всех ваших данных занимает более 15 минут, вам понадобится метод разделения данных между несколькими лямбдами. Рассмотрим для этого пошаговые функции.

person MyStackRunnethOver    schedule 08.04.2020
comment
Большое спасибо за подробный ответ. Время действительно также зависит от того, на какой машине я работал. Я планировал использовать другой сервис AWS для предварительной обработки данных - возможно, мы рассматриваем EMR, Glue или другую лямбда-функцию. После предварительной обработки данные будут отправлены на S3, сами чистые данные все еще могут быть около 1 ГБ. Я знаю, что он должен быть бессерверным, но можно ли изменить вычислительную мощность для лямбда? Или настроить параметры? Вы бы сказали, что подход с пошаговыми функциями столкнется с множеством проблем с холодным запуском? Спасибо еще раз!! - person Hellojoy; 09.04.2020
comment
1. Вычислительная мощность: да. В документах есть дополнительная информация, но вы можете настроить память, выделенную для лямбда. Это также приводит к увеличению того, сколько ЦП передается лямбда-выражению. Однако, как только вы увеличите это значение до максимума, способ масштабирования - распараллеливание между несколькими лямбдами. Имейте в виду: если вы можете, иметь тонну лямбд при каждой обработке небольшого количества - это нормально. Например, обычным шаблоном является запуск одной лямбда-выражения на запись в файл, если имеется много файлов. - person MyStackRunnethOver; 09.04.2020
comment
2. Ступенчатые функции / холодный старт: нет. Холодный запуск вызывает беспокойство, когда лямбда-выражения возвращают API-интерфейс, обращенный к пользователю, поэтому задержка выполнения лямбда-выражения может быть заметна для пользователя. Это не ваш вариант использования. Даже если холодный запуск был актуален, в нем будет преобладать лямбда, работающая даже с умеренной рабочей нагрузкой. - person MyStackRunnethOver; 09.04.2020
comment
Большой!! В очередной раз благодарим за помощь! Я начну изучать пошаговую функцию и опробую ее. :) - person Hellojoy; 09.04.2020

SageMaker - это набор сервисов, каждый из которых отвечает за свою часть процесса машинного обучения. Возможно, вы захотите использовать размещенную версию записных книжек Jupyter в SageMaker. Вы получаете большую свободу в размере используемого экземпляра (ЦП / графический процессор, память и диск), и вы можете устанавливать различные пакеты на этот экземпляр (например, FB Prophet). Если вам это нужно раз в месяц, вы можете останавливать и запускать экземпляры записных книжек между этими временами и «Запустить все» ячейки в своих записных книжках на этом экземпляре. Это будет стоить вам только минут исполнения.

Что касается других альтернатив, запустить FB Prophet в Lambda нетривиально из-за ограничения размера библиотек, которые вы можете установить в Lambda (чтобы избежать слишком длительного холодного запуска). Вы также можете использовать ECS (службу контейнеров), где у вас могут быть гораздо большие изображения, но вам нужно знать, как создать Docker-образ вашего кода и конечной точки, чтобы иметь возможность его вызывать.

person Guy    schedule 10.04.2020