www.machinelearningmastery.ru

Машинное обучение, нейронные сети, искусственный интеллект
Header decor

Home

Разверните модель машинного обучения с помощью AWS Elastic Beanstalk

Дата публикации Oct 3, 2019

Эффективное обслуживание еды грузовик - источник: Giphy.com

Мы представляем комплексную процедуру для обслуживанияFastTextмодель анализа настроений с использованиемAWS Эластичный бобовый стебель, Мы предоставляем все необходимое, чтобы получить собственную услугу анализа настроений по требованию в5 языков,

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

  • Узнайте, как развернуть базовыйколба приложениена AWS Elastic Beanstalk
  • Узнайте, какреализовать вашу модель машинного обучения
  • Узнайте, какпроверить модель анализа настроений
  • Понятьразница между Elastic Beanstalk и Amazon SageMakerслужить моделью машинного обучения (цены / плюсы и минусы).
  • Получите свой собственныйслужба анализа настроений по требованию,

Предпосылки
Ниже приведен список того, что вам нужно будет пройти через этот учебник:

  • Аккаунт AWS, Создать аккаунт AWS; это бесплатно.
  • Базовые знанияпитон
  • Готовность кпотратить несколько центовиспользовать ресурсы AWS. Обратите внимание, чтоAWS Elastic Beanstalk бесплатен, вы платите только за ресурсы AWS(например, экземпляры EC2, сегменты S3 и т. д.).

Обзор того, что мы будем использовать для развертывания нашей модели

Обзор архитектуры
  • AWS Эластичный бобовый стебельслужба развертывания веб-приложений
  • FastText, исследовательская библиотека Facebook для классификации текста.
  • Python, и в частностиКолба, микро веб-фреймворк, Он классифицируется как микрорамка, потому что он не требует специальных инструментов или библиотек.

AWS Эластичный бобовый стебель

AWS Elastic Beanstalk - это простой в использовании сервис для развертывания и масштабирования веб-приложений и сервисов, разработанных с использованием Java, .NET, PHP, Node.js, Python, Ruby, Go и Docker, на знакомых серверах, таких как Apache, Nginx, Passenger. и IIS.

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

Балансировщик нагрузки

Балансировщик нагрузки распределяет входящее приложение или сетевой трафик по нескольким целям, таким как экземпляры Amazon EC2, контейнеры и IP-адреса, по нескольким зонам доступности.

Он использует проверки работоспособности, чтобы определить, какие экземпляры исправны, и направляет трафик только через эти экземпляры.

Автомасштабирование

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

FastText для модели анализа настроений

FastTextэто библиотека для изучения встраивания слов и классификации текста, созданная исследовательской лабораторией AI в Facebook. Это супер быстро и наравне с более сложными, медленными алгоритмами.

Мы создали наши модели анализа настроения сFastTextБиблиотека предоставлена ​​Facebook Research. Мы считаем, что это отличный выбор для готовой к производству модели.

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

Flask - микро-фреймворк Python

Flask - это микро-фреймворк, написанный на Python. Он классифицируется как микрорамка, потому что он не требует специальных инструментов или библиотек.

Колба очень проста и идеально подходит для наших нужд. Например, нам нужны только следующие строки кодов для запуска веб-приложения «Hello World».

from flask import Flask
app = Flask(__name__)@app.route(“/”)
def hello():
return “Hello World!”if __name__ == “__main__”:
app.run()

И это просто установить.

pip install Flask

Развертывание на AWS Elastic Beanstalk
Теперь пришло время использовать AWS Elastic Beanstalk для обслуживания моделей анализа множества настроений, обученных с помощью fastText.

https://console.aws.amazon.com/elasticbeanstalk/

1- Создайте приложение в AWS Elastic Beanstalk

  • Во-первых, нам нужносоздать приложение, Приложение Elastic Beanstalk - это логическая коллекция компонентов Elastic Beanstalk, включая среды, версии и конфигурации среды. В Elastic Beanstalk приложение концептуальнопохож на папку,
Нажмите «Создать новое приложение» в правом верхнем углу.
Создайте новое приложение - приложения эквивалентны папкам в Elastic Beanstalk

2- Создать среду

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

Когда вы создаете среду, Elastic Beanstalk предоставляет ресурсы, необходимые для запуска указанной вами версии приложения.

Создайте среду, нажав в правом верхнем углу
  • ВыбратьСреда веб-сервера,

Веб-серверы Env запускают процессы веб-сервера (apache, Nginx и т. Д.), В то время как рабочая среда работает с долго выполняющимися процессами и взаимодействует с AWS SQS.

Выберите «Среда веб-сервера» - Веб-серверы Env запускают процессы веб-сервера (apache, nginx и т. Д.)
  • Платформа представляет собой комбинацию операционной системы, среды выполнения языка программирования, веб-сервера, сервера приложений и компонентов Elastic Beanstalk.

Для платформы выберитепитон,

Создайте среду с Python в качестве предварительно сконфигурированной платформы
  • Экран настроек

