Перейти к содержимому

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

Ultralytics Визуальный пакет Docker

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

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

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

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

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

  • Убедись, что Docker установлен в твоей системе. Если нет, то ты можешь скачать и установить его с сайта Docker.
  • Убедись, что в твоей системе есть графический процессор 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 появляется в списке режимов выполнения:

docker info | grep -i runtime

Установка Ultralytics Docker Images

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

  • Докерфайл: Образ GPU, идеально подходящий для тренировок.
  • Dockerfile-arm64: Для архитектуры ARM64, подходит для устройств вроде Raspberry Pi.
  • Dockerfile-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

Вот как выполнить Docker-контейнер Ultralytics:

Используя только процессор

# 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

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

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

Вот как выполнить Docker-контейнер Ultralytics:

Используя только процессор

# 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

The -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 is primarily used to containerize background applications and CLI programs, but it can also run graphical programs. In the Linux world, two main graphic servers handle graphical display: X11 (also known as the X Window System) and Wayland. Before starting, it's essential to determine which graphics server you are currently using. Run this command to find out:

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 , чтобы визуализировать предсказания, полученные с помощью моделиYOLOv8 :

yolo predict model=yolov8n.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 .



Created 2023-11-12, Updated 2024-06-10
Authors: glenn-jocher (6), Burhan-Q (1), jpedrofonseca_94@hotmail.com (1)

Комментарии