Сначала нам нужно зарегистрировать учетную запись уровня бесплатного пользования AWS —

  • Перейдите на https://aws.amazon.com/free
  • Нажмите Создать учетную запись и следуйте инструкциям.
  • Или посмотрите это видео для пошаговой инструкции по созданию учетной записи -

Серия AWS DevOps: как создать учетную запись уровня бесплатного пользования AWS || ЗА 5 минут

Создайте и запустите сервер EC2 -

Amazon EC2 предоставляет нам виртуальный сервер, работающий в облаке. Мы можем установить операционную систему на сервер EC2, чтобы создать виртуальную машину в облаке, эти виртуальные машины называются экземплярами EC2. Мы будем использовать экземпляр ec2 для развертывания и запуска нашей модели машинного обучения.

После завершения регистрации перейдите в строку поиска и введите ec2.

Выберите EC2 в результатах поиска.

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

Теперь мы настроим наш экземпляр EC2 за 7 шагов.

Шаг 1

Введите ubuntu в строке поиска и выберите Ubuntu Server 18.04.

Шаг 2

На этой странице по умолчанию выбран t2.micro (подходит для уровня бесплатного пользования). Если он не выбран, выберите его и нажмите Далее.

Шаг 3

Нам не нужно ничего менять на шаге 3. Нажмите «Далее».

Шаг 4

На этом шаге мы выбираем, сколько дискового пространства будет иметь наш сервер. По умолчанию установлено 8 ГБ, чего нам достаточно. Так что ничего не меняйте на этой странице. Нажмите "Далее.

Шаг 5

Нажмите кнопку Добавить тег. Затем введите "Имя" в разделе ключ и "веб-сервер-1" в разделе значение (веб-сервер-1 будет будет именем вашего экземпляра ec2. Вы можете написать любое другое имя, если хотите).

Нажмите Далее.

Шаг 6

Нажмите кнопку Добавить правило. В правилах будет создана новая строка.

В типе выберите «Весь трафик», а в Источник выберите «Где угодно» . Теперь нажмите Просмотреть и запустить.

Шаг 7

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

После того, как вы нажмете «Запустить», появится следующая страница —

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

Теперь настройка завершена, и наш экземпляр запускается. На следующей странице прокрутите вниз и нажмите кнопку Просмотреть экземпляр**.**

Здесь вы можете увидеть все экземпляры EC2 в своей учетной записи AWS.

Обратите внимание на столбец Состояние экземпляра, он показывает нам текущее состояние каждого экземпляра (виртуального сервера). Если ваш экземпляр находится в состоянии Ожидание, это означает, что он все еще запускается. Запуск может занять некоторое время. Когда экземпляр находится в состоянии Работает, это означает, что наш экземпляр запущен и готов к подключению.

Теперь мы установим некоторые инструменты на наш компьютер для удаленного подключения и управления нашим сервером EC2 —

  • PuTTY — это терминал/консоль, которая будет использоваться для запуска команд на нашем сервере. Загрузите и установите шпатлевку по этой ссылке. Выберите правильную версию для вашего ПК (64-разрядная версия x86 должна работать на большинстве ПК) — https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html
  • WinSCP - это инструмент для передачи файлов. Мы будем использовать это для загрузки файлов с нашего компьютера на сервер EC2. Скачайте и установите Winscp отсюда - https://winscp.net/eng/index.php

Теперь мы подключим наш компьютер к серверу EC2, используя Winscp и Putty.

На странице экземпляра EC2 выберите созданный вами экземпляр (webserver-1) и нажмите Подключить.

Теперь на этой странице нажмите Клиент SSH и скопируйте Общедоступный DNS.

Этот общедоступный DNS является общедоступным адресом вашего экземпляра ec2. Мы можем использовать этот адрес для доступа к нашему экземпляру ec2 из любого места.

Теперь откройте winscp на своем компьютере -

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

Теперь вернитесь к Winscp.

Есть поле ввода пароля, но нам не нужно вводить пароль. Нажмите кнопку Дополнительно под полем пароля. Это окно настроек откроется

На левой панели нажмите Аутентификация, затем нажмите на три точки, как показано на изображении выше.

Откроется окно проводника. В этом окне перейдите в папку, в которую вы скачали приватный ключ при настройке инстанса.

Теперь он покажет закрытый ключ. Выберите его и нажмите Открыть.

Когда вы откроете закрытый ключ, он попросит преобразовать .pem в .ppk, потому что наш загруженный закрытый ключ имеет расширение .pem, а winscp поддерживает только расширение .ppk. Нажмите «ОК» для подтверждения.

Теперь наш файл .pem преобразован в .ppk, и winscp попросит его где-нибудь сохранить. Нажмите сохранить. (Сохраните этот файл в надежном месте, потому что он будет запрашиваться winscp каждый раз при входе в систему.)