Чтобы открыть экран конфигурации, нажмите «Настроить дополнительные параметры» на предыдущем экране (Создать среду веб-сервера).

По умолчанию у вас есть три возможных предопределенных конфигурации:

  • Бюджетный: Базовая настройка с использованием только одного экземпляра приложения. Это значитбез балансировки нагрузки и автоматического масштабирования,
  • Высокая доступность: Все, что вам нужно, чтобы начать с балансировки нагрузки и автомасштабирования.
  • Пользовательская конфигурация: Все, что не подходит ни к одной из двух предыдущих установок, рассматривается Elastic Beanstalk как обычай.

Изменить экземпляр для T3 Micro
T3 - более новая и более дешевая версия, чем T2, предложенная по умолчанию. Как вы можете видеть на скриншоте ниже, у T3 больше виртуальных процессоров, но они немного дешевле, чем у T2. Поэтому мы изменим тип экземпляра.

Страница с ценами AWS EC2 - T3 выглядит лучше и дешевле, чем T2, но T2s являются выбором по умолчанию.

На "Инстансы”, Укажите тип экземпляра и укажите пользовательский AMI (образы машин Amazon), если необходимо. В нашем случае оставьте значение AMI по умолчанию. Все, что нам нужно для запуска нашего приложения фляги, будет установлено через наши конфигурационные файлы.

Конфигурация экземпляров - измените T2.micro по умолчанию на более качественный / дешевый T3

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

Больше информацииВот:

Конфигурация безопасности - укажите имя пары ключей, чтобы иметь возможность ssh экземпляра

Однако обратите внимание, что журналы, созданные вашими экземплярами, доступны через раздел «Журналы» консоли Elastic Beanstalk.

Изменить масштабируемость (необязательно)
Мы оставим конфигурацию масштабируемости без изменений. У нашего автомасштабирования будет минимум 1 экземпляр и до 4. Количество экземпляров зависит от показателя, который можно изменить на этом экране конфигурации.

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

Перечислите доступные метрики CloudWatch для ваших экземпляров

Веб-сайт документации AWS приобретает новый облик! Попробуйте прямо сейчас и сообщите нам, что вы думаете. Переключиться на новый взгляд ...

docs.aws.amazon.com

Конфигурация емкости - это то, где находятся параметры автоматического масштабирования.

Создать среду
Нажмите на[Создать среду]для начала предоставления необходимых ресурсов:

  • Экземпляр EC2 с работающим веб-сервером и приложением Flask.
  • Группа автомасштабирования
  • Балансировщик нагрузки

Это можно увидеть на консоли EC2:https://eu-west-1.console.aws.amazon.com/ec2/(используйте тот же регион, который вы использовали для Elastic Beanstalk).

3- Разверните наш пакет ML

Мы только что развернули пример приложения Beanstalk. Теперь мы заменим этот пакет нашей упакованной моделью машинного обучения.

Наш пакет содержит:

  • файл Pythonapplication.py, это содержит наше приложение Flask.
  • Папка.ebextensions с конфигурационными файлами Elastic Beanstalk.
  • Файл00_application.config Он содержит командные строки, которые устанавливают необходимый компилятор C и другие библиотеки, необходимые для установки fastText.
  • Файл01_pip-install.config: Это создает нашу среду Python; установите пакеты и загрузите обученные модели fastText с GitHub. Обычное простоеrequirements.txtдостаточно файла, содержащего список пакетов для установки. Но с fastText мы должны сделать клон git, и по этой причине необходим конфигурационный файл.
  • Файл02_wsgi.config: Он создает пользовательский конфиг для нашегоWSGIэто устраняет проблему безопасности потоков с такими библиотеками, как Pandas или Numpy.

Flask App
Наше приложение фляги содержится вapplication.pyфайл (на этом GitHubхранилище).

Имеет следующие функции:

  • Здравствуйте():Корневой маршрут ‘/’. Только для теста.
  • пинг():Определите, если контейнер работает и здоров В этом образце контейнера мы заявляем, что мы можем успешно загрузить модель.
  • преобразование (): Вывод по одной партии данных
  • Другая функцияс очистки текста.

Приложение запускается с помощью следующей команды:

if __name__ == ‘__main__’:
application.run()

Конфигурационные файлы Elastic Beanstalk
Файлы конфигурации, присутствующие в папке .ebextensions, необходимы для настройки вашей среды и настройки ресурсов AWS.
Наша папка «.ebextensions» содержит следующие 3 файла:

  • 00_application.config
commands:
01_dev_tools:
command: sudo yum groupinstall -y "Development Tools"
02_dev_libs:
command: sudo yum groupinstall -y "Development Libraries"
03_gcc_alternatives:
command: sudo alternatives - set gcc "/usr/bin/gcc48"
  • 01_pip-install.config
