Наука о данных/развертывание

Руководство для начинающих по созданию и развертыванию контейнера для вашей модели ML

Веб-приложение, созданное с использованием Streamlit и развернутое на Heroku.

Контейнеризация обсуждалась в моей предыдущей статье. Теперь давайте попрактикуемся. Мы будем развертывать модель машинного обучения под названием House Hunter. Это веб-приложение для прогнозирования цен на жилье, созданное с использованием Streamlit.

Различные шаги, связанные с развертыванием контейнера,

  1. Предпосылки
  2. Создание Dockerfile
  3. Изображение здания
  4. Создание веб-приложения Heroku
  5. Отправка образа в реестр контейнеров на Heroku
  6. Развертывание контейнера

Совет: Обычно хорошо иметь одну новую виртуальную среду для каждого нового проекта на основе Python. Таким образом, зависимости каждого проекта изолированы друг от друга.

1. Предпосылки

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

1.1. Установка Docker Desktop

Можно обратиться к видеороликам Дэвида Бомбала, чтобы настроить рабочий стол Docker.

WSL 2 с Docker, начало работы, Дэвид Бомбаль¹
https://youtu.be/5RQbdMn04Oc

1.2. Создание веб-приложения машинного обучения (или использование существующего веб-приложения)

В этой статье мы будем использовать веб-приложение House Hunter, которое уже было развернуто на Heroku, так как его размер был меньше 500 МБ. Теперь мы попытаемся поместить его в контейнер, а затем развернуть.

Ссылка на Github House Hunter
https://github.com/MSufiyanAG/House-Hunter

Итак, теперь мы готовы к развертыванию Docker Desktop и веб-приложения ML.

2. Создание Dockerfile

Dockerfile — это текстовый документ, содержащий все команды, которые пользователь может вызвать в командной строке для сборки образа. С помощью сборки docker пользователи могут создать автоматизированную сборку, которая последовательно выполняет несколько инструкций командной строки².

Докерфайл:

FROM python:3.8 
COPY . /usr/app/ 
WORKDIR /usr/app/ 
RUN pip install -r requirements.txt      
CMD sh setup.sh \ 
    && streamlit run app.py

FROM — устанавливает базовый образ для последующих инструкций.
COPY — копирует содержимое исходного пути в путь назначения.
WORKDIR — определяет рабочий каталог контейнера Docker.
RUN — выполняет любые команды на новом уровне поверх текущего образа и фиксирует результаты.
CMD — предоставляет значения по умолчанию для исполняемого контейнера.

Для дальнейшей справки: https://docs.docker.com/engine/reference/builder/

3. Создание образа

Команда сборки docker создает образы Docker из Dockerfile.

$ docker build [OPTIONS] PATH | URL | -

Когда изображение готово, его можно просмотреть с помощью команды

$ docker images [OPTIONS] [REPOSITORY[:TAG]]

Чтобы узнать больше о таких командах, как run,tag,..
https://docs.docker.com/engine/reference/commandline/docker/

4. Создание веб-приложения Heroku

Войдите в Heroku, Реестр контейнеров Heroku

$ heroku login
$ heroku container:login

Теперь создайте новое веб-приложение

$ heroku create app-name

Подробная информация о командах:
https://devcenter.heroku.com/articles/container-registry-and-runtime

5. Отправка образа в Container Registry на Heroku

Создайте тег Целевое изображение, которое ссылается на исходное изображение, и это целевое изображение будет помещено в реестр контейнеров.

$ docker tag <image> registry.heroku.com/<app>/<process-type>

Отправьте этот образ в реестр контейнеров

$ docker push registry.heroku.com/<app>/<process-type>

6. Развертывание контейнера

Как только образ будет помещен в реестр контейнеров, мы его выпустим.

$ heroku container:release web --app app-name

Затем откройте Heroku и откройте приложение.

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

Много изменений происходит в библиотеках Python; библиотеки, используемые сегодня, завтра могут устареть. В общем, хорошие навыки гугления выручат вас из любой ситуации (мой подход при обучении).

Хотя в этой статье показано, как можно использовать Docker для развертывания веб-приложений, созданных с помощью Streamlit. Официальная документация Docker дает отличное объяснение основных концепций.

Оставайтесь с нами.

Удачного обучения

Ссылки

[1] : Дэвид Бомбал, Соединенное Королевство. WSL 2 с началом работы с Docker. (11 июня 2020 г.). Доступ: 4 июля 2022 г. [Онлайн-видео]. Доступно: https://www.youtube.com/watch?v=_fntjriRe48&list=PLhfrWIlLOoKNMHhB39bh3XBpoLxV3f0V9

[2] : Справочник по файлу Docker. [В сети]. Доступно: https://docs.docker.com/engine/reference/builder/