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

Краткое руководство по Docker для Ultralytics

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

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

Версия Docker-образа Загрузки Docker

Что вы узнаете

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



Смотреть: Как начать работу с Docker | Использование пакета Ultralytics python внутри Docker в режиме реального времени 🎉


Предварительные требования

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

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

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

nvidia-smi

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

Теперь давайте установим NVIDIA Docker runtime, чтобы включить поддержку 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 отображается в списке runtimes:

docker info | grep -i runtime

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

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

  • Dockerfile: GPU-образ, идеально подходит для обучения.
  • Dockerfile-arm64: Для архитектуры ARM64, подходит для таких устройств, как Raspberry Pi.
  • Dockerfile-cpu: CPU-only версия для inference и сред без GPU.
  • Dockerfile-jetson-jetpack4: Оптимизирован для устройств NVIDIA Jetson под управлением NVIDIA JetPack 4.
  • Dockerfile-jetson-jetpack5: Оптимизирован для устройств NVIDIA Jetson под управлением NVIDIA JetPack 5.
  • Dockerfile-jetson-jetpack6: Оптимизирован для устройств NVIDIA Jetson под управлением NVIDIA JetPack 6.
  • Dockerfile-jupyter: Для интерактивной разработки с использованием JupyterLab в браузере.
  • 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 without GPU
sudo docker run -it --ipc=host $t

Использование GPU

# 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 namespace хоста, что необходимо для совместного использования памяти между процессами. --gpus флаг позволяет контейнеру получать доступ к GPU хоста.

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

Чтобы работать с файлами на локальной машине внутри контейнера, можно использовать тома 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-контейнера с графическим интерфейсом

Пример

Использовать GPU
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, — это запустить контейнер с программой GUI, такой как xclock или xeyes. В качестве альтернативы, вы также можете установить эти программы в Docker-контейнер Ultralytics, чтобы проверить доступ к серверу X11 вашего сервера отображения GNU-Linux. Если у вас возникнут какие-либо проблемы, рассмотрите возможность установки переменной среды -e QT_DEBUG_PLUGINS=1. Установка этой переменной среды включает вывод отладочной информации, помогая в процессе устранения неполадок.

После завершения работы с Docker GUI

Отозвать доступ

В обоих случаях не забудьте отозвать доступ у группы 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 runtime установлен и настроен. Затем используйте следующую команду для запуска 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 год назад ✏️ Обновлено 4 месяца назад

Комментарии