Перейти к содержанию

Руководство по быстрому запуску Docker для Ultralytics

Ultralytics Визуализация пакетов Docker

Это руководство служит исчерпывающим введением в настройку среды Docker для ваших проектов Ultralytics . Docker - это платформа для разработки, доставки и запуска приложений в контейнерах. Она особенно полезна для обеспечения того, чтобы программное обеспечение всегда работало одинаково, независимо от того, где оно развернуто. Для получения более подробной информации посетите репозиторий Ultralytics Docker на Docker Hub.

Версия образа Docker Docker Pulls

Чему вы научитесь

  • Настройка Docker с поддержкой NVIDIA
  • Установка образов Ultralytics Docker
  • Запуск Ultralytics в контейнере Docker с поддержкой CPU или GPU
  • Использование сервера отображения с Docker для показа результатов обнаружения Ultralytics
  • Монтирование локальных каталогов в контейнер

Пререквизиты

  • Убедитесь, что в вашей системе установлен Docker. Если нет, вы можете загрузить и установить его с сайта Docker.
  • Убедитесь, что в вашей системе установлены драйверы NVIDIA GPU и NVIDIA .

Настройка Docker с поддержкой NVIDIA

Сначала убедитесь, что драйверы NVIDIA установлены правильно, запустив программу:

nvidia-smi

Установка NVIDIA Docker Runtime

Теперь давайте установим среду выполнения NVIDIA Docker, чтобы включить поддержку GPU в контейнерах Docker:

# Add NVIDIA package repositories
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
distribution=$(lsb_release -cs)
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list

# Install NVIDIA Docker runtime
sudo apt-get update
sudo apt-get install -y nvidia-docker2

# Restart Docker service to apply changes
sudo systemctl restart docker

Проверка NVIDIA Runtime с помощью Docker

Запускайте docker info | grep -i runtime чтобы обеспечить nvidia появляется в списке режимов выполнения:

docker info | grep -i runtime

Установка образов докеров Ultralytics

Ultralytics предлагает несколько образов Docker, оптимизированных для различных платформ и случаев использования:

  • Dockerfile: образ GPU , идеально подходящий для обучения.
  • Dockerfile-arm64: Для архитектуры ARM64, подходит для устройств типа Raspberry Pi.
  • Dockerfile-cpu: CPU-единственная версия для выводов и неGPU окружений.
  • Dockerfile-jetson: Оптимизирован для устройств NVIDIA Jetson.
  • Dockerfile-python: Минимальная среда Python для легких приложений.
  • Dockerfile-conda: включает в себя пакет Miniconda3 и Ultralytics , установленный через Conda.

Чтобы извлечь последний образ:

# Set image name as a variable
t=ultralytics/ultralytics:latest

# Pull the latest Ultralytics image from Docker Hub
sudo docker pull $t

Запуск Ultralytics в контейнере Docker

Вот как запустить контейнер Ultralytics Docker:

Используя только CPU

# Run with all GPUs
sudo docker run -it --ipc=host $t

Использование графических процессоров

# Run with all GPUs
sudo docker run -it --ipc=host --gpus all $t

# Run specifying which GPUs to use
sudo docker run -it --ipc=host --gpus '"device=2,3"' $t

Сайт -it флаг назначает псевдо-TTY и держит stdin открытым, позволяя взаимодействовать с контейнером. Флаг --ipc=host Флаг позволяет совместно использовать IPC-пространство имен хоста, что необходимо для разделения памяти между процессами. Флаг --gpus Флаг позволяет контейнеру получить доступ к графическим процессорам хоста.

Запуск Ultralytics в контейнере Docker

Вот как запустить контейнер Ultralytics Docker:

Используя только CPU

# Run with all GPUs
sudo docker run -it --ipc=host $t

Использование графических процессоров

# Run with all GPUs
sudo docker run -it --ipc=host --gpus all $t

# Run specifying which GPUs to use
sudo docker run -it --ipc=host --gpus '"device=2,3"' $t

Сайт -it флаг назначает псевдо-TTY и держит stdin открытым, позволяя взаимодействовать с контейнером. Флаг --ipc=host Флаг позволяет совместно использовать IPC-пространство имен хоста, что необходимо для разделения памяти между процессами. Флаг --gpus Флаг позволяет контейнеру получить доступ к графическим процессорам хоста.

Примечание о доступности файлов

Чтобы работать с файлами на локальной машине внутри контейнера, можно использовать тома Docker:

# Mount a local directory into the container
sudo docker run -it --ipc=host --gpus all -v /path/on/host:/path/in/container $t

Заменить /path/on/host путь к каталогу на вашей локальной машине и /path/in/container с указанием нужного пути внутри контейнера Docker.

Запуск приложений с графическим интерфейсом пользователя (GUI) в контейнере Docker

Очень экспериментальный - пользователь принимает на себя весь риск

Следующие инструкции являются экспериментальными. Совместное использование сокета X11 с контейнером Docker создает потенциальные риски безопасности. Поэтому рекомендуется тестировать это решение только в контролируемой среде. Для получения дополнительной информации обратитесь к этим ресурсам о том, как использовать xhost(1)(2).

Docker в основном используется для контейнеризации фоновых приложений и программ CLI , но он также может запускать графические программы. В мире Linux за отображение графики отвечают два основных графических сервера: X11 (также известный как X Window System) и Wayland. Перед началом работы необходимо определить, какой графический сервер вы используете в данный момент. Выполните эту команду, чтобы узнать это:

env | grep -E -i 'x11|xorg|wayland'

Установка и настройка сервера отображения X11 или Wayland выходит за рамки данного руководства. Если приведенная выше команда ничего не выдает, значит, прежде чем продолжить, вам нужно запустить один из этих серверов в вашей системе.

