Архитектура AWS для автоматизации Machine Learning

  •  89 /
Spread the love

Реальный пример использования AWS ML Pipeline для получения миллионов доходов.

Предисловие

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

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

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

 

Проект

Недавно я участвовал в разработке решения для машинного обучения для одного из крупнейших производителей стали в Северной Америке.

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

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

Проблемы

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

С другой стороны, ближе всего к специалисту по данным был кто-то из ИТ-специалистов, который программировал раньше, но ничего не понимал в Machine Learning.

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

Детали

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

  •     Источники данных
  •     Machine Learning & Data Engineering Notebooks
  •     Веб-приложение, созданное с использованием Python Flask
  •     Автоматизированный pipeline

Сервисы

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

Источник данных и назначение

S3: Bulk Data Storage, созданный для хранения и извлечения любого количества данных из любого места. Здесь находится озеро данных, на котором мы будем тренировать наши модели. Нам было достаточно дополнительного блока S3 для хранения наших временных и конечных результатов после запуска наших моделей.
Athena: позволяет запрашивать файлы данных в объектной системе S3, используя обычные SQL-запросы. Это полезно для быстрого просмотра данных и анализа строк без необходимости каждый раз запускать Jupyter Notebook. Мы также использовали API-интерфейсы Athena для последующего извлечения данных в наших скриптах.

Контроль версий кода

CodeCommit: выпуск git от Amazon для контроля версий и совместной работы. Мы использовали два отдельных репозитория — один для скриптов ML и Data Engineering, а другой для Web-приложения.

Data Engineering и Machine Learning

Amazon SageMaker: платформа, которая позволяет разработчикам и специалистам по данным создавать, обучать и развертывать модели машинного обучения в любом масштабе. Именно здесь работают скрипты, которые составляют ядро ML. Вполне нормально, если вы разрабатывали в своем локальном экземпляре Anaconda, вы можете без проблем запускать эти скрипты в SageMaker. Мы использовали экземпляр m5.4xlarge (16 vCPU, 64 ГБ ОЗУ) для наших учебных целей, который стоит около доллара в час. Каждый цикл обработки данных состоит из примерно 70 ГБ данных, и он занимает около двух часов, чтобы он работал непрерывно и генерировал пригодные для использования файлы для скриптов ML. Вы можете использовать это как справочник, чтобы решить, нужно ли вам увеличивать или уменьшать ваш экземпляр.

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

Развертывание веб-приложений

Elastic Beanstalk: Сервис для развертывания и масштабирования веб-приложений, созданных с использованием различных языков и серверных сред. Он инициализирует все другие необходимые сервисы AWS, необходимые для развертывания веб-приложения под капотом, которое включает в себя EC2 и CloudWatch, описанные ниже. В нашем случае именно здесь развернуто приложение Python Flask. Нам хватило t2.large (2 vCPU, 8 ГБ ОЗУ) экземпляра EC2 без автомасштабирования, так как он собирался использоваться для внутренних нужд. Вы можете использовать функцию автоматического масштабирования Beanstalk, если вы ожидаете большой трафик, и он будет автоматически добавлять и удалять экземпляры сервера в зависимости от изменения веб-трафика!
CodePipeline: служба непрерывной доставки, которая помогает вам автоматизировать конвейеры выпуска для быстрого и надежного обновления приложений и инфраструктуры. Мы использовали ее для автоматической отправки новых изменений кода, слитых в основную ветвь репозитория CodeCommit и в live версию веб-приложения.

Другие сервисы под капотом

EC2: веб-сервис, обеспечивающий безопасную вычислительную емкость с изменяемым размером в облаке. По сути, думайте о них как о виртуальных машинах в облаке. Другие сервисы AWS, такие как Elastic Beanstalk и SageMaker, используют этот сервис для своих вычислительных нужд.
CloudWatch: Служба мониторинга и управления, предоставляет сырые и аналитические данные для мониторинга вашего приложения и запуска автоматических процессов. Управляется сервисами AWS, которые его используют, а не чем-то, что требует ручного вмешательства в этом случае.

Архитектура

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

Machine Learning and Data Engineering

Вышеприведенная схема описывает архитектуру развертывания AWS для машинного обучения и инженерии данных. Как вы можете видеть, экземпляр SageMaker — это место, где разработчики и ученые данных будут работать в первую очередь. Скрипты извлекают и передают данные и выводят их непосредственно в S3. Вы всегда можете изменить источник данных на другие системы баз данных, если именно там находятся ваши данные. Сам код  фактически находится в репозитории CodeCommit. Вы можете клонировать этот репозиторий в экземпляре SageMaker, чтобы упростить регулярную фиксацию изменений. У вас действительно есть возможность напрямую создавать или загружать записные книжки в SageMaker, но настоятельно рекомендуется иметь систему контроля версий для любых серьезных разработок.

Web Application

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

Хранилище веб-приложений размещенное в CodeCommit, постоянно контролируется CodePipeline (у которого есть служба CloudWatch, работающая под капотом для отслеживания изменений в вашем хранилище). В нашем случае, каждый раз, когда новые изменения объединяются с основной веткой, новая версия автоматически извлекается и развертывается службой CodePipeline в экземпляре Beanstalk.

Заключение

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

По материалам
(EJ) Vivek Pandey. AWS Architecture For Your Machine Learning Solutions

Добавить комментарий