Ultralytics YOLO27: Запишись в список ожидания.
Начать

Начни работу с YOLOv5 🚀 в Docker#

В этом руководстве приведены пошаговые инструкции по настройке и запуску YOLOv5 в контейнере Docker. Docker позволяет запускать YOLOv5 в изолированной и единообразной среде, упрощая развёртывание и управление зависимостями в разных системах. В этом подходе используется контейнеризация, чтобы упаковать приложение вместе с его зависимостями.

В качестве альтернативных способов настройки изучи наши материалы: Notebook Colab Open In Colab Open In Kaggle, руководство по виртуальной машине GCP Deep Learning или Amazon AWS. Общее описание использования Docker с моделями Ultralytics смотри в кратком руководстве Ultralytics по Docker.

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

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

  1. Docker: скачай и установи Docker с официального сайта Docker. Docker необходим для создания контейнеров и управления ими.
  2. Драйверы NVIDIA (необходимы для поддержки GPU): убедись, что установлена версия драйверов NVIDIA 455.23 или новее. Последнюю версию драйверов можно скачать на сайте NVIDIA.
  3. NVIDIA Container Toolkit (необходим для поддержки GPU): этот набор инструментов позволяет контейнерам Docker обращаться к GPU NVIDIA на хост-компьютере. Подробные инструкции смотри в официальном руководстве по установке NVIDIA Container Toolkit.

Настройка NVIDIA Container Toolkit (для пользователей GPU)#

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

nvidia-smi

Эта команда должна вывести сведения о GPU и установленной версии драйвера.

Затем установи NVIDIA Container Toolkit. Приведённые ниже команды обычно подходят для систем на базе Debian, таких как Ubuntu, и систем на базе RHEL, таких как Fedora/CentOS. Инструкции для конкретного дистрибутива смотри в официальном руководстве по ссылке выше:

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
sudo apt-get install -y nvidia-container-toolkit

Проверка устройств CDI с помощью Docker#

Выполни nvidia-ctk cdi list, чтобы убедиться, что устройства GPU CDI доступны (служба nvidia-cdi-refresh из набора инструментов автоматически создаёт и поддерживает спецификацию в актуальном состоянии для версий toolkit >= 1.18):

nvidia-ctk cdi list

В выводе должны появиться такие записи, как nvidia.com/gpu=0 и nvidia.com/gpu=all. В Linux для запросов устройств CDI требуются Docker версии >= 28.2.0 и NVIDIA Container Toolkit версии >= 1.18. Устаревший флаг --gpus all может лишить доступа к GPU после перезагрузки демона хоста, поэтому обнови старые хосты Linux и используй вместо него --device.

Шаг 1: загрузи образ YOLOv5 для Docker#

Ultralytics публикует официальные образы YOLOv5 на Docker Hub. Тег latest соответствует последнему коммиту репозитория, поэтому ты всегда получаешь самую свежую версию. Загрузи образ командой:

# Define the image name with tag
t=ultralytics/yolov5:latest

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

Все доступные образы можно посмотреть в репозитории Ultralytics YOLOv5 на Docker Hub.

Шаг 2: запусти контейнер Docker#

После загрузки образа запусти его как контейнер.

Использование только CPU#

Чтобы запустить интерактивный контейнер, используя только CPU, укажи флаг -it. Флаг --ipc=host позволяет использовать пространство имён IPC хоста, что важно для доступа к общей памяти.

# Run an interactive container instance using CPU
sudo docker run -it --ipc=host $t

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

Чтобы предоставить контейнеру доступ к GPU, укажи флаг CDI --device nvidia.com/gpu=.... Для этого необходимо правильно установить NVIDIA Container Toolkit.

# Run with access to all available GPUs
sudo docker run -it --ipc=host --device nvidia.com/gpu=all $t

# Run with access to specific GPUs (e.g., GPUs 2 and 3)
sudo docker run -it --ipc=host --device nvidia.com/gpu=2 --device nvidia.com/gpu=3 $t

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

Подключение локальных каталогов#

Чтобы работать с локальными файлами (наборами данных, весами моделей и т. д.) внутри контейнера, используй флаг -v, чтобы подключить каталог хоста к контейнеру:

# Mount /path/on/host (your local machine) to /path/in/container (inside the container)
sudo docker run -it --ipc=host --device nvidia.com/gpu=all -v /path/on/host:/path/in/container $t

Замени /path/on/host на фактический путь на своём компьютере, а /path/in/container — на нужный путь внутри контейнера Docker (например, /usr/src/datasets).

Шаг 3: используй YOLOv5 🚀 в контейнере Docker#

Теперь ты работаешь в запущенном Docker-контейнере YOLOv5! Здесь можно выполнять стандартные команды YOLOv5 для различных задач машинного обучения и глубокого обучения, например обнаружения объектов.

# Train a YOLOv5 model on your custom dataset (ensure data is mounted or downloaded)
python train.py --data your_dataset.yaml --weights yolov5s.pt --img 640 # Start training

# Validate the trained model's performance (Precision, Recall, mAP)
python val.py --weights path/to/your/best.pt --data your_dataset.yaml # Validate accuracy

# Run inference on images or videos using a trained model
python detect.py --weights yolov5s.pt --source path/to/your/images_or_videos # Perform detection

# Export the trained model to various formats like ONNX, CoreML, or TFLite for deployment
python export.py --weights yolov5s.pt --include onnx coreml tflite # Export model

Подробные инструкции смотри в руководствах Обучение на пользовательских данных и Экспорт модели.

val.py выводит точность, полноту и mAP, а export.py записывает результаты в выбранные форматы, например ONNX, CoreML и TFLite, для выбранного варианта развёртывания.

Running YOLOv5 inside a Docker container on GCP

Ты успешно настроил и запустил YOLOv5 в контейнере Docker.

Часто задаваемые вопросы#

  • Рабочие процессы PyTorch DataLoader используют общую память для передачи тензоров, а стандартного объёма Docker в 64 МБ недостаточно. --ipc=host использует сегмент памяти хоста; если ты предпочитаешь изолировать контейнер, можно использовать альтернативу --shm-size=8g.

  • Запусти на хосте nvidia-smi, чтобы проверить работу драйвера, убедись, что NVIDIA Container Toolkit установлен, выполнив nvidia-ctk cdi list, и проверь, что версия Docker — 28.2 или новее, чтобы принимался --device nvidia.com/gpu=all.

  • Подключай каталоги хоста с помощью -v /path/on/host:/path/in/container и указывай в --data и --project пути к подключенным каталогам. Файлы, сохраненные в других местах контейнера, будут удалены вместе с ним.

  • Да, но контейнеру нужен доступ к серверу отображения. Инструкции см. в разделе X11 и Wayland руководства Ultralytics по Docker. Если дисплей недоступен, сохраняй результаты с помощью --save-txt или используй выходной каталог runs/detect/ по умолчанию.

Комментарии3

Задай вопрос, поделись результатами или помоги кому-нибудь.

  1. Letícia RamaLetícia Rama

    Hello,

    Is this workflow suitable for other YOLO families, such as YOLO26?

    1. Paula DerrengerPaula DerrengerUltralytics

      Yes—the same Docker concepts apply to YOLO26, but use the current Ultralytics Docker Quickstart and ultralytics/ultralytics images rather than the YOLOv5-specific image. Please continue dropping any setup questions in this discussion so the Ultralytics team can assist.

      1