Запуск контейнера Docker с помощью графического интерфейса

Пример

Используйте графические процессоры
If you're using [GPUs](#using-gpus), you can add the `--gpus all` flag to the command.

Если вы используете X11, вы можете выполнить следующую команду, чтобы разрешить контейнеру Docker доступ к сокету X11:

xhost +local:docker && docker run -e DISPLAY=$DISPLAY \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-v ~/.Xauthority:/root/.Xauthority \
-it --ipc=host $t

Эта команда устанавливает DISPLAY переменную окружения на дисплей хоста, монтирует сокет X11 и отображает .Xauthority файл в контейнер. Сайт xhost +local:docker команда позволяет контейнеру Docker получить доступ к серверу X11.

Для Wayland используйте следующую команду:

xhost +local:docker && docker run -e DISPLAY=$DISPLAY \
-v $XDG_RUNTIME_DIR/$WAYLAND_DISPLAY:/tmp/$WAYLAND_DISPLAY \
--net=host -it --ipc=host $t

Эта команда устанавливает DISPLAY переменную окружения на экране хоста, монтирует сокет Wayland и позволяет контейнеру Docker получить доступ к серверу Wayland.

Использование Docker с графическим интерфейсом

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

yolo predict model=yolo11n.pt show=True
Тестирование

Простой способ проверить, что группа Docker имеет доступ к серверу X11, - запустить контейнер с помощью программы с графическим интерфейсом, например xclock или xeyes. Кроме того, вы можете установить эти программы в контейнер Ultralytics Docker, чтобы проверить доступ к серверу X11 вашего сервера отображения GNU-Linux. Если у вас возникнут проблемы, попробуйте установить переменную окружения -e QT_DEBUG_PLUGINS=1. Установка этой переменной окружения позволяет выводить отладочную информацию, помогая в процессе поиска и устранения неисправностей.

После завершения работы с графическим интерфейсом Docker

Отмена доступа

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

xhost -local:docker
Хотите просматривать результаты изображений прямо в терминале?

Смотрите следующее руководство по просмотру результатов изображения с помощью терминала


Поздравляем! Теперь вы настроены на использование Ultralytics с Docker и готовы воспользоваться его мощными возможностями. Для ознакомления с альтернативными методами установки изучите документацию по быстрому запускуUltralytics .

ЧАСТО ЗАДАВАЕМЫЕ ВОПРОСЫ

Как настроить Ultralytics с помощью Docker?

Чтобы настроить Ultralytics с помощью Docker, сначала убедитесь, что Docker установлен в вашей системе. Если у вас есть NVIDIA GPU , установите NVIDIA Docker runtime, чтобы включить поддержку GPU . Затем извлеките последний образ Ultralytics Docker из Docker Hub с помощью следующей команды:

sudo docker pull ultralytics/ultralytics:latest

Подробные шаги см. в нашем руководстве по быстрому запуску Docker.

В чем преимущества использования образов Ultralytics Docker для проектов машинного обучения?

Использование образов Docker Ultralytics обеспечивает согласованное окружение на разных машинах, воспроизводя одно и то же программное обеспечение и зависимости. Это особенно полезно для совместной работы команд, запуска моделей на различном оборудовании и обеспечения воспроизводимости. Для обучения, основанного на GPU, Ultralytics предоставляет оптимизированные образы Docker, такие как Dockerfile для общего использования GPU и Dockerfile-jetson для устройств NVIDIA Jetson. Изучите Ultralytics Docker Hub для более подробной информации.

Как я могу запустить Ultralytics YOLO в контейнере Docker с поддержкой GPU ?

Сначала убедитесь, что среда выполнения NVIDIA Docker установлена и настроена. Затем выполните следующую команду, чтобы запустить Ultralytics YOLO с поддержкой GPU :

sudo docker run -it --ipc=host --gpus all ultralytics/ultralytics:latest

Эта команда устанавливает контейнер Docker с доступом по адресу GPU . Дополнительные сведения см. в руководстве по быстрому запуску Docker.

Как визуализировать результаты прогнозирования YOLO в контейнере Docker с помощью сервера отображения?

Чтобы визуализировать результаты предсказаний YOLO с помощью графического интерфейса в контейнере Docker, необходимо разрешить Docker доступ к вашему серверу отображения. Для систем, работающих под управлением X11, команда выглядит следующим образом:

xhost +local:docker && docker run -e DISPLAY=$DISPLAY \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-v ~/.Xauthority:/root/.Xauthority \
-it --ipc=host ultralytics/ultralytics:latest

Для систем, работающих под управлением Wayland, используйте:

xhost +local:docker && docker run -e DISPLAY=$DISPLAY \
-v $XDG_RUNTIME_DIR/$WAYLAND_DISPLAY:/tmp/$WAYLAND_DISPLAY \
--net=host -it --ipc=host ultralytics/ultralytics:latest

Дополнительную информацию можно найти в разделе Запуск приложений с графическим интерфейсом пользователя (GUI) в контейнере Docker.

Можно ли монтировать локальные каталоги в контейнер Ultralytics Docker?

Да, вы можете монтировать локальные каталоги в контейнер Ultralytics Docker с помощью -v флаг:

sudo docker run -it --ipc=host --gpus all -v /path/on/host:/path/in/container ultralytics/ultralytics:latest

Заменить /path/on/host с каталогом на вашей локальной машине и /path/in/container с нужным путем внутри контейнера. Такая настройка позволяет работать с локальными файлами внутри контейнера. Для получения дополнительной информации обратитесь к соответствующему разделу монтирование локальных каталогов.

📅 Создано 1 год назад ✏️ Обновлено 2 месяца назад

Комментарии