Ultralytics YOLO27:
Get Started

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

Добро пожаловать в краткое руководство Ultralytics по 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#

Теперь ты работаешь внутри запущенного контейнера YOLOv5 в Docker! Здесь можно выполнять стандартные команды 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

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

Узнай больше о метриках оценки, таких как точность, полнота и mAP. Разберись в форматах экспорта, таких как 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/ по умолчанию.

Комментарии