Развертывание Flask API на базе машинного обучения в AWS EC2
Если вы не читали мой предыдущий пост, я бы посоветовал взглянуть на него, прежде чем продолжить. В этом посте я говорил об обучении вашей модели машинного обучения и подключении ее к Flask для использования в качестве REST API. В этой публикации мы будем развертывать его в экземпляре AWS EC2.
Давайте посмотрим на шаги:
- Создайте экземпляр EC2.
- Создайте виртуальную среду и установите пакеты.
- Скопируйте файлы модели в instance.
- Настройте файл конфигурации супервизора.
- Установите Nginx и настройте некоторые параметры.
- Настроить файл конфигурации nginx
- Отправить запросы
Запуск экземпляра EC2 на AWS
Итак, вот шаги:
- Создайте учетную запись в AWS EC2 (если у вас уже есть учетная запись, просто пропустите этот шаг).
- Создайте инстанс 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. Вы должны увидеть, как работает ваша модель.
Создание файла конфигурации для супервизора
- Следующим шагом является создание сценария супервизора для включения мониторинга процесса. Если у вас возникнет ошибка 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 для обратного прокси
- Измените входящие правила для экземпляра 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.
Поздравляем, вы успешно создали свою модель машинного обучения.
Следуя той же методологии, вы можете развернуть любую модель.
Спасибо за чтение…!