Развертывание Flask API на базе машинного обучения в AWS EC2

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

Давайте посмотрим на шаги:

  1. Создайте экземпляр EC2.
  2. Создайте виртуальную среду и установите пакеты.
  3. Скопируйте файлы модели в instance.
  4. Настройте файл конфигурации супервизора.
  5. Установите Nginx и настройте некоторые параметры.
  6. Настроить файл конфигурации nginx
  7. Отправить запросы

Запуск экземпляра EC2 на AWS

Итак, вот шаги:

  1. Создайте учетную запись в AWS EC2 (если у вас уже есть учетная запись, просто пропустите этот шаг).
  2. Создайте инстанс EC2. Вы увидите страницу, как показано ниже. Щелкните запустить экземпляр.

3. Выберите экземпляр уровня бесплатного пользования или любой другой экземпляр по своему усмотрению. Я использую экземпляр уровня бесплатного пользования с Ubuntu Server 18.04 LTS.

ПРИМЕЧАНИЕ. AWS поддерживает экземпляры глубокого обучения и машинного обучения, но они не подпадают под уровень бесплатного пользования. Вы можете выбрать любой экземпляр по своему усмотрению.

4. Я использую микро-экземпляр t2, так как он соответствует требованиям бесплатного уровня.

Нажмите на Обзор и запустите

5. Теперь вы увидите возможность создать новую пару ключей или использовать существующую. Я создаю новую пару ключей. В раскрывающемся меню выберите Создать новую пару ключей. Введите имя для своего ключа и загрузите его. После этого нажмите Запустить экземпляры.

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

Вы увидите что-то вроде этого.

7. Установите все необходимые пакеты. Введите, как показано ниже -

$ sudo apt update
$ sudo apt install python3-pip
$ sudo apt install python3-venv
$ python3 -m venv root
$ source root/bin/activate
$ pip3 install sklearn flask gunicorn
$ sudo apt install supervisor

8. Теперь нам нужно скопировать app.py и модель на сервер. Введите в терминале локального компьютера следующее:

  • $ scp -i ~ / Downloads / key-pair.pem источник назначения.
  • Пример - scp -i ~ / Downloads / key-pair.pem ~ / Documents / productionize / app.py ubuntu@ec2–x–x–x–x.compute-1.amazonaws.com : ~ /
  • Один раз сделать. Введите ls (на сервере)

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

9. Теперь мы убедимся, что наша среда хорошо настроена. Введите python3 app.py. Вы должны увидеть, как работает ваша модель.

Создание файла конфигурации для супервизора

  1. Следующим шагом является создание сценария супервизора для включения мониторинга процесса. Если у вас возникнет ошибка app.py, он перезапустит его снова, и вы также можете установить количество повторных попыток. Введите следующее
$ sudo nano /etc/supervisor/conf.d/api.conf

Введите следующий код в файл api.conf

  • каталог - место, где хранится ваш файл app.py.
  • command - мы будем использовать Gunicorn для запуска приложения flask. Команда для запуска в виртуальной среде выглядит так: / home / ubuntu / root / bin / gunicorn app: app -bind localhost: 8002
  • stderr_logfile - место, где вы хотите создать файл журнала

3. Теперь введите

$ sudo supervisorctl reread
$ sudo supervisorctl reload
$ sudo supervisorctl restart all

Теперь вы должны увидеть что-то вроде этого

Nginx для обратного прокси

  1. Измените входящие правила для экземпляра EC2. Цель состоит в том, чтобы открыть порт 80 для приема подключений.

2. Щелкните launch-wizard-2 (вы можете увидеть другое имя) и внесите следующие изменения в правила для входящих подключений.

3. Теперь введите

$ sudo apt update
$ sudo apt install nginx
$ sudo ufw app list
$ sudo ufw allow 'Nginx HTTP'

Вы должны увидеть этот nginx, набрав

$ sudo service nginx status

При запуске на моем сервере возникла проблема. Это было связано с PID. Если вы получаете ту же ошибку, используйте - https://www.cloudinsidr.com/content/heres-fix-nginx-error-failed-read-pid-file-linux/

4. Вы можете проверить это, набрав

http://your-ec2-instance-url

Вы увидите приветственную страницу nginx.

5. Следующим шагом будет создание файла конфигурации nginx. Введите следующее

$ sudo nano /etc/nginx/nginx.conf

Теперь введите в этот файл конфигурации следующее.

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

6. Откройте интерпретатор Python на своем локальном компьютере и попробуйте отправить запрос на сервер AWS.

Поздравляем, вы успешно создали свою модель машинного обучения.

Следуя той же методологии, вы можете развернуть любую модель.

Спасибо за чтение…!