Docker – это программное обеспечение, которое упаковывает код приложения и все его зависимости, создавая изолированную среду, называемую контейнером.

Почему мы должны использовать контейнеры Docker для развертывания моделей машинного обучения?

  1. В нашей системе можно легко создать модель машинного обучения. Но когда мы хотим использовать эту модель на этапе производства в других системах, это сложная задача. Docker делает эту задачу проще, быстрее и надежнее.
  2. Используя Docker, мы можем легко воспроизвести рабочую среду для обучения и запуска модели в разных операционных системах.
  3. Мы можем легко развернуть и сделать вашу модель доступной для клиентов с помощью таких технологий, как OpenShift, дистрибутив Kubernetes.
  4. Разработчики могут отслеживать разные версии образа контейнера, проверять, кто с какой версией создал версию, а также выполнять откат к предыдущим версиям.
  5. Даже если наше приложение машинного обучения не работает, восстанавливается или обновляется, оно не перестанет работать.
  6. Наша модель машинного обучения обычно написана на одном языке программирования, таком как Python, но приложению, безусловно, потребуется взаимодействовать с другими приложениями, написанными на разных языках программирования. Docker управляет всем этим. взаимодействия, так как каждый микросервис может быть написан на другом языке, что обеспечивает масштабируемость и легкое добавление или удаление независимых сервисов.

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

  1. Создайте отдельный каталог для этой задачи и скопируйте в него свой код машинного обучения.

2. Создайте Dockerfile.

  1. Здесь я использовал rockylinux в качестве базового образа для контейнера.
  2. Установите все пакеты, необходимые для запуска кода.
  3. Команда COPY скопирует указанные файлы с локальной машины в контейнер, который будет запущен с использованием этого образа.
  4. ENTRYPOINT указывает команду, которая будет выполняться при запуске контейнера.
  5. CMD указывает ввод командной строки, который будет передан программе, выполняемой точкой входа (python3 Salary_predict.py). Это переопределяется вводом командной строки, переданным во время запуска контейнера (если есть).

ПРИМЕЧАНИЕ. Entrypoint и CMD, оба могут использоваться для указания команды, которая будет выполняться при запуске контейнера. Единственное отличие состоит в том, что ENTRYPOINT не позволяет вам переопределить команду. Вместо этого все, что добавляется в конец команды docker run, добавляется к команде.

3. Код Python.

Модуль sys предоставляет функции и переменные, используемые для управления различными частями среды выполнения Python.

sys.argv – это список аргументов командной строки.

Но sys.argv[0] — это имя текущего скрипта Python.

sys.argv[1] — это первый аргумент командной строки.

sys.argv[2] — это второй аргумент командной строки и так далее.

Итак, мы предоставляем sys.argv[1] для нашей модели машинного обучения.

5. Теперь создайте образ из Dockerfile, созданного ранее.

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

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

7. Мы также можем обеспечить ввод командной строки для нашего кода Python.

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

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



стать писателем