train_utility/README.md

5.8 KiB
Raw Blame History

YOLO Train WebUI

Локальный веб-интерфейс для обучения моделей Ultralytics YOLO с журналом, графиками метрик, мягкой остановкой и интеграцией MLflow.

Возможности

  • задачи detect, segment, classify, pose и obb;
  • локальные датасеты и официальные имена моделей Ultralytics;
  • настройка эпох, размера изображения, batch, устройства, workers и patience;
  • цветовые и геометрические аугментации, Mosaic, MixUp, CutMix, copy-paste, erasing и AutoAugment;
  • live-прогресс, журнал, графики метрик и восстановление состояния после переподключения браузера;
  • сохранение профилей запуска и кооперативная остановка обучения;
  • локальное MLflow-хранилище или внешний tracking server.

Локальная установка и запуск

Нужны Python 3.11+ и uv.

uv sync --locked
uv run yolo-train-webui

Альтернативный запуск как Python-модуля:

uv run -m yolo_webui

Откройте http://127.0.0.1:8000. Сервер по умолчанию слушает только loopback.

При первом использовании официального имени модели, например yolo11n.pt, Ultralytics скачает веса. Пользовательские модели размещайте в ./models или в ./runs, а датасеты — в ./datasets. Результаты записываются в ./runs.

Docker Compose

docker compose up --build

WebUI будет доступен по http://127.0.0.1:8000. Compose намеренно публикует порт только на loopback. Не заменяйте адрес на 0.0.0.0 без аутентифицирующего reverse proxy: API позволяет запускать и останавливать ресурсоёмкие задачи.

Для NVIDIA GPU раскомментируйте секцию deploy.resources.reservations.devices в docker-compose.yml. Образ устанавливает зафиксированные в uv.lock зависимости; для другого варианта PyTorch используйте отдельно сгенерированный и проверенный lock-файл.

Разрешённые пути

API отклоняет URL и не разрешает обучению читать или записывать произвольные пути:

  • датасеты и файлы классов — ./datasets;
  • модели — ./models и ./runs;
  • результаты — ./runs.

Дополнительные доверенные корни можно перечислить через системный разделитель путей в YOLO_WEBUI_DATA_ROOTS, YOLO_WEBUI_MODEL_ROOTS и YOLO_WEBUI_RUN_ROOTS. Например, в Linux/macOS:

YOLO_WEBUI_DATA_ROOTS=/mnt/datasets:/data/shared uv run yolo-train-webui

PyTorch checkpoints загружаются с включённым restricted-режимом Ultralytics (ULTRALYTICS_SAFE_LOAD=1). Используйте только модели из доверенных источников.

Датасеты

Для detect, segment, pose и obb укажите YAML-файл либо каталог со структурой images/ + labels/. WebUI может детерминированно разделить такой каталог на train/val. Для classify нужен готовый каталог с train и val/test, внутри которых изображения разложены по классам; автоматическое detection-style разбиение для этой задачи отключено.

MLflow

По умолчанию метаданные записываются в ./mlflow.db. Открыть интерфейс просмотра:

uv run mlflow ui --backend-store-uri sqlite:///mlflow.db

Затем откройте http://127.0.0.1:5000. Для внешнего tracking server укажите его URI в настройках WebUI.

Для каждого завершённого запуска Ultralytics записывает в MLflow параметры, поэпоховые метрики, графики, results.csv и checkpoints weights/best.pt/weights/last.pt. SQLite-файл хранит tracking metadata, а сами файлы находятся в MLflow Artifact Repository (локально — в ./mlruns). Это артефакты запуска, а не версии MLflow Model Registry: raw YOLO checkpoint не имеет стандартной MLflow MLmodel-упаковки.

Проверка интеграции на минимальных датасетах для всех пяти задач:

uv run scripts/run_yolo26_smoke_training.py --mlflow
uv run scripts/verify_mlflow_smoke.py

Второй скрипт завершается с ошибкой, если отсутствует experiment/run, параметры, метрики, results.csv, best.pt или last.pt хотя бы для одной задачи.

Проверка

uv run pytest -q
node --check src/yolo_webui/static/app.js
docker compose config

Ultralytics распространяется по лицензии AGPL-3.0; для закрытых коммерческих продуктов проверьте условия Enterprise-лицензии Ultralytics.