train_utility/README.md
2026-07-21 14:57:01 +04:00

118 lines
5.8 KiB
Markdown
Executable file
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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](https://docs.astral.sh/uv/).
```bash
uv sync --locked
uv run yolo-train-webui
```
Альтернативный запуск как Python-модуля:
```bash
uv run -m yolo_webui
```
Откройте `http://127.0.0.1:8000`. Сервер по умолчанию слушает только loopback.
При первом использовании официального имени модели, например `yolo11n.pt`,
Ultralytics скачает веса. Пользовательские модели размещайте в `./models` или в
`./runs`, а датасеты — в `./datasets`. Результаты записываются в `./runs`.
## Docker Compose
```bash
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:
```bash
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`. Открыть интерфейс просмотра:
```bash
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`-упаковки.
Проверка интеграции на минимальных датасетах для всех пяти задач:
```bash
uv run scripts/run_yolo26_smoke_training.py --mlflow
uv run scripts/verify_mlflow_smoke.py
```
Второй скрипт завершается с ошибкой, если отсутствует experiment/run, параметры,
метрики, `results.csv`, `best.pt` или `last.pt` хотя бы для одной задачи.
## Проверка
```bash
uv run pytest -q
node --check src/yolo_webui/static/app.js
docker compose config
```
Ultralytics распространяется по лицензии AGPL-3.0; для закрытых коммерческих
продуктов проверьте условия Enterprise-лицензии Ultralytics.