Глоссарий

Docker

Упростите рабочие процессы AI/ML с помощью Docker! Узнайте, как развертывать модели, обеспечивать воспроизводимость и эффективно масштабировать среды.

Docker - это платформа с открытым исходным кодом, которая автоматизирует развертывание, масштабирование и управление приложениями за счет использования виртуализации на уровне ОС для предоставления программного обеспечения в пакетах, называемых контейнерами. Для инженеров Machine Learning (ML) и специалистов по изучению данных Docker является важнейшим инструментом, который решает распространенную проблему несоответствия среды - печально известную проблему "это работает на моей машине". Соединяя код приложения со всеми библиотеками, фреймворками, такими как PyTorch, и другими зависимостями, необходимыми для его работы, Docker гарантирует, что модель будет работать одинаково независимо от того, где она развернута. Такая согласованность является основой для надежного развертывания моделей и краеугольным камнем современной практики MLOps. Ultralytics предлагает руководство по быстрому запуску Docker, чтобы помочь пользователям начать контейнеризацию своих приложений.

Как работает Docker

Рабочий процесс Docker вращается вокруг нескольких основных компонентов, которые работают вместе для упаковки и запуска приложений:

  • Dockerfile: Это простой текстовый файл, содержащий список последовательных команд или инструкций. Эти инструкции указывают Docker, как собрать определенный образ Docker. Для ML-проекта в Dockerfile указывается базовая операционная система, команды для установки зависимостей, таких как Python и OpenCV, копирование файлов модели и кода вывода, а также определяется команда, которая должна выполняться при запуске контейнера. Более подробную информацию о Dockerfiles можно найти в официальной документации Docker.
  • Образ Docker: Образ - это легкий, автономный и исполняемый пакет, который содержит все необходимое для запуска программного обеспечения, включая код, среду выполнения, библиотеки, переменные окружения и файлы конфигурации. Это шаблон, доступный только для чтения, созданный из Docker-файла. Образы для ML часто доступны в реестрах, таких как NVIDIA NGC, которые поставляются с предварительно настроенными драйверами GPU и фреймворками ML.
  • Контейнер Docker: Контейнер - это запускаемый экземпляр образа Docker. Когда вы запускаете образ, он становится контейнером, который представляет собой изолированный процесс, работающий на ядре хост-машины. Несколько контейнеров могут работать на одной машине и совместно использовать ядро ОС с другими контейнерами, каждый из которых работает как изолированный процесс в пользовательском пространстве. Это делает их чрезвычайно эффективными по сравнению с традиционной виртуализацией. Технология стандартизирована такими организациями, как Open Container Initiative (OCI).

Реальные приложения AI/ML

Docker упрощает весь жизненный цикл модели ИИ - от экспериментов до производства.

  1. Развертывание моделей компьютерного зрения на границе: модель Ultralytics YOLO11, обученная для обнаружения объектов, может быть упакована в контейнер Docker. В этот контейнер входят веса модели, сценарий вывода и все необходимые зависимости, например, версии библиотек CUDA. Затем этот контейнер можно последовательно развернуть на различных платформах, от мощного облачного GPU до устройства Edge AI с ограниченными ресурсами, например NVIDIA Jetson. Это гарантирует, что модель будет работать как надо, что является критическим требованием для выводов в реальном времени в таких приложениях, как интеллектуальное наблюдение.
  2. Создание воспроизводимых исследовательских сред: Специалист по исследованию данных, разрабатывающий новый алгоритм сегментации изображений, может создать контейнер Docker, в котором будут заблокированы определенные версии Python, TensorFlow и других библиотек. Этой контейнерной средой можно поделиться с коллегами или опубликовать вместе с научной статьей, чтобы другие могли идеально воспроизвести среду обучения и проверить результаты. Платформы, подобные Ultralytics HUB, интегрируются с контейнерными технологиями, чтобы еще больше упростить этот процесс.

Сравнение с аналогичными терминами

Хотя Docker занимает центральное место в контейнеризации, его часто используют вместе с другими технологиями:

  • Контейнеризация: Это общая концепция упаковки программного обеспечения в контейнеры. Docker - самая популярная платформа для контейнеризации, предоставляющая инструменты для создания, отправки и запуска контейнеров.
  • Kubernetes: В то время как Docker управляет отдельными контейнерами на одном хосте, Kubernetes - это платформа для оркестровки контейнеров. Она автоматизирует развертывание, масштабирование и управление контейнерными приложениями на кластерах машин. Считайте, что Docker создает контейнеры, а Kubernetes - система, управляющая кораблями и портами. Более подробную информацию вы можете получить на официальном сайте Kubernetes.
  • Виртуальные машины (ВМ): ВМ обеспечивают изоляцию, эмулируя целые аппаратные системы, включая гостевую ОС. Контейнеры, управляемые Docker, виртуализируют ОС, разделяя ядро хоста. Это делает контейнеры гораздо более легкими, быстрыми и ресурсоэффективными, чем ВМ, хотя ВМ обеспечивают более надежную изоляцию. На официальном сайте Docker представлено отличное сравнение.

Используя Docker, специалисты по ИИ и компьютерному зрению (CV) могут значительно повысить эффективность рабочего процесса, улучшить сотрудничество и надежность развернутых моделей. Чтобы получить общее представление о назначении Docker, можно воспользоваться такими ресурсами, как OpenSource.com's Docker explanation. Эта технология является ключевым инструментом для широкого спектра вариантов развертывания моделей.

Присоединяйтесь к сообществу Ultralytics

Присоединяйтесь к будущему искусственного интеллекта. Общайтесь, сотрудничайте и развивайтесь вместе с мировыми новаторами

Присоединяйтесь сейчас
Ссылка копируется в буфер обмена