Link to this sectionРуководство по быстрому запуску Docker для Ultralytics#
Это руководство представляет собой подробное введение в настройку среды Docker для твоих проектов Ultralytics. Docker — это платформа для разработки, доставки и запуска приложений в контейнерах. Она особенно полезна тем, что гарантирует одинаковую работу программного обеспечения независимо от места его развертывания. Для получения дополнительной информации посети репозиторий Ultralytics Docker на Docker Hub.
Link to this sectionЧему ты научишься#
- Настройка Docker с поддержкой NVIDIA
- Установка Docker-образов Ultralytics
- Запуск Ultralytics в контейнере Docker с поддержкой CPU или GPU
- Использование графического сервера с Docker для отображения результатов детектирования Ultralytics
- Монтирование локальных каталогов в контейнер
Watch: How to Get started with Docker | Usage of Ultralytics Python Package inside Docker live demo 🎉
Link to this sectionПредварительные требования#
- Убедись, что Docker установлен в твоей системе. Если нет, ты можешь скачать и установить его с веб-сайта Docker.
- Убедись, что в твоей системе есть графический процессор NVIDIA и установлены драйверы NVIDIA.
- Если ты используешь устройства NVIDIA Jetson, убедись, что установлена соответствующая версия JetPack. Обратись к руководству NVIDIA Jetson для получения подробностей.
Link to this sectionНастройка Docker с поддержкой NVIDIA#
Сначала проверь, правильно ли установлены драйверы NVIDIA, выполнив:
nvidia-smiLink to this sectionУстановка NVIDIA Container Toolkit#
Теперь давай установим NVIDIA Container Toolkit для включения поддержки GPU в контейнерах Docker:
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
&& curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list \
| sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' \
| sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.listОбнови списки пакетов и установи пакет nvidia-container-toolkit:
sudo apt-get updateУстанови последнюю версию nvidia-container-toolkit:
sudo apt-get install -y nvidia-container-toolkit \
nvidia-container-toolkit-base libnvidia-container-tools \
libnvidia-container1Необязательно: Установка конкретной версии nvidia-container-toolkit
Ты можешь при желании установить конкретную версию nvidia-container-toolkit, задав переменную окружения NVIDIA_CONTAINER_TOOLKIT_VERSION:
export NVIDIA_CONTAINER_TOOLKIT_VERSION=1.17.8-1
sudo apt-get install -y \
nvidia-container-toolkit=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \
nvidia-container-toolkit-base=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \
libnvidia-container-tools=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \
libnvidia-container1=${NVIDIA_CONTAINER_TOOLKIT_VERSION}sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart dockerLink to this sectionПроверка NVIDIA Runtime в Docker#
Выполни docker info | grep -i runtime, чтобы убедиться, что nvidia присутствует в списке сред выполнения (runtimes):
docker info | grep -i runtimeLink to this sectionУстановка Docker-образов Ultralytics#
Ultralytics предлагает несколько Docker-образов, оптимизированных для различных платформ и вариантов использования:
- Dockerfile: Образ с поддержкой GPU, идеально подходит для обучения.
- Dockerfile-arm64: Для архитектуры ARM64, подходит для таких устройств, как Raspberry Pi.
- Dockerfile-cpu: Версия только для CPU для вывода (инференса) и сред без 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-nvidia-arm64: Для устройств NVIDIA ARM64, таких как Jetson AGX Thor и DGX Spark, с поддержкой JetPack 7.0 и DGX OS.
- Dockerfile-python: Минимальная среда Python для легковесных приложений.
- Dockerfile-python-export: Минимальный образ Python, расширенный полными возможностями экспорта для конвертации моделей YOLO.
- Dockerfile-conda: Включает Miniconda3 и пакет Ultralytics, установленный через Conda.
- Dockerfile-export: Образ с GPU со всеми предустановленными зависимостями форматов экспорта для конвертации и бенчмаркинга моделей.
Чтобы скачать последний образ:
# Set image name as a variable
t=ultralytics/ultralytics:latest
# Pull the latest Ultralytics image from Docker Hub
sudo docker pull $tLink to this sectionЗапуск Ultralytics в контейнере Docker#
Вот как выполнить контейнер Ultralytics Docker:
Link to this sectionИспользование только CPU#
# Run without GPU
sudo docker run -it --ipc=host $tLink to this sectionИспользование GPU#
# Run with all GPUs
sudo docker run -it --ipc=host --runtime=nvidia --gpus all $t
# Run specifying which GPUs to use
sudo docker run -it --ipc=host --runtime=nvidia --gpus '"device=2,3"' $tФлаг -it назначает псевдо-TTY и оставляет stdin открытым, позволяя тебе взаимодействовать с контейнером. Флаг --ipc=host включает совместное использование пространства имен IPC хоста, что необходимо для обмена памятью между процессами. Флаг --gpus позволяет контейнеру получать доступ к графическим процессорам хоста.
Link to this sectionПримечание о доступности файлов#
Чтобы работать с файлами на твоем локальном компьютере внутри контейнера, ты можешь использовать тома Docker:
# Mount a local directory into the container
sudo docker run -it --ipc=host --runtime=nvidia --gpus all -v /path/on/host:/path/in/container $tЗамени /path/on/host на путь к каталогу на твоем локальном компьютере, а /path/in/container на желаемый путь внутри контейнера Docker.
Link to this sectionСохранение результатов обучения#
Результаты обучения по умолчанию сохраняются в /ultralytics/runs/<task>/<name>/ внутри контейнера. Если не примонтировать каталог хоста, результаты будут потеряны при удалении контейнера.
Чтобы сохранить результаты обучения:
# Recommended: mount workspace and specify project path
sudo docker run --rm -it -v "$(pwd)":/w -w /w ultralytics/ultralytics:latest \
yolo train model=yolo26n.pt data=coco8.yaml project=/w/runsЭто сохраняет все результаты обучения в ./runs на твоем хост-компьютере.
Link to this sectionЗапуск приложений с графическим интерфейсом (GUI) в контейнере Docker#
Следующие инструкции являются экспериментальными. Предоставление общего доступа к сокету X11 контейнеру Docker сопряжено с потенциальными рисками безопасности. Поэтому рекомендуется тестировать это решение только в контролируемой среде. Для получения дополнительной информации обратись к этим ресурсам о том, как использовать xhost(1)(2).
Docker в основном используется для контейнеризации фоновых приложений и программ CLI, но он также может запускать графические программы. В мире Linux двумя основными графическими серверами, обрабатывающими графическое отображение, являются X11 (также известный как X Window System) и Wayland. Перед началом важно определить, какой графический сервер ты используешь в данный момент. Запусти эту команду, чтобы узнать:
env | grep -E -i 'x11|xorg|wayland'Настройка и конфигурирование графического сервера X11 или Wayland выходит за рамки этого руководства. Если приведенная выше команда ничего не возвращает, тебе нужно будет начать с того, чтобы заставить один из них работать в твоей системе, прежде чем продолжать.
Link to this sectionЗапуск контейнера Docker с GUI#
Использовать GPU
Если ты используешь GPU, ты можешь добавить флаг --gpus all к команде.
Флаг среды выполнения Docker
Если твоя установка Docker не использует среду выполнения nvidia по умолчанию, ты можешь добавить флаг --runtime=nvidia к команде.
Если ты используешь 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.
Link to this sectionИспользование Docker с GUI#
Теперь ты можешь отображать графические приложения внутри своего контейнера Docker. Например, ты можешь запустить следующую команду CLI, чтобы визуализировать предсказания модели YOLO26:
yolo predict model=yolo26n.pt show=TrueТестирование
Простой способ убедиться, что группа Docker имеет доступ к серверу X11, — это запустить контейнер с графической программой, такой как xclock или xeyes. Кроме того, ты также можешь установить эти программы в контейнер Ultralytics Docker, чтобы протестировать доступ к серверу X11 твоего графического сервера GNU-Linux. Если возникнут какие-либо проблемы, рассмотри возможность установки переменной среды -e QT_DEBUG_PLUGINS=1. Установка этой переменной среды включает вывод отладочной информации, помогая в процессе устранения неполадок.
Link to this sectionКогда закончишь работу с GUI в Docker#
В обоих случаях не забудь отозвать доступ у группы Docker, когда закончишь.
xhost -local:dockerХочешь просматривать результаты изображений прямо в терминале?
Обратись к следующему руководству по просмотру результатов изображений с помощью терминала
Теперь ты настроил работу с Ultralytics через Docker и готов воспользоваться его возможностями. Для получения информации об альтернативных методах установки см. документацию по быстрому запуску Ultralytics.
Link to this sectionFAQ#
Link to this sectionКак мне настроить Ultralytics с Docker?#
Чтобы настроить Ultralytics с Docker, сначала убедись, что Docker установлен в твоей системе. Если у тебя есть GPU NVIDIA, установи NVIDIA Container Toolkit для активации поддержки GPU. Затем скачай последний образ Ultralytics Docker с Docker Hub, используя следующую команду:
sudo docker pull ultralytics/ultralytics:latestДля получения подробных шагов обратись к нашему руководству по быстрому запуску Docker.
Link to this sectionКаковы преимущества использования Docker-образов Ultralytics для проектов машинного обучения?#
Использование Docker-образов Ultralytics обеспечивает согласованную среду на разных машинах, воспроизводя одинаковое программное обеспечение и зависимости. Это особенно полезно для сотрудничества в командах, запуска моделей на различном оборудовании и поддержания воспроизводимости. Для обучения на GPU Ultralytics предоставляет оптимизированные Docker-образы, такие как Dockerfile для общего использования GPU и Dockerfile-jetson для устройств NVIDIA Jetson. Изучи Ultralytics Docker Hub для получения дополнительной информации.
Link to this sectionКак я могу запустить Ultralytics YOLO в контейнере Docker с поддержкой GPU?#
Сначала убедись, что NVIDIA Container Toolkit установлен и настроен. Затем используй следующую команду для запуска Ultralytics YOLO с поддержкой GPU:
sudo docker run -it --ipc=host --runtime=nvidia --gpus all ultralytics/ultralytics:latest # all GPUsЭта команда настраивает контейнер Docker с доступом к GPU. Дополнительные подробности см. в руководстве по быстрому запуску Docker.
Link to this sectionКак мне визуализировать результаты предсказаний YOLO в контейнере Docker с графическим сервером?#
Чтобы визуализировать результаты предсказаний YOLO с помощью GUI в контейнере 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.
Link to this sectionМогу ли я монтировать локальные каталоги в контейнер Ultralytics Docker?#
Да, ты можешь монтировать локальные каталоги в контейнер Ultralytics Docker, используя флаг -v:
sudo docker run -it --ipc=host --runtime=nvidia --gpus all -v /path/on/host:/path/in/container ultralytics/ultralytics:latestЗамени /path/on/host на каталог на твоем локальном компьютере, а /path/in/container на желаемый путь внутри контейнера. Эта настройка позволяет тебе работать со своими локальными файлами внутри контейнера. Дополнительную информацию см. в разделе Примечание о доступности файлов.