После того, как вы сохраните новый файл, он будет выбран автоматически. Теперь нажмите ОК-

Теперь на следующем экране нажмите кнопку Войти. Winscp начнет подключение к серверу.

Если он запрашивает какое-либо разрешение, разрешите его, нажав да.

После того, как winscp завершит подключение, появится такое окно:

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

Как вы можете видеть на изображении выше, у меня открыта папка проекта ML с правой стороны. Вы должны открыть свою собственную папку проекта там.

Теперь мы можем начать загружать файлы на сервер Ubuntu.

Давайте посмотрим, какие файлы мы должны загрузить, чтобы развернуть нашу модель мл —

  • app.py — это скрипт flask, который соединяет нашу модель ML с веб-сайтами HTML и обрабатывает ввод и вывод данных.
  • index.html — это веб-сайт HTML, который будет использоваться для ввода данных пользователем и отображения результатов, сгенерированных моделью ML. Мы должны поместить файл index.html в папку с именем «templates» (как вы можете видеть на изображении выше, там есть папка templates).
  • model.pkl — это файл .pkl нашей модели машинного обучения. Если вы не знаете о мариновании, я предлагаю вам научиться создавать файл .pkl вашей модели. На Youtube и в интернете есть множество обучающих материалов.
  • requirments.txt — это простой текстовый файл, в котором мы должны написать все необходимые библиотеки, необходимые для запуска нашей модели машинного обучения. Создайте текстовый файл, переименуйте его в требования и введите все библиотеки следующим образом:

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

Сохраните этот текстовый файл в папке вашего проекта.

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

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

Теперь мы будем удаленно подключаться к нашему серверу EC2 с помощью PuTTY.

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

Теперь мы запустим несколько команд для установки Python и других необходимых библиотек.

  • Чтобы установить Python 3, введите эту команду в консоли и нажмите Enter -
sudo apt install python3
  • Теперь мы установим pip, введите это в консоли и нажмите Enter -
sudo apt-get update && sudo apt-get install python3-pip

Он спросит, хотите ли вы продолжить, введите y и нажмите Enter.

  • Теперь мы воспользуемся файлом requirement.txt для одновременной установки всех библиотек. Введите эту команду и нажмите Enter -
pip3 install -r requirements.txt

Он установит все библиотеки и инструменты, которые вы прописали в файле requirements.txt.

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

Введите эту команду и нажмите Enter -

python3 app.py

Он выполнит app.py (фласк-скрипт) на сервере Ubuntu.

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

Давайте посмотрим, как мы можем получить доступ к этому приложению

Перейдите в AWS и скопируйте этот адрес Public DNS

Откройте любой веб-браузер и вставьте свой публичный DNS-адрес в адресную строку, добавьте «:8080» в конце DNS-адреса (как я сделал на изображении выше), затем нажмите Ввод.

Поздравляем! Теперь ваша модель ML должна успешно загрузиться в браузере. Доступ к вашей модели можно получить с помощью общедоступного DNS-адреса вашего сервера, пока приложение работает в консоли шпатлевки.

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

После того, как вы закончили тестирование своей модели. Вернитесь на страницу экземпляров EC2, выберите свой экземпляр, нажмите Состояние экземпляра (как показано на рисунке). Затем нажмите Остановить экземпляр, чтобы остановить сервер.

Не забывайте останавливать сервер EC2, когда вы его не используете. Поскольку уровень бесплатного пользования AWS имеет ограничение в 750 часов в месяц.

  • Если вы хотите протестировать свою модель позже, просто перейдите на страницу экземпляра EC2 и запустите свой экземпляр. Затем следуйте инструкциям по подключению EC2 к Winscp.

Давайте посмотрим, как мы можем поддерживать работу нашего приложения на сервере -

Помните, мы запускали наше приложение с помощью команды python3 app.py? Проблема с этой командой в том, что она будет работать только до тех пор, пока не будет открыта консоль PuTTY. Если мы закроем консоль, наше приложение перестанет работать, и к нему нельзя будет получить доступ с помощью DNS-адреса.

Если вы хотите, чтобы ваше приложение / модель ML продолжало работать в фоновом режиме даже после закрытия шпатлевки, winscp, запустите приложение с помощью этой команды:

screen -R deploy python3 app.py

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

Есть и другие способы поддерживать работу приложения на сервере, например, с помощью nginx, но мы используем этот метод, потому что он прост в использовании.

В своих будущих постах я также объясню различные способы развертывания модели ИИ на AWS или других веб-серверах, таких как Heroku, Google Cloud и т. д.

Спасибо за прочтение. Свяжитесь со мной, если вам понадобится помощь.