Должен ли я использовать прогностическую прогностическую модель с AWS лямбда или мудрецом? - PullRequest
0 голосов
/ 08 апреля 2020

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

Чего мы хотим добиться:

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

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

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

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

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

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

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

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

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

Спасибо!

Ответы [ 2 ]

0 голосов
/ 10 апреля 2020

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

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

0 голосов
/ 08 апреля 2020

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

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

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

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

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

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

...