Руководство по быстрому запуску Docker для Ultralytics
Это руководство служит исчерпывающим введением в настройку среды Docker для ваших проектов Ultralytics . Docker - это платформа для разработки, доставки и запуска приложений в контейнерах. Она особенно полезна для обеспечения того, чтобы программное обеспечение всегда работало одинаково, независимо от того, где оно развернуто. Для получения более подробной информации посетите репозиторий Ultralytics Docker на Docker Hub.
Чему вы научитесь
- Настройка Docker с поддержкой NVIDIA
- Установка образов Ultralytics Docker
- Запуск Ultralytics в контейнере Docker с поддержкой CPU или GPU
- Использование сервера отображения с Docker для показа результатов обнаружения Ultralytics
- Монтирование локальных каталогов в контейнер
Пререквизиты
- Убедитесь, что в вашей системе установлен Docker. Если нет, вы можете загрузить и установить его с сайта Docker.
- Убедитесь, что в вашей системе установлены драйверы NVIDIA GPU и NVIDIA .
Настройка Docker с поддержкой NVIDIA
Сначала убедитесь, что драйверы NVIDIA установлены правильно, запустив программу:
Установка 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
появляется в списке режимов выполнения:
Установка образов докеров 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 --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 --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. Перед началом работы необходимо определить, какой графический сервер вы используете в данный момент. Выполните эту команду, чтобы узнать это:
Установка и настройка сервера отображения 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 :
Тестирование
Простой способ проверить, что группа Docker имеет доступ к серверу X11, - запустить контейнер с помощью программы с графическим интерфейсом, например xclock
или xeyes
. Кроме того, вы можете установить эти программы в контейнер Ultralytics Docker, чтобы проверить доступ к серверу X11 вашего сервера отображения GNU-Linux. Если у вас возникнут проблемы, попробуйте установить переменную окружения -e QT_DEBUG_PLUGINS=1
. Установка этой переменной окружения позволяет выводить отладочную информацию, помогая в процессе поиска и устранения неисправностей.
После завершения работы с графическим интерфейсом Docker
Отмена доступа
В обоих случаях не забудьте отозвать доступ из группы Docker, когда закончите.
Хотите просматривать результаты изображений прямо в терминале?
Смотрите следующее руководство по просмотру результатов изображения с помощью терминала
Поздравляем! Теперь вы настроены на использование Ultralytics с Docker и готовы воспользоваться его мощными возможностями. Для ознакомления с альтернативными методами установки изучите документацию по быстрому запускуUltralytics .
ЧАСТО ЗАДАВАЕМЫЕ ВОПРОСЫ
Как настроить Ultralytics с помощью Docker?
Чтобы настроить Ultralytics с помощью Docker, сначала убедитесь, что Docker установлен в вашей системе. Если у вас есть NVIDIA GPU , установите NVIDIA Docker runtime, чтобы включить поддержку GPU . Затем извлеките последний образ Ultralytics Docker из Docker Hub с помощью следующей команды:
Подробные шаги см. в нашем руководстве по быстрому запуску 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 :
Эта команда устанавливает контейнер 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
с нужным путем внутри контейнера. Такая настройка позволяет работать с локальными файлами внутри контейнера. Для получения дополнительной информации обратитесь к соответствующему разделу монтирование локальных каталогов.