Согласно недавнему исследованию, большинство моделей умирают только в ноутбуках Jupyter. У них никогда не будет шанса выйти на производство и показать миру свои возможности. MLOps играет важную роль в запуске модели в производство. Эта статья может стать фундаментальным шагом к запуску вашей модели в производство.

В этой статье я попытаюсь дать представление о том, как можно запустить небольшое приложение Python в производство. Я разверну небольшое приложение-калькулятор, которое я создал на своем локальном компьютере, в экземпляре Amazon Web Service (AWS)-EC2. Я рад поделиться этой информацией и чувствую то же самое для вас. Итак, хватит теоретических рассуждений, давайте запачкаем руки.

Шаги, которые я предприму для этого развертывания: -

  1. Создание и запуск экземпляра EC2 на AWS
  2. SSH и передача файлов
  3. Запустите приложение в браузере
  4. Настройка Gunicorn и Nginx
  5. Замена IP на Elastic IP
  6. Откройте настройку SSL для приложения

В этой части я расскажу о шагах с 1 по 4, во второй части я расскажу о шагах 5 и 6.

Шаг — 1: — Создание и запуск экземпляра EC2 на AWS

а. Откройте консоль AWS и выберите экземпляр EC2.

б. Нажмите на запуск экземпляра

в. Выберите Ubuntu Server 18.04 LTS (HVM), тип тома SSD, образ машины.

д. Выберите тип в соответствии с требованием, здесь я выбираю t2.micro для демонстрационных целей. Затем выберите «Настроить сведения об экземпляре».

е. Теперь выберите «Добавить хранилище».

ф. Выберите хранилище в соответствии с использованием, здесь я выбираю 15 ГБ. Затем выберите «Добавить теги», а затем «Выбрать «Настроить группу безопасности»».

г. Выполните конфигурации в соответствии с изображением ниже или в соответствии с вашими требованиями.

час Выберите Просмотреть и запустить.

я. Он попросит выбрать пару ключей. Здесь вы можете выбрать «Создать новую пару ключей», затем дать ей имя и загрузить файл пары ключей. (Я дал ему имя PythonAppDeploy4)

Дж. Наконец, запустите экземпляры и просмотрите экземпляр.

Итак, инстанс EC2 создан. Теперь пришло время заняться SSH и передачей файлов. Я показываю шаги для пользователей Mac/Linux, но они почти такие же и для Windows. Команды будут одинаковыми, разница только в инструменте.

Шаг – 2: – SSH и передача файлов

Для Mac: — Используйте терминал для SSH и инструмент FileZilla для передачи файлов в экземпляр.

Для Windows: - Используйте Mobaxterm для выполнения SSH и передачи файлов.

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

Нажмите кнопку подключения на вашем экземпляре EC2, как показано на рисунке ниже.

Теперь откройте терминал в вашей локальной системе и перейдите по пути, по которому вы загрузили файл пары ключей (в моем случае он находится в папке загрузки как PythonAppDeploy4.pem).

Enter 1st command :- chmod 400 PythonAppDeploy4.pem in local terminal.

[chmod 400 => Дает пользователю разрешение на чтение и удаляет все остальные разрешения]

Enter 2nd command from the above pic :- ssh -i “PythonAppDeploy4.pem” [email protected]

This will give you SSH to your recently created EC2 instance.

Теперь пришло время загрузить ваш файл (в моем случае это calculate.zip) на ваш экземпляр из локальной сети. Для этого будем скачивать. Инструмент FileZilla. [Используйте следующую ссылку для загрузки: - https://filezilla-project.org/download.php?type=client]

Используйте ссылку ниже, чтобы загрузить файл через filezilla: — https://stackoverflow.com/questions/16744863/connect-to-amazon-ec2-file-directory-using-filezilla-and-sftp

Once you have connected filezilla to your EC2 instance you can easily pick and drop your file

Итак, наконец, SSH и загрузка приложения завершены. Давайте проверим это в нашем терминале.

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

Теперь мы запустили наше приложение Flask «app.py», однако оно работает локально. Если мы хотим поделиться им со всем миром, мы должны сделать переадресацию портов на общедоступный IP-адрес, где любой может увидеть его, используя этот общедоступный IP-адрес.

Чтобы получить общедоступный IP-адрес, перейдите в свой экземпляр и скопируйте общедоступный IP-адрес IPv4 XX.XX.XX.XXX и вставьте его в браузер. Ваше приложение-калькулятор готово на этапе разработки на общедоступном IP-адресе.

Note :- We will use Flask App but won’t use Flask server because of the following reasons :-

1. It can’t even handle 100 requests at a time.
2. It is not scalable.

Flask использует сервер разработки Werkzeug, и, согласно документации Flask, сервер разработки не предназначен для использования в производственных системах. Он был разработан специально для целей разработки и плохо работает при высокой нагрузке.

Итак, чтобы обеспечить безопасность и масштабируемость, мы будем использовать Gunicorn (сервер WSGI) и Nginx с приложением Flask.

Шаг — 3: — Настройка Gunicorn и Nginx Server

Установите gunicorn и nginx, используя следующий код:

а. Теперь мы войдем в установочный файл nginx, используя приведенный ниже код. Вы получите файл по умолчанию, который является файлом конфигурации nginx. Создайте там еще один файл с именем flask_app.

Здесь я сменил веб-сервер с Flask на gunicorn. Чтобы подтвердить это, мы знаем, что фляга работала на порту 80.

Давайте запустим приложение gunicorn и проверим его порт

Теперь наше приложение работает на порту 8000 вместо 80.

Now restart the nginx: sudo service nginx restart

Наконец, давайте запустим наше приложение: -

cd calculator/
gunicorn3 app:app

Теперь наше приложение «Калькулятор» будет выглядеть следующим образом на нашем общедоступном IP-адресе:

Файл Calculator.zip можно найти здесь [https://drive.google.com/file/d/1PAEY_9f6MNyvNYAG-I800i6UpixDeah2/view]

Два других важных шага я расскажу в другой части. Здесь я попытался показать пошаговое развертывание простого приложения на экземпляре EC2. Можно использовать это как фундаментальный шаг. Изучая MLOps, я обнаружил, что это также очень важный шаг для изучения, так как большую часть времени вы будете развертывать свою модель в облаке, и она будет частью вашего конвейера CI/CD.

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

Ссылка на часть 2 — здесь