files:
“/tmp/pipInstallation.sh”:
mode: “000777”
owner: root
group: root
content: |
#! /bin/bash
source /opt/python/run/venv/bin/activate
pip install beautifulsoup4==4.7.1
pip install boto3==1.9.86
… (check github files for complete list)
pip install Werkzeug==0.14.1
git clone https://github.com/facebookresearch/fastText.git
cd fastText
pip install .
wget https://raw.github.com/charlesmalafosse/aws-elasticbeanstalk-ml-server/master/model-en.ftz --output-document=/tmp/model-en.ftz
wget https://raw.github.com/charlesmalafosse/aws-elasticbeanstalk-
… (check github files for complete list)commands:
01_execute:
command: “/tmp/pipInstallation.sh”
  • 02_wsgi.config
files:
"/etc/httpd/conf.d/wsgi_custom.conf":
mode: "000644"
owner: root
group: root
content: |
WSGIApplicationGroup %{GLOBAL}

Застегните его и загрузите / разверните!
На панели инструментов среды приложения нажмите[Обновление и Развертывание]и загрузите ZIP-файл, содержащийapplication.py и папка .ebextensions, Этот zip-файл доступен на моемСтраница GitHub,

Загрузка и развертывание вашего пакета на ваших экземплярах EC2 занимает несколько минут. После этого ваша модель будет развернута.

4- Проверьте, работает ли он

Чтобы проверить правильность развертывания нашей модели, перейдите к конечной точке среды. Адрес конечной точки отображается в верхней части панели инструментов вашей среды. Это что-то похожее на: nameofyourenv-env.qnmpdqf6re.eu-west-1.elasticbeanstalk.com

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

Наконец, чтобы проверить нашу модель, мы используемPOST метод на ресурсе «/ invocations»определено в нашем приложении Flask. Убедитесь, что вы передаете следующую полезную нагрузку JSON в свой запрос POST:


{"text":"This is great!","language":"us"}

Я обычно использую простое расширение Restlet Chrome для проверки своих конечных точек. Но подойдет любой тестер API.

Расширение Chrome Restlet - метод Post для нашей конечной точки с телом JSON

Вы должны получить результат с HTTP-ответом 200.

Расширение Chrome Restlet - результат нашего почтового запроса - 200 ОК, все работает!

Вы можете проверить другие предложения для анализа настроения.Развернутая модель поддерживает английский язык («Язык»:»нас»), Испанский (и), французский (фр), итальянский (ит), немецкий (де), Конечно, это не дает никаких гарантий относительно качества его прогнозов, но в целом делает достойную работу. Проверьте этот среднийстатья здесьБольше подробностей. Дайте мне знать, что вы думаете.

Развертывание на Elastic Beanstalk Vs. SageMaker

AWS Elastic Beanstalk - это не единственный способ обслуживания модели в экосистеме AWS. Другим решением являетсяполностью управляемый сервис SageMaker, Ниже я выделю некоторые плюсы и минусы обоих решений.

Amazon SageMaker
Что такое SageMaker? Amazon SageMaker - это облачная машинная обучающая платформа, запущенная в ноябре 2017 года. SageMaker позволяет разработчикам создавать, обучать иразвернутьмодели машинного обучения в облаке.

Обзор SageMaker - Источник: Google Image

Использование AWS Elastic Beanstalk является отличным способом обслуживания модели машинного обучения. Вы получаете масштабируемость по очень доступной цене, и, возможно, стоит подумать о переходе с Amazon SageMaker на Elastic Beanstalk, чтобы снизить стоимость хостинга модели.

Вот некоторые плюсы и минусы использования Elastic Beanstalk для обслуживания моделей ML:

Pros:

  • В 5 раз дешевле: Самый маленький экземпляр - около 10 долларов в месяц против 50 долларов для SageMaker.
  • Больше настроекпротив SageMaker. Вы контролируете и имеете доступ ко всем базовым ресурсам.
  • Вы можете использовать любые модели ML.Не только тот, что в Python.

Cons:

  • SageMaker - этолегче развернуть. Полностью управляемыйНет необходимости беспокоиться о базовых ресурсах и их конфигурации.
  • Более быстрое развертывание, если вы обучались в SageMakerи используемые оценки. Всего одна строка кода в Python!

Вот и все - время удалять созданные ресурсы!

Не забудьте удалить предоставленные ресурсы AWS, если у вас нет плана для них. Удалите приложение AWS Elastic Beanstalk; он удалит созданные экземпляры EC2, балансировщик нагрузки и автомасштабирование.

Ссылки

FastText анализ настроений для твитов: прямое руководство - среднийстатья здесь,

Весь исходный код доступен наhttps://github.com/charlesmalafosse/aws-elasticbeanstalk-ml-server

Страница AWS Elastic Beanstalk -https://aws.amazon.com ›эластичный стебель

Python Flask Micro веб-фреймворкhttps://en.wikipedia.org/wiki/Flask_(web_framework)

Оригинальная статья

Footer decor

© www.machinelearningmastery.ru | Ссылки на оригиналы и авторов сохранены. | map