
Мы, специалисты по данным и инженеры по машинному обучению, больше концентрируемся на построении успешных моделей и не очень беспокоимся о том, как мы собираемся развернуть модель в реальных производственных системах.
Зачем нужны докеры?
Все будет просто, когда нам нужно будет только настроить среды python, такие инструменты, как Anaconda и venv, упростят совместное использование сред python в виде environment.yml или requirements.txt для воспроизвести это. Но что, если настроили еще несколько библиотек, или мы использовали TensorRT или любые другие библиотеки C ++ для быстрого выполнения логических выводов.
По мере увеличения размера системы мы можем устанавливать новые зависимости и вносить изменения в среду. Пропуск одного из этих шагов может привести к отказу всей системы. Иногда он может отлично работать в нашей системе, но не в чужой или на сервере. Будет здорово, если мы сможем упаковать и отправить нашу среду разработки, не так ли?
Вот тут-то и пригодится DOCKER. Используя docker, вы можете просто поделиться своей средой разработки в виде образа докера. Чтобы другие разработчики могли просто запустить этот образ и воссоздать среду разработки, которую вы используете, с помощью одной команды.

Я не собираюсь объяснять все концепции и команды здесь, в этой статье. Пожалуйста, обратитесь к официальной документации, чтобы узнать о командах докера и о том, как установить докер на локальный компьютер.
Примечание. Не забудьте прочитать о командах докеров (сборка докеров, запуск докеров, образы докеров) и о концепциях докеров (образы, контейнеры и демон докеров), прежде чем продолжить.
Что такое Dockerfile?
Это текстовый файл, содержащий все команды, которые пользователь должен выполнить в командной строке для сборки образа докера. Docker может автоматически читать Dockerfile и создавать образ. Формат файла очень простой
# comment INSTRUCTION arguments
Аргументы - это инструкции командной строки, которые вы обычно выполняете в своей ОС. Инструкции - это специфичные для докера команды, которые говорят, что докеру нужно делать в процессе сборки. Позвольте мне объяснить, как написать файл докера на примере.
Как написать Dockerfile?
Предположим, что вы разрабатываете модель машинного обучения в системе со следующими конфигурациями.
- Ubuntu 20.04
- Anaconda / Miniconda для управления средой Python
- пакеты make и git
Для простоты примера я выбрал такую простую среду, но вы можете расширить ее и создать свой собственный образ.
- Во-первых, нам нужно использовать Ubuntu 20.04 в качестве базового образа и настроить дальнейшие действия.
FROM ubuntu:20.04
он сообщает процессу сборки использовать образ ubuntu: 20.04 в качестве базового образа для нашего пользовательского образа. Если этот образ недоступен в ваших локальных образах докеров, он будет автоматически извлечен из репозитория dockerhub.
2. Далее нам нужно настроить переменные среды
# environment variables for conda installation
ENV PATH="/root/miniconda3/bin:${PATH}"
ARG PATH="/root/miniconda3/bin:${PATH}"
# get environment.yml file from --build-args and download to docker image
ARG environment
ADD $environment ./
3. обновить и установить зависимости ubuntu, необходимые для установки других пакетов ubuntu
RUN apt update
RUN apt install -y software-properties-common
RUN add-apt-repository universe \
&& add-apt-repository multiverse
RUN apt install -y wget && rm -rf /var/lib/apt/lists/*
RUN apt update
4. установить make
RUN apt install -y make
5. установить Miniconda
# download and install Miniconda RUN wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux x86_64.sh \ && mkdir /root/.conda \ && bash Miniconda3-latest-Linux-x86_64.sh -b \ && rm -f Miniconda3-latest-Linux-x86_64.sh
6. создайте среду conda, используя переданный файл environment.yml.
# create tf-gpu environment RUN conda env create -f $environment
7. Сконфигурируйте conda, чтобы установить «пример» для активации (ваша среда) по умолчанию
# config conda RUN conda init bash \ && conda config --set auto_activate_base false \ && echo "conda activate example" >> ~/.bashrc
8. установите git
RUN apt install -y git
На этом вы закончили писать Dockerfile.
ПРИМЕЧАНИЕ. Стандартное соглашение - назвать этот файл Dockerfile и поместить его в каталог PROJECT_DIRECTORY.
your_project:
|data
|src
|package_1
|package_2
|tests
|.gitignore
|Dockerfile
|Makefile
Как собрать и запустить с помощью Dockerfile?
Вы должны использовать «docker build» для создания образа и «docker run image_name» для запуска образа в контейнере докера.
Поскольку я собираюсь запустить его с некоторыми дополнительными параметрами / флагами, я написал простой Makefile.
Откройте терминал из PROJECT_DIRECTORY и выполните команды ниже
- Чтобы собрать образ из Dockerfile (на сборку образа уйдет некоторое время)
make docker_build
2. Для запуска образа
make docker_run
Вот репозиторий Github для образца, который я объяснил в этой статье: «https://github.com/Mathanraj-Sharma/custom-dockerfiles/tree/main/ubuntu-focal-minicon навсегда
В качестве домашнего задания попытайтесь понять мой Makefile, чтобы научиться писать Makefile. Надеюсь, эта статья помогла вам, если вы застряли, не стесняйтесь комментировать, это также может помочь другим читателям. Удачного кодирования !!!